BBB Scraper & API - Better Business Bureau Leads & Ratings avatar

BBB Scraper & API - Better Business Bureau Leads & Ratings

Pricing

$1.00 / 1,000 results

Go to Apify Store
BBB Scraper & API - Better Business Bureau Leads & Ratings

BBB Scraper & API - Better Business Bureau Leads & Ratings

BBB scraper for Better Business Bureau (bbb.org) leads, US and Canada. Input: keywords, cities or ZIPs, filters (accredited, rating grade, distance) or BBB URLs. One result = one business: name, category, BBB rating, accreditation, phone, address, coordinates, profile URL. $1.00 per 1,000 results.

Pricing

$1.00 / 1,000 results

Rating

0.0

(0)

Developer

Giovanni Rich

Giovanni Rich

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

This BBB scraper is an unofficial BBB API for Better Business Bureau search data in the US and Canada. Give it keywords or trades (plumber, roofing contractors, dentist) and cities, ZIP or postal codes, and get every matching business on bbb.org as clean JSON, CSV or Excel: business name, BBB category, BBB rating (A+ to F), BBB Accredited yes / no, phone number, street address, city, state / province, ZIP, latitude / longitude, the BBB profile URL, logo and service area - ready-made B2B leads and contractor lists.

It reads BBB's own search data over plain HTTP: no browser, no login, no API key. BBB shows at most 225 businesses for any one search; this scraper's deep search splits big searches by rating grade, state, category, distance, sort order and nearby towns and merges them without duplicates. In testing, plumber near Denver (1,954 listed by BBB) returned 1,524 unique business locations in 4 minutes, and roofing contractors near Houston (4,706 listed) returned 3,406 in under 6 minutes.

What you get

