BYTETOOLS

FDIC BankFind API

Free FDIC BankFind API with no key: every US insured bank with assets, deposits, branches, location and charter details, plus the historical failed bank list. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the FDIC BankFind API?

The FDIC publishes BankFind as a free JSON API with no key, covering every federally insured US bank. Requests filter and select fields over institutions, branch locations, quarterly financials, failures and merger history.

This is the authoritative record of which US banks exist, who insures them, where their branches are and what they are worth — maintained by the regulator rather than assembled by a data vendor. The `filters` and `fields` parameters make it a genuinely queryable database: name searches, state filters, asset thresholds and field projection all happen server-side, so you fetch the two rows you wanted rather than paging through thousands.

One convention governs every money figure and it is not signalled in the response: **financial values are in thousands of dollars**. An `ASSET` of 162158 means roughly 162 million, not 162 thousand. There is no unit field to read, so the multiplication has to live in your code with a comment explaining why. Note too that the host moved — `banks.data.fdic.gov` now issues a 301 to `api.fdic.gov`, and a client that does not follow redirects will simply fail.

Quick facts

Base URL
https://api.fdic.gov/banks
Authentication
No key or registration. Published by the FDIC as open government data.
Rate limit
No documented limit. The underlying index rebuilds roughly weekly.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the FDIC BankFind API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Two Texas banks with name, city and total assets

GET https://api.fdic.gov/banks/institutions?filters=STNAME:Texas&fields=NAME,CITY,ASSET,ACTIVE&limit=2&format=json

curl
curl 'https://api.fdic.gov/banks/institutions?filters=STNAME:Texas&fields=NAME,CITY,ASSET,ACTIVE&limit=2&format=json'
JavaScript (fetch)
const res = await fetch("https://api.fdic.gov/banks/institutions?filters=STNAME:Texas&fields=NAME,CITY,ASSET,ACTIVE&limit=2&format=json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.fdic.gov/banks/institutions?filters=STNAME:Texas&fields=NAME,CITY,ASSET,ACTIVE&limit=2&format=json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "meta": {
    "total": 2816,
    "parameters": {
      "filters": "STNAME:Texas",
      "fields": "NAME,CITY,ASSET,ACTIVE",
      "limit": "2"
    },
    "index": {
      "name": "institutions_20260814090007",
      "createTimestamp": "2026-08-14T11:52:48Z"
    }
  },
  "data": [
    {
      "data": {
        "CITY": "Alice",
        "ACTIVE": 0,
        "ASSET": 162158,
        "NAME": "Norwest Bank Texas, Alice",
        "ID": "10326"
      },
      "score": 0
    },
    {
      "data": {
        "CITY": "Luling",
        "ACTIVE": 1,
        "ASSET": 63861,
        "NAME": "Citizens State Bank of Luling",
        "ID": "10327"
      },
      "score": 0
    }
  ],
  "totals": {
    "count": 2816
  }
}

2. List failed US banks instead of active ones

GET https://api.fdic.gov/banks/failures?fields=NAME,CITYST,FAILDATE,QBFASSET&limit=3&format=json

