BBB Business Directory Scraper (US & Canada)
Pricing
from $7.00 / 1,000 results
BBB Business Directory Scraper (US & Canada)
Scrape BBB.org in real time: business names, phones, websites, emails, addresses, accreditation, ratings, complaints and reviews across the US and Canada. Search by keyword and location, enrich full profiles, or paste URLs — streaming dataset, webhooks, pay per result, MCP-ready.
Pricing
from $7.00 / 1,000 results
Rating
0.0
(0)
Developer
Emmanuel
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
BBB Real Time Data
Turn the Better Business Bureau directory into clean, real-time business intelligence. Search any US or Canadian market by keyword and location, and get structured JSON with name, phone, website, email, address, BBB accreditation status, BBB letter rating, complaint counts, review counts and average star rating — streamed to your dataset as it is collected.
Built for agencies, local-SEO teams, B2B sales researchers, due-diligence analysts, and outreach/CRM pipelines that need trustworthy business records without manual lookups.
Free-tier notice: on a free Apify plan this Actor returns a 2-result sample per run so you can test it instantly. Upgrade to a paid Apify plan for full, uncapped exports.
What you can do with it
- Local SEO & agency prospecting — pull every plumber, roofer, or dentist in a city and rank them by BBB rating, accreditation, and complaint volume.
- B2B lead lists — enrich outreach with verified phone, website, email, and full mailing address.
- Due diligence & vendor screening — check accreditation status, complaint history, and time in business before you sign or buy.
- Trust-signal monitoring — watch complaint counts and star ratings for your own brand or a competitor set over time.
- Market research — size a trade in a region, compare accredited vs. non-accredited, and map category coverage.
- CRM & workflow automation — stream every record to Slack, Zapier, Make, or n8n the moment it is saved.
Features (checkbox matrix)
| Checkbox | Default | What it gives you |
|---|---|---|
| Business Search | ✅ on | Keyword + location search. One row per business: name, phone, address, category, BBB rating, accreditation, and profile URL. |
| — Enrich with full business profile | off | Keeps the same search row (detailsFetched: true) and adds website, email, accreditation date, years in business, complaint counts, review counts, and average star rating. Adds a little extra time per business. |
| — Find emails on business websites | on | When a full profile is fetched, also reads the business's website (homepage + contact page) for published email addresses and merges them into the same row. |
| — BBB Accredited businesses only | off | Optional lead filter: save only accredited businesses. |
| Business Details | off | Full profile for specific business profile URLs. |
| Reviews & Complaints | off | Reputation summary + capped list of latest reviews for the profile URLs. |
| Scrape By URL | off | Paste any BBB search, category, or business-profile URL. Auto-detects the page type. |
Every discovered business is always saved — enrichment adds fields to the same row, it never drops or duplicates records.
Input reference
🌍 Market
| Field | Type | Default | Notes |
|---|---|---|---|
region | select | US | US or CA. Sets the directory region and the recommended connection country. |
🔍 Business Search
| Field | Type | Default | Notes |
|---|---|---|---|
enableBusinessSearch | boolean | true | Primary discovery feature. |
searchTasks | array of objects | demo task | Each row: keyword + location (+ optional maxResults). |
searchTasks[].keyword | string | — | Business type, trade, or name, e.g. "plumbers", "roofing contractors", "auto repair". |
searchTasks[].location | string | — | City + state/province or postal code, e.g. "New York, NY", "90210", "Toronto, ON". |
searchTasks[].maxResults | integer | inherits | Max businesses for that task. |
searchMaxResults | integer | 10 | Default max businesses per task (1–200). |
searchSort | select | relevance | relevance, distance, rating, a_to_z, z_to_a. |
searchAccreditedOnly | boolean | false | Save only BBB Accredited businesses. |
searchFetchFullDetails | boolean | false | Enrich each search row in place. |
discoverWebsiteEmails | boolean | true | Look for email addresses on each business's website when a full profile is fetched. |
Example:
{"enableBusinessSearch": true,"searchTasks": [{ "keyword": "plumbers", "location": "New York, NY", "maxResults": 10 },{ "keyword": "roofing contractors", "location": "Los Angeles, CA", "maxResults": 10 }],"searchSort": "rating","searchFetchFullDetails": true}
🏢 Business Details
| Field | Type | Default | Notes |
|---|---|---|---|
enableBusinessDetails | boolean | false | Full profile per URL. |
profileUrls | string array | demo URL | BBB business profile URLs (shared with Reviews & Complaints). |
⭐ Reviews & Complaints
| Field | Type | Default | Notes |
|---|---|---|---|
enableReviewsComplaints | boolean | false | Reputation summary + latest reviews. |
reviewsMaxItems | integer | 10 | Max latest reviews per business (1–200). |
🔗 Scrape By URL
| Field | Type | Default | Notes |
|---|---|---|---|
enableScrapeByUrl | boolean | false | Auto-detects search/category vs. business profile URLs. |
scrapeUrls | string array | demo URL | Any BBB URL. |
🔔 Delivery
| Field | Type | Default | Notes |
|---|---|---|---|
webhookUrl | string | "" | Optional additional real-time POST per record. |
webhookFormat | select | json | json = full record; slack = Slack message payload. |
🌐 Connection
| Field | Type | Default | Notes |
|---|---|---|---|
proxyConfiguration | proxy | Residential, US | Residential connections give the most reliable results. Match the country to region. |
Output field reference
One dataset row per business. Filter by featureType (business_search, business_details, reviews_complaints, scrape_by_url).
Identity & contact: businessId, bbbId, bbbName, name, alternateNames, phone, phoneNumbers, website, websites, email, emails (directory addresses plus addresses found on the business website), socials.
Location: street, addressLine2, city, state, postalCode, country, formattedAddress, latitude, longitude.
Categorization: category, categories, tobId.
Trust signals: rating (e.g. A+), accredited, accreditationStatus, accreditedSince, yearsInBusiness, outOfBusiness.
Reputation: reviewsTotal, averageRating, complaintsTotal, complaintsClosedPast3Years, complaintsClosedPast12Months, latestReviews[].
Profile detail: description, typeOfEntity, bbbFileOpened, businessStart, incorporated, managementContacts, logoUrl.
Provenance: featureType, scrapedAt, url, source, searchKeyword, searchLocation, searchTaskLabel, position, detailsFetched.
Webhooks (real-time alerts)
Set webhookUrl to also POST every saved record. The dataset write always happens first; the webhook is an additional push and its failures never stop the run.
webhookFormat: "json"— the full record object.webhookFormat: "slack"— a Slack-ready{ "text": ... }message with rating, accreditation, phone, address, website, reviews, and complaints.
Works with Slack, Discord, Zapier, Make, n8n, or your own service.
Use it from AI agents (Apify MCP)
This Actor exposes a structured dataset, so AI agents can call it through the Apify MCP server and reason over the results.
Example question to your agent:
"Use BBB Real Time Data to find the highest-rated accredited plumbers in New York, NY and list their phone, website, and complaint counts."
The agent runs the Actor, waits for the dataset, and answers from the structured rows.
FAQ
Do I need a proxy? Residential connections are recommended and enabled by default. They keep results reliable across regions; match the connection country to your region.
What does the free tier include? A 2-result sample per run on a free Apify plan, with a clear notice. Paid plans are uncapped.
How fresh is the data? Every record is collected live during your run and streamed to the dataset as it is gathered — there is no cached snapshot.
How are results billed? Pay-per-event: one charge per saved result (event name result).
Does enrichment change my row count? No. "Enrich with full business profile" adds fields to the same search row (detailsFetched: true). One business is always one row.
Can I get reviews and complaints? Yes — enable Reviews & Complaints for the aggregate complaint counts, complaint history windows, review totals, average star rating, and the latest reviews.
US and Canada? Yes. UK is not part of the BBB directory.