BBB API endpoint
Searches bbb.org Scam Tracker's consumer-reported-scam database by free-text query, scam category, targeted-victim state/province, reported-scammer state/province, report-date range, and/or dollar-loss range, paginated 10 results/page. A verified search with no matches returns results: [] and total_results: 0; an unavailable or unrecognized page returns 503 rather than an empty list. When result cards are present but BBB's total count is unavailable, total_results is omitted. Every page returns has_more and, when BBB's result count is exact, total_pages: request the next page only while has_more is true, because a page past the end returns 404. Omit every filter to browse the most-recent-first feed. This is a separate BBB dataset from the bbb-search/bbb-business/bbb-business-complaints business-rating family -- consumer-reported scam incidents, not business ratings.
/bbb/scamtracker/searchQuery parameters:
query (optional) — free-text search across phone number, website, email, business name, scam ID, and the report description. Omit to browse the most-recent-first feed.scam_type (optional) — exact scam category. Allowed values: Advance Fee Loan, Bank/Credit Card Company Imposter, Business Email Compromise, Charity, Counterfeit Product, COVID-19, Credit Cards, Credit Repair/Debt Relief, CryptoCurrency, Debt Collections, Employment, Fake Check/Money Order, Fake Invoice/Supplier Bill, Family/Friend Emergency, Foreign Money Exchange, Government Agency Imposter, Government Grant, Healthcare/Medicaid/Medicare, Home Improvement, Identity Theft, Investment, Moving, Online Purchase, Other, Phishing, Rental, Retail Business, Romance, Scholarship, Sweepstakes/Lottery/Prizes, Tax Collection, Tech Support, Travel/Vacation/Timeshare, Utility, Vanity Award, Worthless Problem-solving Service, Yellow Pages/Directories.state (optional) — 2-letter targeted-victim state/province code (US state or Canadian province), e.g. TX. Not a closed enum — the exhaustive list BBB accepts wasn't confirmed, so any well-formed 2-letter code is passed through; a code upstream doesn't recognize degrades to zero results, not an error.scammer_state (optional) — 2-letter reported-scammer state/province code (US state or Canadian province), e.g. NY — where the scammer is reported to be, not the victim. Same format-check validation as state, and independent of it (they can be combined to find reports where the victim was in one state and the scammer reported to be in another).date_from / date_to (optional, must be set together) — report-date range, inclusive, both YYYY-MM-DD. date_from must not be after date_to.min_dollars_lost / max_dollars_lost (optional, must be set together) — reported dollar-loss range, inclusive. min_dollars_lost must be >= 0; max_dollars_lost must be >= min_dollars_lost.page (optional, default 1) — 10 results per page.query, scam_type, state, scammer_state, the date range, and the dollar range can all be freely combined.
Pagination always submits an explicit offset, including page 1, so every page uses the same 10-result query flow. Broad searches can return a capped count such as 10,000+; total_results_lower_bound: true identifies that lower bound. It does not establish the full number of matching reports.
When BBB confirms that a search has no matches, results is [] and total_results is 0. If BBB's page cannot be verified, the request returns 503; an unavailable or unrecognized page is never reported as an empty search. When result cards are present but BBB's total count is unavailable, total_results is omitted.
Every page carries has_more: request page + 1 only while it is true. total_pages is the last page of the search, computed from BBB's result count at 10 per page; it is omitted when that count is a lower bound (total_results_lower_bound: true), and has_more is then true while the page is full. Requesting a page past the end returns 404 with bbb scamtracker search page N is past the last page (M) of this search; that answer is final. (BBB itself answers such a page with a server error, so do not page until an error.)
Response includes total_results when BBB's count is readable (the upstream's total match count, not just this page), total_pages, has_more and results[], each with the report's category, description, dollars lost, victim location, date reported, business name used, and detail URL. Any of scammer_state/date_from/date_to/min_dollars_lost/max_dollars_lost are echoed back only when the corresponding request filter was set.
| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| id | 10 | |
| category | 10 | “Fake Invoice/Supplier Bill - Amazon Pretender” and 7 other values |
| description | 10 | median 393 characters |
| dollars_lost | 10 | $0.0 (7), $205.66 (1), $680 (1) and 1 more |
| victim_location | 10 | “TX, USA - 75702” and 9 other values |
| date_reported | 10 | “January 26, 2021” and 9 other values |
| business_name_used | 10 | Amazon (9), amazon (1) |
| url | 10 | bbb.org |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | No | Free-text search (phone number, website, email, business name, scam ID, description). Omit to browse the most-recent feed | amazon | |
| scam_type | string | No | Scam category filter Allowed values: Advance Fee Loan, Bank/Credit Card Company Imposter, Business Email Compromise, Charity, Counterfeit Product, COVID-19, Credit Cards, Credit Repair/Debt Relief, CryptoCurrency, Debt Collections, Employment, Fake Check/Money Order, Fake Invoice/Supplier Bill, Family/Friend Emergency, Foreign Money Exchange, Government Agency Imposter, Government Grant, Healthcare/Medicaid/Medicare, Home Improvement, Identity Theft, Investment, Moving, Online Purchase, Other, Phishing, Rental, Retail Business, Romance, Scholarship, Sweepstakes/Lottery/Prizes, Tax Collection, Tech Support, Travel/Vacation/Timeshare, Utility, Vanity Award, Worthless Problem-solving Service, Yellow Pages/Directories. | ||
| state | string | No | Optional 2-letter targeted-victim state/province code (US state or Canadian province) | TX | |
| scammer_state | string | No | Optional 2-letter reported-scammer state/province code (US state or Canadian province) -- where the scammer is reported to be, not the victim | NY | |
| date_from | string | No | Optional report-date range start (YYYY-MM-DD), inclusive. Must be set together with date_to | 2026-01-01 | |
| date_to | string | No | Optional report-date range end (YYYY-MM-DD), inclusive. Must be set together with date_from | 2026-01-31 | |
| min_dollars_lost | integer | No | Optional minimum reported dollar loss. Must be set together with max_dollars_lost | 500000 | |
| max_dollars_lost | integer | No | Optional maximum reported dollar loss. Must be set together with min_dollars_lost | 1000000 | |
| page | integer | No | Result page (10 per page), default 1 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/bbb/scamtracker/search?query=coffee&scam_type=Advance+Fee+Loan&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "amazon",
"page": 1,
"total_results": 13845,
"total_pages": 1385,
"has_more": true,
"results": [
{
"id": "1397267",
"category": "Employment - Amazon's Remote Recruitment Team Imposter",
"description": "They contacted me and said that they would offer $500-$1200 per day...",
"dollars_lost": "$0.0",
"victim_location": "Glens Falls, NY, USA - 12801",
"date_reported": "August 19, 2026",
"business_name_used": "Amazon's Remote Recruitment Team.Imposter",
"url": "https://www.bbb.org/scamtracker/lookupscam/1397267"
}
],
"source_url": "https://www.bbb.org/scamtracker/lookupscam?q=all%3Damazon"
}
}Request schema
No body schema
Response schema
#/definitions/bbbscamtracker.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | bbbscamtracker.SearchResponse | No | ||||
| data.date_from | string | No | 2026-01-01 | |||
| data.date_to | string | No | 2026-01-31 | |||
| data.has_more | boolean | No | Whether page+1 exists. When the page count is unknown, true while the page is full. Request the next page only while this is true. | |||
| data.max_dollars_lost | integer | No | 1000000 | |||
| data.min_dollars_lost | integer | No | 500000 | |||
| data.page | integer | No | 1 | |||
| data.query | string | No | amazon | |||
| data.results | array | No | ||||
| data.results[].business_name_used | string | No | AltRX | |||
| data.results[].category | string | No | Online Purchase | |||
| data.results[].date_reported | string | No | August 19, 2026 | |||
| data.results[].description | string | No | ||||
| data.results[].dollars_lost | string | No | $149 | |||
| data.results[].id | string | No | 1397968 | |||
| data.results[].url | string | No | ||||
| data.results[].victim_location | string | No | Chesapeake, VA, USA - 23322 | |||
| data.scam_type | string | No | Phishing | |||
| data.scammer_state | string | No | NY | |||
| data.source_url | string | No | ||||
| data.state | string | No | TX | |||
| data.total_pages | integer | No | 74738 | The last page of this search, from BBB's result count. Omitted when that count is a lower bound (total_results_lower_bound) or missing. | ||
| data.total_results | integer | No | 747374 | |||
| data.total_results_lower_bound | boolean | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/bbb/scamtracker/search?query=coffee&scam_type=Advance+Fee+Loan&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"