curl
curl 'https://api.fdic.gov/banks/failures?fields=NAME,CITYST,FAILDATE,QBFASSET&limit=3&format=json'
JavaScript (fetch)
const res = await fetch("https://api.fdic.gov/banks/failures?fields=NAME,CITYST,FAILDATE,QBFASSET&limit=3&format=json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.fdic.gov/banks/failures?fields=NAME,CITYST,FAILDATE,QBFASSET&limit=3&format=json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "meta": {
    "total": 4115,
    "parameters": {
      "filters": "",
      "fields": "NAME,CITYST,FAILDATE,QBFASSET",
      "limit": "3"
    },
    "index": {
      "name": "failures_1779890467665",
      "createTimestamp": "2026-05-27T14:01:07Z"
    }
  },
  "data": [
    {
      "data": {
        "QBFASSET": 374,
        "FAILDATE": "5/28/1934",
        "CITYST": "EAST PEORIA, IL",
        "NAME": "FON DU LAC STATE BANK",
        "ID": "1"
      },
      "score": 1
    },
    {
      "data": {
        "QBFASSET": 2305,
        "FAILDATE": "1/3/1935",
        "CITYST": "GRANTWOOD, NJ",
        "NAME": "CLIFFSIDE PARK TITLE GUARANTEE & TRUST CO.",
        "ID": "10"
      },
      "score": 1
    },
    {
      "data": {
        "QBFASSET": null,
        "FAILDATE": "12/21/1936",
        "CITYST": "CUMMINGS, ND",
        "NAME": "THE CUMMINGS STATE BANK",
        "ID": "100"
      },
      "score": 1
    }
  ],
  "totals": {
    "count": 4115
  }
}

Parameters

ParameterTypeRequiredDescription
filtersqueryOptionalField-level filter expression, for example `STNAME:Texas` or `ASSET:[1000000 TO *]`. STNAME:Texas
fieldsqueryOptionalComma-separated fields to return. Without it the response carries every column. NAME,CITY,ASSET,ACTIVE
limit / offsetqueryOptionalPaging controls. The default limit is 10. 2
sort_by / sort_orderqueryOptionalField to order by and direction. ASSET
searchqueryOptionalFree-text search across institution names. citizens
/institutions | /failures | /financials | /locationspathRequiredWhich dataset to query. Each has its own field set. institutions

Response fields

meta.totalinteger
How many records matched before `limit` was applied.
meta.indexobject
Name and build timestamp of the underlying search index.
data[].dataobject
The record itself, nested one level under a wrapper — note the doubled `data`.
data[].data.NAME / CITYstring
Institution name and city.
data[].data.ASSETnumber
Total assets in **thousands** of dollars. Multiply by 1,000 for dollars.
data[].data.ACTIVEinteger
1 for an operating institution, 0 for one that is closed or merged away.
data[].data.IDstring
FDIC certificate number, the stable key for an institution.
data[].scorenumber
Relevance score when a `search` term was used; 0 otherwise.
totals.countinteger
Total matching records, mirroring `meta.total`.

What you can build with the FDIC BankFind API

  • Look up whether a US bank is FDIC insured and currently operating
  • Build a branch locator from the locations dataset
  • Rank banks by asset size within a state
  • Chart historical bank failures from the failures dataset

Common errors and how to fix them

301 redirect

You called the retired `banks.data.fdic.gov` host.

Fix: Use `api.fdic.gov` directly, or make sure your HTTP client follows redirects.

Empty data array

The filter expression matched nothing, or a field name is wrong.

Fix: Field names are uppercase and exact. Check them against the field reference in the docs.

Asset figures look 1000x too small

Financial values are in thousands of dollars.

Fix: Multiply by 1,000. There is no unit field in the response to warn you.

Records nested unexpectedly

Each row is wrapped as `{data: {...}, score: n}`.

Fix: Unwrap `data[].data` before mapping. The doubled key is easy to miss in a typed client.

FDIC BankFind API — frequently asked questions

Is the FDIC BankFind API free?

Yes. It requires no key or registration and returns permissive CORS headers, so it can be called directly from browser code.

Are the dollar amounts in dollars?

No — financial fields such as `ASSET` and `DEP` are reported in thousands of dollars. An asset figure of 162158 means about 162 million dollars.

How do I check if a bank has failed?

Query the `/failures` dataset, which lists every FDIC-insured failure with its date, location and assets at failure. The `ACTIVE` flag on the institutions dataset tells you whether an institution is still operating.

What is the certificate number?

The FDIC certificate number is the stable identifier for an insured institution and appears as `ID`. It survives name changes, which makes it the right key to store.

Tools that pair with this API

FDIC BankFind is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.