Banks
US commercial bank financials and institution profiles from the FDIC BankFind Suite.
Where the data comes from
Every value this category returns is attributable to one of these publishers, and every payload carries the source tag with it.
| Source | Publisher | What we hold | Licence |
|---|---|---|---|
| fdic | Federal Deposit Insurance Corporation | Institutions directory (cert-keyed entities) and curated quarterly bank financials, FDIC BankFind Suite API | U.S. Government work, public domain (17 U.S.C. § 105) |
Full licence text, attribution strings, and every source on the surface are in Attribution.
How the data is keyed
Every US bank here is an FDIC-insured institution identified by its certificate number — the cert. It is not a ticker, not an RSSD id, and not a CIK: a bank holding company that files with the SEC and the insured bank underneath it are different entities with different identifiers. So the first call is almost always a resolution call, and the second is the read.
Financials arrive as report quarters, newest first, with values keyed by a curated metric_key. Each value carries its own exact decimal, unit, currency, and as_of, and data.metric_definitions explains the vocabulary you asked for: title, units, currency, basis, category, and a one-line description. An agent can therefore interpret a metric it has never seen before without a lookup table baked into its prompt.
Worked workflows
Resolve a bank name to a certificate
banks_search_institutions(query="Frost Bank", limit=5)Ranked matches come back with both identifiers, location, active status, regulator and charter metadata, lifecycle dates, a score, and the reason the row matched:
{
"data": {
"query": "Frost Bank",
"matches": [
{
"cert": 99999,
"rssd_id": 999999,
"name": "<institution legal name>",
"city": "<city>",
"state": "TX",
"active": true,
"primary_regulator": "FDIC",
"charter_class": "SM",
"established_date": "1899-01-01",
"closed_date": null,
"score": 100,
"match_reason": "exact_name",
"as_of": "2026-08-19T00:00:00Z"
}
]
},
"meta": { "source": "fdic", "as_of": "2026-08-19T00:00:00Z" },
"pagination": null
}Values are illustrative; field names are real. pagination is null because a relevance list is bounded by construction rather than paged. Digits in the query are treated as an exact identifier lookup, so passing a cert or an RSSD id straight through works. A name that matches nothing comes back as unknown_entity, sometimes with suggestions attached.
Read a bank's quarterly financials
Take the cert from the search and ask for the metrics you actually need:
banks_get_financials(cert=628, metrics=["total_deposits", "re_construction_land"], limit=4){
"data": {
"cert": 628,
"name": "<institution legal name>",
"rssd_id": 999999,
"active": true,
"city": "<city>",
"state": "NY",
"period_type": "quarter",
"quarters": [
{
"period": "2026-06-30",
"fiscal_quarter": "2026Q2",
"values": {
"total_deposits": {
"value": "2000000.000",
"unit": "USD thousands",
"currency": "USD",
"as_of": "2026-08-19T00:00:00Z"
}
}
}
],
"metric_definitions": {
"total_deposits": {
"title": "Total deposits",
"units": "USD thousands",
"currency": "USD",
"basis": "period_end",
"category": "size",
"description": "..."
}
}
},
"meta": { "source": "fdic", "as_of": "2026-08-19T00:00:00Z" },
"pagination": { "limit": 4, "has_more": true, "next_cursor": "eyJ2IjoxLCJrIjpbLi4uXX0" }
}Omit metrics entirely to get the whole curated vocabulary for those quarters — useful once, to see what exists, and wasteful on every call after that.
Walk a bank back through its history
Quarters page like everything else: keep cert, metrics, start, and end constant, pass the previous response's cursor, and stop when has_more is false.
banks_get_financials(cert=628, metrics=["total_deposits"], limit=8, cursor="eyJ2IjoxLCJrIjpbLi4uXX0")For a fixed analysis window, bound it instead of paging blindly:
banks_get_financials(cert=628, metrics=["total_deposits"], start="2024-01-01", end="2026-06-30")start and end filter on the FDIC quarter-end report date, inclusive at both ends. A reversed window is a bad_parameter, as is a metric key that is not in the curated catalog.
Coverage and caveats
- Monetary values are USD thousands, not dollars. Every currency metric in this category is reported the way the FDIC reports it: multiply by 1,000 before you say "dollars" in a sentence a human will read. The unit rides on each value, so there is no excuse for guessing.
- Some metrics are year-to-date flows, not quarterly ones. A definition whose
basisisytd_flowis cumulative from the start of that calendar year. Differencing consecutive quarters gives you the quarterly figure; treating the raw value as a quarter overstates it late in the year. Percent metrics carry a null currency. - This is the insured bank, not the holding company. Consolidated group financials are a different filing at a different regulator and are not what these tools return.
- Coverage is the FDIC directory. An unrecognised cert is
unknown_entity; a well-formed request for an institution we do hold, with nothing in the window, is a normal empty success.
Tools and endpoints
Each tool's full input schema, provenance, and bounds are on its own page; the REST endpoints mirror them one for one.
| Tool | What it does | Page size |
|---|---|---|
| banks_get_financials | Fetch one bank's bounded, newest-first FDIC quarterly financials. | default 8 · min 1 · max 40 |
| banks_search_institutions | Resolve a bank name or identifier to ranked FDIC institutions. | default 10 · min 1 · max 50 |
Over HTTP: Banks REST endpoints.