const res = await fetch('https://app.trdrs.co/api/market/symbols', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/market/symbols' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://app.trdrs.co/api/market/symbols"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/market/symbols",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.trdrs.co/api/market/symbols"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.trdrs.co/api/market/symbols")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/market/symbols")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"symbols": [
{
"symbol": "ES",
"name": "E-mini S&P 500",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ES1!"
},
{
"symbol": "ES1!",
"name": "E-mini S&P 500 continuous front month",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ES1!"
},
{
"symbol": "ES2!",
"name": "E-mini S&P 500 continuous second month",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ES2!"
},
{
"symbol": "CME:ESZ2026",
"name": "E-mini S&P 500 Dec 2026",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ESZ2026"
},
{
"symbol": "CME:ESH2027",
"name": "E-mini S&P 500 Mar 2027",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ESH2027"
}
],
"hasMore": false
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Search the symbol catalog
Searches the symbol catalog for symbols whose text contains your query, across the asset classes this engine serves. Use it to build a symbol picker, then use each returned symbol exactly as it is in every other market data call. It returns one page of matches and whether more follow.
Futures list only in a signed-in trader’s own session, and only when that trader has a futures source, once for each provider of their sources. Each futures product lists as its root, such as ES, then its continuous front month ES1! and second month ES2! where trdrs models the product’s roll, then each dated contract trdrs registers, such as CME:ESZ2026, in roll order until its last trade, named with its contract month. A continuous symbol stands for the contract its position names at the moment you use it, so a chart of ES1! moves to the next contract at the roll by itself. A dated contract is that contract and no other.
Required key: Trading API key. A Connect app’s backend can also send it with the app’s API key, and a venue’s backend with its Venue key, which carries trader:read or trader:trade, each naming one of its own traders in x-trdrs-trader: it then runs on that trader’s own accounts.
const res = await fetch('https://app.trdrs.co/api/market/symbols', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/market/symbols' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://app.trdrs.co/api/market/symbols"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/market/symbols",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.trdrs.co/api/market/symbols"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.trdrs.co/api/market/symbols")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/market/symbols")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"symbols": [
{
"symbol": "ES",
"name": "E-mini S&P 500",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ES1!"
},
{
"symbol": "ES1!",
"name": "E-mini S&P 500 continuous front month",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ES1!"
},
{
"symbol": "ES2!",
"name": "E-mini S&P 500 continuous second month",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ES2!"
},
{
"symbol": "CME:ESZ2026",
"name": "E-mini S&P 500 Dec 2026",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ESZ2026"
},
{
"symbol": "CME:ESH2027",
"name": "E-mini S&P 500 Mar 2027",
"exchange": "CME",
"type": "future",
"provider": "rithmic",
"market": "CME:ESH2027"
}
],
"hasMore": false
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Authorizations
The Trading API key (trdrs_sk_…), for market data, orders and account state on the accounts its owner holds. Use it server-to-server, and keep it on your server. Its scope is named trading in the API.
Query Parameters
The text to search for, at most 32 characters. Omit it to page through every symbol.
How many results to return, 50 by default. Anything above 100 is lowered to 100, not refused.
Only return symbols of this class, as each row's type writes it: future for futures, crypto for crypto perpetuals, or the class of a builder-deployed Hyperliquid market, such as equity or commodity. A class no symbol has lists nothing.
How many results to skip, for the next page. hasMore is exact, so paging until it is false always ends.