XOOMAR

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

GET
/api/markets/short-interest?symbol=GME

Without symbol: latest settlement, top 100 by days to cover. With symbol: full biweekly history for that symbol.

GET
/api/markets/short-interest/csv

Latest settlement snapshot, all symbols, as CSV.

GET
/api/markets/short-volume?symbol=GME&days=60, ?symbol=GME&from=2021-08-02&limit=5000 or ?sort=shares

FINRA daily short sale volume. Without symbol: the latest day, 100 highest short shares of volume among symbols with 1M or more shares reported (sort=shares for the largest short volumes). With symbol: daily history since August 2021, oldest first; from and to (ISO dates) set the window and limit (or days) caps the rows at 5,000, so one call returns the whole series. Fields: date, symbol, shortVolume, shortExemptVolume, totalVolume, shortRatio. CSV of the latest day: /api/markets/short-volume/csv.

GET
/api/markets/threshold-list?date=2026-09-14, ?symbol=GME or ?market=nasdaq

Regulation 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; NYSE as soon as its file can be read). 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.

GET
/api/markets/fails-to-deliver?symbol=GME or ?symbol=GME&from=2010-01-01&to=2021-12-31&limit=5000

SEC fails to deliver since January 2010. 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. 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 }. The data field is an array of records with these fields:

FieldTypeDescription
settlementDatestring (date)FINRA settlement date (~15th and month-end)
symbolstringTicker symbol
shortQtynumber | nullTotal shares held short
avgDailyVolnumber | nullAverage daily trading volume
daysToCoverstring | nullshortQty / avgDailyVol, FINRA-computed
changePctstring | nullChange in short quantity vs the prior report

The hub endpoint filters for average daily volume above 100k to keep days-to-cover meaningful; per-symbol history is unfiltered.

Numeric values arrive as strings where precision matters (prices, rates); parse with your language's decimal type for accounting-grade math. Rate limiting is fair-use per IP; a 429 response includes a Retry-After header. No authentication or API key needed. Attribution is appreciated: xoomar.com/markets.

Need more headroom? A free account raises your limit to 120 requests a minute with an X-API-Key header.

Frequently Asked Questions

Where does the data come from?
FINRA's public consolidated short interest files, published twice a month on their CDN. We check daily and load each new file the day it appears.
How much history is available?
Biweekly short interest since December 2017, daily short volume since August 2021 and fails to deliver since January 2010. Per-symbol history via the symbol parameter on each endpoint, with from, to and limit for the window.
Why is short interest delayed?
FINRA publishes about a week after each settlement date. That lag is inherent to the source; every short interest product has it.
What are the rate limits?
30 requests per minute per IP keyless, 120 with a free account key.

Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.