How a v1.1 API call is charged in credits, how to work out the most a call can cost before you make it, and worked examples for single stocks, index snapshots and backfills.
Every retail v1.1 data call is paid for in credits from your plan's monthly allowance (see the plans on Ortex APIs). Enterprise endpoints (/api/v11/enterprise/…) are not charged in credits.
How a call is charged
A call is charged per page of results served:
cost of a page = base cost + min(rows on the page × per-row cost, cap)
The cap is 500 credits on single-stock, feed and catalog endpoints and 1,500 on bulk endpoints.
- Rows are the rows in
dataon that page. Requesting the next page is a separate charge. - Fields and format do not change the price. A CSV response costs the same as JSON.
- The row-based part of a page is capped (500, or 1,500 on bulk), so no single page costs more than its base cost plus the cap.
- A call that finds nothing costs 0.05: a page with no rows, or a
404such as an unknown stock. See What is charged. - The amount charged is in every response:
meta.credits.used(this page) andmeta.credits.remaining(your balance), or theOrtex-Credits-UsedandOrtex-Credits-Remainingheaders on a CSV response.
Standard prices
| Endpoints | Base cost per page | Per row |
|---|---|---|
| Single-stock daily series: short interest, cost to borrow, days to cover, availability, short score, official short interest, intraday and live short interest, market cap, free float, closing prices, historic volatility, average volume, consensus estimates | 0.95 | 0.05 |
| Single-stock fundamentals | 0.8 | 0.05 |
| Other single-stock endpoints (corporate actions, dividends, buybacks, insiders, activist filings, options, peers, stock scores, ESMA positions, alt data, ticker and ISIN history, listings) | 0.1 | 0.05 |
Feeds and catalogs (/bulk/events/…, /bulk/insiders/…, /bulk/activist/…, /market/…, /reference/…) | 0.1 | 0.05, or none for a flat reference list |
Bulk endpoints (/api/v11/bulk/…?index=… or ?universe=…, many stocks on one date) | 0 | 0.05 |
Creating, renaming or changing a universe (/api/v11/universes/…) | 0.1 per call | — |
| Free: fails to deliver, Reg SHO threshold list, Market Intelligence content | 0 | 0 |
Each endpoint's exact price is also published in the API specification, as the x-ortex-credits extension on every operation:
"x-ortex-credits": {
"charged": true,
"chargedPer": "page",
"baseCost": 0.95,
"perRow": 0.05,
"maxRowCostPerPage": 500,
"maxPerPage": 500.95,
"freeStocksUncharged": true,
"noDataCost": 0.05
}A client, including an AI assistant using the ORTEX MCP server, can read it to work out the most a call can cost before making it.
Bulk is never dearer than single-stock calls
A bulk call for many stocks on one date never costs more than calling the single-stock endpoint for each of those stocks on that date. Bulk has no base cost, so it costs 0.05 per stock row, against at least 0.15 (and 1.00 for the short-interest family) for one stock's single-stock call. An empty bulk page costs 0.05, the same as an empty single-stock call.
Free stocks and the TEST key
- A small set of listings is free on the single-stock endpoints; their rows are also not charged when they appear in a bulk response.
- The
TESTkey is never charged (see Authentication).
Working out the most a call can cost
- Find the endpoint's price in the table above or in
x-ortex-credits. - Bound the number of rows.
- A single-stock series returns at most one row per date in your window for most endpoints (some, such as ESMA positions or consensus estimates, return several rows per date).
- A bulk call returns at most one row per constituent of the
indexoruniverse(several per constituent for ESMA positions and consensus).
- Work out the pages.
page_sizecan be set up to your plan's limit: 100 rows on Trader, 1,000 on Quant and 10,000 on Developer. Bulk endpoints default to 1,000 rows a page, and other endpoints to 100. - Add up the pages: each page costs its base cost plus its rows × the per-row cost, with the row part capped at 500 (1,500 on bulk). A page that comes back empty costs 0.05.
Fewer, larger pages are cheaper on single-stock endpoints, because the base cost is charged per page. On bulk endpoints the page size makes no difference.
Worked examples
| Request | Rows | Cost |
|---|---|---|
| Short interest for one stock on one date | 1 | 0.95 + 1 × 0.05 = 1.00 |
| Short interest for one stock over 30 dates, one page | 30 | 0.95 + 30 × 0.05 = 2.45 |
| Short interest for one stock on a date with no data yet (an empty page) | 0 | 0.05 |
A stock that does not exist (404 instrumentNotFound) | — | 0.05 |
The same 30 dates at page_size=10 (three pages) | 30 | 3 × (0.95 + 10 × 0.05) = 4.35 |
Short interest for every constituent of US500 on one date (/bulk/short/short_interest/?index=US500) | ~500 | 500 × 0.05 = 25, against 500 for 500 single-stock calls |
The same for US3000 | ~3,000 | 3,000 × 0.05 = 150 |
| Short interest, cost to borrow, availability and days to cover for a 15,800-stock universe on one date (four bulk calls, Developer) | 4 × 15,800 | 4 × 15,800 × 0.05 = 3,160 |
| Daily short interest for 1,700 stocks since 2018 (~3.7 million rows), one stock at a time with 10,000-row pages | ~3.7M | ~185,000 + 1,700 × 0.95 ≈ 186,600 |
| The same history fetched by date, one bulk call per date for a 1,700-stock universe | ~3.7M | ~3.7M × 0.05 ≈ 185,000 |
For a long history the per-row price is the same either way, so the totals are close; fetching by stock needs fewer requests (one per stock rather than one per date).
Selecting many stocks
index=takes an ORTEX index identifier, for exampleUS500,US1000,US2000,US3000,US100,US30,UK100,DE40,JP225,EU600,STOXX600orWORLD(the bulk endpoints' reference lists them). An index's constituents are taken as of the requested date.universe=takes the name of one of your own universes, built with the Universe APIs (/api/v11/universes/). On Quant a universe holds at most 250 stocks; on Developer it is unlimited.- Bulk and universe endpoints need a Quant or Developer plan.
What is charged
| Situation | Charged |
|---|---|
| A successful page with rows | The endpoint's price, as above |
A call that finds nothing: a 200 with no rows (data: [] and meta.emptyReason) | 0.05, flat, whatever the endpoint |
A 404 for something that does not exist (for example instrumentNotFound, universeNotFound, indexNotFound) | 0.05, flat. If your balance cannot cover it, the 404 is returned unchanged and nothing is charged. |
404 pageOutOfRange (a page number past the last page) or 404 samplePathNotReplaced (a documentation URL sent with its {namespace}/{identifier} placeholders still in it) | Nothing |
Any other error: 400, 401, 402, 403, 429, 5xx | Nothing |
A free endpoint, a free stock, or the TEST key, whatever the result | Nothing |
| A retried request | Each request is charged separately |
A request that times out at the gateway (504) | It may still be charged: the server can finish the request after the connection has closed. Check meta.credits.remaining before retrying. |
A call that finds nothing costs 0.05, so polling an endpoint for data that has not been published yet costs 0.05 per attempt.
Your balance
- Balance:
meta.credits.remainingon every charged response is your balance after that page. - When credits renew: credits are granted for your subscription cycle and expire at its end; top-ups carry their own expiry, and the credits that expire soonest are used first.
- Running out: when your balance is used up, a charged request returns
402 creditsExhausted. Itserror.contextgives your plan, allowance, credits used and remaining, when the cycle ends and whether it renews (see Response & Error Codes). A request is served while your balance is above zero: if it costs more than the credits left, it is still served and your balance goes to zero, never below. The next charged request is refused. - Simultaneous requests are charged one at a time against your balance, so they cannot overdraw it.
- Automatic top-ups happen only if you turn on auto-refill in your API billing settings. When it is on, a top-up is bought when your balance falls to your chosen threshold, up to the monthly spending limit you set. Without it, nothing is bought automatically.
