Short-locate costs: what it costs to locate (borrow for shorting) shares of every
Short-locate costs: what it costs to locate (borrow for shorting) shares of every hard-to-borrow US stock, observed twice a day -- point-in-time, never revised.
One row per (date, slot, ticker). Each sweep prices every listed US stock the broker marks NOT easy-to-borrow (~7,500 names). Served per row: date (US/Eastern trading date of the sweep), slot (am / pm), snapshot_time_utc (when the sweep ran, UTC to the minute, e.g. '2026-10-15 11:45' -- every row of a sweep shares it), ticker, status, price_per_share (USD per share), cost_per_100 (USD to locate 100 shares) and available_qty (shares that can be located right now). price_per_share and cost_per_100 are NULL unless status is 'offered'; available_qty is NULL unless a quote came back (0 for 'no_shares').
Typical uses: the borrow cost of a short idea on a given morning, names whose locate cost spiked or whose availability dried up, threshold-list membership over time, and the cost side of a short-selling backtest from 2026-10-08 onward.
Requires an Alphanume Pro API key. There is no date clamp on this route.
Honest limits, stated plainly. These are one broker's (Alpaca's) locate quotes for its own inventory, not a market-wide borrow rate -- another broker can quote the same name 2x higher or lower. Names the broker lends freely (easy-to-borrow) are not in the dataset. History starts 2026-10-08 and there is no backfill: locate quotes only exist live. Two sweeps a day, so intraday moves between sweeps are not captured.
Default order: newest date first, pm before am, then ticker, so the first page is the latest sweep. One sweep is ~7,500 rows: filter by ticker, date, slot or status to keep results small.
Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's cursor_date, cursor_slot and cursor_ticker back to fetch the next page.
Request
- Base URL: https://api.alphanume.com
- URL: https://api.alphanume.com/v1/short-locates
- Auth: one of:
- API key in header X-API-Key
- HTTP bearer
Query parameters
Ticker symbol filter, e.g. 'AAPL'. Case-insensitive.
Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters.
Start of date range, inclusive (YYYY-MM-DD).
End of date range, inclusive (YYYY-MM-DD).
Start of date range, exclusive (YYYY-MM-DD).
End of date range, exclusive (YYYY-MM-DD).
Which daily sweep: 'am' (11:45 UTC; 07:45 ET in summer, 06:45 ET in winter) or 'pm' (17:30 UTC; 13:30 ET in summer, 12:30 ET in winter).
What the broker answered: 'offered' (shares can be located; price and availability set); 'no_shares' (none available right now); 'threshold' (on the Reg SHO threshold list, cannot be located); 'unavailable' (no quote); 'corporate_action' (cannot be quoted due to a corporate action); 'error' (other refusal).
Only rows whose cost to locate 100 shares is at least this many US dollars (e.g. 5 for $5 per 100 shares). Unpriced rows are excluded whenever this is set.
Pagination: the 'cursor_date' value from the previous response's next_cursor. Send with cursor_slot and cursor_ticker.
Pagination: the 'cursor_slot' value from the previous response's next_cursor.
Pagination: the 'cursor_ticker' value from the previous response's next_cursor.
Response
Matching rows.
Changes
No recorded changes to this operation across all 1 revision of this API.