const res = await fetch('https://app.trdrs.co/api/venues/{venueId}/reference/symbols', {
headers: { Authorization: `Bearer ${process.env.TRDRS_VENUE_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/venues/{venueId}/reference/symbols' \
-H "Authorization: Bearer $TRDRS_VENUE_KEY"import requests
url = "https://app.trdrs.co/api/venues/{venueId}/reference/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/venues/{venueId}/reference/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/venues/{venueId}/reference/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/venues/{venueId}/reference/symbols")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/venues/{venueId}/reference/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": null,
"market": "CME:ES1!"
},
{
"symbol": "HYPERLIQUID:BTC",
"name": "Bitcoin perpetual",
"exchange": "Hyperliquid",
"type": "crypto",
"provider": null,
"market": "HYPERLIQUID:BTC",
"currencyCode": "USDC"
}
],
"hasMore": true
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Search the markets a venue can list
Searches every market trdrs carries, so you can find one to list: each registered future, by its root, its continuous months and its dated contracts, and each crypto perpetual while crypto trading is enabled. It takes the same query and returns the same page as the symbol search of the market data API, and every row names no provider, since the search is for listing, not for charting with your own source. It changes no listing. Like the market data API, it answers 429 with Retry-After when one address searches too often. Required scope: venue:read. Preview: served on the sandbox to every venue, and production availability is arranged when a venue qualifies. Trading API keys and pre-registration keys do not authorize these routes.
const res = await fetch('https://app.trdrs.co/api/venues/{venueId}/reference/symbols', {
headers: { Authorization: `Bearer ${process.env.TRDRS_VENUE_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/venues/{venueId}/reference/symbols' \
-H "Authorization: Bearer $TRDRS_VENUE_KEY"import requests
url = "https://app.trdrs.co/api/venues/{venueId}/reference/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/venues/{venueId}/reference/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/venues/{venueId}/reference/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/venues/{venueId}/reference/symbols")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/venues/{venueId}/reference/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": null,
"market": "CME:ES1!"
},
{
"symbol": "HYPERLIQUID:BTC",
"name": "Bitcoin perpetual",
"exchange": "Hyperliquid",
"type": "crypto",
"provider": null,
"market": "HYPERLIQUID:BTC",
"currencyCode": "USDC"
}
],
"hasMore": true
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Authorizations
The Venue key (trdrs_vk_sandbox_… or trdrs_vk_production_…), in preview. It belongs to one venue in one environment and carries the scopes it was created with. The venue's verified owner creates it while signed in. It works on the /api/venues/{venueId} routes and, with trader:read or trader:trade, on the account, market and trading routes, reading the venue's own traders' accounts and routing their orders, each request naming its trader in x-trdrs-trader. A trdrs_sk_… key can't be used in its place. It reaches its venue's routes and its venue's own traders, and the owner manages keys from a signed-in session. Keep it on your server.
Path Parameters
Query Parameters
The text to search for, at most 32 characters. Empty lists everything, a page at a time.
32Only return markets of this asset class: future for futures, or crypto for crypto perpetuals. Any other class lists nothing.
How many results to skip, for the next page. hasMore is exact, so paging until it is false always ends.
x >= 0How many results to return, 50 by default. Anything above 100 is lowered to 100, not refused.
x >= 1Response
Success. The response is sent with Cache-Control: no-store, so don't cache it.