Datasets

Search the BBB businesses dataset

Searches the BBB (Better Business Bureau) businesses index (dataset id enum value bbb-businesses) — business profiles crawled from bbb.org's own search/category-browse pages: computed A+-F letter-grade rating, paid-accreditation status, category, contact info, business details, operating hours, and products/services. Complaints, full reviews, and the full "reasons for rating"/service-area detail are NOT embedded here; each record instead carries complaints_url/reviews_url/more_info_url pointing at the live bbb-business-complaints/bbb-business-reviews/bbb-business-more-info endpoints for on-demand lookup. rating enum: A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F. Each record also stores BBB's complaint and review counts (total_complaints and related fields) and the BBB alerts on the profile (has_alerts, alert_titles, alerts[] with full text), so businesses with complaints or with a given alert can be listed without calling the live endpoints; these fields are filled as records are re-crawled and are absent on a record not refreshed since they were added. country is parsed from the profile URL; address_country is derived separately from the business address. Both enums are us, ca. sort enum: relevance, rating_desc, rating_asc, accredited_first, name_asc, years_in_business_desc, complaints_desc. A query returns at most 10,000 records; to read more, split it with the values and counts from the facets endpoint (for example one request per state, then per city) so each part stays under that limit. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100); the item and facets endpoints cost 1.

get/datasets/bbb-businesses/search

Request

  • Base URL: https://api.crawlora.net/api/v1
  • URL: https://api.crawlora.net/api/v1/datasets/bbb-businesses/search
  • Auth: API key in header x-api-key

Query parameters

qstring

Full-text match on the business name/category, max 256 characters

categorystring

Exact category filter, e.g. Plumber (case-sensitive). Use the values returned by facets?facet=category

country'us' | 'ca'

Country filter, parsed from the profile URL (case-insensitive). Enum: us, ca

address_country'us' | 'ca'

Country filter derived from the business address, separate from the profile-URL country (case-insensitive). Enum: us, ca

statestring

Exact 2-letter state or province code as in the profile URL, e.g. tx (case-insensitive). Use the values returned by facets?facet=state

citystring

Exact city slug as in the profile URL, e.g. san-diego (case-insensitive). Use the values returned by facets?facet=city with a state filter; the same slug exists in several states, so send state with it

rating'A+' | 'A' | 'A-' | 'B+' | 'B' | 'B-' | 'C+' | 'C' | 'C-' | 'D+' | 'D' | 'D-' | 'F'

Exact letter-grade rating filter. Enum: A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F

min_rating_rankinteger

Numeric floor against the denormalized rating rank (A+=12 down to F=0), e.g. 10 for 'A- and above'

accreditedboolean

Accreditation filter; true keeps only accredited businesses, false only the others

has_alertsboolean

BBB-alert filter; true keeps businesses whose profile carries at least one BBB alert, false keeps refreshed records with none

alert_titlestring

Exact BBB alert title filter, e.g. Pattern of Complaint. Use the values returned by facets?facet=alert_title

min_complaintsinteger

Floor against total_complaints (BBB's three-year complaint count), 0 or greater

entity_typestring

Exact entity-type filter, e.g. Limited Liability Company (LLC) (case-sensitive). Use the values returned by facets?facet=entity_type

run_idstring

Exact crawl run id filter, e.g. bbb-20260906. Use the values returned by facets?facet=run_id

sort'relevance' | 'rating_desc' | 'rating_asc' | 'accredited_first' | 'name_asc' | 'years_in_business_desc' | 'complaints_desc'

Sort enum: relevance, rating_desc, rating_asc, accredited_first, name_asc, years_in_business_desc, complaints_desc

pageinteger

Page number, defaults to 1

page_sizeinteger

Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000

Headers

x-api-keystring required

API key required

Response

OK

codeinteger
msgstring

Example response

{
  "code": 200,
  "data": {
    "items": [
      {
        "category": "Plumber",
        "entity_type": "Limited Liability Company (LLC)",
        "rating": "A+",
        "total_complaints": 943
      }
    ]
  },
  "msg": "OK"
}

Changes

No recorded changes to this operation across all 2 revisions of this API.