Top movers

Listings with the largest percent change from the previous session close to a session close, from reconciled end-of-day prices across the entitled markets (each market's latest complete session by default). Gainers rank the largest rises first and include only rises; losers rank the largest falls first and include only falls; ties break by listing. previous_close is split-adjusted, so a split is not a move. A listing whose session opened at least 90% away from its split-adjusted previous close is withheld from the ranking: a split can reach the feed up to a day after it takes effect, and until its record arrives such a session cannot be told from a gain or fall, so it is left out rather than ranked, and appears once the split is recorded. Listings without a bar on both sessions are not ranked. Requires eod.read and an entitled market; a key limited to a symbol list ranks only those symbols. Rankings of recent sessions are rebuilt within minutes of a change to their end-of-day bars.

GET/v1/movers
Required capability
eod.read
Data timing
End of day
Credits
25 credits per request.
Live endpoint. Request examples query live data with your API key; response examples are illustrative. History and coverage vary by dataset and plan; see dataset coverage.

Parameters

directionstringoptional · query
gainers (default) or losers.

gainerslosers

Default: gainers
limitintegeroptional · query
Rows to return, from 1 to 50; default 20.Default: 20
exchangesstringoptional · query
Comma-separated ISO MIC codes, at most 100, each listed once. Defaults to every entitled exchange; mutual funds are ranked only for keys whose plan includes mutual-funds.read. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled. A mutual fund venue (NMFQ, FSRV) without mutual-funds.read returns 403 mutual-funds-not-entitled.
min_pricestringoptional · query
Minimum session close in the listing currency; default 1. Set 0 to include every price.Default: 1
min_volumestringoptional · query
Minimum session volume; default 100000. For exchange listings it is in shares, for crypto pairs in the quote currency. Currency pairs, indices and bonds have no volume, so they are ranked only with min_volume=0.Default: 100000
datestringoptional · query
Trading date (YYYY-MM-DD) of the session to rank, compared with each market's session before it; defaults to each market's latest complete session. Must be within the plan history depth. Only the session on this date is ranked, never an earlier one: a market with no session on it (a weekend or holiday of its exchanges, or a date before its history) contributes no rows, and a date on which none of the requested markets traded returns an empty list. A session with no ranking yet (recent ones are kept ranked) is ranked by the first request for it; when that does not fit the request time budget, the response is 503 query-timeout with Retry-After, the ranking continues in the background, and a retry after the Retry-After interval is served from it.
If-None-Matchstringoptional · header
ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits.
formatstringoptional · query
Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.

jsoncsv

Response fields

Returns data as an array of records. All example values are illustrative.

security_idstring
Stable public instrument ID, the instrument_id of the other endpoints.Being superseded by instrument_id, which carries the same value. Read instrument_id where present; security_id remains for compatibility.
symbolstring · null
Current MIC:TICKER of the listing.
exchange_micstring
exchange mic
currency_codestring
currency code
datestring
Trading date of the session.
previous_datestring
Trading date of the session before it.
closestring · null
Exact decimal string. Never a JSON floating point number.
previous_closestring · null
Previous session close, restated for any split between the two sessions so that both closes are on one share basis.
changestring · null
Exact decimal string. Never a JSON floating point number.
change_percentstring · null
100 × change / previous_close, rounded to 8 decimal places.
volumestring · null
Session volume: whole shares for exchange listings, the value traded in the quote currency for crypto pairs, null for currency pairs, indices and bonds.

Response metadata

Responses include meta.timezone. Dataset responses include next_cursor; health and exports have their own metadata. Request tracing uses the X-Request-ID header.

Read the shared data conventions

When something goes wrong

An empty data: [] is a successful query with no matching records. Invalid symbols, permissions and malformed parameters produce an RFC 9457 problem with an actionable detail.

Error codes & retry guidance

Plans

Requires eod.read. Access, recency and history depth come from the plan definitions the API enforces.

PlanAccessRecencyHistory
FreeIncludedEnd of dayNot date-bounded
DeveloperIncludedEnd of dayNot date-bounded
ProIncludedEnd of dayNot date-bounded
CommercialIncludedEnd of dayNot date-bounded
ScaleIncludedEnd of dayNot date-bounded

Free requests are limited to AAPL, NVDA, JNJ, PEP, MSFT, SPY, QQQ.

History is how far back a plan may request. How far records actually go for a symbol is history_from in dataset coverage. Nothing is real-time. Compare plans