---
title: "Get a business from the BBB businesses dataset"
method: GET
path: "/datasets/bbb-businesses/items/{id}"
tags: ["Datasets"]
---

# Get a business from the BBB businesses dataset

`GET /datasets/bbb-businesses/items/{id}`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/datasets/bbb-businesses/items/{id}`
- Auth: API key in header `x-api-key`

Returns one business by id from dataset id enum value `bbb-businesses`. Returns 404 when the business is not in the index.

## Path parameters

- `id` string, required

## Headers

- `x-api-key` string, required

## Response `200`

OK

- DatasetsBbbBusinessResponseDoc
  - `code` integer
  - `data` EsBBBBusinessRecord
    - `accredited` boolean
    - `accredited_since` string
    - `additional_phone_numbers` string[]
    - `additional_websites` string[]
    - `address` string
    - `address_country` 'us' | 'ca': AddressCountry is derived from the recognized US state/territory/military or Canadian province code at the end of Address. Empty when unrecognized.
    - `alert_titles` string[]
    - `alerts` EsBBBBusinessAlert[]
      - `id` string
      - `links` EsBBBBusinessAlertLink[]
        - `text` string
        - `url` string
      - `text` string
      - `title` string
      - `type_id` integer
      - `url` string
    - `alternate_names` string[]
    - `average_review_rating` number
    - `bbb_file_opened` string
    - `bbb_local_id` string
    - `business_id` string
    - `business_incorporated` string
    - `business_management` string
    - `business_started` string
    - `categories` string[]
    - `category` string
    - `city` string
    - `complaints_closed_last_12_months` integer
    - `complaints_closed_last_3_years` integer
    - `complaints_url` string: On-demand pointers -- not crawled/embedded, see package doc above.
    - `country` string: State/City are parsed from the profile URL's /us|ca/<state>/<city>/... path segments -- BusinessResponse.Address is a free-text joined string, not structured, so it isn't a reliable filter/facet field on its own.
    - `crawled_at` string
    - `discovery_source` string: Crawl bookkeeping. DiscoverySource records how the CURRENT document content was obtained (last-crawl mechanism), not first-discovery provenance -- keyword-sweep, category-grid, and Common Crawl discovery are deduplicated against the same business, so the same business is never double-enqueued no matter how many search/category cells or CC records surface it. A richer per-discovery-event location/category isn't tracked, only the coarse source.
    - `entity_type` string
    - `has_alerts` boolean: HasAlerts, AlertTitles and Alerts describe the notices BBB attaches to the profile (pattern of complaints, investigation results, licensing findings). A refreshed record with no alerts carries has_alerts=false and empty lists; a record not re-crawled since these were added has none of the keys.
    - `hours` EsBBBBusinessHoursDay[]
      - `day` string
      - `hours` string
    - `licensing_note` string
    - `more_info_url` string
    - `name` string
    - `phone` string
    - `products_and_services` string[]
    - `rating` string
    - `rating_rank` integer
    - `rating_reasons` string[]
    - `reviews_url` string
    - `run_id` string
    - `schema_version` integer
    - `social_media` string[]
    - `state` string
    - `total_complaints` integer: Complaint and review counts from the profile page, the same values bbb-business returns. A record not re-crawled since these were added has none of the keys until its next refresh, and a count BBB did not publish is likewise absent, so 0 is a real zero.
    - `total_reviews` integer
    - `url` string
    - `website` string
    - `years_in_business` string
    - `years_in_business_num` integer: YearsInBusinessNum is a best-effort leading-digit parse of YearsInBusiness (a free-text upstream string, e.g. "3"), -1 when unparseable. Denormalized purely for numeric sorting -- YearsInBusiness itself stays a keyword, so a lexicographic string sort would wrongly rank "9" ahead of "12".
  - `msg` string

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `429`: Too Many Requests
- `500`: Internal Server Error

---

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