curl --request GET \
--url https://api.agg.market/venue-market-outcomes \
--header 'x-app-id: <api-key>'import requests
url = "https://api.agg.market/venue-market-outcomes"
headers = {"x-app-id": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-app-id': '<api-key>'}};
fetch('https://api.agg.market/venue-market-outcomes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.agg.market/venue-market-outcomes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-app-id: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.agg.market/venue-market-outcomes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-app-id", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.agg.market/venue-market-outcomes")
.header("x-app-id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agg.market/venue-market-outcomes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-app-id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"venueMarketId": "<string>",
"label": "<string>",
"externalIdentifier": "<string>",
"title": "<string>",
"price": 0.5,
"winner": true,
"payoutPerShare": 0.5,
"refundAtCost": true,
"matchedVenueMarketOutcomes": [
{
"venueMarketId": "<string>",
"venueMarketOutcomeId": "<string>"
}
]
}
],
"matchedVenueMarkets": [
{
"id": "<string>",
"venue": "kalshi",
"externalIdentifier": "<string>",
"question": "<string>",
"deployerVenue": "<string>",
"description": "<string>",
"rulesPrimary": "<string>",
"rulesSecondary": "<string>",
"volume": 1,
"volume24hr": 1,
"status": "open",
"conditionId": "<string>",
"arbReturn": 123,
"shortTitle": "<string>",
"image": "<string>",
"venueEvent": {
"id": "<string>",
"externalIdentifier": "<string>",
"slug": "<string>",
"title": "<string>",
"series": {
"id": "<string>",
"venue": "<string>",
"externalIdentifier": "<string>",
"name": "<string>"
}
},
"venueMarketOutcomes": [
{
"id": "<string>",
"venueMarketId": "<string>",
"label": "<string>",
"externalIdentifier": "<string>",
"title": "<string>",
"price": 123,
"winner": true,
"payoutPerShare": 0.5,
"refundAtCost": true
}
]
}
],
"nextCursor": "<string>",
"hasMore": true
}{
"message": "<string>"
}{
"message": "<string>"
}Look up venue market outcomes by external identifier
Resolves venue-side outcome keys (e.g. Polymarket token_id) to AGG outcomes, including matchedVenueMarketOutcomes counterpart references across venues. The referenced markets are returned alongside data as matchedVenueMarkets[] — the same shape /venue-markets nests on each market — so a trade flow resolves the counterpart’s venue and venue-side ids from this one response. Note a Kalshi No-side outcome has no externalIdentifier; its ticker is the sibling market’s externalIdentifier. Batch up to 20 keys. Outcome keys are globally unique, so venue is optional and narrows only. Kalshi carries its ticker on exactly one of the two outcomes per market, so Kalshi No-side outcomes cannot be resolved here — fetch the market via GET /venue-markets?venue=kalshi&externalIdentifier= and read both outcomes from it.
curl --request GET \
--url https://api.agg.market/venue-market-outcomes \
--header 'x-app-id: <api-key>'import requests
url = "https://api.agg.market/venue-market-outcomes"
headers = {"x-app-id": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-app-id': '<api-key>'}};
fetch('https://api.agg.market/venue-market-outcomes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.agg.market/venue-market-outcomes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-app-id: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.agg.market/venue-market-outcomes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-app-id", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.agg.market/venue-market-outcomes")
.header("x-app-id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agg.market/venue-market-outcomes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-app-id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"venueMarketId": "<string>",
"label": "<string>",
"externalIdentifier": "<string>",
"title": "<string>",
"price": 0.5,
"winner": true,
"payoutPerShare": 0.5,
"refundAtCost": true,
"matchedVenueMarketOutcomes": [
{
"venueMarketId": "<string>",
"venueMarketOutcomeId": "<string>"
}
]
}
],
"matchedVenueMarkets": [
{
"id": "<string>",
"venue": "kalshi",
"externalIdentifier": "<string>",
"question": "<string>",
"deployerVenue": "<string>",
"description": "<string>",
"rulesPrimary": "<string>",
"rulesSecondary": "<string>",
"volume": 1,
"volume24hr": 1,
"status": "open",
"conditionId": "<string>",
"arbReturn": 123,
"shortTitle": "<string>",
"image": "<string>",
"venueEvent": {
"id": "<string>",
"externalIdentifier": "<string>",
"slug": "<string>",
"title": "<string>",
"series": {
"id": "<string>",
"venue": "<string>",
"externalIdentifier": "<string>",
"name": "<string>"
}
},
"venueMarketOutcomes": [
{
"id": "<string>",
"venueMarketId": "<string>",
"label": "<string>",
"externalIdentifier": "<string>",
"title": "<string>",
"price": 123,
"winner": true,
"payoutPerShare": 0.5,
"refundAtCost": true
}
]
}
],
"nextCursor": "<string>",
"hasMore": true
}{
"message": "<string>"
}{
"message": "<string>"
}Authorizations
Your application ID. Required for all app-tier and user-tier routes.
Query Parameters
20kalshi, polymarket, limitless, opinion, predict, pred, tiprun, probable, myriad, hyperliquid, novig, prophetx, betdex