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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
823aa2116b7543f18517d70b407bd8996da7524b8a9977ce3d5710c8b27a605e
|
|
| MD5 |
50e1dad5d43c0ec6e4ed69ce966d3e84
|
|
| BLAKE2b-256 |
8d62ee24530be747b5853eca699397e17b7cc43fd896b3333cad618b656e8f67
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73e8a50b92ee9b4990d342be57d798349b4169f68f1601f5773d20d16cd3935d
|
|
| MD5 |
fdcd8f26153edb4e2fe9d1133b50b16d
|
|
| BLAKE2b-256 |
e3c6c3097074e82d60eb37d62539ddab5b07662477f272523003995211f63ae1
|