The FDIC BankFind API: Pull Any U.S. Bank’s Financials and Failure History as JSON (No Key)

Written by

in

The week Silicon Valley Bank collapsed, I wanted to answer one question for the small bank holding my business checking account: how much of its deposits were uninsured, and what did its capital position actually look like? Every finance site was recycling the same three charts. The real numbers were sitting in a government database that almost nobody pulls from directly.

That database is the FDIC’s BankFind Suite API. It covers every insured bank in the United States, every quarterly call report going back decades, and every bank failure since 1934. No API key. No signup. No rate-limit paywall. Just clean JSON.

I’ve been using it for the last few months to build deposit-risk snapshots, and it’s become my go-to when a regional bank story hits the news. Here’s how it works and what you can actually get out of it.

The base URL and why the old one 404s

First gotcha, because it cost me twenty minutes. A lot of older blog posts and Stack Overflow answers reference banks.data.fdic.gov. That host now issues a 301 Moved Permanently. The live host is:

https://api.fdic.gov/banks

If you use curl without following redirects you’ll get a bare “Moved Permanently” body and think the API is broken. Add -L, or just use the correct host. There are four main endpoints under it:

  • /institutions — bank identity, location, current size
  • /financials — quarterly call report metrics (the good stuff)
  • /failures — every failed bank since the Depression
  • /history — mergers, name changes, structure events

Finding a bank and its size

Say I want the largest active banks headquartered in California, sorted by total assets:

curl -s "https://api.fdic.gov/banks/institutions?\
filters=STALP:CA%20AND%20ACTIVE:1&\
fields=NAME,CITY,ASSET,DEP,ROA&\
sort_by=ASSET&sort_order=DESC&limit=5&format=json"

The response comes back nested under data.data, which is a slightly annoying shape, but consistent:

{
  "data": {
    "NAME": "East West Bank",
    "CITY": "Pasadena",
    "ASSET": 82474471,
    "DEP": 69086073,
    "ROA": 1.7776
  }
}

Assets and deposits are in thousands of dollars, so 82474471 is about $82.5 billion. ROA is return on assets as a percent. East West posting a 1.78% ROA against City National’s 0.74% in the same quarter tells you a lot about which balance sheet is working harder — and that’s before you open a single analyst report.

The filters syntax uses Elasticsearch-style field queries. STALP:CA is state, ACTIVE:1 filters out dead institutions, and you join clauses with AND. Ranges work too: ASSET:[1000000 TO 10000000] gets banks between $1B and $10B in assets.

The part that matters: quarterly financials

The /financials endpoint is where deposit risk and capital health live. Every bank files a call report each quarter, and the FDIC exposes the parsed fields. You query by CERT, the bank’s FDIC certificate number, which you grab from the institutions response.

curl -s "https://api.fdic.gov/banks/financials?\
filters=CERT:31628&\
fields=REPDTE,NETINC,ROA,ROE,ASSET,DEP&\
sort_by=REPDTE&sort_order=DESC&limit=2&format=json"

For East West Bank that returns:

{ "REPDTE": "20260331", "ROE": 17.61, "NETINC": 360281, "ASSET": 82474471 }

A 17.6% return on equity for a regional bank is strong. NETINC of 360281 is $360 million in net income for the quarter. Pull limit=20 and you have five years of trend data to chart yourself. There are hundreds of available fields — Tier 1 capital ratio (RBC1AAJ), net interest margin (NIMY), and the ratio of uninsured deposits, which is exactly the number I was hunting for in the first place.

Every bank failure since 1934

The /failures endpoint is grim but useful. It’s the historical record of every FDIC-resolved failure, with the estimated cost to the insurance fund:

curl -s "https://api.fdic.gov/banks/failures?\
fields=NAME,CITYST,FAILDATE,QBFDEP,COST&\
sort_by=FAILDATE&sort_order=DESC&limit=3&format=json"

The most recent entries as I write this show a Georgia community bank failing in May 2026, and a Chicago bank in January 2026 that cost the fund about $19.6 million. Total records: 4,115. COST is null for very recent failures because the final tab isn’t settled yet — a small honesty detail I appreciate in a government dataset.

A gotcha with field names

The available fields differ between endpoints, and the docs list is long and not always current. If you request a field that doesn’t exist on an endpoint, the API silently drops it rather than erroring. That means a typo gets you a missing column, not a helpful message. When something’s absent from your response, check spelling against the metadata definitions at the FDIC’s developer docs before assuming the data isn’t there.

Also: dates are inconsistent across endpoints. /financials uses 20260331 (YYYYMMDD as a string), while /failures uses 5/1/2026. Normalize on ingest or you’ll get burned joining tables.

Wiring it into a dashboard

I keep a tiny script that pulls the last eight quarters for a watchlist of regional banks and flags any quarter where ROA drops below zero or deposits shrink more than 5% sequentially. It’s maybe 40 lines of Python with requests, and it runs off cron. No vendor, no key rotation, no bill.

If you’re doing this kind of pull-normalize-analyze work regularly, having a machine that stays on and runs quietly matters more than raw horsepower. I run my scrapers on a small always-on box — a Beelink mini PC handles a stack of cron jobs like this without breaking a sweat, and it sips power. Full disclosure: affiliate link.

And if you’re stitching FDIC data together with company filings, the SEC EDGAR XBRL API we covered earlier pairs well for publicly-traded bank holding companies. For pulling other keyless government datasets, the Treasury FiscalData API walkthrough uses the same pattern. Both live alongside our free browser tools.

The broader point: a surprising amount of high-quality financial data is free, keyless, and machine-readable if you know the endpoint. The FDIC has been quietly running one of the best open data APIs in government. It won’t tell you what to do with a bank’s numbers — but it’ll hand you every number, in JSON, for nothing.

Join https://t.me/alphasignal822 for free market intelligence.

📧 Get weekly insights on security, trading, and tech. No spam, unsubscribe anytime.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Also by us: StartCaaS — AI Company OS · Hype2You — AI Tech Trends