Fast simple search for navbar/autocomplete overlay
Primary search endpoint behind the web navbar overlay. Supports sort/offset/pagination and optional server-side event grouping (group_results), then applies provider-visibility filtering. When group_results=true, best-effort enrichment (never fails the request) adds classifiedGroups/absorbedMarketIds (interactive ladder groups) and correlations (a cross-venue similar-market rail, similarity above a threshold, capped at 4 counterparts per result market). When group_results=false, only correlations is attached.
curl --request GET \
--url https://data.kairos.trade/search/simpleimport requests
url = "https://data.kairos.trade/search/simple"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://data.kairos.trade/search/simple', 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://data.kairos.trade/search/simple",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://data.kairos.trade/search/simple"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.kairos.trade/search/simple")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.kairos.trade/search/simple")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"results": [
{
"market_id": "KXPRES-28-DJT",
"provider_id": 1,
"provider": "kalshi",
"relevance_score": 123,
"event_id": "<string>",
"event_name": "<string>",
"name": "<string>",
"symbol": "<string>",
"category": "<string>",
"status": "open",
"expires_at": "2023-11-07T05:31:56Z",
"volume_24h": 0,
"outcome_label": "<string>",
"series_key": "<string>",
"series_title": "<string>",
"text_score": 0,
"business_score": 0,
"penalty": 0,
"price": 123,
"volume_1h": 0,
"liquidity": 0,
"image": "<string>",
"icon": "<string>",
"token_id": "<string>",
"condition_id": "<string>",
"token_ids": [
"<string>"
],
"outcomes": [
"<string>"
],
"type": "event"
}
],
"meta": {
"query": "<string>",
"returned": 123,
"query_time_ms": 123,
"total": 123
},
"groups": [
{
"event_id": "<string>",
"market_count": 123,
"markets": [
{
"market_id": "KXPRES-28-DJT",
"provider_id": 1,
"provider": "kalshi",
"relevance_score": 123,
"event_id": "<string>",
"event_name": "<string>",
"name": "<string>",
"symbol": "<string>",
"category": "<string>",
"status": "open",
"expires_at": "2023-11-07T05:31:56Z",
"volume_24h": 0,
"outcome_label": "<string>",
"series_key": "<string>",
"series_title": "<string>",
"text_score": 0,
"business_score": 0,
"penalty": 0,
"price": 123,
"volume_1h": 0,
"liquidity": 0,
"image": "<string>",
"icon": "<string>",
"token_id": "<string>",
"condition_id": "<string>",
"token_ids": [
"<string>"
],
"outcomes": [
"<string>"
],
"type": "event"
}
],
"event_name": "<string>",
"representative": {
"market_id": "KXPRES-28-DJT",
"provider_id": 1,
"provider": "kalshi",
"relevance_score": 123,
"event_id": "<string>",
"event_name": "<string>",
"name": "<string>",
"symbol": "<string>",
"category": "<string>",
"status": "open",
"expires_at": "2023-11-07T05:31:56Z",
"volume_24h": 0,
"outcome_label": "<string>",
"series_key": "<string>",
"series_title": "<string>",
"text_score": 0,
"business_score": 0,
"penalty": 0,
"price": 123,
"volume_1h": 0,
"liquidity": 0,
"image": "<string>",
"icon": "<string>",
"token_id": "<string>",
"condition_id": "<string>",
"token_ids": [
"<string>"
],
"outcomes": [
"<string>"
],
"type": "event"
}
}
],
"singles": [
{
"market_id": "KXPRES-28-DJT",
"provider_id": 1,
"provider": "kalshi",
"relevance_score": 123,
"event_id": "<string>",
"event_name": "<string>",
"name": "<string>",
"symbol": "<string>",
"category": "<string>",
"status": "open",
"expires_at": "2023-11-07T05:31:56Z",
"volume_24h": 0,
"outcome_label": "<string>",
"series_key": "<string>",
"series_title": "<string>",
"text_score": 0,
"business_score": 0,
"penalty": 0,
"price": 123,
"volume_1h": 0,
"liquidity": 0,
"image": "<string>",
"icon": "<string>",
"token_id": "<string>",
"condition_id": "<string>",
"token_ids": [
"<string>"
],
"outcomes": [
"<string>"
],
"type": "event"
}
],
"classifiedGroups": [
{
"type": "group",
"groupKey": "<string>",
"provider": "<string>",
"outcomes": [
{
"id": "<string>",
"provider": "<string>",
"title": "<string>",
"outcomeLabel": "<string>",
"tokenId": "<string>",
"price": 123,
"op": "<string>",
"value": 123,
"hi": 123
}
],
"title": "<string>",
"kind": "<string>",
"axisLabel": "<string>",
"unit": "<string>",
"direction": "<string>",
"confidence": 123,
"marketCount": 123,
"category": "<string>",
"image": "<string>",
"icon": "<string>",
"eventId": "<string>",
"eventTitle": "<string>"
}
],
"absorbedMarketIds": [
"<string>"
],
"correlations": {}
}{
"detail": "Invalid provider: acme"
}{
"detail": [
{}
]
}{
"error": "Rate limit exceeded: 100 per 1 minute"
}{
"detail": "Invalid provider"
}Query Parameters
1 - 2001 <= x <= 1000x >= 0Legacy alias for provider.
Repeatable platform-tag-slug filter.
relevance, volume_24h, newest, ending_soon asc, desc Include a best-effort meta.total (falls back to the filtered count if any rows were dropped by visibility filtering).
Group markets by event server-side, producing groups/singles in the response.
Response
Simple-search result envelope, optionally grouped and enriched with classified ladders + cross-venue correlations.
Shared envelope for /search/simple and /search/resolve-url. Both always include results/meta; groups/singles appear only when the underlying search was grouped (always true for /search/simple with group_results=true, and for /search/resolve-url on an event URL). classifiedGroups/absorbedMarketIds are only ever attached by /search/simple (group_results=true); /search/resolve-url never sets them. correlations is attached by both, best-effort, and absent if no counterpart markets were found.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Market/outcome ids already rendered inside classifiedGroups — the overlay should not also render them as standalone rows.
Map of result market_id -> up to 4 similar cross-venue counterpart markets, sorted by similarity descending.
Show child attributes
Show child attributes
Was this page helpful?
curl --request GET \
--url https://data.kairos.trade/search/simpleimport requests
url = "https://data.kairos.trade/search/simple"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://data.kairos.trade/search/simple', 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://data.kairos.trade/search/simple",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://data.kairos.trade/search/simple"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.kairos.trade/search/simple")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.kairos.trade/search/simple")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"results": [
{
"market_id": "KXPRES-28-DJT",
"provider_id": 1,
"provider": "kalshi",
"relevance_score": 123,
"event_id": "<string>",
"event_name": "<string>",
"name": "<string>",
"symbol": "<string>",
"category": "<string>",
"status": "open",
"expires_at": "2023-11-07T05:31:56Z",
"volume_24h": 0,
"outcome_label": "<string>",
"series_key": "<string>",
"series_title": "<string>",
"text_score": 0,
"business_score": 0,
"penalty": 0,
"price": 123,
"volume_1h": 0,
"liquidity": 0,
"image": "<string>",
"icon": "<string>",
"token_id": "<string>",
"condition_id": "<string>",
"token_ids": [
"<string>"
],
"outcomes": [
"<string>"
],
"type": "event"
}
],
"meta": {
"query": "<string>",
"returned": 123,
"query_time_ms": 123,
"total": 123
},
"groups": [
{
"event_id": "<string>",
"market_count": 123,
"markets": [
{
"market_id": "KXPRES-28-DJT",
"provider_id": 1,
"provider": "kalshi",
"relevance_score": 123,
"event_id": "<string>",
"event_name": "<string>",
"name": "<string>",
"symbol": "<string>",
"category": "<string>",
"status": "open",
"expires_at": "2023-11-07T05:31:56Z",
"volume_24h": 0,
"outcome_label": "<string>",
"series_key": "<string>",
"series_title": "<string>",
"text_score": 0,
"business_score": 0,
"penalty": 0,
"price": 123,
"volume_1h": 0,
"liquidity": 0,
"image": "<string>",
"icon": "<string>",
"token_id": "<string>",
"condition_id": "<string>",
"token_ids": [
"<string>"
],
"outcomes": [
"<string>"
],
"type": "event"
}
],
"event_name": "<string>",
"representative": {
"market_id": "KXPRES-28-DJT",
"provider_id": 1,
"provider": "kalshi",
"relevance_score": 123,
"event_id": "<string>",
"event_name": "<string>",
"name": "<string>",
"symbol": "<string>",
"category": "<string>",
"status": "open",
"expires_at": "2023-11-07T05:31:56Z",
"volume_24h": 0,
"outcome_label": "<string>",
"series_key": "<string>",
"series_title": "<string>",
"text_score": 0,
"business_score": 0,
"penalty": 0,
"price": 123,
"volume_1h": 0,
"liquidity": 0,
"image": "<string>",
"icon": "<string>",
"token_id": "<string>",
"condition_id": "<string>",
"token_ids": [
"<string>"
],
"outcomes": [
"<string>"
],
"type": "event"
}
}
],
"singles": [
{
"market_id": "KXPRES-28-DJT",
"provider_id": 1,
"provider": "kalshi",
"relevance_score": 123,
"event_id": "<string>",
"event_name": "<string>",
"name": "<string>",
"symbol": "<string>",
"category": "<string>",
"status": "open",
"expires_at": "2023-11-07T05:31:56Z",
"volume_24h": 0,
"outcome_label": "<string>",
"series_key": "<string>",
"series_title": "<string>",
"text_score": 0,
"business_score": 0,
"penalty": 0,
"price": 123,
"volume_1h": 0,
"liquidity": 0,
"image": "<string>",
"icon": "<string>",
"token_id": "<string>",
"condition_id": "<string>",
"token_ids": [
"<string>"
],
"outcomes": [
"<string>"
],
"type": "event"
}
],
"classifiedGroups": [
{
"type": "group",
"groupKey": "<string>",
"provider": "<string>",
"outcomes": [
{
"id": "<string>",
"provider": "<string>",
"title": "<string>",
"outcomeLabel": "<string>",
"tokenId": "<string>",
"price": 123,
"op": "<string>",
"value": 123,
"hi": 123
}
],
"title": "<string>",
"kind": "<string>",
"axisLabel": "<string>",
"unit": "<string>",
"direction": "<string>",
"confidence": 123,
"marketCount": 123,
"category": "<string>",
"image": "<string>",
"icon": "<string>",
"eventId": "<string>",
"eventTitle": "<string>"
}
],
"absorbedMarketIds": [
"<string>"
],
"correlations": {}
}{
"detail": "Invalid provider: acme"
}{
"detail": [
{}
]
}{
"error": "Rate limit exceeded: 100 per 1 minute"
}{
"detail": "Invalid provider"
}
