You are here: Reference > Historical Data Limitations

Historical Data Limitations

Historical data requests are subject to the following limitations:

For All Securities

For Stocks, CMDTY, ETFs, Forex, Indices and CFDs

Number of Market Data Lines Historical Data
Request Limit
499 or less One year
500 - 749 Two years
750 - 999 Three years
1000 -1249 Four years
1250 - 1499 Five years


Market data lines can be increased based on monthly commission amounts, amount of equity and Quote Booster subscriptions. A "market data line" refers to a quote line in TWS and to each reqMktData() and reqRealTimeBars() method invoked in the API.

The following table lists the monthly commission required, equity required, and/or quote booster packs required to increase the total years of historical data:

Total Years of
Historical Data

Com x Data = Mthly Com
Mthly Commission Required
Equity x Data = Mthly Equity Data
Mthly Equity Required

Data - Default = Data Needed
|Data Needed/Per Booster| = Total Booster

One year Less than USD 4000 Less Then USD 5,000,000 3 Booster packs or less
Two years USD 8.0 x 500 = USD 4,000 USD 10,000 x 500 = USD 5,000,000

500 - 100 = 400

|400 / 100| = 4

4 Booster Packs

Three years USD 8.0 x 750 = USD 6,000 USD 10,000 x 750 = USD 7,500,000

750 - 100 = 650

|650 / 100| = 7

7 Booster Packs

Four years USD 8.0 x 1000 = USD 8,000 USD 10,000 x 1000 = USD 10,000,000

1000 - 100 = 900

|900 / 100| = 9

9 Booster Packs

Five years USD 8.0 x 1250 = USD 10,000 USD 10,000 x 1250 = USD 12,500,000 N/A (Max Quote Booster Packs is limited to 10)

Note:  Increasing how far back historical data is available will have no effect on the pacing limitations. Pacing limitations are hard coded on IB’s Server backend and as such not user adjustable. Please see the below Pacing Violation section for more details.

For Futures, SSFs and Metals

For Options, FOPS, Warrants and Structure Products

For Bonds and Funds

Note:  For more information on requesting real time data see Using the Tickers Page in the DDE for Excel chapter, reqMktDataEx() in the ActiveX chapter, reqMktData() in the C++ chapter, reqMktData() in the Java chapter, reqMktData() in the C# chapter and Using the Tickers Page in the ActiveX for Excel chapter.

For Real Time Bars

When requesting Real Time Bars this is a query for streaming Historical Data, the data is relayed back from the same servers that provide Historical Data. As such when initiating the request it is subjected to the same pacing limitations outlined below in the Pacing Violation section. Also since the Real Time Bars requests are being provided as streaming, it will count towards the total number of Market Data Lines outlined in the Market Data Display page on our Website.

Note:  Real time bars not available for DDE. For more information about real time bar requests, see reqRealTimeBarsEX() in the ActiveX chapter,reqRealTimeBars() in the C++ chapter, reqRealTimeBars() in the Java chapter, reqRealTimeBars() in the C# chapter and Real Time Bars in the ActiveX for Excel chapter.

Pacing Violations

All of the API technologies support historical data requests. However, requesting the same historical data in a short period of time can cause extra load on the backend and subsequently cause pacing violations. The error code and message that indicates a pacing violation is:

162 - Historical Market Data Service error message: Historical data request pacing violation

The following conditions can cause a pacing violation:

Also, observe the following limitation when requesting historical data:

Note:  For more information about historical data requests, see Viewing Historical Data in the DDE for Excel chapter, reqHistoricalDataEx() in the ActiveX chapter, reqHistoricalData() in the C++ chapter, reqHistoricalData() in the Java chapter, reqHistoricalData() in the C# chapter and Viewing Historical Data in the ActiveX for Excel chapter.

Valid What To Show Values

The following table lists the valid whatToShow values based on the corresponding products.

*Only applies for CFD Indices. For CFD stock, you must specify the underlying stock.

Valid Duration and Bar Size Settings for Historical Data Requests

The following table lists the valid duration andbar size settings for API historical data requests. Please note that these are only guidelines but if you attempt to exceed them then each request may count as more than one and can cause a pacing violation as outlined above.