---
title: "Get a Better Business Bureau business profile"
method: GET
path: "/bbb/business"
tags: ["BBB"]
---

# Get a Better Business Bureau business profile

`GET /bbb/business`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/bbb/business`
- Auth: API key in header `x-api-key`

Returns a bbb.org business profile: BBB rating letter grade and reasons, accreditation status and since-date, years in business, BBB file/incorporation dates, entity type, contact info, business categories, social media, and a short latest-reviews preview.

## Query parameters

- `url` string, required

## Headers

- `x-api-key` string, required

## Response `200`

OK

- BbbBusinessResponseDoc
  - `code` integer
  - `data` BbbBusinessResponse
    - `accredited` boolean
    - `accredited_since` string
    - `additional_phone_numbers` string[]
    - `additional_websites` string[]
    - `address` string
    - `alerts` BbbBusinessAlert[]: Alerts lists the notices BBB attaches to the profile (pattern of complaints, investigation results, licensing findings). It is an empty list when the profile has none. An alert parsed without Text means only the profile's alert list could be read.
      - `id` string: ID is BBB's identifier for the alert on this profile, also the anchor in URL.
      - `links` BbbBusinessAlertLink[]: Links are the hyperlinks inside the notice, in order.
        - `text` string
        - `url` string
      - `text` string: Text is the complete notice as plain text, one paragraph per line.
      - `title` string: Title is BBB's heading for the alert.
      - `type_id` integer: TypeID is BBB's numeric alert type. Seen so far: 8104 Pattern of Complaint, 8108 Alert, 8111 Licensing. It is passed through as published, not validated against a fixed list.
      - `url` string: URL is the alert's own anchor on the profile's more-info page.
    - `alternate_names` string[]
    - `average_review_rating` number
    - `bbb_file_opened` string
    - `business_incorporated` string
    - `business_management` string
    - `business_started` string
    - `canonical_url` string: BBB's own address for the profile, from the page. It differs from url when BBB has since changed the address, for example after moving the business to another local BBB: the business number at the end stays the same and the four-digit local BBB number before it changes.
    - `categories` string[]
    - `category` string
    - `complaints_closed_last_12_months` integer
    - `complaints_closed_last_3_years` integer
    - `entity_type` string
    - `hours` BbbBusinessHoursDay[]: Hours is genuinely conditional per-location -- confirmed both absent (embedded state JSON "operatingHours":null on some profiles) and present as a full 7-day table on others. An empty list here is a real result, not a parser failure.
      - `day` string
      - `hours` string
    - `image_url` string
    - `latest_reviews` BbbReviewPreview[]
      - `author` string
      - `quote` string
      - `url` string
    - `licensing_note` string
    - `local_bbb` string
    - `local_bbb_url` string
    - `more_info_url` string
    - `name` string
    - `notice` string
    - `phone` string
    - `products_and_services` string[]
    - `profile_under_review` boolean: ProfileUnderReview is true when BBB is updating the profile. The page then shows "This business profile is under review." (Notice) in place of the rating and accreditation, so Rating is "NR", RatingReasons holds BBB's sentence saying why, and "accredited" is left out of the JSON: the page does not say, and false would be a claim BBB is not making. Seen live 2026-10-12. The state is BBB's and lasts until the review ends, so asking again returns the same answer.
    - `rating` string
    - `rating_reasons` string[]
    - `social_media` string[]
    - `source_url` string
    - `total_complaints` integer: TotalComplaints, the two closed-complaint counts, TotalReviews and AverageReviewRating are the counts BBB embeds in the profile page. A count is left out when BBB did not publish it, so 0 is a real zero. TotalComplaints is the figure the complaints page shows for the last three years; use bbb-business-complaints for the list.
    - `total_reviews` integer
    - `url` string
    - `website` string
    - `years_in_business` string
  - `msg` string

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[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)
