Free Short Interest API
Three FINRA and SEC files as clean JSON. Biweekly short interest for every US-listed symbol with days to cover and the change from the prior report; daily short sale volume with the short share of each day; and fails to deliver by settlement date.
Endpoints
/api/markets/short-interest?symbol=GMEWithout symbol: latest settlement, top 100 by days to cover. With symbol: that symbol's biweekly history, newest first, up to 200 reports.
/api/markets/short-interest/csvLatest settlement snapshot, all symbols, as CSV.
/api/markets/short-volume?symbol=GME&days=60, ?symbol=GME&from=YYYY-MM-DD&to=YYYY-MM-DD or ?sort=sharesFINRA daily short sale volume. Without symbol: the latest day, the 100 highest short shares of volume (sort=shares for the largest short volumes). With symbol: daily history, oldest first; from and to (ISO dates) set the window and limit (or days) caps the rows at 5,000. History starts in 2021; the free API returns the last six months. Fields: date, symbol, shortVolume, shortExemptVolume, totalVolume, shortRatio. CSV of the latest day: /api/markets/short-volume/csv.
/api/markets/threshold-list?date=2026-09-14, ?symbol=GME or ?market=nasdaqRegulation SHO threshold securities: names with fails to deliver of 10,000+ shares and 0.5% of shares outstanding for five straight settlement days, as each listing market publishes them every trading day (Nasdaq and Cboe lists). Without parameters: the newest day, all markets. With symbol: every day the symbol was listed, newest first. Fields: date, market, symbol, securityName. CSV: /api/markets/threshold-list/csv.
/api/markets/fails-to-deliver?symbol=GME or ?symbol=GME&from=YYYY-MM-DD&to=YYYY-MM-DD&limit=5000SEC fails to deliver. Without symbol: the latest settlement date, 100 largest fails by dollar value. With symbol: settlement dates on file, oldest first, the newest 400 by default; from, to and limit (max 5,000) select the window. History starts in 2010; the free API returns the last six months. Fields: settlementDate, cusip, symbol, quantity, description, price, valueUsd. CSV of the latest settlement date: /api/markets/fails-to-deliver/csv.
Example
import requests
r = requests.get("https://xoomar.com/api/markets/short-interest", params={"symbol": "TSLA"})
for report in r.json()["data"][:6]:
print(report["settlementDate"], report["daysToCover"])Response shape
Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs, license, attribution, meta }. In meta, source names who publishes the data and sourceAttribution is the credit line to show with it. The data field is an array of records with these fields:
| Field | Type | Description |
|---|---|---|
| settlementDate | string (date) | FINRA settlement date (~15th and month-end) |
| symbol | string | Ticker symbol |
| shortQty | number | null | Total shares held short |
| avgDailyVol | number | null | Average daily trading volume |
| daysToCover | string | null | shortQty / avgDailyVol, FINRA-computed |
| changePct | string | null | Change in short quantity vs the prior report |
Numeric fields typed string in the table carry exact decimals; parse them with your language's decimal type. No key needed to start: 10 requests a minute per IP without a key and 30 a minute with a free account key, with at least six months of history. A 429 response carries a Retry-After header in seconds. Credit XOOMAR with a link to the dataset page when you republish the data; the data terms are on the terms page.
A free account key raises the limit; send it in an X-API-Key header.
Frequently Asked Questions
Where does the data come from?
How much history is available?
Why is short interest delayed?
What are the rate limits?
Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.