Skip to main content
Four routes cover the price layer: a company’s daily prices and market caps, the benchmark registry, benchmark daily series, and semi-monthly short interest. All four require the Professional plan (or Fund) and cost 1 credit per call. Responses use the standard envelope with { data, next_cursor, coverage } — see Pagination and Errors.
Read the unit before the number, in both halves. A company with several listings returns one row per symbol per date, each in its own currency, nothing converted — no single row is “the” price. And twelve commodities quote in US cents (currency USX): corn at 508.5 is $5.085 a bushel. Benchmark rows carry close_major / currency_major with the figure converted to the major unit — read those.

GET /v1/companies/{company_id}/market-data

One security’s daily series, newest first. The path accepts a cmp_ id, ticker, CIK or ISIN; an unrecognised-but-plausible symbol is still tried as a symbol, since the series is keyed on the listing. Plan: Professional and above · Credits: 1 per call
string
required
Canonical cmp_ id, ticker, CIK or ISIN.
string
default:"prices"
Which daily series: prices or market_cap. They are different tables with different row shapes.
string
Start date, YYYY-MM-DD.
string
End date, YYYY-MM-DD.
string
next_cursor from the previous page, passed back verbatim.
integer
default:"100"
Rows per page, 1–1000.
The market_cap series rows carry symbol, company_id, date, currency, and market_cap.
History starts 2025-07-14 — about one year. A request for an older range returns nothing, and that is a fact about the dataset, not the security. One year cannot support a multi-year backtest or a 5-year return; the benchmark series below is the only long-run price history here.

GET /v1/benchmarks

The benchmark registry — which indices and commodities exist and how they are spelled. 425 indices and 40 commodities. Plan: Professional and above · Credits: 1 per call
string
Symbol or a fragment of the name: GCUSD, gold, Nikkei. Results are ranked so the headline instrument leads — “S&P 500” returns ^GSPC first, not a derivative index.
string
index or commodity.
integer
Max rows, 1–500.
Benchmark symbols are the vendor’s spellings and cannot be guessed: the S&P 500 is ^GSPC, gold is GCUSD, 37 indices have no ^ at all, and 000001.SS is the Shanghai Composite, which looks exactly like a Shanghai listing. Search the registry rather than constructing a symbol.

GET /v1/benchmarks/{symbol}

One benchmark’s daily series, newest first. History reaches 2015-01-01 — ten years, where the company price series holds one. Plan: Professional and above · Credits: 1 per call
string
required
Benchmark symbol from the registry, e.g. ^GSPC, GCUSD.
string
Start date, YYYY-MM-DD.
string
End date, YYYY-MM-DD.
string
next_cursor from the previous page, passed back verbatim.
integer
default:"100"
Rows per page, 1–1000.
Each row carries symbol, kind, name, date, open, high, low, close, volume, currency, and the unit-safe pair close_major / currency_major — equal to close / currency for everything that does not quote in cents.
Benchmark rows exist on weekends and are not dirty data: Saudi and Egyptian markets trade Sunday, CBOT grains run a Sunday-evening session, and a few calculated indices republish Friday’s value on Saturday.
A company identifier does not work on the benchmark routes and vice versa. Benchmarks carry no company_id on purpose — an index is not an issuer — so there is no join between the two halves beyond the date.

GET /v1/companies/{company_id}/short-interest

FINRA short interest for a US-listed security: shares sold short, the change since the prior settlement, and days to cover. Settled twice a month (mid-month and month-end), published about eight days later. History from 2017-12-29. Plan: Professional and above · Credits: 1 per call
string
required
Canonical cmp_ id, ticker, CIK or ISIN.
string
Earliest settlement date, YYYY-MM-DD.
string
Latest settlement date, YYYY-MM-DD.
string
next_cursor from the previous page, passed back verbatim.
integer
default:"100"
Rows per page, 1–1000.
Each row carries company_id, ticker, issue_name, category, market_class_code, settlement_date, current_short_position, previous_short_position, change_previous, change_percent, average_daily_volume, days_to_cover, float_shares, float_as_of, short_percent_float, short_percent_outstanding, revision_flag, and stock_split_flag, newest settlement first.
The newest row is never today: publication lags settlement by roughly eight days.
short_percent_float is computed against a share-count source that only covers recent settlements, so it is null across the older history while the reported position beside it is complete. Null there means no share count, not no shorts.