FDIC Deposit Market Share & HHI Rollup — SOD Branch Data avatar

FDIC Deposit Market Share & HHI Rollup — SOD Branch Data

Pricing

from $6.60 / 1,000 results

Go to Apify Store
FDIC Deposit Market Share & HHI Rollup — SOD Branch Data

FDIC Deposit Market Share & HHI Rollup — SOD Branch Data

County, MSA & state deposit market share from FDIC Summary of Deposits branch data: per-bank share + rank, HHI concentration (DOJ thresholds), top-3 share, YoY branch openings/closures. Keyless official FDIC API. For bank M&A, deposit brokers, fintech partnerships, site selection.

Pricing

from $6.60 / 1,000 results

Rating

0.0

(0)

Developer

Kyle Maloney

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Turns the FDIC Summary of Deposits branch file into per-market deposit share, ranks, HHI concentration (at both the charter and the bank holding-company level), and year-over-year branch and deposit movement — for any US county, MSA, or state.

This is a screening tool built on public FDIC data, not legal, antitrust, or investment advice. HHI bands are indicators used to decide where to look; a competitive determination is made by the DOJ and the banking agencies on a fuller record.

Who it's for

  • Bank M&A and strategy teams sizing a market before an approach, and checking a deal against the DOJ deposit-concentration screen.
  • Fintech and de novo bank founders hunting concentrated markets with an entry gap.
  • CRE and commercial lenders mapping who actually holds the deposits where they lend.
  • Antitrust, policy and research teams needing a reproducible HHI series.
  • AI agents — every row carries its own provenance (coverage_complete, filter_echo_verified, year_resolution), so an agent can tell a verified answer from a partial one.

What it does

  1. Resolves the newest published SOD survey year live (SOD is annual, as of June 30, published the following December). You can pin year yourself.
  2. Pages the whole branch universe for your scope, verifying on every page that the filter FDIC echoed back is byte-identical to the one sent and that every returned row actually satisfies it.
  3. Reconciles the retrieved count against FDIC's own meta.total and fails the run rather than publishing a ratio over a subset.
  4. Rolls branches up to county / MSA / state, computing share, rank, HHI, top-1 and top-3 share, and the holding-company view.
  5. Optionally diffs against an earlier survey year for branch and deposit YoY.

Why the completeness gate matters here

Most datasets degrade gracefully when a fetch comes up short: you lose rows. A market share is a ratio. A partial fetch does not lose rows — it changes the denominator, so every share and every HHI in the output becomes a different number that still looks entirely plausible. So this actor treats completeness as a hard gate: if FDIC says there are 76,120 branches and 76,119 came back, the run fails and bills nothing.

The same reasoning applies to the filter. Verified live on 2026-08-01:

filters=YEAR:2025 AND STALPBR:CO -> meta.total = 1,350
filters=YEAR:2025 and STALPBR:CO -> meta.total = 119,120

The lowercase form returns HTTP 200 and echoes the filter back byte for byte while never applying the clause — 88x the rows, spanning other years and states. Every run therefore checks the echo case-sensitively and re-validates YEAR and STALPBR on every returned record.

Example input

{
"state": "CO",
"rollupLevel": "county",
"mode": "banks",
"compareYear": 2024,
"maxResults": 500
}

Leave year empty to use the newest published survey. Leave state empty for a national rollup.

Output fields

One row per bank x area (mode: "banks") or per area (mode: "areas"). Every declared field is listed.

Market / area

FieldDescription
yearSOD survey year (deposits as of June 30)
rollup_levelcounty, msa, or state
area_name / area_code / stateThe market
area_county_fips5-digit state+county FIPS — the join key for Census/BLS/FFIEC
area_cbsa_codeCBSA / MSA code, when the branches sit in one
area_csa_code / area_csa_nameCombined Statistical Area, when applicable
area_total_deposits_usdTotal deposits in the market (USD)
area_bank_count / area_branch_countInstitutions and branches in the market
area_holding_company_countDistinct holding companies — lower than area_bank_count where one owns several charters
area_hhiHHI over per-charter shares (0–10000)
area_hhi_holding_companyHHI over per-holding-company shares — the level the Fed/DOJ screen on. Always ≥ area_hhi
area_top1_share_pct / area_top3_share_pctLargest and top-3 combined share
concentration_flagGeneral merger-guidelines band of area_hhi (1500 / 2500)
doj_bank_screenBanking-specific DOJ screen (1800 bar)
market_gapTop-3 share at or above marketGapThresholdPct
area_main_office_countBranches that are an institution main office
area_branches_missing_depositsBranches FDIC published no deposit figure for — excluded from the total, never counted as 0
area_branches_zero_depositsBranches FDIC published exactly 0 for (distinct fact)
area_branches_missing_certBranch records with no FDIC certificate — counted, never merged into a phantom bank

Bank (banks mode)

