BBB Scraper — Business Leads, Ratings & Phones
Pricing
$1.80 / 1,000 per business returneds
BBB Scraper — Business Leads, Ratings & Phones
Scrape Better Business Bureau (bbb.org) search results into clean leads: business name, phone, full street address, BBB letter rating (A+ to F), accreditation status, category and profile URL. Search any keyword across any US/Canada city or ZIP. No login, deduplicated output.
Pricing
$1.80 / 1,000 per business returneds
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Turn any Better Business Bureau (bbb.org) search into a clean lead list. Give it a keyword
(plumber, roofing, dentist, moving company…) and a location (Austin, TX, New York, NY,
Toronto, ON, or a ZIP like 78701) and it returns one row per business with:
| Field | Example |
|---|---|
businessName | Calixto Plumbing |
phone | (512) 945-3143 |
streetAddress / city / state / zip / country | 8410 Georgian Dr # B · Austin · TX · 78753-6003 · US |
bbbRating | A+ (BBB letter grade, A+ → F, null when unrated) |
isAccredited / accreditedStatus | true / AB |
bbbCategory | plumber, roofing contractors, commercial plumber … |
bbbOfficeId / bbbOfficeName | 0825 · BBB Heart of Texas |
profileUrl | link to the BBB profile |
businessId | BBB's own id — stable, and what rows are deduplicated on |
searchKeyword / searchLocation / searchPage / resultPosition / totalResultsForQuery | provenance for every row |
Every keyword is run against every location, so 5 keywords × 10 cities = 50 searches in one run.
Why the data is trustworthy
The actor reads two machine-readable blobs that BBB ships inside each search page — the JSON-LD
SearchResultsPage (name, phone, full postal address, profile URL) and BBB's own analytics object
(business id, letter rating, accreditation, BBB office) — and joins them on the business id.
Nothing is screen-scraped out of rendered HTML, and no number is grabbed by a page-wide regex.
Measured fill-rates on a 245-business run across 6 trades × 3 metros:
businessName 100% · phone 100% · city/state/zip 100% · bbbRating 99% · bbbCategory 100% ·
streetAddress 84% (BBB genuinely has no street for PO-Box-only listings).
Filters
accreditedOnly— keep only BBB Accredited businesses (BBB's search already leans heavily accredited; this makes it a guarantee).minRating— drop anything below a letter grade. Unrated businesses are dropped when a floor is set.requirePhone— drop rows without a phone number.sort—Relevance(BBB default) orDistance;Distancegenuinely returns a different set.
Known limits (measured, not guessed)
- BBB serves at most 15 result pages per keyword + location — about 225 businesses — even when it reports thousands of total results. The run log tells you when a query is capped. To cover a big market, split it: more keywords, more cities, or ZIP-by-ZIP.
- Consecutive result pages of the same query overlap slightly. Rows are deduplicated on
businessId, and you are only charged for rows actually delivered — never for a duplicate. - A location is required; an empty one returns nothing.
- About a quarter of BBB's responses omit the ratings blob. The actor detects this and re-requests
the page, so ratings stay ~100% filled; on the rare page where every retry misses,
bbbRating,isAccreditedandbbbOfficeNamecome backnullrather than wrong. - Business website and email are not on BBB's search pages (they live behind the individual profile pages, which block automated requests). This actor is scoped to search-result leads; pair it with an email-enrichment actor if you need inboxes.
Input example
{"keywords": ["plumber", "hvac"],"locations": ["Austin, TX", "78701"],"maxPagesPerQuery": 5,"maxItems": 200,"accreditedOnly": false,"minRating": "","requirePhone": false,"sort": "Relevance"}
Pricing
Pay per business returned. You are charged only for the rows delivered to your dataset — filtered and duplicate rows cost nothing.
Legal
Use of this actor is subject to the Better Business Bureau's Terms of Service and to the data protection laws that apply to you. The output describes businesses, but sole-trader listings can still constitute personal data — how you store, contact and process the results is your responsibility. Scrape at a reasonable rate and only for lawful purposes.