ESMA Positions

API QuantAPI Developer

This API returns data for multiple stocks — every constituent of a market index, or of one of your own universes — for the specified date.

Every publicly disclosed short position open on the date in the selected listings, one row per holder per listing.

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:

  • Date: The snapshot date the positions are open on (YYYY-MM-DD format).
  • Exchange Symbol: Symbol of the exchange where the security trades.
  • Ticker: The ticker symbol associated with the security.
  • Company Name: The name of the company issuing the security.
  • Ortex Company ID: Unique id for a company.
  • Ortex Security ID: Unique id for a security issued by a company.
  • Ortex Tradable Item ID: Unique id for a listing of a security.
  • 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.

Index or universe, and date

Use index or universe to select the listings and date to select the day (defaults to today). A position is returned when it started on or before date, had not ended before it and had been published by it (a disclosure is never shown before it was public; the UK aggregate has no publication date and is not filtered on one). One row per holder per listing; a constituent with no open disclosure has no row, and constituents outside the European regime (US listings, for example) never have one. Rows carry the disclosure itself; the per-position share count, value and free-float percentage are served per listing by the stock endpoint, because they need a price and a share-count lookup for every position.

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

Query Params
string

The ORTEX index identifier used by this endpoint. Return one row per constituent of this market index, as of the requested date. Pick one from the examples, or type another ORTEX index identifier — the list covers the identifiers published today and is not exhaustive. Matching ignores case, so us500 and US500 are the same index. Supply exactly one of 'index' or 'universe' — sending both, or neither, returns 400 invalidSelection. An unrecognized index identifier returns 404 indexNotFound.

string

Return one row per constituent of one of your own universes, matched case-insensitively by name. Supply exactly one of 'index' or 'universe' — sending both, or neither, returns 400 invalidSelection. A name you do not own, or that does not exist, returns 404 universeNotFound. On a Quant key, a universe holding more than 250 constituents returns 409 universeSizeExceeded; nothing in it is changed. Manage your universes at /api/v11/universes/.

date

The single date to return data for (defaults to the latest available). Format: YYYY-MM-DD.

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