---
title: "Returns consumer complaints filed with the Consumer Financial Protection Bureau (CFPB)"
method: GET
path: "/v1/consumer-complaints"
---

# Returns consumer complaints filed with the Consumer Financial Protection Bureau (CFPB)

`GET /v1/consumer-complaints`

## Request

- Base URL: `https://api.keyvex.com`
- URL: `https://api.keyvex.com/v1/consumer-complaints`
- Auth: API key in header `x-api-key`

Returns consumer complaints filed with the Consumer Financial Protection Bureau (CFPB). Each record is one filing against a bank, credit reporting agency, mortgage servicer, debt collector, fintech, or crypto firm — with company response status, timeliness flag, and (when consented) consumer narrative.  Use this when the user asks about: complaint volume against a specific company, top issues at a credit reporting agency, regional complaint patterns, untimely responses by a financial institution, or as a leading indicator of upcoming CFPB/OCC/FDIC enforcement action.  COVERAGE — live passthrough (source:'live'): each call queries CFPB's own search API over the FULL 15.7M+ complaint database, full history, current as of CFPB's publication. The response's `total_count` is CFPB's authoritative count for your filtered query — USE IT for volume answers (the `results` array is just the requested page). `total_count` is omitted when an `issue` or `sub_product` filter is active (those apply after the upstream query, so the upstream total wouldn't match). If CFPB is unreachable the tool falls back to a small cached sample (source:'cache' + coverage_warning) — do NOT infer volume in that mode. Note: `company` matching is word-based against the company name ('experian', 'wells fargo'), not arbitrary-substring.  Product taxonomy (the top categories):   - 'Credit reporting or other personal consumer reports' — Equifax,     Experian, TransUnion. ~80% of recent complaint volume.   - 'Debt collection'   - 'Mortgage'   - 'Credit card or prepaid card'   - 'Checking or savings account'   - 'Payday loan, title loan, or personal loan'   - 'Money transfer, virtual currency, or money service'   - 'Vehicle loan or lease'   - 'Student loan'  Company-response values: 'Closed with explanation', 'Closed with non-monetary relief', 'Closed with monetary relief', 'In progress', 'Untimely response', 'Closed without relief'.  Cross-source tip: pair with get_enforcement_actions(source:'cftc'|'occ'| 'fdic'|'sec'|'doj', text:'<company>') to see if complaint volume preceded a formal enforcement action.

## Query parameters

- `id` string
- `company` string
- `product` string
- `sub_product` string
- `issue` string
- `state` string
- `submitted_via` 'Web' | 'Phone' | 'Postal mail' | 'Fax' | 'Referral' | 'Email'
- `timely_response` boolean
- `since` string
- `until` string
- `sort_by` 'date_received' | 'date_sent_to_company'
- `sort_order` 'desc' | 'asc'
- `limit` integer

## Response `200`

JSON envelope: { results: [...], count, has_more }.

## Other responses

- `400`: Invalid parameter.
- `401`: Missing or invalid API key.
- `402`: This tool requires a higher plan (upgrade_required). Retrying will not help.
- `429`: Tier rate/quota limit reached (rate_limited). Retry-After points at the reset.

---

[API](https://skmtc.dev/keyvex/apis/keyvex-api.md) · [All operations](https://skmtc.dev/keyvex/apis/keyvex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/keyvex/apis/keyvex-api/revisions/01c0210c19cd?raw)
