# FDIC Bank Data Scraper: Assets, ROA, Deposits & Failures (`mrslm_data/fdic-bank-data`) Actor

Every FDIC-insured US bank: total assets, deposits, equity, net income, ROA/ROE, regulator, holding company, offices, plus the bank failures list. CSV/JSON.

- **URL**: https://apify.com/mrslm_data/fdic-bank-data.md
- **Developed by:** [MRSLM Data](https://apify.com/mrslm_data) (community)
- **Categories:** Business, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.72 / 1,000 banks

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## FDIC Bank Data Scraper: Assets, ROA, Deposits & Failures

**Every FDIC-insured US bank with assets, deposits, equity, net income, ROA/ROE, regulator, holding company and offices, plus the full list of bank failures. $0.90 per 1,000 banks.**

This FDIC BankFind scraper returns every FDIC-insured US bank and savings institution as one row each, with the latest call-report assets, deposits, equity, net income, ROA and ROE, plus the full list of bank failures since 1934. Filter by state, city, bank class or asset size and export to CSV, Excel or JSON, with no API key needed.

The FDIC's BankFind data covers every insured bank and savings institution in the United States, with balance-sheet figures from the latest quarterly call report. It is the authoritative source for sizing, ranking and tracking US banks, and it includes every bank failure since 1934.

### Quick start

1. Press **Start**. The form is already filled with this example input, so the first run returns real rows in under a minute:

```json
{
  "states": [
    "CA"
  ],
  "maxResults": 100
}
```

2. Swap in your own values, or call the Actor through the Apify API, Make, Zapier, n8n or the Python/JS clients with the same JSON.
3. Download the results as JSON, CSV or Excel from the **Output** tab, or schedule the run to repeat.

**Full guide: How to Download FDIC Bank Data: Assets, ROA, ROE and Bank Failures by State (Real Run: Texas Banks Over $5 Billion)**

### What the FDIC Bank Data Scraper does

The Actor reads the FDIC's official BankFind Suite API (api.fdic.gov/banks), which is public and needs no key. It has two datasets:

- **Institutions** (`dataset: "institutions"`): one row per FDIC-insured bank or savings institution, with its FDIC certificate number, name, address, county and metro area, website, charter class, chartering agency and primary federal regulator, specialization, minority depository institution status, holding company, Federal Reserve RSSD ID and LEI, founding and insurance dates, number of offices, and the latest call-report financials: total assets, total and domestic deposits, equity capital, net income year to date and for the quarter, and return on assets and on equity (year to date and quarterly). Coordinates and a BankFind link are included.
- **Failures** (`dataset: "failures"`): one row per failed bank, with its certificate number, city and state, failure date and year, resolution and transaction type, charter class, insurance fund, the acquiring institution and its location, total assets and deposits at failure, and the FDIC's estimated loss with the date of that estimate.

You filter by name, state, city, certificate number, bank class, asset range and active status (and failure year for the failures dataset), and choose the sort order. Rows are fetched 500 at a time. Every row is a bank, a company, so there is no personal data in the output.

### Who it is for

- **Fintech and B2B sales teams** selling to banks: build a target list by state, size band and charter, with the holding company and website on each row.
- **Bank analysts and investors**: compare profitability (ROA, ROE) and size across a state or peer group from the latest quarter.
- **Compliance and KYC teams**: confirm a bank's legal status, regulator, FDIC certificate, RSSD ID and LEI.

### Real example 1: every Texas bank with $5 billion or more in assets

Say you sell software to large banks in Texas and want the full list of active banks headquartered there with at least $5 billion in total assets, largest first, with their profitability and holding company.

#### Step 1: Enter the input

Open the [FDIC Bank Data Scraper](https://apify.com/mrslm_data/fdic-bank-data) in Apify Console, switch the input form to **JSON** and paste this. It is the exact input used for the run:

```json
{
    "dataset": "institutions",
    "states": [
        "TX"
    ],
    "minTotalAssetsUsdThousands": 5000000,
    "activeOnly": true,
    "sortBy": "assets_desc",
    "maxResults": 25
}
```

What each setting does:

- `dataset`: `institutions`, the bank list. The other value is `failures`.
- `states`: `TX`, two-letter state codes of the main office. Add more to cover a region, for example `["TX", "OK", "LA"]`.
- `minTotalAssetsUsdThousands`: `5000000`. FDIC amounts are in **thousands of US dollars**, so 5,000,000 means $5 billion. `maxTotalAssetsUsdThousands` sets an upper bound the same way; together they make a size band.
- `activeOnly`: `true` (the default) skips banks that have closed or merged.
- `sortBy`: `assets_desc`, largest first. The other options are `deposits_desc`, `established_desc` (newest charter first) and `name`.
- `maxResults`: `25`, a cap on rows saved and so on cost.

Other filters on the form:

- `bankNames`: a name or part of one, such as `community` or `savings`. Each name runs as its own search.
- `cities`: city of the main office.
- `certNumbers`: exact FDIC certificate (CERT) numbers, for example `628` for JPMorgan Chase Bank.
- `bankClasses`: `N` national commercial banks (OCC-supervised), `NM` state non-member commercial banks, `SM` state Fed-member commercial banks, `SB` savings banks, `SA` savings associations, `OI` insured US branches of foreign banks and `NC` non-insured institutions. Empty means all.
- `failedSinceYear`: used by the failures dataset only.

#### Step 2: Run it

Press **Start**. The run finished with status `SUCCEEDED` in about 4 seconds and saved 20 rows: only 20 active Texas banks meet the $5 billion threshold, so the 25-row cap was not reached. It was charged 20 `bank` events plus the start event, $0.0181 on the Free/Bronze tier.

#### Step 3: Read the output

All 20 banks, with assets converted from thousands to billions for readability (the dataset keeps the FDIC's raw numbers):

| name | city | bankClass | primaryRegulator | total assets | ROA % | ROE % | offices |
|---|---|---|---|---|---|---|---|
| Charles Schwab Bank, SSB | Westlake | SM | FED | $250.8B | 1.33 | 18.03 | 1 |
| Frost Bank | San Antonio | SM | FED | $54.0B | 1.31 | 15.3 | 224 |
| Prosperity Bank | El Campo | NM | FDIC | $43.9B | 1.37 | 7.42 | 406 |
| Texas Capital Bank | Dallas | SM | FED | $33.6B | 1.03 | 9.55 | 10 |
| Charles Schwab Premier Bank, SSB | Westlake | SM | FED | $26.6B | 1.52 | 20.07 | 1 |
| Sunflower Bank, National Association | Dallas | N | OCC | $15.7B | 0.34 | 2.63 | 103 |
| First Financial Bank | Abilene | SM | FED | $15.2B | 1.77 | 15.35 | 84 |
| NexBank | Dallas | NM | FDIC | $14.2B | 1.05 | 12.13 | 2 |
| PlainsCapital Bank | University Park | SM | FED | $12.7B | 1.11 | 9.99 | 57 |
| Charles Schwab Trust Bank | Westlake | SM | FED | $10.5B | 2.05 | 27.48 | 1 |
| Amarillo National Bank | Amarillo | N | OCC | $10.4B | 1.76 | 16.07 | 35 |
| International Bank of Commerce | Laredo | NM | FDIC | $10.2B | 2.82 | 13.85 | 80 |
| Woodforest National Bank | The Woodlands | N | OCC | $9.0B | 2.05 | 24.22 | 741 |
| Southside Bank | Tyler | NM | FDIC | $8.8B | 1.35 | 10.98 | 58 |
| TBK BANK, SSB | Dallas | SI | FDIC | $7.4B | 0.63 | 4.16 | 62 |
| Third Coast Bank | Humble | SM | FED | $6.7B | 1.37 | 11.42 | 22 |
| The American National Bank of Texas | Terrell | N | OCC | $5.5B | 0.63 | 11.51 | 28 |
| Broadway National Bank | San Antonio | N | OCC | $5.4B | 1.74 | 20.65 | 31 |
| City Bank | Lubbock | NM | FDIC | $5.4B | 1.52 | 14.4 | 36 |
| Vantage Bank Texas | San Antonio | SM | FED | $5.1B | 1.64 | 18.91 | 23 |

One full row as JSON:

```json
{
    "fdicCert": 5510,
    "name": "Frost  Bank",
    "active": true,
    "address": "111 W Houston St",
    "city": "San Antonio",
    "state": "TX",
    "stateName": "Texas",
    "zip": "78205",
    "county": "Bexar",
    "metroArea": "San Antonio-New Braunfels, TX",
    "website": "https://www.frostbank.com",
    "bankClass": "SM",
    "bankClassDescription": "Commercial bank, state charter, Fed member",
    "charterAgent": "STATE",
    "primaryRegulator": "FED",
    "specialization": "Commercial Lending Specialization",
    "minorityDepositoryInstitution": null,
    "holdingCompany": "CULLEN FROST BANKERS INC",
    "holdingCompanyCity": "SAN ANTONIO",
    "holdingCompanyState": "TX",
    "fedRssdId": "682563",
    "lei": "G5AHTAP80NWA3Q8RDC78",
    "established": "1899-02-20",
    "fdicInsuredSince": "1934-01-01",
    "closedOrMergedOn": null,
    "offices": 224,
    "domesticOffices": 222,
    "totalAssetsUsdThousands": 53950075,
    "totalDepositsUsdThousands": 43669523,
    "domesticDepositsUsdThousands": 43669523,
    "equityCapitalUsdThousands": 4659316,
    "netIncomeYtdUsdThousands": 349946,
    "netIncomeQuarterUsdThousands": 175946,
    "returnOnAssetsPct": 1.31,
    "returnOnEquityPct": 15.3,
    "returnOnAssetsQuarterPct": 1.32,
    "returnOnEquityQuarterPct": 15.33,
    "financialsAsOf": "2026-06-30",
    "latitude": 29.4268790164156,
    "longitude": -98.4956639998107,
    "bankFindUrl": "https://banks.data.fdic.gov/bankfind-suite/bankfind/details/5510"
}
```

What the 20 rows show:

- **$551 billion in 20 banks**, but very unevenly spread. Charles Schwab Bank, SSB in Westlake reports $250.8 billion, almost half the total, and Schwab has two more banks in the list (Charles Schwab Premier Bank and Charles Schwab Trust Bank), each with a single office. They hold large balances with almost no branches.
- **Branch footprints differ by two orders of magnitude.** Woodforest National Bank has 741 offices on $9.0 billion of assets, while Texas Capital Bank runs $33.6 billion through 10 offices. Prosperity Bank (406 offices) and Frost Bank (224) are the big branch networks.
- **Profitability varies.** Return on assets runs from 0.34% at Sunflower Bank to 2.82% at International Bank of Commerce in Laredo. Charles Schwab Trust Bank has the highest return on equity, 27.48%.
- **Three federal regulators.** 9 banks are state-chartered Fed members (`SM`, regulator FED), 5 are state non-members (`NM`, FDIC), 5 are national banks (`N`, OCC) and TBK Bank is a state savings institution (`SI`, FDIC). That matters if you sell compliance software, because exam cycles and reporting differ by regulator.
- **All financials are as of 2026-06-30** (`financialsAsOf`): year-to-date net income covers six months, the quarter fields April to June.

### Real example 2: every US bank failure since 2020

The same Actor reads the FDIC's failure list. This is the input used for the second run:

```json
{
    "dataset": "failures",
    "failedSinceYear": 2020,
    "maxResults": 25
}
```

`failedSinceYear` keeps failures in or after that year. On the failures dataset, `states`, `cities`, `certNumbers` and the asset range also work; `activeOnly`, `bankClasses` and `sortBy` do not apply, and rows always come newest failure first.

The run finished in about 3 seconds with 17 rows (17 failures since 2020, under the cap), charged 17 `bank` events plus the start event: $0.0154 on Free/Bronze. All 17:

| name | city, state | failureDate | transactionType | acquiringInstitution | total assets | estimated loss |
|---|---|---|---|---|---|---|
| SMALL BUSINESS BANK | Lenexa, KS | 2026-07-17 | PA | THE FARMERS STATE BANK OF OAKLEY, KANSAS | $72.9M | $5.7M |
| KENTLAND FS\&LA | Kentland, IN | 2026-07-10 | PA | KENTLAND BANK | $3.8M | $1.2M |
| COMMUNITY BANK AND TRUST - WEST GEORGIA | Lagrange, GA | 2026-05-01 | PI | ANCHOR BANK | $305.7M | $97.3M |
| METROPOLITAN CAPITAL B\&T | Chicago, IL | 2026-01-30 | PA | FIRST INDEPENDENCE BANK | $261.2M | $19.6M |
| SANTA ANNA NATIONAL BANK | Santa Anna, TX | 2025-06-27 | PI | COLEMAN COUNTY STATE BANK | $76.9M | $9.8M |
| PULASKI SAVINGS BANK | Chicago, IL | 2025-01-17 | PA | MILLENNIUM BANK | $49.5M | $31.9M |
| FIRST NB OF LINDSAY | Lindsay, OK | 2024-10-18 | PI | FIRST BANK & TRUST CO. | $107.8M | $45.1M |
| REPUBLIC BANK | Philadelphia, PA | 2024-04-26 | PA | FULTON BANK, NATIONAL ASSOCIATION | $5.9B | $709.6M |
| CITIZENS BANK | Sac City, IA | 2023-11-03 | PA | IOWA TRUST & SAVINGS BANK | $60.4M | $12.5M |
| HEARTLAND TRI-STATE BANK | Elkhart, KS | 2023-07-28 | PA | DREAM FIRST BANK,NATIONAL ASSOCIATION | $139.4M | $42.7M |
| FIRST REPUBLIC BANK | San Francisco, CA | 2023-05-01 | PA | JPMORGAN CHASE BANK, N.A. | $212.6B | $15.5B |
| SIGNATURE BANK | New York, NY | 2023-03-12 | PA | FLAGSTAR BANK, N.A. | $110.4B | $0 |
| SILICON VALLEY BANK | Santa Clara, CA | 2023-03-10 | PA | FIRST-CITIZENS BANK & TRUST COMPANY | $209.0B | $18.7B |
| ALMENA STATE BANK | Almena, KS | 2020-10-23 | PA | EQUITY BANK | $65.7M | $15.9M |
| FIRST CITY BANK OF FLORIDA | Fort Walton Beach, FL | 2020-10-16 | PA | UNITED FIDELITY BANK, FSB | $136.6M | $7.2M |
| THE FIRST STATE BANK | Barboursville, WV | 2020-04-03 | PA | MVB BANK, INC | $151.8M | $43.7M |
| ERICSON STATE BANK | Ericson, NE | 2020-02-14 | PA | FARMERS AND MERCHANTS BANK | $100.9M | $23.3M |

What it shows:

- **No failures in 2021 or 2022**, five in 2023 and four so far in 2026, the most recent being Small Business Bank in Lenexa, Kansas on 17 July 2026.
- **2023 was about size, not count.** First Republic Bank ($212.6 billion in assets, acquired by JPMorgan Chase Bank), Silicon Valley Bank ($209.0 billion, First-Citizens Bank & Trust) and Signature Bank ($110.4 billion, Flagstar Bank) account for most of the assets in the list. The estimated losses for First Republic and Silicon Valley Bank are $15.5 billion and $18.7 billion. Signature Bank's estimated loss field is 0 in the FDIC data at this date, so check BankFind before quoting it.
- **Resolution.** 14 of the 17 were `PA` (purchase and assumption: another bank took over deposits and some assets) and 3 were `PI` (purchase and assumption of insured deposits only). The `estimatedLossAsOf` date (2026-07-31 here) tells you how current the loss estimate is.

### Units, codes and the call report date

- **All money fields are in thousands of US dollars**, as the FDIC publishes them. Multiply by 1,000 for dollars. The field names end in `UsdThousands` so this is never ambiguous.
- **Ratios are percentages.** `returnOnAssetsPct` 1.31 means 1.31%.
- **`financialsAsOf`** is the call report date. Banks file call reports for each quarter and the FDIC publishes them a few weeks after quarter end, so the newest data is usually one quarter behind.
- **The FDIC certificate number (`fdicCert`)** is the stable ID of a bank in FDIC data. Use it to join runs over time or to look a bank up again with `certNumbers`. For failed banks, the same CERT links the failure to the bank's old institution record.

### Output fields

Fields of the **institutions** dataset, with values from the Frost Bank row above:

| Field | What it means | Example from this run |
|---|---|---|
| `fdicCert` | FDIC certificate number. | 5510 |
| `name / active` | Bank name and whether it is active. | Frost Bank / true |
| `address / city / state / stateName / zip / county / metroArea` | Main office address and area. | 111 W Houston St / San Antonio / TX / Texas / 78205 / Bexar / San Antonio-New Braunfels, TX |
| `website` | Website as recorded by the FDIC. | https://www.frostbank.com |
| `bankClass / bankClassDescription` | FDIC charter class and its meaning. | SM / Commercial bank, state charter, Fed member |
| `charterAgent / primaryRegulator` | Who chartered it and its primary federal regulator. | STATE / FED |
| `specialization` | FDIC asset-concentration group. | Commercial Lending Specialization |
| `minorityDepositoryInstitution` | Minority depository institution status, when designated. | null |
| `holdingCompany / holdingCompanyCity / holdingCompanyState` | Top holding company. | CULLEN FROST BANKERS INC / SAN ANTONIO / TX |
| `fedRssdId / lei` | Federal Reserve RSSD ID and Legal Entity Identifier. | 682563 / G5AHTAP80NWA3Q8RDC78 |
| `established / fdicInsuredSince / closedOrMergedOn` | Charter date, insurance date and end date if inactive. | 1899-02-20 / 1934-01-01 / null |
| `offices / domesticOffices` | Number of offices, total and in the US. | 224 / 222 |
| `totalAssetsUsdThousands / totalDepositsUsdThousands / domesticDepositsUsdThousands / equityCapitalUsdThousands` | Balance sheet, thousands of USD. | 53950075 / 43669523 / 43669523 / 4659316 |
| `netIncomeYtdUsdThousands / netIncomeQuarterUsdThousands` | Net income year to date and for the quarter. | 349946 / 175946 |
| `returnOnAssetsPct / returnOnEquityPct / returnOnAssetsQuarterPct / returnOnEquityQuarterPct` | ROA and ROE, year to date and quarterly. | 1.31 / 15.3 / 1.32 / 15.33 |
| `financialsAsOf` | Call report date of the financials. | 2026-06-30 |
| `latitude / longitude` | Main office coordinates. | 29.4269 / -98.4957 |
| `bankFindUrl` | The bank's page on FDIC BankFind. | https://banks.data.fdic.gov/bankfind-suite/bankfind/details/5510 |

Fields of the **failures** dataset, with values from the Small Business Bank row:

| Field | What it means | Example from this run |
|---|---|---|
| `fdicCert / name / city / state` | The failed bank. | 25744 / SMALL BUSINESS BANK / LENEXA / KS |
| `failureDate / failureYear` | When it failed. | 2026-07-17 / 2026 |
| `resolutionType / transactionType` | How it was resolved (for example PA or PI). | FAILURE / PA |
| `charterClass / insuranceFund` | Charter class at failure and the insurance fund. | SM / DIF |
| `acquiringInstitution / acquirerCity / acquirerState` | Who took over the bank. | THE FARMERS STATE BANK OF OAKLEY, KANSAS / OAKLEY / KS |
| `totalAssetsUsdThousands / totalDepositsUsdThousands` | Size at failure, thousands of USD. | 72947 / 68773 |
| `estimatedLossUsdThousands / estimatedLossAsOf` | FDIC estimated loss to the fund and the date of the estimate. | 5671 / 2026-07-31 |
| `bankFindUrl` | BankFind failures search for this CERT. | https://banks.data.fdic.gov/bankfind-suite/failures?searchTerm=25744 |

Both datasets also have `scrapedAt`, the time the row was read.

### Export FDIC bank data to CSV, Excel or Google Sheets

Every run saves its rows to a dataset, and a dataset can be downloaded in any common format without code.

**From Apify Console.** Open the run, go to the **Output** tab and click **Export**. Pick CSV, Excel (XLSX), JSON, XML, HTML or RSS, and tick only the columns you want. Nested values such as lists and objects are flattened into columns like `name/0` or `object/field` in CSV and Excel.

**From a URL.** The same export is a plain HTTPS link. Replace `<DATASET_ID>` with the dataset ID shown on the run's **Storage** tab:

```bash
## CSV with just the columns you need
curl -H "Authorization: Bearer $APIFY_TOKEN" \
  "https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=csv&clean=1&fields=fdicCert,name,city,state,bankClass,primaryRegulator,holdingCompany,website,totalAssetsUsdThousands,totalDepositsUsdThousands,returnOnAssetsPct,returnOnEquityPct,offices,financialsAsOf" -o texas-banks.csv

## Excel
curl -H "Authorization: Bearer $APIFY_TOKEN" \
  "https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=xlsx&clean=1" -o texas-banks.xlsx
```

**Into Google Sheets.** Three options, from simplest to most automatic:

1. **One-off:** download the CSV and use **File > Import > Upload** in Google Sheets. Choose "Replace current sheet" to refresh an existing tab.
2. **Automatic, no code:** use Make, Zapier or n8n as described in the next section, ending in a Google Sheets "Add row" step.
3. **Formula:** `=IMPORTDATA("https://api.apify.com/v2/actor-tasks/<USERNAME>~<TASK_NAME>/runs/last/dataset/items?status=SUCCEEDED&format=csv&token=<YOUR_TOKEN>")` always pulls the latest successful run of a saved task. The token sits in the formula, so anyone who can open the sheet can see it. Only use this in a private sheet.

In a spreadsheet, divide the `UsdThousands` columns by 1,000,000 to show billions.

### Use it from Make, Zapier or n8n

All three automation tools have an official Apify app, so you can run this Actor and pass its rows on without writing code.

1. **Trigger.** Use a schedule in the automation tool, or Apify's "Watch Actor runs" / "Watch task runs" trigger if you already schedule the task in Apify.
2. **Run.** Add the Apify "Run Actor" (or "Run task") action, choose `mrslm_data/fdic-bank-data` and paste the JSON input from Step 1. Turn on "wait for finish" so the next step gets the data.
3. **Get the rows.** Add "Get dataset items" and map the run's default dataset ID from the previous step.
4. **Send them on.** Add a Google Sheets "Add row" step for a bank list, a HubSpot or Salesforce "Create or update company" step keyed on `fdicCert` or `website`, or a Slack message when the failures run returns a row with a `failureDate` you have not seen.

Each module only moves data; the Actor's pricing is the same as when you run it in Console.

### Schedule a quarterly refresh

Call-report financials change once a quarter, so a quarterly run is enough for bank lists: for example in the middle of the second month after quarter end, when the FDIC has published the new data. For failures, a weekly run with `failedSinceYear` set to the current year shows any new failure within days.

1. In the Actor's input form, set up the input from Step 1 and click **Save as new task**. Give it a clear name such as `tx-banks-quarterly`.
2. Go to **Schedules > Create new**, set the cron expression to `0 7 15 2,5,8,11 *` and pick your timezone, so it runs at 7 AM on the 15th of February, May, August and November.
3. Add the task to the schedule and save. Each run gets its own fresh dataset.
4. Optional: on the task's **Integrations** tab, add a webhook, Slack or email notification for "Run succeeded", or connect Make, Zapier or n8n, so the new rows go where you need them.

To fetch the newest results without looking up a run ID, use the task's last-run link: `https://api.apify.com/v2/actor-tasks/<USERNAME>~tx-banks-quarterly/runs/last/dataset/items?status=SUCCEEDED&format=json`.

### Call it from the API (Python, JavaScript or curl)

Start the Actor from your own code with the official Apify clients. Put your API token (Console > Settings > API & Integrations) in an environment variable called `APIFY_TOKEN` rather than in the code.

**Python** (`pip install "apify-client>=3"`):

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = {
    "dataset": "institutions",
    "states": [
        "TX"
    ],
    "minTotalAssetsUsdThousands": 5000000,
    "activeOnly": true,
    "sortBy": "assets_desc",
    "maxResults": 25
}

run = client.actor("mrslm_data/fdic-bank-data").call(run_input=run_input)

## apify-client 3.x returns a Run object, so use run.default_dataset_id
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item["name"], item["totalAssetsUsdThousands"], item["returnOnAssetsPct"])
```

In apify-client 3.x, `call()` returns a typed object. Older examples that use `run["defaultDatasetId"]` were written for 1.x and 2.x and fail in 3.x with `TypeError: 'Run' object is not subscriptable`.

**JavaScript / Node.js** (`npm install apify-client`):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
    "dataset": "institutions",
    "states": [
        "TX"
    ],
    "minTotalAssetsUsdThousands": 5000000,
    "activeOnly": true,
    "sortBy": "assets_desc",
    "maxResults": 25
};

const run = await client.actor('mrslm_data/fdic-bank-data').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].name);
```

**curl**, one request that runs the Actor and returns the rows as CSV (it waits up to 5 minutes, so keep the input small):

```bash
curl -X POST "https://api.apify.com/v2/acts/mrslm_data~fdic-bank-data/run-sync-get-dataset-items?format=csv" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"dataset": "institutions", "states": ["TX"], "minTotalAssetsUsdThousands": 5000000, "activeOnly": true, "sortBy": "assets_desc", "maxResults": 25}' -o texas-banks.csv
```

### Use it from AI agents and chat assistants (MCP)

Apify runs a hosted Model Context Protocol (MCP) server, so assistants such as Claude Desktop, Cursor, VS Code or any other MCP client can call this Actor as a tool. Add this server URL to your MCP client and sign in with your Apify account (or send your API token as a Bearer header):

```
https://mcp.apify.com/?tools=mrslm_data/fdic-bank-data
```

The assistant then sees the Actor's input fields, can start a run with the input it builds from your request, and reads the dataset rows back. A prompt like this works well:

> List the 20 largest active banks in Ohio by total assets from the FDIC, with their holding company, ROA and ROE, and the call report date.

Runs started through MCP are billed exactly like any other run, per row saved, so it is worth asking the assistant to set `maxResults`.

### What it costs

The Actor uses pay-per-event pricing: one `bank` event per row saved, for both the institutions and the failures dataset, and nothing for compute.

#### Price per event

| Event (per 1,000) | Free / Bronze | Silver | Gold / Platinum / Diamond |
|---|---|---|---|
| Bank record saved (institution or failure row) (`bank`) | $0.90 | $0.81 | $0.72 |
| Actor start (once per run at the default memory, not per 1,000) | $0.00005 | $0.00005 | $0.00005 |

You are charged only for the events in this table: nothing for compute, and nothing for searches that return no rows beyond the start fee.

| Scenario | Free / Bronze | Silver | Gold |
|---|---|---|---|
| Example 1 in this guide (20 Texas banks) | $0.0181 | $0.0163 | $0.0145 |
| Example 2 in this guide (17 failures) | $0.0154 | $0.0138 | $0.0123 |
| Every active bank in one large state, ~400 rows, quarterly | $0.36 | $0.32 | $0.29 |
| Every active FDIC-insured institution in the US, ~4,500 rows | $4.05 | $3.65 | $3.24 |

The last two rows are estimates based on typical counts; the FDIC's own totals change every quarter. To cap spending, set **Maximum cost per run** in the run options (or `maxTotalChargeUsd` in the API), or use `maxResults`.

### Tips

- **Think in thousands.** `minTotalAssetsUsdThousands: 1000000` is $1 billion, not $1 million.
- **Name searches are not sorted by size.** When you use `bankNames`, the FDIC returns results by search relevance and `sortBy` is not applied. Sort in your sheet, or filter by state and assets instead.
- **Use `certNumbers` for a watch list** of customers or counterparties, and run it each quarter.
- **Holding companies group banks.** Charles Schwab owns three of the Texas banks above. Group by `holdingCompany` to count organisations rather than charters.

### Limits

- Financials are those the FDIC publishes from call reports, usually one quarter behind.
- The Actor covers FDIC-insured institutions. Credit unions (NCUA), non-bank lenders and holding companies themselves are not rows.
- Failure loss estimates are the FDIC's and are revised over time; check `estimatedLossAsOf`.
- Branch-level data (each office's address and deposits) is not included, only the office counts.
- There is no date window input for institutions; each run is a snapshot of the current list.

### FAQ

**How do I list only large banks, or include closed ones?** Set `minTotalAssetsUsdThousands` (for example `1000000` for banks with $1 billion or more in assets). Closed and merged banks are skipped by default; set `activeOnly` to `false` to include them.

**Where does the data come from?**
From the official FDIC BankFind Suite API (api.fdic.gov), public and free without a key. Every row links to the bank's page on BankFind.

**Why are the numbers so large?**
They are in thousands of US dollars, as the FDIC publishes them. 53950075 is $53.95 billion.

**How fresh is it?**
Each run reads the API live. Financials follow the FDIC's quarterly call report releases; institution details and failures are updated by the FDIC as they happen.

**Can I get only new bank failures?**
Set `dataset` to `failures` and `failedSinceYear` to the current year, and schedule it weekly. Compare `fdicCert` with your previous run to spot new rows.

**Does it include credit unions?**
No. Credit unions are insured by the NCUA, not the FDIC.

**Does it work with Make, Zapier or n8n?**
Yes. All three have an Apify app. Use "Run Actor" (or run a saved task), then "Get dataset items" to pass the rows on to Google Sheets, Airtable, a CRM or Slack.

**Can AI agents use it?**
Yes, through Apify's MCP server at `https://mcp.apify.com/?tools=mrslm_data/fdic-bank-data`, as shown above.

### Is it legal?

This Actor only reads official open-data APIs that the publisher offers to everyone without a login or key. It obeys robots.txt, stays under the published rate limits, and never tries to get past logins, paywalls, captchas or bot checks. Every row is a bank (a company). No data about individuals is read or output. You are responsible for how you use the data: follow the source's licence and terms and the privacy and marketing laws that apply to you (GDPR, CAN-SPAM, PECR, etc.). This tool is independent and not affiliated with or endorsed by the data publisher.

# Actor input Schema

## `dataset` (type: `string`):

Banks (institutions) or bank failures.

## `bankNames` (type: `array`):

Name or part of it, e.g. chase, community, savings.

## `states` (type: `array`):

2-letter state codes, e.g. CA, TX, NY.

## `cities` (type: `array`):

City of the main office.

## `certNumbers` (type: `array`):

Exact FDIC CERT numbers, e.g. 628 (JPMorgan Chase Bank).

## `bankClasses` (type: `array`):

Default: all.

## `activeOnly` (type: `boolean`):

Skip banks that have closed or merged.

## `minTotalAssetsUsdThousands` (type: `integer`):

e.g. 1000000 = $1 billion. 0 = no minimum.

## `maxTotalAssetsUsdThousands` (type: `integer`):

0 = no maximum.

## `failedSinceYear` (type: `integer`):

Failures dataset only: failures in or after this year. 0 = all years.

## `sortBy` (type: `string`):

Banks dataset only.

## `maxResults` (type: `integer`):

Safety cap on saved rows. 0 = no cap. Your max cost per run is always respected.

## Actor input object example

```json
{
  "dataset": "institutions",
  "states": [
    "CA"
  ],
  "activeOnly": true,
  "minTotalAssetsUsdThousands": 0,
  "maxTotalAssetsUsdThousands": 0,
  "failedSinceYear": 0,
  "sortBy": "assets_desc",
  "maxResults": 100
}
```

# Actor output Schema

## `results` (type: `string`):

All banks as a dataset (JSON, CSV, Excel and more via the API or Console).

## `summary` (type: `string`):

Matches and saved rows per search, failures and the stop reason.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "states": [
        "CA"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrslm_data/fdic-bank-data").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "states": ["CA"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("mrslm_data/fdic-bank-data").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "states": [
    "CA"
  ],
  "maxResults": 100
}' |
apify call mrslm_data/fdic-bank-data --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrslm_data/fdic-bank-data"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CRYQPMgw5ZrUvWf6e/builds/15g6a8rsrI9iRaEvX/openapi.json
