GET only, returns JSON, and takes the API key in the x-api-key header.
https://public-api.takeprofit.com/api/v1/marketdata. Live data is a separate protocol — see the WebSocket API.
Endpoints
Each endpoint page in the sidebar lists its parameters and response fields and has a Try it playground.
Only
exchange, symbol and timeframe are required. Leave the range out and the endpoint answers with the most recent data it has — the last 1000 candles, or the profiles that fit the default window. Add from, to, period or limit to narrow it down.Exchange codes come from GET /exchanges. They are TakeProfit codes, not the MIC of the listing venue: US equities are served under BATS, so AAPL lives at exchange=BATS. An unknown code answers 404 exchange not found, a symbol that is not listed there 404 security not found.Parameters the history endpoints share
Combine what you need:
from alone reads forward from that point, to alone reads backwards from it, from with to pins both ends, and period sets the length from whichever end you gave. Unknown query parameters are still rejected with 400, so a typo fails loudly instead of being silently ignored — passing limit to footprint or TPO is one of those typos, since only candles take it.
Every response carries the rate-limit headers x-ratelimit-limit, x-ratelimit-remaining and x-ratelimit-reset (the reset is a Unix timestamp), plus an x-request-id worth quoting in a support request.
Reading the responses
- Prices and volumes are decimal strings. Nothing is rounded into a float on the way to you.
- Profile rows are positional arrays. A footprint row is
[price, volumeBuy, volumeSell, tradesCountBuy, tradesCountSell], a TPO row is[price, blockIndexes, volumeBuy, volumeSell]. Future fields are appended, so ignore extra trailing elements. priceis the lower bound of the half-open interval[price, price + rowSize).- History depth is limited per timeframe for footprint and TPO, counted back from the security’s newest candle: 30 days for minute frames below
5m, rising with the timeframe to 3 years for1wand above. Afromolder than the limit is trimmed rather than rejected, so the response can start later than you asked, and a range that ends before the limit comes back empty.
Errors
Every failure returns an HTTP status and a JSON body.
New here? Quickstart walks through the first three requests, and Authentication covers creating a key.