Skip to main content
Glama
Crawlora-org

Crawlora MCP

Official

datasets_bbb_businesses_search

Search the Better Business Bureau business dataset by name, category, location, rating, accreditation, alerts, or complaints to find matching profiles.

Instructions

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.

Input Schema

NameRequiredDescriptionDefault
qNoFull-text match on the business name/category, max 256 characters
cityNoExact 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
pageNoPage number, defaults to 1
sortNoSort enum: relevance, rating_desc, rating_asc, accredited_first, name_asc, years_in_business_desc, complaints_desc
stateNoExact 2-letter state or province code as in the profile URL, e.g. tx (case-insensitive). Use the values returned by facets?facet=state
ratingNoExact letter-grade rating filter. Enum: A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F
run_idNoExact crawl run id filter, e.g. bbb-20260906. Use the values returned by facets?facet=run_id
countryNoCountry filter, parsed from the profile URL (case-insensitive). Enum: us, ca
categoryNoExact category filter, e.g. Plumber (case-sensitive). Use the values returned by facets?facet=category
page_sizeNoPage size, defaults to 20 and maxes at 100; page * page_size must be <= 10000
accreditedNoAccreditation filter; true keeps only accredited businesses, false only the others
has_alertsNoBBB-alert filter; true keeps businesses whose profile carries at least one BBB alert, false keeps refreshed records with none
alert_titleNoExact BBB alert title filter, e.g. Pattern of Complaint. Use the values returned by facets?facet=alert_title
entity_typeNoExact entity-type filter, e.g. Limited Liability Company (LLC) (case-sensitive). Use the values returned by facets?facet=entity_type
min_complaintsNoFloor against total_complaints (BBB's three-year complaint count), 0 or greater
address_countryNoCountry filter derived from the business address, separate from the profile-URL country (case-insensitive). Enum: us, ca
min_rating_rankNoNumeric floor against the denormalized rating rank (A+=12 down to F=0), e.g. 10 for 'A- and above'

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.17.13
    • addedInput schema / properties / address_country
      Added value: +{
      +  "description": "Country filter derived from the business address, separate from the profile-URL country (case-insensitive). Enum: us, ca",
      +  "enum": [
      +    "us",
      +    "ca"
      +  ],
      +  "type": "string"
      +}
  2. Changed12 schema fields changedv1.17.12
    • changedInput schema / properties / accredited / description
      Previous value: -"Accreditation filter; true keeps only accredited businesses"New value: +"Accreditation filter; true keeps only accredited businesses, false only the others"
    • addedInput schema / properties / alert_title
      Added value: +{
      +  "description": "Exact BBB alert title filter, e.g. Pattern of Complaint. Use the values returned by facets?facet=alert_title",
      +  "type": "string"
      +}
    • changedInput schema / properties / category / description
      Previous value: -"Exact category filter, e.g. Plumber. Use the values returned by facets?facet=category"New value: +"Exact category filter, e.g. Plumber (case-sensitive). Use the values returned by facets?facet=category"
    • changedInput schema / properties / city / description
      Previous value: -"Exact city filter, parsed from the profile URL"New value: +"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"
    • addedInput schema / properties / country
      Added value: +{
      +  "description": "Country filter, parsed from the profile URL (case-insensitive). Enum: us, ca",
      +  "enum": [
      +    "us",
      +    "ca"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / entity_type / description
      Previous value: -"Exact entity-type filter, e.g. Limited Liability Company (LLC)"New value: +"Exact entity-type filter, e.g. Limited Liability Company (LLC) (case-sensitive). Use the values returned by facets?facet=entity_type"
    • addedInput schema / properties / has_alerts
      Added value: +{
      +  "description": "BBB-alert filter; true keeps businesses whose profile carries at least one BBB alert, false keeps refreshed records with none",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / min_complaints
      Added value: +{
      +  "description": "Floor against total_complaints (BBB's three-year complaint count), 0 or greater",
      +  "type": "integer"
      +}
    • changedInput schema / properties / run_id / description
      Previous value: -"Exact crawl run id filter"New value: +"Exact crawl run id filter, e.g. bbb-20260906. Use the values returned by facets?facet=run_id"
    • changedInput schema / properties / sort / description
      Previous value: -"Sort enum: relevance, rating_desc, rating_asc, accredited_first, name_asc, years_in_business_desc"New value: +"Sort enum: relevance, rating_desc, rating_asc, accredited_first, name_asc, years_in_business_desc, complaints_desc"
    • changedInput schema / properties / sort / enum
      Previous value: -[
      -  "relevance",
      -  "rating_desc",
      -  "rating_asc",
      -  "accredited_first",
      -  "name_asc",
      -  "years_in_business_desc"
      -]New value: +[
      +  "relevance",
      +  "rating_desc",
      +  "rating_asc",
      +  "accredited_first",
      +  "name_asc",
      +  "years_in_business_desc",
      +  "complaints_desc"
      +]
    • changedInput schema / properties / state / description
      Previous value: -"Exact 2-letter state/province filter, parsed from the profile URL, e.g. tx"New value: +"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"
  3. Changed2 schema fields changedv1.17.5
    • addedInput schema / properties / rating / enum
      Added value: +[
      +  "A+",
      +  "A",
      +  "A-",
      +  "B+",
      +  "B",
      +  "B-",
      +  "C+",
      +  "C",
      +  "C-",
      +  "D+",
      +  "D",
      +  "D-",
      +  "F"
      +]
    • addedInput schema / properties / sort / enum
      Added value: +[
      +  "relevance",
      +  "rating_desc",
      +  "rating_asc",
      +  "accredited_first",
      +  "name_asc",
      +  "years_in_business_desc"
      +]
  4. Addedv1.16.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses per-record billing with a minimum of 2 credits, the 10,000-record return cap, the caveat that complaint/alert fields are absent on records not yet re-crawled, and the URL-vs-address country distinction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and keeps the operational notes (limits, billing, field caveats) in a logical order. It is dense and somewhat long, and re-lists enums that already appear in the schema, which is minor redundancy rather than waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter search tool with no output schema and no annotations, the description covers what records contain, what they lack, how to work around the record cap, and how billing works — everything needed to invoke it correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 17 parameters and enums. The description largely repeats the rating/sort/country enums and the profile-URL-vs-address country point rather than adding syntax or format detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (BBB businesses index) and names the dataset id enum value `bbb-businesses`. It also differentiates from siblings by explaining that complaints/reviews/more-info are NOT embedded but reachable via the bbb-business-complaints/reviews/more-info endpoints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use this versus the live endpoints (complaint/review counts stored on records vs on-demand lookup) and tells the agent to split large queries via the facets endpoint. It stops short of explicit 'use X instead of Y' routing for sibling search tools, but the operational context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools