Skip to main content

POST Historical Bars

Request historical OHLCV bar data for any instrument available in NinjaTrader. This is an async operation that requests data from NT8's historical data infrastructure, so the response may take a moment depending on the date range and bar type.

Pull historical OHLCV bars

POST /v1/api/market/bars

Headers

NameValue
Content-Typeapplication/json
AuthorizationBearer <token>

Body Parameters

This is a POST request, parameters are sent as a JSON body.

NameTypeRequiredDescription
instrumentstringRequiredInstrument name (e.g., "ES 09-26")
periodTypestringOptionalBar type. Default: "minute". Options: minute, day, week, month, year
periodintegerOptionalBar period value. Default: 1. Example: 5 for 5-minute bars
daysBackintegerOptionalNumber of days of history. Default: 1. Ignored if from is provided
fromstringOptionalStart date in UTC (e.g., "2026-03-17T00:00:00Z")
tostringOptionalEnd date in UTC. Default: now
limitintegerOptionalMaximum number of bars to return (taken from the most recent). Default: 5000.

Code Examples

import requests

token = 'my-secret-token'
url = "https://app.crosstrade.io/v1/api/market/bars"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

data = {
"instrument": "ES 09-26",
"periodType": "minute",
"period": 5,
"daysBack": 1,
"limit": 3
}

try:
response = requests.post(url, headers=headers, json=data)
print(f"Response Code: {response.status_code}, Response Text: {response.text}")
except Exception as e:
print(f"An error occurred: {e}")

Response

{
"instrument": "ES 09-26",
"periodType": "minute",
"period": 5,
"count": 3,
"bars": [
{
"time": "2026-03-18T20:00:00.0000000Z",
"epoch": 1773864000000,
"open": 6731.75,
"high": 6731.75,
"low": 6731.75,
"close": 6731.75,
"volume": 1
},
{
"time": "2026-03-18T20:15:00.0000000Z",
"epoch": 1773864900000,
"open": 6719.0,
"high": 6719.0,
"low": 6719.0,
"close": 6719.0,
"volume": 1
},
{
"time": "2026-03-18T20:20:00.0000000Z",
"epoch": 1773865200000,
"open": 6713.5,
"high": 6713.5,
"low": 6713.5,
"close": 6713.5,
"volume": 1
}
],
"success": true
}
warning

The request has a 10-second timeout. If NinjaTrader's data infrastructure takes longer than that to load the requested bars (which can happen with very large date ranges or exotic bar types), the response will return a timeout error. In that case, try reducing the date range or bar count.

WebSocket API

This request can also be made over the WebSocket API. All parameters are passed inside args.

{
"action": "rpc",
"id": "my-request-id",
"api": "GetBars",
"args": {
"instrument": "ES 09-26",
"periodType": "minute",
"period": 5,
"daysBack": 1,
"limit": 100
}
}

With an explicit date range:

{
"action": "rpc",
"id": "my-request-id",
"api": "GetBars",
"args": {
"instrument": "ES 09-26",
"periodType": "day",
"period": 1,
"from": "2026-03-01T00:00:00Z",
"to": "2026-03-18T00:00:00Z"
}
}