Skip to main content

GET Suggest Contracts

Searches Tradovate contracts and can resolve the active front month from a root symbol.

NinjaTrader 8Not available
No equivalent NT8 endpoint

This route is specific to linked Tradovate accounts.

TradovateREST only
GET /v1/api/tv/contracts/suggest?text=

Runs server-side for a linked Tradovate account, so NinjaTrader can be closed. Tradovate does not currently use the CrossTrade WebSocket API. See the Tradovate API guide.

Search contracts

GET /v1/api/tv/contracts/suggest?text=ES

Contract autocomplete against Tradovate's contract database. Pass a root like ES to resolve the active front month, or a partial symbol to list matching contracts. For an exact-symbol lookup, use /v1/api/tv/contracts/find.

Auth is the same bearer token as the rest of the CrossTrade API, on a plan with API access (Pro), plus a linked Tradovate account. Unlinked users receive 403 tradovate_not_linked.

Headers

NameValue
Content-Typeapplication/json
AuthorizationBearer <token>

Query Parameters

NameTypeRequiredDescription
textstringRequiredRoot or partial symbol to search, e.g. ES

Code Examples

import requests

token = 'my-secret-token'

url = "https://app.crosstrade.io/v1/api/tv/contracts/suggest"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

response = requests.get(url, headers=headers, params={"text": "ES"})
print(f"Response Code: {response.status_code}, Response Text: {response.text}")

Response

{
"success": true,
"data": [
{ "id": 3543031, "name": "ESU6", "contractMaturityId": 46127 },
{ "id": 3543032, "name": "ESZ6", "contractMaturityId": 46128 }
]
}

Rows are raw Tradovate contract records, ordered by Tradovate's suggestion ranking; the first row for a root is normally the active front month.