Endpoint Playground
Returns the values of one field of the BBB businesses index (dataset id enum value `bbb-businesses`) with the number of records for each, honoring the same filters as search. Facet enum: `country`, `address_country`, `category`, `state`, `city`, `rating`, `accredited`, `entity_type`, `run_id`, `alert_title`, `has_alerts`. The `country` facet is parsed from profile URLs; `address_country` is derived from business addresses. Both enums are `us`, `ca`. Values come most frequent first, 50 per page by default; page through all of them with `limit` (up to 1000) and `offset` while `has_more` is true. The response also returns `total` (records matching the filters), `total_values` (distinct values) and `missing` (records with no value for the facet), so the counts can be checked against the total. Values of the `accredited` and `has_alerts` facets are `1` (true) and `0` (false). Use it to split a search that would exceed 10,000 records: `facet=state` lists every state and province, and `facet=city` with a `state` filter lists every city in it. Dataset Playground requests query indexed data and do not apply proxy routing.
14 Oct 2026: 20 items; 2 fields had a value in every checked item.
Sample value profiles: count: 3,187 to 15,076, median 4,361.
curl "https://api.crawlora.net/api/v1/datasets/bbb-businesses/facets?facet=category&country=us&address_country=us&rating=A%2B" \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| facet | string | Yes | category | Facet enum: country, address_country, category, state, city, rating, accredited, entity_type, run_id, alert_title, has_alerts |
| limit | integer | No | Values per page, 1 to 1000, defaults to 50 | |
| offset | integer | No | Values to skip, 0 or greater, defaults to 0; offset + limit must be <= 10000. Request offset + limit next while has_more is true | |
| q | string | No | Full-text match on the business name/category, max 256 characters | |
| category | string | No | Exact category filter, e.g. Plumber (case-sensitive). Use the values returned by facet=category | |
| country | string | No | us | Country filter, parsed from the profile URL (case-insensitive). Enum: us, ca |
| address_country | string | No | us | Country filter derived from the business address, separate from the profile-URL country (case-insensitive). Enum: us, ca |
| state | string | No | Exact 2-letter state or province code as in the profile URL, e.g. tx (case-insensitive). Use the values returned by facet=state | |
| city | string | No | Exact city slug as in the profile URL, e.g. san-diego (case-insensitive). Use the values returned by facet=city with a state filter | |
| rating | string | No | A+ | Exact letter-grade rating filter. Enum: A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F |
| min_rating_rank | integer | No | Numeric floor against the denormalized rating rank (A+=12 down to F=0), e.g. 10 for 'A- and above' | |
| accredited | boolean | No | Accreditation filter; true keeps only accredited businesses, false only the others | |
| has_alerts | boolean | No | BBB-alert filter; true keeps businesses whose profile carries at least one BBB alert, false keeps refreshed records with none | |
| alert_title | string | No | Exact BBB alert title filter, e.g. Pattern of Complaint (case-sensitive). Use the values returned by facet=alert_title | |
| min_complaints | integer | No | Floor against total_complaints (BBB's three-year complaint count), 0 or greater | |
| entity_type | string | No | Exact entity-type filter, e.g. Limited Liability Company (LLC) (case-sensitive). Use the values returned by facet=entity_type | |
| run_id | string | No | Exact crawl run id filter, e.g. bbb-20260906. Use the values returned by facet=run_id |
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "bbb-businesses",
"facet": "rating",
"items": [
{
"value": "A+",
"count": 512
},
{
"value": "A",
"count": 210
},
{
"value": "A-",
"count": 88
},
{
"value": "B+",
"count": 34
}
],
"total": 900,
"missing": 56,
"total_values": 4,
"limit": 50,
"offset": 0,
"has_more": false
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.