Skip to main content

CRA exam ratings scraper and analyzer — search FFIEC database, parse Performance Evaluations, identify CDFI partnership opportunities

Project description

cra-scraper 🏛️

CRA exam ratings scraper and analyzer.

Search the FFIEC CRA ratings database programmatically, parse Performance Evaluation PDFs from OCC, FDIC, and Federal Reserve, and identify banks that are prime CDFI partnership opportunities — using free public data from federal regulators.


Why cra-scraper?

The Community Reinvestment Act has been law for nearly 50 years and federal regulators publish exam results for every bank — but there's no programmatic way to access this data. Banks, CDFIs, fair lending researchers, and journalists all rely on manual PDF downloads from three different regulator websites. cra-scraper makes CRA exam data queryable in Python for the first time.


Installation

pip install cra-scraper

# For PE PDF parsing
pip install cra-scraper[pdf]

Quickstart

from crascraper import (
    search_ratings, find_partnership_opportunities,
    rating_distribution, build_history, find_downgrades,
    summary_report,
)

# Search FFIEC ratings (or use sample data when offline)
ratings = search_ratings(bank_name="Federal")

# Compute rating distribution
dist = rating_distribution(ratings)
print(dist)

# Find banks with low ratings — CDFI partnership opportunities
opps = find_partnership_opportunities(ratings, state="IL")
print(opps)

# Track rating history per bank
histories = build_history(ratings)
for bank_id, hist in histories.items():
    print(f"{hist.bank_name}: {hist.trend}")

# Identify downgrades
downgrades = find_downgrades(ratings)
print(downgrades)

# Generate a full Markdown summary report
report = summary_report(ratings)
print(report)

Parse Performance Evaluation PDFs

from crascraper import parse_pe_pdf

pe = parse_pe_pdf("/path/to/performance_eval.pdf")
print(pe.bank_name)
print(pe.overall_rating)
print(pe.lending_test_rating)
print(pe.assessment_areas)

CRA Rating Categories

Rating Score Meaning
Outstanding 4 Strong CRA performance
Satisfactory 3 Adequate CRA performance
Needs to Improve 2 Weak CRA performance
Substantial Noncompliance 1 Inadequate CRA performance

Federal Regulators Covered

  • OCC — Office of the Comptroller of the Currency (national banks)
  • FRS — Federal Reserve System (state member banks)
  • FDIC — Federal Deposit Insurance Corporation (state non-member banks)

Use Cases

  • CDFIs identifying bank partnership opportunities (banks under regulatory pressure to improve community lending)
  • Banks benchmarking their CRA performance against peers
  • Researchers studying CRA effectiveness and rating trends over time
  • Journalists investigating bank performance in low-income communities
  • Regulators analyzing exam outcomes across asset sizes and regions

Data Sources

  • FFIEC CRA Ratings Database — ffiec.gov/craratings
  • OCC CRA Search — occ.gov
  • FDIC CRAPES — crapes.fdic.gov
  • Federal Reserve CRA — federalreserve.gov

All free public data — no API keys required.


Running Tests

PYTHONPATH=. pytest tests/ -v

28 tests across all modules.


License

MIT 2026 Jaypatel1511

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cra_scraper-0.1.0.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cra_scraper-0.1.0-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file cra_scraper-0.1.0.tar.gz.

File metadata

  • Download URL: cra_scraper-0.1.0.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.12

File hashes

Hashes for cra_scraper-0.1.0.tar.gz
Algorithm Hash digest
SHA256 823aa2116b7543f18517d70b407bd8996da7524b8a9977ce3d5710c8b27a605e
MD5 50e1dad5d43c0ec6e4ed69ce966d3e84
BLAKE2b-256 8d62ee24530be747b5853eca699397e17b7cc43fd896b3333cad618b656e8f67

See more details on using hashes here.

File details

Details for the file cra_scraper-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: cra_scraper-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.12

File hashes

Hashes for cra_scraper-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 73e8a50b92ee9b4990d342be57d798349b4169f68f1601f5773d20d16cd3935d
MD5 fdcd8f26153edb4e2fe9d1133b50b16d
BLAKE2b-256 e3c6c3097074e82d60eb37d62539ddab5b07662477f272523003995211f63ae1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page