Search
curl --request GET \
--url https://api.polynode.dev/v2/sports/search \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v2/sports/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.polynode.dev/v2/sports/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://api.polynode.dev/v2/sports/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://api.polynode.dev/v2/sports/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://api.polynode.dev/v2/sports/search")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v2/sports/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{
"query": "fnatic",
"source": "gamma:/public-search",
"fallback": false,
"count": 5,
"results": [
{
"title": "Counter-Strike: fnatic vs FaZe (BO3) - DraculaN Playoffs",
"slug": "cs2-fnc-faze-2026-03-31",
"category": "Sports",
"active": false,
"closed": true,
"volume": 15420.50
},
{
"title": "Valorant: Fnatic vs ULF Esports (BO3) - VCT EMEA Group Stage",
"slug": "val-fnc1-ulf-2026-04-01",
"category": "Sports",
"active": true,
"closed": false,
"volume": 8230.00
}
]
}
Search
Search for games, teams, and events by name.
GET
/
v2
/
sports
/
search
Search
curl --request GET \
--url https://api.polynode.dev/v2/sports/search \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v2/sports/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.polynode.dev/v2/sports/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://api.polynode.dev/v2/sports/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://api.polynode.dev/v2/sports/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://api.polynode.dev/v2/sports/search")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v2/sports/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{
"query": "fnatic",
"source": "gamma:/public-search",
"fallback": false,
"count": 5,
"results": [
{
"title": "Counter-Strike: fnatic vs FaZe (BO3) - DraculaN Playoffs",
"slug": "cs2-fnc-faze-2026-03-31",
"category": "Sports",
"active": false,
"closed": true,
"volume": 15420.50
},
{
"title": "Valorant: Fnatic vs ULF Esports (BO3) - VCT EMEA Group Stage",
"slug": "val-fnc1-ulf-2026-04-01",
"category": "Sports",
"active": true,
"closed": false,
"volume": 8230.00
}
]
}
Search across all sports and esports events. Returns matching games with their slugs so you can drill into Game Detail. PolyNode first uses Polymarket’s public search endpoint, then falls back to Gamma tag/event search when that upstream is unavailable.
string
required
Search query (e.g.
celtics, fnatic, manchester).string
required
Your API key.
integer
default:"20"
Max results (up to 50).
{
"query": "fnatic",
"source": "gamma:/public-search",
"fallback": false,
"count": 5,
"results": [
{
"title": "Counter-Strike: fnatic vs FaZe (BO3) - DraculaN Playoffs",
"slug": "cs2-fnc-faze-2026-03-31",
"category": "Sports",
"active": false,
"closed": true,
"volume": 15420.50
},
{
"title": "Valorant: Fnatic vs ULF Esports (BO3) - VCT EMEA Group Stage",
"slug": "val-fnc1-ulf-2026-04-01",
"category": "Sports",
"active": true,
"closed": false,
"volume": 8230.00
}
]
}
Search then drill down
# Step 1: Search for a team or matchup
curl "https://api.polynode.dev/v2/sports/search?q=celtics&key=YOUR_KEY"
# Step 2: Take the slug from results and get full game detail
curl "https://api.polynode.dev/v2/sports/games/nba-nyk-hou-2026-03-31?key=YOUR_KEY"
Search covers all Polymarket events, not just games with scores. Results include season futures, playoff series, and prop markets. Use the
slug to get full details on any result.⌘I

