GET Quote
- NT8
- Tradovate
Get a live quote NT8
Retrieves real-time quote and contract metadata from the NT8 data feed. Unlike the legacy account-scoped quote endpoint (/v1/api/accounts/{account}/quote), this route does not require an account name. It resolves instruments by name and returns the latest quote from your NinjaTrader data feed.
Endpoint
GET /v1/api/market/quote
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
instrument | string | Conditional | Full instrument name (e.g., "ES 09-26"). Required when root is omitted. Supports CSV for multiple: "ES 09-26,NQ 09-26" |
root | string | Conditional | Supported NT8 instrument root (e.g., "ES"). Resolves the current front-month contract and is required when instrument is omitted. |
Code examples
- Python
- JavaScript
- cURL
import requests
token = 'my-secret-token'
url = "https://app.crosstrade.io/v1/api/market/quote"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
# Quote by instrument
params = {"instrument": "ES 09-26"}
# Multi-instrument quote, returns a list of quote objects
# params = {"instrument": "ES 09-26,NQ 09-26,MBT 09-26"}
try:
response = requests.get(url, headers=headers, params=params)
print(f"Response Code: {response.status_code}, Response Text: {response.text}")
except Exception as e:
print(f"An error occurred: {e}")
const token = 'my-secret-token';
// Quote by instrument
const params = new URLSearchParams({ instrument: "ES 09-26" });
// Multi-instrument quote, returns a list of quote objects
// const params = new URLSearchParams({ instrument: "ES 09-26,NQ 09-26,MBT 09-26" });
const url = `https://app.crosstrade.io/v1/api/market/quote?${params}`;
fetch(url, {
method: "GET",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
}
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
TOKEN="my-secret-token"
# Quote by instrument
curl -X GET "https://app.crosstrade.io/v1/api/market/quote?instrument=ES%2009-26" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
# Multi-instrument quote, returns a list of quote objects
# curl -X GET "https://app.crosstrade.io/v1/api/market/quote?instrument=ES%2009-26,NQ%2009-26,MBT%2009-26" \
# -H "Authorization: Bearer $TOKEN" \
# -H "Content-Type: application/json"
Response
- 200 - single
- 200 - multi
- 400
{
"description": "E-mini S&P 500 Futures",
"type": "Future",
"tickSize": 0.25,
"pointValue": 50.0,
"tickValue": 12.5,
"exchange": "Globex",
"expiration": "2026-03-01",
"tradingHours": "CME US Index Futures ETH",
"instrument": "ES 09-26",
"bid": 6618.0,
"ask": 6618.25,
"last": 6617.75,
"open": 6722.5,
"high": 6762.25,
"low": 6604.0,
"close": 6626.0,
"volume": 204962,
"quoteTime": "03/18/2026 01:51:54 PM",
"quoteTimeUtc": "2026-03-18 20:51:54",
"epoch": 1773867114,
"dataSource": {
"status": "Live",
"connectedFeeds": [
"Live"
]
},
"isMarketOpen": true
}
[
{
"description": "E-mini S&P 500 Futures",
"type": "Future",
"tickSize": 0.25,
"pointValue": 50.0,
"tickValue": 12.5,
"exchange": "Globex",
"expiration": "2026-03-01",
"tradingHours": "CME US Index Futures ETH",
"instrument": "ES 09-26",
"bid": 6618.0,
"ask": 6618.25,
"last": 6618.0,
"open": 6722.5,
"high": 6762.25,
"low": 6604.0,
"close": 6626.0,
"volume": 205008,
"quoteTime": "03/18/2026 01:52:22 PM",
"quoteTimeUtc": "2026-03-18 20:52:22",
"epoch": 1773867142,
"dataSource": {
"status": "Live",
"connectedFeeds": [
"Live"
]
},
"isMarketOpen": true
},
{
"instrument": "NQ 09-26",
"description": "E-mini NASDAQ 100 Futures",
"type": "Future",
"bid": 24407.75,
"ask": 24409.25,
"last": 24407.75,
"open": 24796.0,
"high": 24989.0,
"low": 24350.0,
"close": 24434.5,
"volume": 68708,
"tickSize": 0.25,
"tickValue": 5.0,
"pointValue": 20.0,
"exchange": "Globex",
"expiration": "2026-03-01",
"tradingHours": "CME US Index Futures ETH",
"isMarketOpen": true,
"quoteTime": "03/18/2026 01:52:18 PM",
"quoteTimeUtc": "2026-03-18 20:52:18",
"epoch": 1773867138,
"success": true
},
{
"description": "CME Micro Bitcoin Futures",
"type": "Future",
"tickSize": 5.0,
"pointValue": 0.1,
"tickValue": 0.5,
"exchange": "Globex",
"expiration": "2026-03-01",
"tradingHours": "CME FX Futures ETH",
"instrument": "MBT 09-26",
"bid": 71305.0,
"ask": 71325.0,
"last": 71350.0,
"open": 74650.0,
"high": 74965.0,
"low": 70570.0,
"close": 71115.0,
"volume": 64283,
"quoteTime": "03/18/2026 01:52:23 PM",
"quoteTimeUtc": "2026-03-18 20:52:23",
"epoch": 1773867143,
"dataSource": {
"status": "Live",
"connectedFeeds": [
"Live"
]
},
"isMarketOpen": true,
"success": true
}
]
{
"error": "Missing required arguments"
}
Platform nuances
You can request multiple instruments in a single call by passing a comma-separated list. All instruments are quoted concurrently.
Passing root resolves the current front-month NT8 instrument before requesting its quote and contract metadata. Root-based continuous-contract quotes require CrossTrade NT8 Add-On v1.8.3+.
WebSocket API
This request can also be made over the WebSocket API. Query parameters are passed inside args. Use instrument for an exact contract or CSV list, or root for front-month resolution.
{
"action": "rpc",
"id": "my-request-id",
"api": "GetQuote",
"args": {
"instrument": "ES 09-26"
}
}
Tradovate
There is no standalone quote endpoint on the /v1/api/tv surface; the accounts snapshot (GET /v1/api/tv/accounts/snapshot) carries per-position marks, and the Tradovate API overview lists the full read surface.
Use the documented Tradovate accounts snapshot when per-position marks satisfy the integration's needs.