FieldDescription
bank_name / certInstitution and FDIC certificate number
branch_count / total_deposits_usdThis bank's branches and deposits in this market
market_share_pct / rankShare of market deposits, and rank
bank_class / bank_class_descriptionCharter class (N, NM, SM, SA, SB, OI)
bank_specializationFDIC asset-concentration group
bank_total_deposits_usd / bank_total_assets_usdInstitution-wide totals
market_share_of_bank_pctHow much of the bank rides on this market
is_community_bankFDIC community-bank designation

Holding company

FieldDescription
holding_company_name / holding_company_rssdTop-tier holding company and its Fed RSSD id
holding_company_city / holding_company_stateWhere it sits — compare with state for out-of-state ownership
holding_company_deposits_usd / holding_company_share_pct / holding_company_rankIts combined position in the market
holding_company_charters_in_areaCharters it runs locally; > 1 is exactly where a charter-level HHI understates concentration

Year over year (needs compareYear)

FieldDescription
compare_year / compare_year_statusWhich year, and whether it actually loaded
yoy_branches_opened / yoy_branches_closedNet branch movement
yoy_deposit_growth_pctDeposit growth
yoy_share_shift_ptsMarket-share shift, in percentage points

Provenance (on every row)

FieldDescription
sod_statusAlways ok on an emitted row — anything else fails the run
year_resolutionexplicit or latest_published
records_expected / records_retrieved / coverage_completeThe completeness reconciliation
filter_sent / filter_echo_verified / filter_rows_validatedThe filter gates
results_truncatedmaxResults cut the output (shares and HHI are still computed over the complete market)
source_urlThe FDIC request behind the row

Use as an MCP tool

Available over mcp.apify.com. Because every row carries coverage_complete, filter_echo_verified and year_resolution, an agent can distinguish a verified market picture from a partial one without reading the log — and a run that could not verify itself fails loudly rather than returning a plausible number.

Source & verified behaviour

  • FDIC BankFind Suite — Summary of Deposits, https://api.fdic.gov/banks/sod (keyless). banks.data.fdic.gov 302-redirects here; use the new host.
  • Annual, as of June 30, published the following December. Verified 2026-08-01: 2025 = 76,120 branches, 2024 = 76,727, 2023 = 77,770, 2015 = 93,272, 2010 = 98,520, 2026 = not yet published.
  • limit caps at 10000 (limit=20000 returns HTTP 400 validate:too_big).
  • DEPSUMBR is published in thousands of dollars and is converted to USD here. A units drift check runs on every run.
  • DEPSUM is a zero-for-null trap. The institution-level total is stamped only on the main-office record and is literally 0 on every other branch row of the same bank. DEPDOM carries it on every row and is what this actor reads.
  • MSANAMB is empty for non-MSA branches (316 of the 1,350 Colorado 2025 rows), which fall into a NONMSA-<state> bucket.
  • An unrecognised state code returns 0 records, and the run fails loudly rather than emitting an empty success.
  • RSSDHCR = 0 is a no-holding-company sentinel, not an identifier. Keying on it merges every unaffiliated bank in a market into one phantom holding company. Verified live: Zions Bancorporation N.A. (CERT 2270) returns RSSDHCR: 0. Treated as null here.
  • BKCLASS is a broad vocabulary and unknown codes are reported, not fatal - measured from the live national file (N 28,875, NM 14,905, SM 10,654, SB 1,553, SL 123, OI 10). An unrecognised code sets bank_class_unknown and leaves the description null; it changes no share, rank or HHI, so it does not fail the run.

FAQ

Why did my run fail with "INCOMPLETE FETCH"? Because FDIC reported more branch records than came back. Market share and HHI are ratios, so a partial fetch would change every number in the answer while leaving it plausible. Nothing was emitted and nothing was billed — re-run.

Why is area_hhi_holding_company higher than area_hhi? Because one holding company owns more than one bank charter in that market. The charter view treats them as separate competitors; the Fed and DOJ do not.

Which concentration flag should I use? concentration_flag is the general merger-guidelines banding (1500 / 2500). doj_bank_screen applies the banking-specific DOJ Bank Merger Competitive Review bar of 1800, which is what a bank M&A analyst reading SOD data is normally testing. Both ship; neither is a determination.

Why is a share null instead of 0? Because that market has no published deposits at all, so a share is undefined. null means not computable; 0 would be a claim.

Why did the year change from what I expected? Leave year empty and the actor resolves the newest published survey live — year_resolution on every row says whether you pinned it or it was resolved. Earlier versions defaulted to a fixed year, which quietly answered a superseded survey.

Pricing

Pay per result: one billable result = one bank x area (or area) rollup row. Tiered discounts apply on paid Apify plans. A run that fails a completeness, filter or vocabulary gate emits nothing and bills nothing for results.

  • FDIC Structure-Change Delta Monitor and FDIC Branch Network Churn Rollup — the M&A and branch-movement side of the same FDIC data.
  • FDIC + NCUA Institution Health Rollup — capital and stress screening.
  • HMDA Fair-Lending Disparity Rollup — lending, at the same geography.