One dataset item per business location:

  • Business: name, category (BBB's main category), categories, categoryId, logoUrl.
  • BBB standing: rating (A+ to F, null = not rated), ratingScore, accredited (true / false), isCharity, charitySeal, outOfBusiness.
  • Contact: phone (main number) and phones (all listed numbers).
  • Where: address, city, state, postalCode, country (US / CA), latitude, longitude, serviceArea, serviceAreas.
  • Links: profileUrl (BBB profile), locationProfileUrl (this branch), leaveReviewUrl, requestQuoteUrl.
  • BBB office: localBbb, localBbbId.
  • Ids: id (one per business location, stable between runs), businessId (one per business; a company with several branches has several rows).
  • Where it came from: sourceQuery, sourceLocation, position, searchUrl, scrapedAt.

Sample output

From a real BBB search: plumber near Denver, CO.

namecategoryratingaccreditedphonecity
Ennis Plumbing LLCPlumberA+true(720) 660-9812Denver, CO
Repipe Specialists of ColoradoGeneral ContractorA+true(800) 493-1631Denver, CO
Speed Plumbing Services Inc.PlumberA+true(720) 670-6361Denver, CO

Use cases

  • Local business leads: every accredited roofer in Houston with a phone number, ready for a CRM or dialer.
  • Contractor directories and comparison sites by trade and city.
  • Reputation and risk checks: which HVAC companies near you are rated D or F (ratings: ["D", "F"]).
  • Sales territory planning across US states and Canadian provinces.
  • Market research: how many BBB-listed businesses a trade has in a region, and how many are accredited.
  • Weekly monitoring: schedule a run and deduplicate on id to get only new businesses.

Pricing

$1.00 per 1,000 results (pay per result; failed requests are never charged). No start fee; duplicates, out-of-business listings and unrecognised places are not charged either. Most BBB scrapers on the Store charge $2.00-$20.00 per 1,000.

FAQ

Is scraping BBB legal? The actor collects publicly visible business listings, not personal data, and does not bypass any access control. You are responsible for how you use the data and for following BBB's terms and the laws that apply to you (for example on cold calling). This is not legal advice.

Does it need a login, API key or proxy? No login and no API key. BBB's search answers direct requests, so the default runs without a proxy; switch on Apify Proxy only if the log shows repeated blocks. (There is no public self-serve BBB search API - BBB sells data products to partners - so this actor reads the public search on bbb.org.)

How fast is it and how many results can I get? A 100-business search takes a few seconds. BBB caps one search at 225 businesses; with deepSearch on (default) big searches reach thousands (1,524 plumbers near Denver in 4 minutes). Set maxItems: 0 for everything the search can reach.

Does it get BBB complaints and reviews? No. Those are on the profile pages, which are behind a bot check. You get the rating grade and accreditation, and profileUrl links to the full profile.

Can I schedule it or use it via API? Yes: Apify Schedules, the Apify API and Python/JavaScript clients, Make, Zapier, n8n, webhooks, or the Apify MCP server for AI agents.

Why do I get two rows for one company? BBB lists each branch address separately. id is per location, businessId per company: deduplicate on businessId if you want one row per company.

Does it cover Canada? Yes: Canadian cities ("Toronto, ON"), provinces ("BC") and postal codes ("M5V 2T6") all work.

How to use

  1. Type one or more Keywords or categories (plumber, auto repair, roofing contractors, or a business name) and Locations (Denver, CO, 80212, Toronto, ON, M5V 2T6, TX). Every keyword is searched in every location. No location = all of the US and Canada.
  2. Optionally filter: BBB Accredited only, Rating grades (A, B, C, D, F), Max distance (5-100 miles), States / provinces, exact BBB categories, Only businesses serving the area, and choose a Sort order.
  3. Set Max businesses per search (0 = everything the search can reach).
  4. Click Start. Download the results as JSON, CSV, Excel or HTML from the Output tab, or pull them through the Apify API, Make, Zapier, n8n or an MCP client.

Already have links? Paste bbb.org search URLs or category pages (https://www.bbb.org/us/co/denver/category/plumber) into BBB URLs; the keyword, place, sort and filters are read from the URL.

Input example

FieldDefaultDescription
searchQueries-Keywords, trades or business names, one search each
locationsall US + Canada"City, ST", ZIP / postal code or state / province code
accreditedOnlyfalseOnly BBB Accredited businesses
ratingsallAny of A, B, C, D, F (A = A+, A, A-)
maxDistanceMiles0 (BBB default)5, 10, 25, 50 or 100
statesallTwo-letter state / province codes
categories-Exact BBB category names (advanced)
servingAreaOnlyfalseBBB's "Serving my Area" filter
skipOutOfBusinesstrueLeave out businesses marked out of business
sortrelevancedistance, rating, atoz, ztoa
maxItems100Max businesses per search; 0 = all
deepSearchtrueGo past BBB's 225-per-search limit
startUrls-bbb.org search or category URLs

Accredited, A-rated roofers within 25 miles of Austin, best rated first:

{
"searchQueries": ["roofing"],
"locations": ["Austin, TX"],
"accreditedOnly": true,
"ratings": ["A"],
"maxDistanceMiles": 25,
"sort": "rating",
"maxItems": 60
}

Dentists and plumbers in Vancouver and downtown Toronto:

{
"searchQueries": ["dentist", "plumber"],
"locations": ["Vancouver, BC", "M5V 2T6"],
"maxItems": 30
}

Every plumber BBB lists around Denver, Colorado only:

{
"searchQueries": ["plumber"],
"locations": ["Denver, CO"],
"states": ["CO"],
"maxItems": 0
}

From links you copied off the site:

{
"startUrls": [
"https://www.bbb.org/search?find_country=USA&find_text=hvac&find_loc=Phoenix%2C%20AZ&filter_ratings=A&sort=AToZ",
"https://www.bbb.org/us/co/denver/category/electrician"
],
"maxItems": 20
}

Output example

From a real run (plumber near Denver, CO):

{
"id": "1296_90156205_690834",
"businessId": "90156205",
"name": "Ennis Plumbing LLC",
"category": "Plumber",
"categories": ["Plumber", "Commercial Plumber"],
"rating": "A+",
"ratingScore": 100,
"accredited": true,
"phone": "(720) 660-9812",
"phones": ["(720) 660-9812"],
"address": "4865 Golden Ct",
"city": "Denver",
"state": "CO",
"postalCode": "80212",
"country": "US",
"latitude": 39.74,
"longitude": -104.97,
"profileUrl": "https://www.bbb.org/us/co/denver/profile/plumber/ennis-plumbing-llc-1296-90156205",
"locationProfileUrl": null,
"leaveReviewUrl": "https://www.bbb.org/us/co/denver/profile/plumber/ennis-plumbing-llc-1296-90156205/leave-a-review",
"requestQuoteUrl": "https://www.bbb.org/greatwestpacific/quote/request-ennis-plumbing-llc-90156205",
"logoUrl": null,
"serviceArea": "Ennis Plumbing services Thornton, CO.",
"serviceAreas": ["Thornton, CO"],
"isCharity": false,
"charitySeal": false,
"outOfBusiness": false,
"outOfBusinessCode": null,
"distanceMiles": null,
"localBbb": "BBB Great West + Pacific",
"localBbbId": "1296",
"categoryId": "10113-000",
"sourceQuery": "plumber",
"sourceLocation": "Denver, CO",
"position": 1,
"searchUrl": "https://www.bbb.org/search?find_loc=Denver%2C%20CO&find_text=plumber",
"scrapedAt": "2026-10-17T17:19:38.441Z"
}

A Canadian row from the same kind of run (plumber near Vancouver, BC, shortened): "name": "Elafon Mechanical Ltd.", "rating": "A+", "accredited": true, "phone": "(604) 688-0001", "address": "239 970 Burrard St", "postalCode": "V6Z 2R4", "country": "CA", "localBbb": "BBB, British Columbia & Yukon".

Fill rates on a 1,524-business test run (plumber near Denver, everything): name, category, city, state, ZIP, coordinates, profile URL 100%; phone 97%; street address 82% (service-area businesses hide it); BBB letter rating 75% (the rest are not rated); accredited 21%; service area 36%; logo 14%. A field BBB does not publish for a business is null or empty, never guessed.

Integrations

  • Apify API: run the actor and fetch results over REST, or with the official Python and JavaScript / Node.js clients.
  • MCP for AI agents: through the Apify MCP server (https://mcp.apify.com), Claude, ChatGPT, Cursor and other agents can call this BBB search API directly. Every input field is described for agents ("find A-rated accredited electricians within 10 miles of 80212" maps straight onto the input).
  • Make, Zapier and n8n: send new leads to HubSpot, Pipedrive, Salesforce, Google Sheets, Airtable or Slack.
  • Webhooks and schedules: run weekly and deduplicate on id to get only new businesses.

Python example:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("rel8ble/bbb-business-scraper").call(run_input={
"searchQueries": ["roofing"],
"locations": ["Austin, TX"],
"accreditedOnly": True,
"maxItems": 100,
})
for b in client.dataset(run["defaultDatasetId"]).iterate_items():
print(b["name"], "|", b["rating"], "|", b["phone"], "|", b["city"], "|", b["profileUrl"])

Limits (read before large runs)

  • 225 businesses per single BBB search is BBB's own limit (15 pages of 15). Deep search goes past it by running narrower searches; it reaches most but not all of BBB's count: 78% for plumber near Denver (1,524 of 1,954) in 4 minutes, 72% for roofing contractors near Houston (3,406 of 4,706) in 5.5 minutes. BBB's count also includes loose keyword matches and branches, so the true number of real matches is lower than it says. RUN_SUMMARY shows the count, what was reached and the coverage percent for every search.
  • Search results only. BBB's business profile pages (complaints, reviews, years in business, website, owner names) sit behind a bot check, so this actor does not open them and does not try to get around it. Everything in the output comes from BBB's public search results.
  • Wide area. BBB searches far around a city (Denver also returns Wyoming and Nebraska). Use maxDistanceMiles or states to keep it tight.
  • Unknown places (a typo, an unknown town) make BBB search everything; the actor detects that, skips the search and says so in the log, without charging.
  • Speed: requests are spaced politely (at most 5 a second). A 100-business search takes a few seconds; deep searches of a few thousand businesses take a few minutes.
  • No personal data. Only business listing data is collected. Contact names are not collected, and e-mail addresses that look personal in free-text fields are replaced with [email removed]. Some sole traders trade under their own name; that is the business name BBB lists.