Short Interest & Fails-to-Deliver API — SEC FTD + FINRA
Pricing
from $6.00 / 1,000 results
Short Interest & Fails-to-Deliver API — SEC FTD + FINRA
Short interest & fails-to-deliver (FTD) API. Merges SEC FTD and FINRA short-interest disclosures into one per-ticker time series with change and spike flags. Keyless official sources. Market-structure DATA, not investment advice.
Pricing
from $6.00 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Maloney
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Short Interest & Fails-to-Deliver Monitor
Merge two official US market-structure disclosures — SEC Fails-to-Deliver (FTD) and FINRA consolidated short interest — into one clean, per-ticker time series with change and spike flags. Keyless official sources, one normalized schema, ready to chart, alert on, or feed to an agent.
This is market-structure DATA, not investment advice. It reports publicly filed fails-to-deliver and short-interest figures and simple period-over-period math on them. It is not a signal, recommendation, or prediction to buy, sell, or hold any security. Do your own research.
Who it's for
- Quant / data engineers who want FTD and short interest already parsed, normalized, deduped, and joined per ticker instead of unzipping SEC pipe files and FINRA CSVs by hand.
- Market-structure & compliance researchers tracking settlement fails and short-interest build-ups over time.
- Fintech / dashboard builders who need a stable JSON feed of fails, deltas, and spike flags per symbol.
- AI agents that need to answer "how have fails-to-deliver for X trended, and did they spike?" as a callable tool.
What it does
- Downloads the SEC semi-monthly FTD files (newest first, over your lookback), decompresses them, and parses the pipe-delimited layout into per-
(symbol, settlement_date)records. - Optionally downloads FINRA consolidated short-interest files and joins them per ticker (as-of the nearest FINRA settlement date on or before each FTD period).
- Builds a per-ticker time series and computes, for each period:
fails_delta,fails_pct_change, a trailing average, and afails_spikeboolean (fails >spikeMultiplierx trailing average). When short interest is included it addsshort_interest,days_to_cover, and their deltas. - Filters to your
tickers[](uppercased, client-side) and asinceDatewindow.
Example input
{"tickers": ["GME", "AMC"],"lookbackPeriods": 6,"spikeMultiplier": 3,"includeShortInterest": true,"shortInterestDates": ["2026-04-15", "2026-03-31"],"maxResults": 5000,"monitor": false}
Leave tickers empty to return every symbol in the files (capped by maxResults). Set monitor: true on a schedule to emit only newly published (ticker, settlement_date) rows.
Output fields
| Field | Description |
|---|---|
symbol | Uppercased ticker |
cusip | CUSIP from the SEC FTD file |
description | Issuer / company name |
settlement_date | SEC settlement date (YYYY-MM-DD) |
fails_quantity | Total fails-to-deliver shares (SEC CNS aggregate) |
price | Prior-day close from the FTD file (null when SEC value is .) |
fails_delta / fails_pct_change | Change vs the ticker's prior period |
fails_trailing_avg | Average fails over the prior lookback periods |
fails_spike | True when fails > spikeMultiplier x trailing average |
short_interest / short_interest_prev | FINRA consolidated (OTC) short-interest shares |
short_interest_delta / short_interest_pct_change | Change vs the prior FINRA cycle |
days_to_cover | FINRA days-to-cover (short interest / avg daily volume) |
short_pct_float | Always null — float is not in the FINRA file (documented caveat) |
short_interest_spike | Short-interest spike flag |
avg_daily_volume | FINRA average daily volume |
sources | Which disclosures contributed (e.g. ["SEC FTD", "FINRA Short Interest"]) |
Use as an MCP tool
This actor is callable by AI agents (Claude, Cursor, etc.) via mcp.apify.com. The field-level output descriptions make it a clean, chainable tool: an agent can pass tickers + a lookback and get back a structured fails/short-interest time series with spike flags to reason over — no scraping, no unzip, no CSV parsing.
Sources & caveats
- SEC Fails-to-Deliver (FTD) — semi-monthly ZIP files at
https://www.sec.gov/files/data/fails-deliver-data/cnsfails{YYYYMM}{a|b}.zip, each containing a pipe-delimited.txt(SETTLEMENT DATE | CUSIP | SYMBOL | QUANTITY (FAILS) | DESCRIPTION | PRICE). The SEC requires a descriptiveUser-Agent; this actor sets one. Files are decompressed in-actor with the tiny pure-JSfflatelibrary. Theafile (first half of a month) publishes ~end of that month; thebfile (second half) ~the 15th of the next month, so the newest period may not yet exist — the actor skips not-yet-published files gracefully. - FINRA consolidated short interest — bi-monthly keyless CSV at
https://cdn.finra.org/equity/otcmarket/biweekly/shrt{YYYYMMDD}.csv. Caveat: this CDN file covers OTC-market equities; exchange-listed short interest is not in this particular file, so a ticker may have FTD data but no short-interest row. Float is not published, soshort_pct_floatis always null. Short interest is opt-in (includeShortInterest) and you supply the FINRA settlement dates. - Neither source guarantees accuracy or timeliness; both are official disclosures republished as-is with added transform. Values can be revised by the publisher.
FAQ
Is this a short interest API? Yes — it exposes SEC fails-to-deliver plus FINRA short interest as a normalized per-ticker JSON/CSV time series.
Where does fails-to-deliver data come from? The SEC's official Fails-to-Deliver dataset (NSCC CNS aggregate), published semi-monthly.
How is a "spike" defined? A period is flagged when its fails (or short interest) exceeds spikeMultiplier times the ticker's trailing average over the prior lookback periods. Default multiplier is 3.
Can I monitor for new data automatically? Yes — run on an Apify schedule with monitor: true to emit only newly published (ticker, settlement_date) records.
Is this investment advice? No. It is market-structure data and simple arithmetic on public filings. Nothing here is a recommendation.
Pricing
Pay-per-result: you pay per record returned (one merged (ticker, settlement_date) row = one result). Empty results cost only the tiny actor start.