BBB Scraper — Ratings, Reviews, Complaints & Business Leads
Pricing
from $5.00 / 1,000 businesses
BBB Scraper — Ratings, Reviews, Complaints & Business Leads
Scrape BBB.org business listings for any keyword and US or Canada location: name, phone, address, website, BBB rating, accreditation status, years in business, review and complaint counts. Build local B2B lead lists.
Pricing
from $5.00 / 1,000 businesses
Rating
0.0
(0)
Developer
Trevor Ortega
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
BBB Scraper
Scrape BBB.org (Better Business Bureau) business listings for any keyword and US or Canada location: name, phone, address, website, BBB rating, accreditation status, years in business, review and complaint counts. Build local B2B lead lists.
Search BBB the way you would on the website (e.g. "plumber" in "Chicago, IL"), or paste BBB search, category or business profile URLs. Get a clean dataset you can download as JSON, CSV or Excel, or pull through the API into your CRM, Google Sheets or an LLM pipeline. Optionally open each profile for full details and collect customer reviews. You pay only for the results you get.
What data does BBB Scraper extract?
From the search results (every business):
| Field | Description |
|---|---|
id | BBB business id (<bbbId>-<businessId>, e.g. 0654-90028307) |
name | Business name |
url | BBB business profile URL |
localProfileUrl | Profile URL of the local branch, when the card is a branch of a multi-location business |
phone, phones | Main business phone and all phones on the card |
address | {street, city, state, postalCode, country}; addressText is the one-line form |
latitude, longitude | Coordinates of the listed location |
primaryCategory, categories | BBB categories (type of business) |
bbbRating | BBB letter grade: A+ ... F, or NR (not rated) |
bbbRatingScore | BBB's numeric rating score (0-100) |
isAccredited | BBB Accredited Business |
isOutOfBusiness | BBB marks the business as out of business |
serviceAreas | Service area summary (cities or ZIP codes) |
logoUrl, localBbb, requestQuoteUrl | Logo, the local BBB that manages the file, BBB quote-request link |
isSponsored, isAd | Always false: BBB search has no paid placements inside the results |
rank, searchTerm, searchLocation | Position in the results and the search that found it |
scrapedAt | Timestamp (UTC) |
With Open each business profile (includeDetails), each business also gets:
| Field | Description |
|---|---|
website, additionalWebsites, socialMedia | Website, other websites, Facebook / Instagram / LinkedIn / YouTube / ... |
phones, faxNumbers, email | All business phone numbers, fax numbers, business email when BBB publishes one |
contacts | Contact persons the profile publishes, as BBB prints them: [{name, title, firstName, lastName, isPrincipal, isManagement, isCustomerContact}], e.g. "Mr. Benjamin Vance", "Owner". The flags say whether BBB lists the person under Principal Contacts, Business Management and/or Customer Contacts. [] when BBB lists nobody |
principalContact | The main principal as one string, "Mr. Benjamin Vance, Owner" (BBB's primary principal first); null when none |
address, latitude, longitude, headquartersAddress | Full profile address (for branch cards the branch address is kept and the head-office address is in headquartersAddress) |
hours | Opening hours by weekday ("Monday": "09:00-17:00", "Closed", "Open 24 Hours") |
accreditedSince, accreditationRevoked | Accreditation date (ISO) |
businessStarted, incorporated, bbbFileOpened, newOwnershipDate | Key dates (ISO) |
yearsInBusiness, typeOfEntity, numberOfEmployees | e.g. 7, "Corporation", 12 |
categories, serviceAreas, serviceAreaDescription | Full category list and service area |
licenses, licensingInfo | License numbers, expiry dates and agencies; BBB licensing text |
ratingReasons, notRatedReason | Why BBB gave this rating / why it is not rated |
complaintCount, complaintsClosedLast3Years, complaintsClosedLast12Months | Complaint totals |
reviewRating, reviewCount | Customer review star average (1-5) and number of reviews |
alternateNames, description, productsAndServices, paymentMethods, isClaimed, isHeadquarters, alerts | More profile info |
With Include customer reviews (includeReviews), reviews are saved as separate items with type: "review":
| Field | Description |
|---|---|
businessId, businessName, businessUrl | The reviewed business |
reviewId | BBB review id |
reviewerName | Reviewer's display name as BBB shows it above the review (usually first name and last initial, e.g. "Leanna T"); null if none is shown |
rating | Stars (1-5) |
text, date | Review text and date (YYYY-MM-DD) |
businessResponse, businessResponseDate | The business's reply, if any |
customerFollowUp, customerFollowUpDate | The customer's follow-up comment, if any |
Names of people are collected only where BBB shows them publicly: the contact persons on a business profile (with Open each business profile) and reviewer display names on reviews. No photos or avatars, and no personal email addresses or phone numbers beyond the business contact details BBB publishes.
How to scrape BBB business listings
- Enter Search terms (e.g.
plumber,roofing contractor,dentist) and Locations (Chicago, IL,Toronto, ON, a ZIP code). Every term is combined with every location. - Or paste BBB Start URLs: search pages, category pages (
https://www.bbb.org/us/il/chicago/category/plumber) or business profiles. - Optionally turn on BBB Accredited businesses only, Open each business profile and Include customer reviews.
- Set Max businesses and click Start. Results appear in the Dataset tab.
Input example
{"searchTerms": ["plumber", "roofing contractor"],"locations": ["Chicago, IL", "Austin, TX"],"maxItems": 200,"maxPagesPerSearch": 10,"accreditedOnly": false,"includeDetails": true,"includeReviews": false,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }}
Output example
{"type": "business","id": "0654-90028307","name": "Rescue Plumbing, Inc.","url": "https://www.bbb.org/us/il/chicago/profile/plumber/rescue-plumbing-inc-0654-90028307","phone": "(773) 799-8848","website": "https://www.myrescueplumbing.com/","address": { "street": "1137 W Webster Ave Unit B", "city": "Chicago", "state": "IL", "postalCode": "60614-9251", "country": "US" },"categories": ["Plumber", "Plumbing Renovation", "Sewer Cleaning", "Sewer Contractors"],"bbbRating": "A+","isAccredited": true,"accreditedSince": "2019-09-16","yearsInBusiness": 7,"businessStarted": "2018-12-15","typeOfEntity": "Corporation","contacts": [{ "name": "Mr. Benjamin Vance", "title": "Owner", "firstName": "Benjamin", "lastName": "Vance", "isPrincipal": true, "isManagement": true, "isCustomerContact": true }],"principalContact": "Mr. Benjamin Vance, Owner","hours": { "Monday": "Open 24 Hours", "Tuesday": "Open 24 Hours" },"reviewRating": 1,"reviewCount": 2,"complaintCount": 0,"complaintsClosedLast12Months": 0,"rank": 3,"searchTerm": "plumber","searchLocation": "Chicago, IL","detailsScraped": true,"scrapedAt": "2026-10-05T17:45:00Z"}
A review item:
{"type": "review","businessId": "0292-1922","businessName": "Roto-Rooter Plumbing & Water Cleanup","reviewId": "0292_1922_163307","reviewerName": "Leanna T","rating": 1,"text": "We had a toilet issue that our local RotoRooter successfully fixed. ...","date": "2026-10-02","businessResponse": "Thank you for sharing your feedback. ...","businessResponseDate": "2026-10-04"}
How much does it cost to scrape BBB?
Pay per event, no monthly fee and no start fee:
- $0.005 per business from the search results (
result) - +$0.008 per business profile opened with "Open each business profile" (
detail); business profile start URLs always include details - $0.006 per review (
review)
1,000 businesses with basic data cost $5; with full profile details $13. Apify platform usage (compute, proxy) is billed separately by Apify.
How many results can I get per search?
BBB shows 15 businesses per page and at most 15 pages (225 businesses) for one search, even when it reports thousands of matches. To get more, split the area into several cities or ZIP codes, add related search terms, or use different sort orders. Duplicates (multi-location businesses appear several times) are removed automatically and not charged.
How to scrape BBB reviews and complaints
Turn on Include customer reviews and set Max reviews per business (newest first, 10 per request). Complaint totals (all, closed in the last 3 years, closed in the last 12 months) come with Open each business profile. The texts of individual complaints are not scraped.
Does BBB block scrapers?
BBB.org is behind Cloudflare. In our tests plain requests went through without challenges, but the actor detects challenge pages and retries them on a fresh proxy IP. For larger runs keep the default residential proxy.
Integrations and API
Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the API tab for ready-made snippets.
Is it legal to scrape BBB?
This actor collects only information BBB.org shows publicly to logged-out visitors: business names, business phone numbers, addresses, websites, ratings and review texts, the names and job titles of the contact persons a business profile lists (owners, principals, managers, customer contacts), and reviewers' display names as printed on the reviews (usually first name and last initial). It does not log in and does not collect photos, avatars or anything BBB hides or masks. Contact-person and reviewer names are personal data under GDPR and similar laws: make sure you have a lawful basis for processing them, and use them for business outreach only in line with applicable law. You are responsible for how you use the data and for complying with BBB's terms and applicable law (e.g. GDPR, CAN-SPAM, TCPA for outreach).
See also
See also: Yellow Pages Scraper for more US business leads with hours, email and categories.
Support
Found a bug or need a field added? Open an issue in the Issues tab; it is usually answered within a day.