curl --request GET \
--url https://api.routeur.app/v1/search \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.routeur.app/v1/search"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.routeur.app/v1/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.routeur.app/v1/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"data": [
{
"match": "match",
"event": {
"venue": "kalshi",
"id": "<string>",
"title": "<string>",
"category": "Sports",
"venues": [
"kalshi"
],
"markets": 123,
"mutually_exclusive": true,
"volume_24h_usd": "0.4100",
"outcomes": [
{
"label": "<string>",
"venue": "kalshi",
"market_id": "<string>",
"title": "<string>",
"prices": [
{
"venue": "kalshi",
"market_id": "<string>",
"yes_ask_usd": "0.4100",
"no_ask_usd": "0.4100",
"observed_at": "2023-11-07T05:31:56Z"
}
],
"volume_24h_usd": "0.4100",
"chance": "0.4100",
"best_venue": "kalshi",
"change_24h": "0.4100",
"sparkline": [
"0.4100"
]
}
],
"image_url": "<string>",
"twin": {
"venue": "kalshi",
"id": "<string>"
},
"starts_at": "2023-11-07T05:31:56Z",
"closes_at": "2023-11-07T05:31:56Z",
"summary": "<string>",
"topics": [
"<string>"
]
}
}
],
"graph_run": 2,
"filters": [
{
"kind": "venue",
"label": "<string>",
"value": "<string>"
}
],
"next_offset": 2,
"query": "<string>",
"corrected_query": "<string>",
"related_category": "Sports"
}{
"error": {
"code": "invalid_parameter",
"message": "Invalid or unsupported query parameter: limit."
}
}{
"error": {
"code": "api_key_required",
"message": "Send an API key in the X-API-Key header or as a Bearer token."
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Search events
Finds events for free text and never comes back empty. Results come in
order of how they were found, each labeled with match:
match: every word matched in a title, outcome or category, allowing common shorthand (dems, gop, btc, fed) and the last word as a prefix so results follow typing; or the query names a person, team, place or subject a market is labeled with, however its title is worded.similar: some of the words matched, a title is close in spelling, or the market means close to the same thing.related: trending in the category the query is about, named inrelated_category.trending: trending anywhere, most traded first.
Misspelled words are replaced by the closest word listings use, shown
in corrected_query. An empty q lists what is trending. Pages go up
to 300 results; pass next_offset as offset for the next page.
Plain language in the query narrows the search: “dem senate races
closing this month under 30c” filters to markets closing within a
month whose leading outcome costs under 30¢, and searches for “dem
senate races”. Also understood: a venue name, “on both venues”,
“longshots”, “coin flips”, “favorites”, “movers”, “closing
today/this week/this month”, “over $50k traded”. What was understood
comes back in filters, and query is what was searched for. The
same filters can be set as parameters, which win over the query. With
filters on, results can be empty: they are what you asked for.
curl --request GET \
--url https://api.routeur.app/v1/search \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.routeur.app/v1/search"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.routeur.app/v1/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.routeur.app/v1/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"data": [
{
"match": "match",
"event": {
"venue": "kalshi",
"id": "<string>",
"title": "<string>",
"category": "Sports",
"venues": [
"kalshi"
],
"markets": 123,
"mutually_exclusive": true,
"volume_24h_usd": "0.4100",
"outcomes": [
{
"label": "<string>",
"venue": "kalshi",
"market_id": "<string>",
"title": "<string>",
"prices": [
{
"venue": "kalshi",
"market_id": "<string>",
"yes_ask_usd": "0.4100",
"no_ask_usd": "0.4100",
"observed_at": "2023-11-07T05:31:56Z"
}
],
"volume_24h_usd": "0.4100",
"chance": "0.4100",
"best_venue": "kalshi",
"change_24h": "0.4100",
"sparkline": [
"0.4100"
]
}
],
"image_url": "<string>",
"twin": {
"venue": "kalshi",
"id": "<string>"
},
"starts_at": "2023-11-07T05:31:56Z",
"closes_at": "2023-11-07T05:31:56Z",
"summary": "<string>",
"topics": [
"<string>"
]
}
}
],
"graph_run": 2,
"filters": [
{
"kind": "venue",
"label": "<string>",
"value": "<string>"
}
],
"next_offset": 2,
"query": "<string>",
"corrected_query": "<string>",
"related_category": "Sports"
}{
"error": {
"code": "invalid_parameter",
"message": "Invalid or unsupported query parameter: limit."
}
}{
"error": {
"code": "api_key_required",
"message": "Send an API key in the X-API-Key header or as a Bearer token."
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Query Parameters
What to look for, in plain language. Empty lists what is trending.
200Results per page.
1 <= x <= 50Pass the previous response's next_offset.
0 <= x <= 300Only events on this venue. Wins over a venue named in q.
kalshi, polymarket Only events in this category.
Sports, Politics, Economics, Crypto, Culture, Tech & Science, Weather, World, Other Only events listed on both venues.
Days ahead an event must close within.
1, 7, 30 Cheapest the leading outcome's Yes price may be, in cents.
0 <= x <= 100Dearest the leading outcome's Yes price may be, in cents.
0 <= x <= 100Least traded in the last 24 hours, in USD.
x >= 0Only events whose leading outcome moved 5 cents or more today.
Response
A page of results.
Show child attributes
Show child attributes
The graph run the response was read from.
x >= 1The filters in force, to show and to remove.
Show child attributes
Show child attributes
x >= 1What was searched for once filters were taken out of it.
Sports, Politics, Economics, Crypto, Culture, Tech & Science, Weather, World, Other