ESMA Positions

API TraderAPI QuantAPI Developer

API to retrieve the publicly disclosed short positions in a given ticker on a given exchange.

Under the European short-selling regime, a holder whose net short position in a company reaches 0.5% of its issued share capital must disclose it publicly, and disclose again at every 0.1% step until it falls back below 0.5%. These are those public disclosures, one row per holder per position — disclosed figures, not a model, and not the ORTEX short-interest estimate.

Positions below the 0.5% threshold are never disclosed, so the sum of these positions is a floor on the short interest in a stock, not the total.

Since 13 July 2026 the UK regulator publishes a single aggregated net short position per issuer instead of per-holder positions; UK listings therefore show one "All Holders (Aggregate)" position.

Available Data Points:

  • Holder: The name of the disclosing position holder.
  • Position Start Date: The date the position was established at its disclosed size (YYYY-MM-DD).
  • Position End Date: The date the position was superseded by a new disclosure or fell below the threshold; null while it is still open. For UK listings (the FCA aggregate) the end date is exclusive: the aggregate stops applying on that date.
  • Published Date: The date the regulator published the disclosure — when it became public knowledge. Null for UK listings: the FCA aggregate carries no publication date.
  • Short Interest %: The disclosed net short position as a percentage of issued share capital.
  • Currency: The currency the position value is expressed in (the listing's trading currency).
  • Short Interest % Free Float: The position as a percentage of free float, using the shares outstanding and free float at the position end date (today for an open position).
  • Short Interest Shares: The position in shares: the disclosed percentage of the shares outstanding at the position end date (today for an open position), split-adjusted to today's terms; pass split_adjusted=false for the shares as they stood on that date.
  • Shares Value: The position value: the disclosed percentage of the shares outstanding at the position start, at the closing price on the position end date (the latest price for an open position). Both are put on the same split-adjusted basis, so a split after the position does not distort the value.

Filtering

Returns every position that was open at any point between from_date (required) and to_date (defaults to today), inclusive: positions that started on or before to_date and had not ended before from_date. Pass the same date for both to get the positions open on that date; pass today's date for both to get the positions currently open, whose Short Interest Shares, Shares Value and Short Interest % Free Float columns sum to the stock's total disclosed position. For a single day only each holder's latest position is returned, so a holder whose position changed on that day appears once. The window may span at most one year (a wider one is 400 invalidDateRange). Results are ordered by position start date, then by size, then by holder.

Try it out! You can test the API with the trial key TEST. Simply include it in your request headers; either here, or add the header "Ortex-Api-Key": "TEST" to your http request.

Trial key restrictions: Trial keys may be limited to a specific date range and set of regions. Requests outside the allowed regions or entirely outside the allowed date range are rejected; a date window that partially overlaps the allowed range is trimmed to it, reported in meta.restriction.

Get full access! Get a key at app.ortex.com/apis

Path Params
string
required

Where to find the instrument: a venue (exchange symbol, MIC or ISO-2 country) or an identifier scheme (tid, sid, cid, isin, figi). See Identifying an instrument.

string
required

The ticker on that venue, or the value in that scheme. An ISIN, sid, cid or share-class FIGI answers for the main listing only; reference/listings lists the others. See Identifying an instrument.

Query Params
date
required

Inclusive start of the returned date window. Format: YYYY-MM-DD.

Also selects the instrument: the ticker resolves to the listing that held it on the exchange in the URL path on this date. To retrieve a delisted or renamed company, use its former exchange and ticker with a from_date from when it was listed. An identifier path (/stock/isin|figi|sid|cid/<value>/…) resolves at this date too. The instrument block in the response names the company the data belongs to.

date

Inclusive end of the returned date window (defaults to today). Format: YYYY-MM-DD.

boolean
Defaults to true

Whether share counts — and, on the closing-prices endpoints, prices and volumes — are adjusted to today's terms (default) or returned as-was on the data date. Pass false for unadjusted (as-was) values.

integer

Page number within the paginated result set. Must be >= 1. Defaults to 1.

integer

Number of rows per page. The default and the maximum allowed depend on the API tier; a value above the tier maximum is rejected with 400 invalidPageSize.

string
enum
Defaults to json

Response format. "json" (default) or "csv".

Allowed:
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
text/csv