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 | Required | Full native NT8 instrument name, including the contract month and year for futures (e.g., "ES 12-26"). Supports CSV for multiple: "ES 12-26,NQ 12-26". |
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 12-26"}
# Multi-instrument quote, returns a list of quote objects
# params = {"instrument": "ES 12-26,NQ 12-26,MBT 12-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 12-26" });
// Multi-instrument quote, returns a list of quote objects
// const params = new URLSearchParams({ instrument: "ES 12-26,NQ 12-26,MBT 12-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%2012-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%2012-26,NQ%2012-26,MBT%2012-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 12-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 12-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 12-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 12-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.
Supply the correct native instrument name for every requested contract. Your integration is responsible for contract selection and rollover; do not rely on continuous-symbol translation in direct NT8 API calls. See NT8 instrument names.
WebSocket API
This request can also be made over the WebSocket API. Query parameters are passed inside args. Supply the full native name in instrument, or a CSV list of full native names.
{
"action": "rpc",
"id": "my-request-id",
"api": "GetQuote",
"args": {
"instrument": "ES 12-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.