US Bank Failures Scraper & API - FDIC Failed Bank List
Pricing
from $5.60 / 1,000 bank failures
US Bank Failures Scraper & API - FDIC Failed Bank List
For banking research, credit and risk analysis, journalism and fintech: every US bank failure since 1934 from the FDIC's own service - 4,117 of them - with the fail date, what happened to it, who acquired it, and assets, deposits and cost to the fund converted from FDIC thousands into real dollars.
Pricing
from $5.60 / 1,000 bank failures
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Bank Failures Scraper & API - FDIC Failed Bank List
For bank risk and counterparty monitoring, research on the 2008–2011 wave and on 2023, and enriching a bank list with "did this charter end in failure, and when": every US bank failure since 1934 from the FDIC's own list — 4,117 of them — as structured rows, with the acquiring institution, the state, the assets, the deposits and the estimated loss to the fund.
The FDIC publishes its money in thousands, and reading it as dollars is off by a factor of a thousand. QBFASSET for Silicon Valley Bank is 209026000 — that is $209 billion, not $209 million. Every amount here is a real dollar figure (totalAssetsUsd, totalDepositsUsd, estimatedLossToFundUsd), and dates are ISO (2023-05-01) where the FDIC returns 5/1/2023.
The name filter was checked against the whole list, not against the API's word for it. test/verify-name-filter.mjs counts all 4,117 names locally and compares that count with what the filter returns: eight terms match exactly — First 772, BANK OF 666, FIRST NATIONAL 163, n.a. 89, and four more. Fixtures are real FDIC responses recorded on 2026-09-02, not hand-written.
No API key, no scraping of a web page: this reads the official banks.data.fdic.gov service. Export as JSON, CSV or Excel.
What one row carries
| Field | Example |
|---|---|
name | FIRST REPUBLIC BANK |
cert | FDIC certificate number |
city / state | SAN FRANCISCO / CA |
failDate | 2023-05-01 (ISO; the FDIC returns 5/1/2023) |
resolutionCode / resolution | PA / "Purchase and assumption - another bank took the deposits and some assets" |
acquiringInstitution | JPMORGAN CHASE BANK, N.A. |
totalAssetsUsd | 212638872000 |
totalDepositsUsd | 176436706000 |
estimatedLossToFundUsd | 15495761533 |
estimatedLossNote | why the loss is null, when it is |
sourceUrl | the FDIC page for this failure |
Two things this gets right that are easy to get wrong
1. The FDIC reports money in thousands.
QBFASSET for Silicon Valley Bank is 209026000. That is $209 billion, not $209 million.
Every amount here is multiplied out to whole US dollars, and the conversion is checked against
SVB and First Republic in the test suite.
2. A cost of 0 does not mean the failure was free.
Signature Bank comes back with COST: 0 in this dataset, and the FDIC's own published estimate
for it is around $2.4 billion. So 0 means "this table does not carry the number", not "no loss".
Rows like that get estimatedLossToFundUsd: null and a one-line estimatedLossNote saying why.
A scraper that prints $0 there is quietly wrong.
Input
{"states": ["CA", "NY"],"fromYear": 2008,"toYear": 2012,"nameContains": "First","maxRecords": 1000}
| Field | Default | Meaning |
|---|---|---|
states | (all) | Two-letter codes. Anything else is dropped, and the run says which |
fromYear / toYear | (none) | Failure year range. The list starts in 1934 |
nameContains | (none) | Keep only banks whose name contains this text, in any letter case. BANK OF matches 666 of the 4,117 |
maxRecords | 1000 | Stop after this many rows (whole list ≈ 4,100) |
maxRetries | 3 | Retries on timeout, 429 and 5xx only. A 4xx is the API's answer, not a hiccup |
No result is still an answer
If nothing matches, you get one row with rowType: "no-match", the reason, and the query that was
used - not an empty dataset that could equally mean "the API broke". Errors come back the same way,
with rowType: "error", and neither is charged.
Typical uses
- Bank risk and counterparty monitoring: which institutions failed in a state, and who absorbed them
- Research on the 2008-2011 wave (over 400 failures) and on 2023
- Teaching material and dashboards that need real, citable numbers
- Enriching a bank list with "did this charter end in failure, and when"
Pricing
Charged per delivered row. Rows that carry no answer - no-match and error - are not charged.
Checks
36 automated checks, and a mutation run that breaks the source in 15 deliberate defects to confirm
the checks actually fail when they should: wrong money unit, 0 printed as a loss, invalid dates accepted,
filters silently dropped, 4xx retried, non-JSON responses passed through. All 15 are caught.
Fixtures are real FDIC responses recorded on 2026-09-02, not hand-written.
Fixtures prove what the API answered, not that the query was right. So the name filter is checked
separately against the live API: test/verify-name-filter.mjs counts all 4,117 names locally and compares
that count with what the filter returns. Eight terms match exactly (First 772, BANK OF 666,
FIRST NATIONAL 163, n.a. 89, and four more), and the recorded result ships in
test/_name-filter-verified.json.
Other tools by NeverEmpty
Every NeverEmpty Actor follows the same rule: it never returns an empty result to mean two different things, and it only charges for rows that actually carry an answer.
- us-import-tariff-api - USITC duty rates by HTS code
- fda-recalls-api - food, drug and device enforcement reports
- sanctions-screening-official - OFAC, EU and UN lists
Source
https://banks.data.fdic.gov/api/failures - FDIC BankFind Suite. Public data, no key.