# FDIC Bank Data Scraper (`aurenic/fdic-scraper`) Actor

Extract FDIC-insured bank data from the official BankFind Suite API. Institution details, financials, branch locations, failures, and deposit summaries. No API key, no browser, no proxy.

- **URL**: https://apify.com/aurenic/fdic-scraper.md
- **Developed by:** [Aurenic](https://apify.com/aurenic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

Extract FDIC-insured bank data from the official BankFind Suite API. Institution details, financials, branch locations, failures, and deposit summaries. No API key, no browser, no proxy.

### What does FDIC Bank Data Scraper do?

Scrape every FDIC dataset in one actor:

- **Institutions** — 4,000+ active FDIC-insured banks and thrifts: name, address, assets, deposits, charter type, established date, website, and more.
- **Branch locations** — every office of every institution: address, coordinates, hours, services, and branch type.
- **Financial reports** — quarterly financials: assets, deposits, net income, equity, ROA, ROE, and hundreds of regulatory ratios.
- **Structure change history** — mergers, acquisitions, name changes, and charter changes with effective dates.
- **Failed banks** — 4,100+ failures since 1934 with failure date, resolution type, and acquiring institution.
- **Historical summary** — aggregate financial and structure data subtotaled by year.
- **Summary of Deposits** — deposit totals by branch, updated annually.
- **Demographics** — institution demographic data.

The FDIC's BankFind Suite API is **free, public, and requires no API key**. It covers every FDIC-insured financial institution in the United States.

### Output fields

Fields vary by mode. Common fields across institution and location datasets:

| Field | Description |
|---|---|
| recordType | `institutions` / `locations` / `financials` / `failures` / etc. |
| CERT | FDIC certificate number |
| NAME | Institution name |
| ADDRESS / CITY / STALP / ZIP | Address components |
| ASSET | Total assets (in thousands of dollars) |
| DEP / DEPDOM | Total and domestic deposits |
| NETINC | Net income |
| ROA / ROE | Return on assets / equity |
| ACTIVE | Active status (1 = active, 0 = inactive) |
| CHARTER / CHRTAGNT | Charter type and agent |
| ESTYMD | Established date |
| WEBADDR | Institution website |
| OFFICES | Number of offices |
| DATEUPDT | Last data update date |

### Who is it for?

- **Fintech developers** building bank verification and routing-number lookups
- **Compliance and AML teams** monitoring institution structure changes and failures
- **Financial analysts** benchmarking bank performance across states and peer groups
- **Market researchers** analyzing consolidation trends and deposit concentration
- **RegTech platforms** powering vendor due diligence and counterparty checks
- **Data journalists** investigating bank failures and charter changes

### Pricing

**$2.50 per 1,000 results.** No subscription.

| Results | Cost |
|---|---|
| 100 | $0.25 |
| 1,000 | $2.50 |
| 10,000 | $25.00 |

### How to use it

1. Pick a **Mode**.
2. Add optional **Filters** (e.g. `{"STALP": "CA", "ACTIVE": 1}`).
3. Optionally add a **Name Search** for fuzzy matching.
4. Set **Max Items** (default 500).
5. Click **Start**.

### Output example

```json
{
  "recordType": "institutions",
  "CERT": 628,
  "NAME": "JPMORGAN CHASE BANK, NATIONAL ASSOCIATION",
  "ADDRESS": "383 MADISON AVENUE",
  "CITY": "NEW YORK",
  "STALP": "NY",
  "STNAME": "New York",
  "ZIP": "10017",
  "ASSET": 3856789000,
  "DEP": 2856123000,
  "DEPDOM": 2541898000,
  "NETINC": 583402000,
  "ROA": 1.52,
  "ROE": 17.85,
  "ACTIVE": 1,
  "CHARTER": "N",
  "CHRTAGNT": "OCC",
  "ESTYMD": "1823-01-01",
  "WEBADDR": "www.jpmorgan.com",
  "OFFICES": 4823,
  "DATEUPDT": "2026-06-30",
  "scrapedAt": "2026-09-23T12:00:00.000Z"
}
```

### Technical details

- **Official FDIC BankFind Suite API** — `https://banks.data.fdic.gov/api`. Free, public, **no API key required**.
- **Rate limit: 1 request/second.** The actor throttles to 1100ms between requests by default and backs off on 429.
- **Elasticsearch-style filters** — pass exact-match filters as JSON objects, e.g. `{"STALP": "TX", "ACTIVE": 1}`.
- **Fuzzy name search** — optional `search` field for partial name matching.
- **Pagination** via `limit` + `offset`, up to 10,000 records per request.
- **No proxy, no browser.** Pure JSON REST API.
- **8 datasets** in one actor — institutions, locations, financials, history, failures, summary, SOD, demographics.

### Known limits

- **Rate limit is 1 request/second.** For large runs (5,000+ records), expect proportional run time. `maxItems: 5000` with 100-record pages takes ~55 requests ≈ 60 seconds.
- **ASSET and DEP are in thousands of dollars.** A value of `3856789000` means $3.857 trillion. Multiply by 1,000 for actual dollars.
- **`limit` max is 10,000 per request.** The actor pages in batches of 100 by default to keep memory low.
- **Some modes return very few records.** `failures` has ~4,100 total records spanning 90 years; `demographics` is updated infrequently.
- **No PDF parsing.** Financial data comes from the structured API, not the raw call reports.

### FAQ

**Do I need an API key?** No. The FDIC BankFind API is fully public and keyless.

**Do I need a proxy?** No. Datacenter IPs are accepted.

**What's the difference between institutions and locations?** `institutions` is one row per bank (headquarters). `locations` is one row per branch or office.

**How do I find a specific bank?** Use `search: "Chase"` for fuzzy name matching, or filter by `CERT` with the FDIC certificate number.

**How do I export data?** After a run, go to Storage → Export as JSON, CSV, Excel.

### Support

Open an issue on the Actor's page for bugs or feature requests.

# Actor input Schema

## `mode` (type: `string`):

Which FDIC dataset to query.

## `filters` (type: `object`):

Elasticsearch-style filters. Keys are uppercased field names, values are exact matches. Example: {"STALP": "CA", "ACTIVE": 1}. Common fields: STALP (state), NAME, ACTIVE, CERT.

## `search` (type: `string`):

Fuzzy text search on institution name.

## `fields` (type: `array`):

Optional comma-separated list of fields to return. Leave empty for all fields.

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

Field name to sort by (uppercase).

## `sortOrder` (type: `string`):

Sort direction.

## `maxItems` (type: `integer`):

Hard cap on records per run.

## `requestDelayMs` (type: `integer`):

Delay between requests. FDIC rate limit is 1 req/sec — default 1100ms stays safely under.

## Actor input object example

```json
{
  "mode": "institutions",
  "filters": {},
  "search": "",
  "fields": [],
  "sortBy": "NAME",
  "sortOrder": "ASC",
  "maxItems": 500,
  "requestDelayMs": 1100
}
```

# Actor output Schema

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

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("aurenic/fdic-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("aurenic/fdic-scraper").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 '{}' |
apify call aurenic/fdic-scraper --silent --output-dataset

```

## MCP server setup

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

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/BDshx54jygw1RcbcH/builds/cAejNkeQk723ZQqdb/openapi.json
