BBB Business Scraper — Ratings, Accreditation & Contacts
Pricing
from $20.00 / 1,000 bbb profile scrapeds
BBB Business Scraper — Ratings, Accreditation & Contacts
Scrape BBB business profiles by keyword and city or profile URL: BBB rating, accreditation, phone, website, address and management contacts. USD 0.025 each.
Pricing
from $20.00 / 1,000 bbb profile scrapeds
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
2
Monthly active users
16 hours ago
Last modified
Categories
Security
Limited permissionsShare
BBB Business Scraper extracts public BBB.org business profiles, found by keyword and location or supplied as profile URLs, and returns each business's BBB rating, accreditation status, phone, website, address, years in business, management contacts and listed categories. It is built for lead generation, vendor vetting and reputation research in the US and Canada, and it costs USD 0.025 per profile on the FREE tier (USD 25 per 1,000 profiles, USD 20 per 1,000 on GOLD).
What does the BBB business scraper return?
Each dataset row is one BBB business profile:
| Field | What it contains |
|---|---|
business_name | Business name from the profile |
bbb_rating | BBB letter grade as shown, for example A+ |
is_accredited | true for BBB Accredited Businesses, false when the profile says it is not accredited |
phone, email, website | Contact details shown on the profile (email only when a mailto link exists) |
address, country | Street address and US or CA |
years_in_business, business_started, bbb_file_opened | Time-in-business details |
entity_type, local_bbb | For example Corporation and the local BBB office |
categories | BBB business categories followed by the listed products and services |
management_contacts | Names and titles listed under business management |
additional_websites | Other links on the profile, such as social pages |
payment_methods, hours, description | Extra profile details when present |
review_count, complaint_count | Customer reviews and complaints BBB counts on the profile (BBB profiles cover a three-year reporting period); 0 when there are none |
review_rating | Average customer review star rating when BBB displays one; null otherwise |
reviews, complaints | Arrays filled only with includeReviews or includeComplaints |
profile_url, source_url, scraped_at | Profile link, the page that led to it and collection time |
The run also saves OUTPUT with status, stop reason, records saved and charged, search pages visited, profile URLs discovered and failed requests.
How do I search BBB businesses by category and city?
Set searchQuery and location. In Apify Console, also clear the prefilled profile URL in startUrls, or that profile is scraped and charged too. API calls that send only searchQuery and location run the search alone.
| Input | Example | Notes |
|---|---|---|
searchQuery | roofing contractor | Category, company name, keyword, phone, website or email |
location | Austin, TX | City, state, ZIP or postal code |
country | US | US or CA |
startUrls | BBB profile or search URLs | Profiles are parsed directly; search URLs are paged |
maxResults | 10 | 1 to 1,000 profiles per run (default 10) |
maxPagesPerSearch | 3 | 1 to 25 result pages per search |
includeReviews | false | Add visible review snippets |
includeComplaints | false | Visit the complaints tab for complaint summaries |
{"searchQuery": "roofing contractor","location": "Austin, TX","country": "US","startUrls": [],"maxResults": 50,"maxPagesPerSearch": 5}
Can I check BBB ratings and accreditation for a list of companies?
Yes. Put each company's BBB profile URL in startUrls and set maxResults to the list length. Each profile becomes one row with bbb_rating, is_accredited, phone and website. This is the fastest path.
{"startUrls": [{ "url": "https://www.bbb.org/us/az/phoenix/profile/plumber/quail-plumbing-inc-1126-26001867" },{ "url": "https://www.bbb.org/us/az/phoenix/profile/plumber/pruitts-plumbing-1126-29002758" }],"maxResults": 2}
Does it return BBB reviews and complaints?
Every row carries the counts: review_count and complaint_count come from the summary BBB publishes on the profile, and review_rating is the average star rating when BBB displays one. For the text, includeReviews adds visible review snippets from the profile, and includeComplaints opens the profile's complaints tab and returns complaint summaries; both return empty arrays when nothing public is shown.
When should I use it, and when not?
Use it when you need BBB rating and accreditation at scale: vetting a vendor list, enriching local leads with a trust signal, or building a list of accredited businesses in one category and city.
Use another Actor when:
- You need Google ratings, phones and hours for local businesses: Google Maps Scraper.
- You need Arizona contractor license status: AZ ROC Contractor License Scraper.
- You need car dealership leads: Auto Dealer Leads Scraper.
- You need Yellow Pages business listings: Yellow Pages Scraper USA.
How do I run it from code?
JavaScript with apify-client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/bbb-business-scraper').call({startUrls: [{ url: 'https://www.bbb.org/us/az/phoenix/profile/plumber/quail-plumbing-inc-1126-26001867' }],maxResults: 1,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) console.log(item.business_name, item.bbb_rating, item.is_accredited);
Python with apify-client:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("muhammadafzal/bbb-business-scraper").call(run_input={"searchQuery": "plumber","location": "Denver, CO","startUrls": [],"maxResults": 25,})for item in client.dataset(run.default_dataset_id).iterate_items():print(item["business_name"], item["bbb_rating"], item["phone"])
Use it from an AI assistant
BBB Business Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add the single-tool URL https://mcp.apify.com/?tools=muhammadafzal/bbb-business-scraper to your client and ask, for example: "Get the BBB rating, accreditation status and phone number for these three BBB profile URLs." Each profile is charged, so include a result limit.
What does the output look like?
A record from a 2026-10-27 cloud run of a keyword search (moving company in Phoenix, AZ; shortened, categories cut to the first six, management contacts omitted):
{"business_name": "Thomas Logistics LLC","profile_url": "https://www.bbb.org/us/az/phoenix/profile/moving-assistance/thomas-logistics-llc-1126-1000023337","source_url": "https://www.bbb.org/search?find_country=USA&find_loc=Phoenix%2C%20AZ&find_text=moving%20company&page=1","country": "US","address": "1717 W Northern Ave, Phoenix, AZ, 85021-5469","phone": "(602) 472-0336","email": null,"website": "https://www.thomaslogisticsllc.com","categories": ["Moving Assistance","Moving Companies","Garbage Removal","Moving Services","Piano Movers","Junk Removal"],"description": "This business offers moving assistance services, specializing in packing, loading and unpacking.","bbb_rating": "A+","is_accredited": true,"years_in_business": 15,"bbb_file_opened": "7/9/2012","business_started": "2/15/2011","entity_type": "Limited Liability Company (LLC)","local_bbb": "BBB, Mountain West & Pacific Southwest","review_rating": 5,"review_count": 9,"complaint_count": 0,"payment_methods": [],"scraped_at": "2026-10-27T08:12:25.584Z"}
How much does BBB data cost?
The Actor uses pay-per-event pricing, and platform usage is included in the event prices.
| Event | FREE | BRONZE | SILVER | GOLD | PLATINUM / DIAMOND |
|---|---|---|---|---|---|
| BBB profile scraped (one dataset row) | USD 0.025 | USD 0.025 | USD 0.025 | USD 0.02 | USD 0.02 |
| Actor start (per started GB of allocated memory) | USD 0.005 | USD 0.005 | USD 0.005 | USD 0.005 | USD 0.005 |
The default memory is 256 MB, so a run pays one start event. Worked totals on the FREE tier:
- 1 profile: USD 0.025 + USD 0.005 = USD 0.030
- 50 profiles: 50 × USD 0.025 + USD 0.005 = USD 1.255
The status message at the start of a run estimates the maximum charge with your account's live per-profile price. Each profile is saved before it is charged, and when your maximum cost per run is reached, the Actor stops after the current profile.
Limits and reliability
- Speed: a 10-profile keyword search took about 5 seconds in a 2026-11-05 cloud run, and one profile URL about 5 seconds. Pages are read as plain HTML, with no browser.
- One row per business: when a search lists several location pages of the same business, only the first is saved and charged.
- Errors: a page that returns a bot challenge or a connection error is retried up to four times with increasing pauses, each on a new session and IP. If every request fails and no profile is saved, the run ends as failed instead of reporting an empty success. A profile that BBB has removed (HTTP 404) is skipped and not charged.
FAQ
What does bbb_rating contain?
BBB's letter grade from A+ to F, copied as shown on the profile. The Actor does not compute or adjust it.
Is this an official BBB API?
No. It reads public BBB.org pages and gives you the data through the Apify API, with JSON, CSV and Excel exports. It is not affiliated with BBB.
Can I scrape Canadian BBB profiles?
Yes. Set country to CA for keyword searches, or pass /ca/ profile URLs in startUrls.
Does it include non-accredited businesses?
Yes. is_accredited is false when the profile states the business is not BBB accredited, and null when the page does not say.
Why is a field null?
The profile did not show it. For example, review_rating is null when BBB displays no average star rating, and email is null when the profile has no public mailto link.
How many profiles can one run return?
Up to 1,000 (maxResults). maxPagesPerSearch bounds how many search result pages are read for each query and location.
Related Actors
- AZ ROC Contractor License Scraper: Arizona contractor license status and phones
- Auto Dealer Leads Scraper: car dealership list with websites and emails
- Agency Review Analysis: client pain points from agency reviews you supply
- BidNet Direct Scraper: public government bids and RFPs
- Google Maps Scraper: local business leads with Google ratings
Legal and compliance
The Actor reads public BBB.org profile pages without logging in or bypassing access controls. Management names, phones and emails can be personal data: use them lawfully and follow CAN-SPAM, GDPR, TCPA and anti-spam rules for outreach. Respect BBB's terms of use, and confirm ratings on BBB.org before publishing them. This tool is not affiliated with the Better Business Bureau, and this is not legal advice.
Last verified: 2026-11-05