List Markets
This route returns markets. Without q, it browses: it lists the markets that traded in the last hour, then each venue's most traded open markets. With q, it searches the title and outcomes of every open market.
status=settled lists markets that settled in the last 30 days and had whale trades, with the most recently settled first. status=all lists the open markets first and the settled ones after them.
A market with several outcomes, such as a game between two teams or an election with many candidates, appears as one row. Its outcomes show the two sides of its most traded contract, and outcomeCount says how many contracts it has. Get Market lists every contract.
Example request
curl "https://api.rivo.markets/v2/markets?category=sports&sort=whale_money&limit=2" \
-H "Authorization: Bearer rivo_live_..."import requests
url = "https://api.rivo.markets/v2/markets"
headers = {
"Authorization": "Bearer rivo_live_...",
}
params = [
("category", "sports"),
("sort", "whale_money"),
("limit", "2"),
]
res = requests.get(url, headers=headers, params=params)
res.raise_for_status()
print(res.json())const params = new URLSearchParams([
["category", "sports"],
["sort", "whale_money"],
["limit", "2"],
]);
const res = await fetch(`https://api.rivo.markets/v2/markets?${params}`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.RIVO_API_KEY}`,
},
});
if (!res.ok) throw new Error(`Rivo API ${res.status}`);
const { data } = await res.json();Query parameters
venuestringReturns rows from these venues:
kalshi,polymarket,polymarket_usorgemini. To pass several values, repeat the key, up to 50 times. A row matches if it matches any of them.categorystringReturns rows in these categories:
sports,politics,crypto,finance,culture. To pass several values, repeat the key, up to 50 times. A row matches if it matches any of them.kindstringReturns rows in these kinds of market. Each kind belongs to one category:
nfl,college_football,nba,wnba,college_basketball,basketball,mlb,nhl,soccer,tennis,golf,mma,boxing,motorsport,cricket,esports,chess,rugby,olympics,parlay,other_sports,us_elections,us_politics,world_politics,other_politics,bitcoin,ethereum,solana,xrp,other_crypto,fed_rates,economic_data,stocks_indices,companies,commodities,fx,other_finance,mentions,weather,entertainment,tech_ai,health,other_culture. See Kinds of market. To pass several values, repeat the key, up to 50 times. A row matches if it matches any of them.statusstringdefaultopenWhich markets to return:
open,settledorall.qstringReturns markets whose title or outcomes contain these words, up to 200 characters.
priceMinnumberReturns open markets whose leading side trades at or above this price, from 0 to 1. It works on open markets only.
priceMaxnumberReturns open markets whose leading side trades at or below this price, from 0 to 1. It works on open markets only.
seriesbooleanSet to
trueto return only repeating markets. These markets reopen on a clock, such as Bitcoin up or down in the next 15 minutes.sortstringdefaultwhale_moneyHow to order open markets.
whale_moneysorts by whale dollars in the last hour,volumeby dollars traded in the last hour,moveby the biggest price move of the last hour in either direction, andnewestby the latest trade. Markets with no reading for the sort come last. Settled markets always come newest settled first.limitintegerdefault50The number of rows on each page, from 1 to 200.
cursorstringPass the
nextCursorfrom the previous page to read the next one. A cursor works only on the listing that made it. See Paging.
Example response
{
"data": [
{
"ref": "cG9seW1hcmtldDptYXJrZXQ6d3RhLW11Y2hvdmEtc2huYWlkZS0yMDI2LTEwLTE0",
"title": "Wuhan Tennis Open: Karolina Muchova vs Diana Shnaider",
"venue": "polymarket",
"category": "sports",
"kind": "tennis",
"status": "open",
"outcomes": [
{
"name": "Karolina Muchova",
"label": "Karolina Muchova",
"price": 0.6
},
{
"name": "Diana Shnaider",
"label": "Diana Shnaider",
"price": 0.4
}
],
"outcomeCount": 16,
"volume1h": 197247.96,
"move1h": 0.02,
"whaleMoney": 339469.91,
"result": null,
"settledAt": null
},
{
"ref": "cG9seW1hcmtldDptYXJrZXQ6Y2ZiLWNvbHN0LXR4c3QtMjAyNi0xMC0xNS10b3RhbC02OXB0NQ",
"title": "Colorado State vs. Texas State: O/U 69.5",
"venue": "polymarket",
"category": "sports",
"kind": "college_football",
"status": "open",
"outcomes": [
{
"name": "Yes",
"label": "Yes",
"price": 0.505
},
{
"name": "No",
"label": "No",
"price": 0.495
}
],
"outcomeCount": 228,
"volume1h": null,
"move1h": null,
"whaleMoney": 91079.31,
"result": null,
"settledAt": null
}
],
"nextCursor": "eyJwIjoib3BlbiIsIm8iOjJ9"
}Response fields
dataobject[]The markets on this page.
Show 14 data fields
refmarket refThe market's ref. You can pass it to any
marketfilter or to Get Market. On a market of several outcomes, it names the whole event.contractmarket ref or nullThe ref of the exact contract. It is the same as
refon a market with one contract. On a market of several outcomes, such as a game with a moneyline and a spread, it tells the contracts apart. Pass it to Place Paper Order or a market bot.titlestringThe market's title, as the venue writes it.
venuestringThe venue that lists the market: one of
kalshi,polymarket,polymarket_usorgemini.categorystring or nullThe market's category: one of
sports,politics,crypto,finance,culture. It isnullwhen Rivo has not classified the market.kindstring or nullThe kind of market, such as
nflorbitcoin. It isnullwhen Rivo has not classified the market yet.statusstringThe market's status:
open,settledorvoid.outcomesobject[]On an open market, the two sides, or the two sides of its most traded contract. The list is empty on a settled market.
Show 3 outcomes fields
namestringThe side's name, the same on every route. On Polymarket it is the outcome's own name, such as
LakersorUp. On every other venue it isYesorNo.labelstringWhat the venue calls the side, such as
MilwaukeeorNot Milwaukee. It equalsnamewhere the two agree.pricenumber or nullThe side's price now, from 0 to 1.
outcomeCountintegerThe number of contracts the market has.
volume1hnumber or nullThe dollars traded on the market in the last hour, counting every trade Rivo's market reader saw. It is
nullwhen Rivo has not seen the market trade. It comes from a different read thanwhaleMoney, so on a busy marketwhaleMoneycan be larger.move1hnumber or nullHow much the Yes price changed over the last hour.
whaleMoneynumber or nullThe dollars whales spent buying into the market in the last hour, from Rivo's whale trades. It is
nullwhen no whale bought in the last hour.resultstring or nullOn a settled market, the name of the outcome that won. It is
nullwhile the market is open and when it is void.settledAtstring or nullOn a settled market, when it settled, in ISO 8601 UTC.
nextCursorstring or nullPass this as
cursorto read the next page. It isnullon the last page.
Errors
| Code | When |
|---|---|
VALIDATION | A parameter is out of range or unknown. You sent priceMin or priceMax without status=open. You sent a sort other than newest with status=settled. Or the cursor came from another listing. |