CFPB Consumer Complaints — Vendor Risk & Due Diligence
Pricing
from $1.00 / 1,000 per results
CFPB Consumer Complaints — Vendor Risk & Due Diligence
US Consumer Financial Protection Bureau Consumer Complaint Database — 18M+ complaints since 2011. Search by company, product, state, date. Public domain.
Pricing
from $1.00 / 1,000 per results
Rating
0.0
(0)
Developer
Ti Gg
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Security
Limited permissionsShare
CFPB Consumer Complaints API — Vendor Risk and Due Diligence
Search the US Consumer Financial Protection Bureau Consumer Complaint Database — 18M+ complaints since 2011. Filter by company, product, state, date, or submitted-via. Returns denormalised records (complaint ID, narrative, amount, response, resolution). Built for vendor risk teams, consumer rights organisations, and AI agents that need evidence of bank/customer behaviour.
Free trial
A free Apify account gives you about 5 USD of monthly credits, enough to pull thousands of complaints and inspect the JSON schema before paying.
Use cases
- Vendor due diligence — given a company name (e.g. ), pull last 12 months of complaints and compute"WELLS FARGO & COMPANY"
is_timelyandis_resolvedrates. - Geographic risk — pull complaints in state
TX, group byproductandsub_product, and chart complaint share by issuer. - Real-time compliance feed — daily cron filtered to
is_recent_30_days=trueand a watch list of issuers; Slack-alert on anycompany_responsecontaining"monetary relief".
Input
{"company_name_contains": "WELLS FARGO","state": "TX","product": "Checking or savings account","date_received_from": "2024-01-01","date_received_to": "2026-12-31","max_results": 50}
| Field | Type | Default | Description |
|---|---|---|---|
company_name_contains | string | "" | Partial company name match (case-sensitive, uppercase). |
state | string | "" | 2-letter US state code (e.g. TX, CA). |
product | string | "" | Checking or savings account, Mortgage, Debt collection, … |
sub_product | string | "" | Narrow by sub-product (e.g. Checking account). |
issue | string | "" | Filter by issue category. |
date_received_from | string | "" | Earliest date_received (YYYY-MM-DD). |
date_received_to | string | "" | Latest date_received. |
has_public_response | boolean | false | Keep only records with a public company response. |
consumer_disputed | boolean | false | Keep only records disputed by the consumer. |
max_results | integer | 50 | Cap on returned records (1–200). |
Output (real run)
[{"complaint_id": "28954970","product": "Checking or savings account","sub_product": "Checking account","issue": "Managing an account","sub_issue": "Deposits and withdrawals","company": "WELLS FARGO & COMPANY","state": "TX","zip_code": "75114","tags": "","timely": "Yes","company_response": "Closed with explanation","company_public_response": "Company has responded to the consumer and the CFPB and chooses not to provide a public response","consumer_disputed": "No","date_received": "2026-09-12","date_received_year": 2026,"date_received_month": "2026-09","date_sent_to_company": "2026-09-12","submitted_via": "Web","response_time_days": 12,"response_time_hours": 288,"is_timely": true,"is_resolved": true,"is_no_response": false,"is_explanation": true,"is_recent_30_days": true,"is_recent_7_days": false,"has_public_response": false}]
| Field | Type | Description |
|---|---|---|
complaint_id | string | CFPB complaint identifier. |
product / sub_product | string | Product taxonomy (highest level, then sub). |
issue / sub_issue | string | Specific issue reported. |
company | string | Issuer name as filed. |
state / zip_code | string | Consumer location. |
tags | string | Optional tags (Servicemember, Older American, …). |
timely | string | Whether the company responded in time. |
company_response | string | Closed with explanation, Monetary relief, … |
company_public_response | string | Public statement on the company website (or null). |
consumer_disputed | string | Whether the consumer disputed the resolution. |
date_received | string | Date the CFPB received the complaint. |
date_received_year / date_received_month | integer / string | Helper dates. |
date_sent_to_company | string | When CFPB forwarded to the company. |
submitted_via | string | Web, Phone, Referral, … |
response_time_days / response_time_hours | integer | Time to first company response. |
is_timely / is_resolved / is_no_response / is_explanation | boolean | Boolean helpers. |
is_recent_30_days / is_recent_7_days | boolean | Recency flags. |
has_public_response | boolean | True when company_public_response is present. |
Pricing (pay-per-event)
- No subscription. Free monthly credits apply first.
- 1 result = $0.001 USD (about $1 per 1 000 results).
- Charged per item returned in the dataset; failed runs are not charged.
Source, licence, limits
- Source: CFPB Consumer Complaint Database at https://www.consumerfinance.gov/data-research/consumer-complaints/.
- Licence: US Government work, public domain (17 U.S.C. § 105).
- Update frequency: complaints are added daily by the CFPB; this Actor reflects the upstream dataset at the moment of the run.
- Limits: the CFPB caps each page at 10 000 complaints; we paginate up
to
max_results. Old complaints (pre-2015) may have sparser fields.
FAQ
Why does state sometimes look lowercase?
Some legacy records had inconsistent casing; treat as case-insensitive
when filtering.
Why does consumer_disputed come back as "No"?
CFPB stores disputed as a string flag; the helper consumer_disputed
mirrors that. Use the string for direct comparison.
Can I get the consumer's narrative? The full complaint narrative is downloadable from the CFPB; this Actor distributes denormalised structured fields. Combine with their API endpoint for narrative retrieval.
Why is the company name uppercase?
CFPB stores issuer names as uppercase. Convert with .title() for
display.
How do I count "monetary relief" responses?
Filter where company_response == "Closed with monetary relief".
Group by company to rank.
Is there a "disputed" rate I can compute per company?
Yes — group by company and compute consumer_disputed == "Yes" /
total complaints per company.
Other Actors from DevOne-Studio
- ted-tenders-api — TED (Tenders Electronic Daily) EU public procurement search.
- pdf-to-text-api — PDF to text + tables extraction via pdfplumber, no external calls.
- pubmed-articles-api — NCBI PubMed biomedical literature with MeSH/DOI/year filters.
- federal-register-api — US federal agency rules, proposed rules, notices, presidential docs.
- sec-company-tickers — Resolve SEC CIK from ticker or company name (10,400+ issuers).
- sec-edgar-fulltext-search-api — Full-text search across 35M+ SEC EDGAR filings and exhibits.
- sec-edgar-xbrl-frames-api — XBRL frames (Revenues, Assets, NetIncomeLoss) for ~6000 US issuers.
- nhtsa-safety-ratings-api — NHTSA NCAP 5-star vehicle safety ratings.
- openfda-udi-api — FDA Unique Device Identifier database by device/manufacturer.
- eia-state-electricity-api — US state-level electricity generation and consumption, 1990-2025.
Changelog
- 2026-10-12 — SEO metadata (seoTitle, seoDescription); README rewritten with real output sample, FAQ, cross-links.
- 2026-10-07 — Pricing switched to Apify pay-per-event (
$0.001per dataset item). - 2026-09-30 — Initial public release on the Apify Store.