CFPB Consumer Complaint Database Scraper
Pricing
Pay per event
CFPB Consumer Complaint Database Scraper
Export filtered CFPB complaint records for compliance, risk, CX, and competitive-intelligence workflows from the public CFPB database.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Export filtered records from the official Consumer Financial Protection Bureau complaint database.
What does CFPB Consumer Complaint Database Scraper do?
CFPB Consumer Complaint Database Scraper downloads and parses the public CFPB Consumer Complaint Database feed and saves matching complaint records to an Apify dataset.
It is built for recurring complaint monitoring, compliance reviews, market-risk research, and customer-experience intelligence.
Who is it for?
- ๐ฆ Bank compliance teams monitoring complaint patterns
- ๐ณ Fintech risk teams tracking issues by product and company
- ๐ Competitive-intelligence teams comparing complaint volume
- ๐งโโ๏ธ Legal and regulatory researchers exporting evidence sets
- ๐ง CX leaders looking for recurring consumer pain points
Why use this actor?
The CFPB database is public, but the official bulk file is large. This actor streams the source file, applies filters, and returns structured records without you building CSV and ZIP processing code.
Data source
The actor uses the official CFPB public complaint bulk feed:
https://files.consumerfinance.gov/ccdb/complaints.csv.zip
What data can you extract?
| Field | Description |
|---|---|
complaintId | CFPB complaint identifier |
dateReceived | Date the CFPB received the complaint |
product | Financial product category |
subProduct | More specific product category |
issue | Complaint issue |
subIssue | More specific issue |
company | Company named in the complaint |
state | Consumer state |
zipCode | ZIP code where available |
submittedVia | Channel used to submit the complaint |
companyResponse | Company response status |
timelyResponse | Whether the company responded in time |
consumerDisputed | Historical disputed flag when present |
consumerComplaintNarrative | Optional public narrative text |
How much does it cost to scrape CFPB complaints?
This actor uses pay-per-event pricing.
- A small start event is charged once per run.
- A per-record event is charged for every complaint saved.
- You control cost with
maxItemsand filters.
Quick start
- Open the actor on Apify.
- Set
maxItemsto the number of complaint records you need. - Add optional company, product, issue, state, or date filters.
- Run the actor.
- Export the dataset as JSON, CSV, Excel, or via API.
Input options
Maximum complaints
Use maxItems to cap the number of saved records.
Company filters
Use companyContains for broad matching such as bank, or companyNames for exact company names.
Product filters
Use products to include exact CFPB product categories.
Issue filters
Use issues to include exact CFPB issue names.
State filters
Use states with two-letter US state abbreviations.
Date filters
Use dateReceivedFrom and dateReceivedTo in YYYY-MM-DD format.
Resolution filters
Use companyResponses, timelyResponse, and disputed to focus on handling outcomes.
Narrative option
Set includeNarrative to true if you need the public complaint narrative text.
Example input
{"maxItems": 100,"companyContains": "bank","states": ["CA", "NY"],"dateReceivedFrom": "2025-01-01","includeNarrative": false}
Example output
{"complaintId": "6779204","dateReceived": "2023-03-31T16:04:06.000Z","product": "Credit reporting, credit repair services, or other personal consumer reports","issue": "Improper use of your report","company": "CarMax, Inc.","state": "NV","submittedVia": "Web","companyResponse": "Closed with explanation","timelyResponse": true,"sourceUrl": "https://www.consumerfinance.gov/data-research/consumer-complaints/","scrapedAt": "2026-07-02T00:00:00.000Z"}
Tips for better results
- Start with a small
maxItemswhile tuning filters. - Use exact product names when you already know CFPB categories.
- Leave narrative disabled unless you need text analysis.
- Combine company and state filters for regional monitoring.
- Use date ranges to build periodic monitoring workflows.
Compliance monitoring workflow
Run the actor weekly with your company names, save the dataset to your BI tool, and compare issue/product trends over time.
Competitive intelligence workflow
Run the actor with competitor names and compare complaint categories, response status, and state distribution.
CX research workflow
Enable narratives for focused complaint sets and feed the output into classification, clustering, or sentiment-analysis tools.
Integrations
You can connect Apify datasets to Google Sheets, Make, Zapier, webhooks, S3, BigQuery, Snowflake, or your own API client.
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/cfpb-consumer-complaint-database-scraper').call({maxItems: 100,companyContains: 'bank'});console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClientclient = ApifyClient('APIFY_TOKEN')run = client.actor('automation-lab/cfpb-consumer-complaint-database-scraper').call({'maxItems': 100,'companyContains': 'bank',})print(run['defaultDatasetId'])
cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~cfpb-consumer-complaint-database-scraper/runs?token=APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"maxItems":100,"companyContains":"bank"}'
MCP usage
Use this actor from Claude Desktop or Claude Code through Apify MCP:
https://mcp.apify.com/?tools=automation-lab/cfpb-consumer-complaint-database-scraper
Claude Code setup:
$claude mcp add apify-cfpb-complaints "https://mcp.apify.com/?tools=automation-lab/cfpb-consumer-complaint-database-scraper"
Claude Desktop JSON config:
{"mcpServers": {"apify-cfpb-complaints": {"url": "https://mcp.apify.com/?tools=automation-lab/cfpb-consumer-complaint-database-scraper"}}}
Example prompts:
- "Export 100 CFPB complaints mentioning bank in California."
- "Get CFPB mortgage complaints with untimely responses."
- "Find complaint records for a named fintech company."
Performance notes
The actor streams the CFPB ZIP and CSV instead of loading the full file into memory. Highly selective filters may need to scan many rows before enough matches are found.
Limits
The public source file is large. Keep maxItems realistic and use filters when possible.
Legality
The actor uses public government data from the CFPB. You are responsible for using exported data lawfully and respecting privacy, compliance, and data-retention requirements.
FAQ
Is CFPB complaint data public?
Yes. The actor uses the official public CFPB Consumer Complaint Database bulk feed.
Can I monitor one company every week?
Yes. Save an input with companyContains or exact companyNames, then schedule the actor on Apify.
Troubleshooting
Why did the run scan many rows?
Selective filters can require scanning a large portion of the source CSV before enough matches are found.
Why are narratives missing?
Narratives are only returned when CFPB publishes them and includeNarrative is enabled.
Related scrapers
- https://apify.com/automation-lab/sec-company-facts-api-scraper
- https://apify.com/automation-lab/fdic-bankfind-scraper
- https://apify.com/automation-lab/finra-disciplinary-actions-scraper
Changelog
0.1
Initial version with streaming CFPB bulk CSV parsing, filters, and structured complaint output.
Support
If you need a new filter or output field, open an Apify issue on the actor page.
Disclaimer
This actor is not affiliated with or endorsed by the CFPB.
Appendix: common filter ideas
- Complaints by company and state
- Complaints by mortgage product
- Untimely response monitoring
- Public narratives for text analysis
- Competitor complaint comparison
- Monthly compliance exports
- Regional branch-risk review
- Product launch complaint monitoring
- Complaint response quality audit
- Complaint IDs for downstream enrichment