SDK
import { PredictionMarketsClient } from '@solana-tracker/data-api';
const client = new PredictionMarketsClient({ apiKey: 'YOUR_API_KEY' });
const data = await client.searchMarkets({ q: 'Bitcoin', limit: 10 });
curl --request GET \
--url https://prediction-market-api.solanatracker.io/v1/markets/search \
--header 'x-api-key: <api-key>'import requests
url = "https://prediction-market-api.solanatracker.io/v1/markets/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://prediction-market-api.solanatracker.io/v1/markets/search', 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://prediction-market-api.solanatracker.io/v1/markets/search",
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-api-key: <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://prediction-market-api.solanatracker.io/v1/markets/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))
}HttpResponse<String> response = Unirest.get("https://prediction-market-api.solanatracker.io/v1/markets/search")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://prediction-market-api.solanatracker.io/v1/markets/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"count": 1,
"data": [
{
"exchange": "polymarket",
"hasDepth": true,
"id": "<string>",
"isTradable": true,
"marketKind": "binary",
"outcomes": [
{
"label": "<string>",
"price": 123
}
],
"pricingMode": "orderbook",
"slug": "<string>",
"status": "<string>",
"title": "<string>",
"volume": 123,
"category": "<string>",
"clobTokenIds": [
"<string>"
],
"closeDate": "<string>",
"collectionId": "<string>",
"comboEligible": true,
"comboGroup": "<string>",
"createdAt": "<string>",
"description": "<string>",
"eventId": "<string>",
"eventSlug": "<string>",
"eventTicker": "<string>",
"eventTitle": "<string>",
"gammaMarketId": "<string>",
"groupItemTitle": "<string>",
"icon": "<string>",
"image": "<string>",
"legCount": 1,
"legs": [
{
"label": "<string>",
"side": "yes",
"eventDate": "<string>",
"exclusionGroup": "<string>",
"lifecycleStatus": "<string>",
"officialLegId": "<string>",
"positionId": "<string>",
"sport": "<string>",
"underlyingMarketId": "<string>",
"underlyingTitle": "<string>"
}
],
"line": 123,
"liquidity": 123,
"materializationState": "<string>",
"openInterest": 1,
"outcomeIndex": 1,
"outcomeLabel": "<string>",
"parentEventUrl": "<string>",
"rawTitle": "<string>",
"seriesTicker": "<string>",
"seriesTitle": "<string>",
"settlementRule": "<string>",
"sportsMarketType": "<string>",
"tags": [
"<string>"
],
"ticker": "<string>",
"tradeCount24h": 1,
"url": "<string>",
"volume24h": 123
}
],
"hasMore": true,
"cursor": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}Markets
API de búsqueda de mercados de Kalshi y Polymarket
Búsqueda por relevancia en Kalshi y Polymarket. Filtra por estado, categoría y volumen, con paginación por cursor keyset. GET /v1/markets/search.
GET
/
v1
/
markets
/
search
SDK
import { PredictionMarketsClient } from '@solana-tracker/data-api';
const client = new PredictionMarketsClient({ apiKey: 'YOUR_API_KEY' });
const data = await client.searchMarkets({ q: 'Bitcoin', limit: 10 });
curl --request GET \
--url https://prediction-market-api.solanatracker.io/v1/markets/search \
--header 'x-api-key: <api-key>'import requests
url = "https://prediction-market-api.solanatracker.io/v1/markets/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://prediction-market-api.solanatracker.io/v1/markets/search', 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://prediction-market-api.solanatracker.io/v1/markets/search",
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-api-key: <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://prediction-market-api.solanatracker.io/v1/markets/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))
}HttpResponse<String> response = Unirest.get("https://prediction-market-api.solanatracker.io/v1/markets/search")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://prediction-market-api.solanatracker.io/v1/markets/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"count": 1,
"data": [
{
"exchange": "polymarket",
"hasDepth": true,
"id": "<string>",
"isTradable": true,
"marketKind": "binary",
"outcomes": [
{
"label": "<string>",
"price": 123
}
],
"pricingMode": "orderbook",
"slug": "<string>",
"status": "<string>",
"title": "<string>",
"volume": 123,
"category": "<string>",
"clobTokenIds": [
"<string>"
],
"closeDate": "<string>",
"collectionId": "<string>",
"comboEligible": true,
"comboGroup": "<string>",
"createdAt": "<string>",
"description": "<string>",
"eventId": "<string>",
"eventSlug": "<string>",
"eventTicker": "<string>",
"eventTitle": "<string>",
"gammaMarketId": "<string>",
"groupItemTitle": "<string>",
"icon": "<string>",
"image": "<string>",
"legCount": 1,
"legs": [
{
"label": "<string>",
"side": "yes",
"eventDate": "<string>",
"exclusionGroup": "<string>",
"lifecycleStatus": "<string>",
"officialLegId": "<string>",
"positionId": "<string>",
"sport": "<string>",
"underlyingMarketId": "<string>",
"underlyingTitle": "<string>"
}
],
"line": 123,
"liquidity": 123,
"materializationState": "<string>",
"openInterest": 1,
"outcomeIndex": 1,
"outcomeLabel": "<string>",
"parentEventUrl": "<string>",
"rawTitle": "<string>",
"seriesTicker": "<string>",
"seriesTitle": "<string>",
"settlementRule": "<string>",
"sportsMarketType": "<string>",
"tags": [
"<string>"
],
"ticker": "<string>",
"tradeCount24h": 1,
"url": "<string>",
"volume24h": 123
}
],
"hasMore": true,
"cursor": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}{
"code": 1,
"error": "<string>",
"errorCode": "<string>"
}Búsqueda indexada y ordenada por relevancia en ambos exchanges. El orden predeterminado es por relevancia (id/ticker/slug exactos, prefijo, subcadena de todos los tokens, n-gramas difusos y, por último, volumen de 24h). El cursor es un token de keyset opaco (cambio incompatible respecto a los offsets numéricos).
SDK Example
import { PredictionMarketsClient } from '@solana-tracker/data-api';
const client = new PredictionMarketsClient({ apiKey: 'YOUR_API_KEY' });
const data = await client.searchMarkets({ q: 'Bitcoin', limit: 10 });
Autorizaciones
Solana Tracker Data API key
Parámetros de consulta
Required search query (min 2 characters)
kalshi, polymarket, or poly
active, closed, or all (default active)
Category filter
Minimum volume USD
Maximum volume USD
relevance (default), volume, volume24h, liquidity, openInterest, createdAt
asc or desc (ignored for relevance)
Max results (default 20, max 50)
Rango requerido:
x >= 0Opaque keyset cursor from a previous response (not a numeric offset)
Include Kalshi combo/multivariate markets (default false)
Product filter: binary, categorical, or combo (comma-separated)
¿Esta página le ayudó?