CFPB Consumer Complaint Database Scraper avatar

CFPB Consumer Complaint Database Scraper

Pricing

Pay per event

Go to Apify Store
CFPB Consumer Complaint Database Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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?

FieldDescription
complaintIdCFPB complaint identifier
dateReceivedDate the CFPB received the complaint
productFinancial product category
subProductMore specific product category
issueComplaint issue
subIssueMore specific issue
companyCompany named in the complaint
stateConsumer state
zipCodeZIP code where available
submittedViaChannel used to submit the complaint
companyResponseCompany response status
timelyResponseWhether the company responded in time
consumerDisputedHistorical disputed flag when present
consumerComplaintNarrativeOptional 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 maxItems and filters.

Quick start

  1. Open the actor on Apify.
  2. Set maxItems to the number of complaint records you need.
  3. Add optional company, product, issue, state, or date filters.
  4. Run the actor.
  5. 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 maxItems while 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 ApifyClient
client = 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.

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