BBB Scraper — Ratings, Reviews, Complaints & Leads
Pricing
from $20.00 / 1,000 business profiles
BBB Scraper — Ratings, Reviews, Complaints & Leads
Scrape bbb.org for B2B leads — owner name, decoded email, phone, website, social profiles, BBB rating, accreditation, address + coordinates, business type, licenses, hours, plus reviews & complaints. Search by term + location or paste BBB URLs. USA & Canada, no login. JSON or CSV.
Pricing
from $20.00 / 1,000 business profiles
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
BBB Scraper — Better Business Bureau Business Profiles, Ratings, Reviews & Complaints
Turn any Better Business Bureau (bbb.org) search or business-profile URL into clean, structured trust data — BBB rating, accreditation, contact details, address with coordinates, customer reviews and complaints. Search by keyword + location, or paste profile URLs directly. One row per business, JSON or CSV out.

✨ Why use this scraper?
- Owner name + decoded email for lead gen — pulls the principal/owner's name and title, de-obfuscates the business email that BBB hides behind Cloudflare, plus phone, website and social-media profiles (Facebook, Instagram, LinkedIn, X).
- Full business-trust profile in one row — BBB letter rating, accreditation status + date, business type (LLC/Corp), years in business, license numbers, operating hours, address, geo-coordinates, categories and the business's own website.
- Reviews and complaints on demand — opt in to pull customer reviews (rating, author, text, date, business response) and complaints (type, status, date, text) nested inside each business row.
- Search or direct URLs — build searches from a keyword + location, or paste any
bbb.org/search?…or/profile/…URL. Both are auto-detected and mixed in one run. Filter to accredited businesses only. - USA & Canada — works across the whole BBB directory.
- No login, public pages only — every field comes from publicly visible BBB profile pages.
- Built to get through — BBB sits behind Cloudflare; this Actor clears the challenge with a stealth browser and residential proxies, then harvests at scale with automatic session rotation.
🎯 Use cases
| Audience | What they get |
|---|---|
| B2B lead generation | Verified local businesses with phone, website, address and accreditation status — filter by BBB rating for quality leads. |
| Sales & prospecting | Build targeted lists by category + city (plumbers in LA, HVAC in Dallas) with contact details ready to import. |
| Due diligence & compliance | Check a company's BBB rating, accreditation, years in business, and complaint history before doing business. |
| Reputation monitoring | Track a business's (or competitor's) reviews, complaints and rating over time. |
| Market research | Aggregate ratings, complaint volumes and category density across a city or region. |
📥 Supported inputs
| Input type | Example |
|---|---|
| Search terms + location | ["plumber"] + "Los Angeles, CA" |
| BBB search URL | https://www.bbb.org/search?find_country=USA&find_text=plumber&find_loc=Los%20Angeles%2C%20CA |
| BBB profile URL | https://www.bbb.org/us/ca/los-angeles/profile/plumber/fords-plumbing-1216-100081178 |
Not supported: BBB member-only / login-gated content, the BBB complaint-filing flow, and non-business (charity/give.org) profiles.
⚠️ Proxy requirement
BBB is protected by Cloudflare. This Actor requires residential proxies and defaults to Apify Residential (US). Datacenter proxies are blocked. You can supply your own residential proxy group in the input; keep the country aligned with your target market (US for /us/…, Canada for /ca/…).
🔄 How it works
- Classify each start URL as a search-results page or a direct business profile.
- Solve Cloudflare once — a stealth browser clears the managed challenge on a residential IP.
- Harvest every page's HTML inside that solved session (search pages, profiles, review and complaint sub-pages).
- Parse the business data embedded in each page into a normalized row.
- Paginate reviews and complaints when those options are enabled.
- Push one row per business to the dataset; the session auto-rotates its IP if it gets blocked.
⚙️ Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
searchTerms | array | ["plumber"] | Category/keyword terms to search. Each is combined with location. |
location | string | "Los Angeles, CA" | City + state/province for the search terms. Empty = nationwide. |
country | select | USA | USA or CAN. |
sort | select | Relevance | Result order: Relevance, Rating, Distance, Name. |
distance | integer | — | Search radius in miles from the location. |
startUrls | array | [] | BBB search or profile URLs to scrape directly. |
accreditedOnly | boolean | false | Only return BBB-accredited businesses (others skipped, not billed). |
scrapeReviews | boolean | false | Also collect each business's customer reviews. |
scrapeComplaints | boolean | false | Also collect each business's complaints. |
maxReviewPages | integer | 5 | Cap on review pages per business (~25 reviews/page). |
maxComplaintPages | integer | 5 | Cap on complaint pages per business (~25 complaints/page). |
maxItems | integer | 1000 | Hard cap on business profiles scraped. |
maxConcurrency | integer | 5 | Parallel fetches inside the solved session. |
proxy | object | Apify Residential US | Proxy configuration. Residential required. |
📊 Output overview
Each dataset item is one business. Core profile fields are always present; reviews and complaints arrays are added only when you enable those options. Empty fields are returned as null (never fabricated).
📦 Output sample
{"type": "business","bbbId": "0121","businessId": "87144493","profileUrl": "https://www.bbb.org/us/ny/new-york/profile/plumber/daniels-plumbing-services-0121-87144493","name": "Daniel's Plumbing Services","alternateNames": [],"bbbRating": "A+","isAccredited": true,"accreditedSince": "2022-03-08","accreditationRevoked": null,"accreditationText": "This business supports BBB's services to the public and meets BBB Accreditation standards.","primaryCategory": "Plumber","categories": ["Plumber", "Plumbing Renovation", "Sewer Cleaning", "Plumbing and Heating"],"phone": "(212) 369-2500","additionalPhones": [],"email": "info@plumbing-manhattan.com","website": "https://www.plumbing-manhattan.com/","additionalWebsites": [],"socialMedia": { "facebook": "https://www.facebook.com/danielsplumbingnyc", "instagram": "https://www.instagram.com/danielsplumbing/" },"addressLine1": "397 Lexington Ave.","city": "New York","stateCode": "NY","zipCode": "10016","formattedAddress": "397 Lexington Ave., New York, NY 10016","latitude": 40.751465,"longitude": -73.97583,"servingAreas": [],"isHeadquarters": false,"businessType": "Corporation","isOutOfBusiness": false,"yearsInBusiness": 7,"businessStarted": "2018-01-01","numberOfEmployees": null,"ownerName": "Mr. Daniel Sheeri","contacts": [{ "name": "Mr. Daniel Sheeri", "title": "President", "isPrincipal": true, "isManagement": true }],"licenses": [{ "licenseNumber": "000620", "expirationDate": "2028-06-03", "agency": "New York, NY" }],"logoUrl": "https://m.bbb.org/prod/ProfileImages/…/logo.jpg","operatingHours": { "monday": "08:00-17:00", "saturday": "Closed", "sunday": "Closed" },"description": "Daniel's Plumbing Services provides residential and commercial plumbing…","paymentMethods": ["Visa", "Mastercard", "Cash"],"reviewsTotal": 3,"averageStarRating": 5,"complaintsTotal": 0,"closedComplaintsLast3Years": 0,"closedComplaintsLast12Months": 0,"requestQuoteUrl": "https://www.bbb.org/…/quote/request-daniels-plumbing-services-87144493","leaveReviewUrl": "https://www.bbb.org/us/ny/new-york/profile/plumber/daniels-plumbing-services-0121-87144493/leave-a-review","reviews": [{"reviewId": "0121_87144493_701161","rating": 5,"author": "M. B","text": "He was fantastic. He really knew his stuff and quickly solved the problem…","date": "2026-01-26","businessResponseText": null,"businessResponseDate": null}],"scrapedAt": "2026-07-11T00:57:00.000Z"}
🗂 Key output fields
| Category | Fields |
|---|---|
| Identity | bbbId, businessId, profileUrl, name, alternateNames, logoUrl |
| Trust | bbbRating, isAccredited, accreditedSince, accreditationRevoked, accreditationText, governmentActions, localBbbName, localBbbUrl |
| Contact & lead-gen | phone, additionalPhones, email (de-obfuscated), website, additionalWebsites, socialMedia (facebook/instagram/linkedin/twitter/…) |
| People | ownerName, contacts[] — name, title, isPrincipal, isManagement |
| Location | addressLine1, addressLine2, city, stateCode, zipCode, formattedAddress, latitude, longitude, servingAreas, isHeadquarters, operatingHours |
| Business | primaryCategory, categories, businessType, isOutOfBusiness, yearsInBusiness, businessStarted, incorporated, numberOfEmployees, licenses[], description, paymentMethods |
| Reputation | reviewsTotal, averageStarRating, complaintsTotal, closedComplaintsLast3Years, closedComplaintsLast12Months |
| Action URLs | requestQuoteUrl, leaveReviewUrl, reportUrl |
| Reviews (opt-in) | reviews[] — rating, author, text, date, businessResponseText, businessResponseDate |
| Complaints (opt-in) | complaints[] — type, status, date, text, responseCount |
❓ FAQ
Do I need my own proxy? The Actor defaults to Apify Residential (US), which works out of the box. You can supply a different residential group; datacenter proxies won't get past Cloudflare.
Can I scrape a single business? Yes — paste its profile URL into startUrls. Search terms are optional.
Are reviews and complaints always complete? Reviews and complaints are collected from each business's public sub-pages and paginated up to your page caps. Businesses with very large review/complaint volumes (thousands) may return the most-recent pages rather than the entire archive; raise maxReviewPages / maxComplaintPages to go deeper.
Does it work for Canada? Yes. Set country to CAN and use a Canadian location, or paste /ca/… profile URLs.
How is it billed? Pay-per-event: one charge per business profile, plus a small per-review and per-complaint charge when those options are enabled. You only pay for what you collect.
💬 Support
Found a bug or need a field added? Open an issue on the Actor's Issues tab and we'll take a look.
🛠 Additional services
Need a custom directory or lead-generation scraper (Yelp, Yellow Pages, Google Maps, industry directories)? We build and maintain production scrapers — reach out via the Issues tab.
🔎 Explore more scrapers
Browse our other business-data and lead-generation Actors on the Apify Store.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Better Business Bureau, the International Association of Better Business Bureaus, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.
The scraper accesses only publicly available BBB business-profile pages — no authenticated endpoints, member-only features, or content behind a BBB login. Users are responsible for ensuring their use complies with BBB's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.
SEO Keywords
bbb scraper, better business bureau scraper, scrape bbb, bbb api, bbb.org scraper, apify bbb, bbb business profiles, bbb ratings scraper, bbb accreditation data, bbb reviews scraper, bbb complaints scraper, business reputation data, b2b lead generation scraper, local business leads, business directory scraper, company due diligence data, bbb rating lookup, us business data scraper, canada business directory scraper, business contact scraper, accredited business list, bbb advanced scraper alternative