Better Business Bureau Scraper
Pricing
from $1.00 / 1,000 profile scrapeds
Better Business Bureau Scraper
Scrape BBB business profiles, ratings (A+ to F), customer reviews, complaints, and decoded contact emails. Search by keyword + location or pass direct profile URLs. Filter by accreditation status or minimum rating. Covers 5.4M businesses across the US and Canada.
Pricing
from $1.00 / 1,000 profile scrapeds
Rating
0.0
(0)
Developer

zadexinho
Actor stats
1
Bookmarked
2
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
BBB Scraper
Scrape business profiles, ratings, reviews, and complaints from the Better Business Bureau (bbb.org) — 5.4 million businesses across the US and Canada.
What you get:
- Business profiles with BBB letter rating (A+ to F), numeric score, and accreditation status
- Contact info: address, phone, decoded email, website
- Customer reviews with star ratings, text, and verification status
- Complaints with resolution history, business responses, and customer rebuttals
- Summary stats: review counts, average rating, star distribution, complaint breakdown
How it works:
- Search by keyword + location (e.g., "plumber" in "Dallas, TX")
- Or pass direct BBB profile URLs
- Filter by accreditation status or minimum rating
- ~7 seconds per profile with automatic Cloudflare bypass
What data can you extract?
Business profiles
| Field | Type | Description |
|---|---|---|
businessId | string | BBB internal business ID |
name | string | Business name |
url | string | BBB profile URL |
rating | string | BBB letter rating (A+ to F) |
ratingNumeric | integer | Numeric score (97 for A+, down to 0 for F) |
isAccredited | boolean | Whether BBB accredited |
accreditedSince | string | Accreditation date (YYYY-MM-DD) |
address | object | Full address: street, city, state, postalCode, country |
phone | string | Business phone number |
email | string | Business email (decoded from BBB obfuscation) |
website | string | Business website URL |
categories | string[] | Business categories (Plumber, Electrician, etc.) |
yearEstablished | integer | Year the business was started |
bbbFileOpened | string | Date BBB opened the file (YYYY-MM-DD) |
reviewSummary.totalReviews | integer | Total customer review count |
reviewSummary.averageRating | number | Average star rating (1-5) |
reviewSummary.starDistribution | object | Breakdown by star rating |
complaintSummary.totalComplaints | integer | Total complaint count |
complaintSummary.closedLast3Years | integer | Complaints closed in last 3 years |
complaintSummary.closedLast12Months | integer | Complaints closed in last 12 months |
complaintSummary.complaintTypes | object | Breakdown by complaint type |
scrapedAt | string | Scrape timestamp (ISO 8601) |
Customer reviews (when enabled)
| Field | Type | Description |
|---|---|---|
reviews[].reviewId | string | Unique review ID |
reviews[].rating | integer | Star rating (1-5) |
reviews[].title | string | Review headline |
reviews[].text | string | Full review text |
reviews[].author | string | Reviewer name |
reviews[].createdAt | string | Review date |
reviews[].isVerified | boolean | Whether review is verified |
Complaints (when enabled)
| Field | Type | Description |
|---|---|---|
complaints[].complaintId | string | Unique complaint ID |
complaints[].type | string | Complaint type (e.g., Service Issues) |
complaints[].status | string | Resolution status |
complaints[].dateFiled | string | Date complaint was filed |
complaints[].dateClosed | string | Date complaint was closed |
complaints[].text | string | Complaint text |
complaints[].businessResponse | string | Business response text |
complaints[].customerRebuttal | string | Customer follow-up text |
How to scrape BBB business profiles
- Enter one or more BBB profile URLs in the Business Profile URLs field.
- Or enter a Search Keywords (e.g., "plumber") and Search Location (e.g., "Dallas, TX") to discover businesses.
- Optionally filter by Accredited Only or Minimum BBB Rating.
- Enable Include Customer Reviews and Include Complaints to collect individual records.
- Click Start and download results from the Dataset tab as JSON, CSV, or Excel.
How much does it cost?
Pay-per-event pricing — you are charged per business profile scraped.
| Price per profile | Price per 1,000 profiles |
|---|---|
| $0.001 | $1.00 |
Example: Scraping 100 business profiles costs approximately $0.10.
Reviews and complaints are included at no extra charge when enabled.
Use cases
- Lead generation — Build lists of accredited businesses by category and location with contacts, ratings, and websites
- Due diligence — Research BBB ratings and complaint histories before partnerships or vendor selection
- Competitive analysis — Compare ratings and complaints across competitors in a metro area
- Reputation monitoring — Track complaint trends and resolution patterns over time
- CRM enrichment — Feed BBB data into your CRM for lead scoring and qualification
- Cross-platform analysis — Combine with Trustpilot, Google Reviews, and Sitejabber data
- Compliance reporting — Export BBB data for due diligence reports and audits
Input
| Field | Type | Default | Description |
|---|---|---|---|
businessUrls | string[] | [] | Direct BBB profile URLs to scrape |
searchQuery | string | — | Search term (e.g., "plumber", "auto repair") |
searchLocation | string | — | Location for search (e.g., "Dallas, TX") |
maxSearchResults | integer | 20 | Max businesses to collect from search (1-500) |
includeReviews | boolean | true | Extract individual customer reviews |
includeComplaints | boolean | true | Extract individual complaints with resolution details |
maxReviewsPerBusiness | integer | 50 | Max reviews per business (0 = all) |
maxComplaintsPerBusiness | integer | 50 | Max complaints per business (0 = all) |
accreditedOnly | boolean | false | Only scrape BBB-accredited businesses |
minRating | string | — | Minimum BBB letter rating (A+ to F) |
requestDelay | integer | 2000 | Delay between requests in ms (500-10000) |
proxy | object | Residential US | Proxy configuration (residential required) |
Input examples
Direct profile URL:
{"businessUrls": ["https://www.bbb.org/us/tx/dallas/profile/plumber/milestone-electric-ac-plumbing-0875-91344019"]}
Search by keyword and location:
{"searchQuery": "plumber","searchLocation": "Dallas, TX","maxSearchResults": 50}
Accredited businesses with minimum rating:
{"searchQuery": "roofing contractor","searchLocation": "Denver, CO","maxSearchResults": 100,"accreditedOnly": true,"minRating": "A"}
Quick search without reviews (faster):
{"searchQuery": "auto repair","searchLocation": "Chicago, IL","maxSearchResults": 30,"includeReviews": false,"includeComplaints": false}
Output example
{"businessId": "22011175","bbbId": "0011","name": "Len The Plumber, Inc.","url": "https://www.bbb.org/us/md/baltimore/profile/plumber/len-the-plumber-inc-0011-22011175","rating": "A+","ratingNumeric": 97,"isAccredited": true,"accreditedSince": "2008-06-05","address": {"street": "3610 Commerce Dr","city": "Halethorpe","state": "MD","postalCode": "21227","country": "US"},"phone": "(410) 752-0136","email": "BBBinquiries@themastertradesgroup.com","website": "https://lentheplumber.com","categories": ["Plumber","Heating and Air Conditioning","Air Conditioning Contractors","Water Heater Repair"],"yearEstablished": 1995,"bbbFileOpened": "2002-01-15","reviewSummary": {"averageRating": 4.59,"totalReviews": 2167},"complaintSummary": {"totalComplaints": 171,"closedLast3Years": 171,"closedLast12Months": 68},"reviews": [{"reviewId": "r-1234567","rating": 5,"title": "Excellent emergency service","text": "Called at 10pm for a burst pipe. Technician arrived within 45 minutes and fixed it quickly. Fair pricing.","author": "John M.","createdAt": "2026-01-15","isVerified": true}],"complaints": [{"complaintId": "c-9876543","type": "Service Issues","status": "Answered","dateFiled": "2025-11-20","dateClosed": "2025-12-15","text": "Technician quoted $200 for repair but final bill was $450 with undisclosed charges.","businessResponse": "We have reached out to the customer directly to resolve this billing discrepancy."}],"scrapedAt": "2026-02-18T17:18:03.532187+00:00"}
Tips
- BBB requires residential US proxy — the default config uses Apify's RESIDENTIAL group. Do not disable this.
- Disable
includeReviewsandincludeComplaintsfor faster runs when you only need profile data and summaries. - Use
accreditedOnly: truefor lead generation where trust signals matter. - Use
minRating: "A"to only get A+, A, and A- rated businesses. - Increase
requestDelayto3000+ for large runs (100+ profiles). - BBB obfuscates emails in HTML — this scraper decodes them automatically.
- Each profile includes review and complaint summaries even when individual records are disabled.
FAQ
How many businesses can I scrape?
Set maxSearchResults up to 500 per search. For more, run multiple searches with different locations. Direct URL mode has no limit.
Do I need a residential proxy?
Yes. BBB uses Cloudflare protection that blocks datacenter proxies. The default configuration uses Apify's RESIDENTIAL proxy group with US country, included in all Apify plans.
How fast is it?
~7 seconds per profile. A search for 20 businesses completes in 2-3 minutes.
What if a business profile returns no data?
The scraper logs a warning and moves on. A circuit breaker stops the run after 5 consecutive failures to avoid wasting resources.
Can I combine this with other review scrapers?
Yes. Use BBB data alongside Trustpilot Scraper and Sitejabber Scraper for cross-platform reputation profiles.
How is the email decoded?
BBB obfuscates emails using a custom encoding scheme. This scraper reverses the obfuscation automatically — no post-processing needed.
What BBB ratings are available?
Letter grades: A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F. The ratingNumeric field provides a 0-97 numeric equivalent for sorting and filtering.
Changelog
- v0.3 — Pay-per-event pricing with spending limit support. Data completeness fixes (field names, website URL, phone parsing). Dead code cleanup.
- v0.2 — README rewrite, pricing documentation, input schema improvements.
- v0.1.15 — Speed optimization: 90s to 7s per profile. Email decoder. Cloudflare timing fixes.
- v0.1 — Initial release. Search + profile extraction, Playwright, circuit breaker, review and complaint extraction.