BBB Scraper - Business Leads, Ratings & Accreditation avatar

BBB Scraper - Business Leads, Ratings & Accreditation

Pricing

from $4.00 / 1,000 business leads

Go to Apify Store
BBB Scraper - Business Leads, Ratings & Accreditation

BBB Scraper - Business Leads, Ratings & Accreditation

Scrape Better Business Bureau businesses by category & city: name, BBB rating (A+ to F), accreditation, phone, full address, website, email, years in business, complaints, customer reviews & owner contacts. US & Canada B2B lead generation. Export JSON, CSV, Excel.

Pricing

from $4.00 / 1,000 business leads

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

BBB Scraper — Better Business Bureau Business Leads, Ratings & Accreditation

Extract complete Better Business Bureau business data at scale — the fields that make a US/Canada B2B lead actionable: business name, BBB rating (A+ to F), accreditation status, phone, full address, website, years in business, owner/principal contacts, complaints, customer reviews, licenses and service area. Optionally turn every listing into a ready-to-contact lead by crawling each business's own website for emails and social profiles, with a 0–100 lead score.

Search by category + city (Roofing Contractors in Dallas, TX), paste BBB search or profile URLs, and export structured JSON, CSV or Excel. No login, no API key — reliable extraction with automatic Cloudflare handling over US residential proxies.

Why this BBB scraper?

BBB is one of the most trusted US business directories — and a goldmine for B2B prospecting, because every profile is a real, vetted business with a rating, accreditation signal, phone and address. This actor reads BBB's full embedded business record (not just the visible card) and ships the richest BBB dataset in the category:

DataTypical scrapersThis actor
Business name, category, phone, full address
BBB rating (A+ to F) + numeric rating scorepartial
Accreditation status + accredited-since date
Real business website
Years in business + business start / incorporation date
Owner / principal contacts (names + titles)✅ opt-in
Complaint counts (3-yr & 12-mo) + customer review count & avg rating
Licenses (number + issuing agency)✅ opt-in
Service area (cities served)✅ opt-in
Contact emails + socials (from the business website)✅ opt-in
Lead score (0–100)
Monitor mode — only output new/changed businesses

Use cases

  • B2B lead generation — build targeted lists of real, vetted businesses by category and city with phone, website, owner name and (optionally) email. Score and prioritize with leadScore, filter to BBB-accredited or A+ rated prospects, then push into your CRM.
  • Sales prospecting — agencies and SaaS/insurance/financial teams that sell to local businesses can find every HVAC, Roofing, Plumbing, Auto Repair, Law Firm or Dentist in a metro — and reach the owner directly.
  • Reputation & competitor intelligence — track BBB ratings, accreditation, complaint volume and review scores across a market.
  • Vendor & supplier vetting — pull accreditation, years in business, complaints and licenses to qualify vendors at scale.
  • Data enrichment — paste a list of BBB profile URLs to enrich them with full contact and trust data.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the BBB Scraper, enter one or more search terms (categories/keywords) and locations (or paste BBB URLs), and click Start.
  3. Watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the Apify API.

Input

{
"searchTerms": ["Roofing Contractors", "Plumbers"],
"locations": ["Dallas, TX", "Austin, TX"],
"maxResults": 100,
"accreditedOnly": false,
"minRating": "any",
"includeDetails": true,
"includeReviews": true,
"enrichContacts": true,
"monitorMode": false
}
  • searchTerms — categories or keywords (Plumbers, HVAC, Lawyers) or a specific business name. Combined with every location.
  • locationsCity, ST strings (Austin, TX), ZIP/postal codes, or a state/province. Combined with every search term.
  • startUrls — direct BBB search pages (/search?find_text=…&find_loc=…) or profile pages (/us/.../profile/...). Profile URLs are always fully enriched.
  • maxResults (default 100) — total businesses across all searches. 0 = no limit.
  • maxResultsPerSearch — optional cap per term+location combination.
  • accreditedOnly — keep only BBB-accredited businesses.
  • minRating — keep only businesses at/above a BBB letter rating (A+, A, B+, …).
  • includeDetails (default false) — open each profile for website, owner contacts, years in business, complaints, reviews count, licenses, service area and the "About" overview.
  • includeReviews (default false) — add recent BBB customer reviews (requires details).
  • enrichContacts (default false) — crawl each business's own website for emails and socials. BBB rarely publishes emails — this is how you get them.
  • monitorMode (default false) — only output businesses that are new or changed (e.g. rating change) since the last run. Perfect for scheduled lead pipelines.
  • proxyConfiguration — keep the default Apify Residential (US) for the best reliability on profile pages.

Output

One record per business (type: "business"). List-only runs return the core fields; turning on details/reviews/enrichment fills the rest:

{
"type": "business",
"businessId": "1000193414",
"bbbId": "0825",
"bbbChapter": "BBB Heart of Texas",
"businessName": "Ecotech Roofing and Construction",
"category": "Roofing Contractors",
"bbbRating": "A+",
"ratingScore": 100,
"accredited": true,
"phone": "(214) 555-0188",
"address": "1200 Commerce St, Dallas, TX 75202",
"city": "Dallas",
"state": "TX",
"zip": "75202",
"country": "US",
"latitude": 32.7791,
"longitude": -96.7954,
"profileUrl": "https://www.bbb.org/us/tx/dallas/profile/roofing-contractors/ecotech-roofing-and-construction-0875-1000193414",
"website": "https://ecotechroofing.com",
"email": null,
"yearsInBusiness": 17,
"businessStarted": "2009-04-01",
"dateAccredited": "2014-03-25",
"numberOfEmployees": 24,
"description": "Full-service residential & commercial roofing contractor.",
"principalContacts": [{ "name": "Robert Burnley", "title": "Owner/Manager" }],
"licenses": [{ "number": "RCAT-12345", "agency": "Roofing Contractors Association of Texas", "expiration": "2027-01-31" }],
"serviceArea": "Dallas, TX; Plano, TX; Frisco, TX; Garland, TX",
"complaintCount": 2,
"complaintsLast3Years": 1,
"customerReviewCount": 38,
"averageStarRating": 4.7,
"leadScore": 84,
"searchTerm": "Roofing Contractors",
"searchLocation": "Dallas, TX",
"scrapedAt": "2026-06-26T12:00:00.000Z"
}

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

  • Apify API — start runs, fetch datasets, and manage schedules over REST.
  • apify-client for JavaScript and apify-client for Python — official SDKs.
  • Schedules — run it daily/weekly to keep a city + category lead list fresh. Combine with monitor mode to drip only new businesses into your pipeline.
  • Webhooks — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/bbb-scraper').call({
searchTerms: ['HVAC'],
locations: ['Phoenix, AZ'],
maxResults: 100,
includeDetails: true,
enrichContacts: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} BBB business leads`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new business leads straight into your CRM.
  • Slack — get notified when a monitored search finds new businesses.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find A+ accredited roofing contractors in Dallas with a website and owner contact" and let it run this scraper for you.

More scrapers from scrapesage

Build a complete local-business lead-gen stack:

Tips

  • Best leads first: set accreditedOnly: true and/or minRating: "A" to focus on vetted, high-trust businesses — accredited profiles also carry the richest data (website, owner, years in business, dates).
  • Go deep on a market: split by sub-category (e.g. Residential Roofing, Commercial Roofing) and by city/ZIP to exhaust a metro.
  • Emails: turn on enrichContacts — BBB itself rarely lists emails, so the actor pulls them from each business's own website.
  • Cost control: details, reviews and enrichment are all opt-in; list-only runs are fast and cheap.
  • Recurring leads: pair monitor mode + Schedules to receive only newly listed or changed businesses each day.

FAQ

How do I scrape BBB businesses for a specific city? Put the category in searchTerms (Plumbers) and the city in locations (Austin, TX). Each term is combined with each location.

Does it work without the BBB API? Yes. No API key or login needed — the actor reads BBB's public server-rendered data.

Where do the emails come from? BBB rarely publishes business emails. With enrichContacts on, the actor visits each business's own public website and extracts publicly listed contact emails — the same thing a human visitor would see.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically via the Google Drive integration.

How do I monitor new businesses automatically? Turn on monitorMode, set a monitorKey, and create a Schedule. Each run outputs only new or changed businesses.

A field is null — why? BBB holds richer data for accredited/established businesses than for unrated (NR) listings. Fields like owner contacts, years in business, hours and service area are populated when BBB has them; email is rarely published by BBB (use enrichContacts). Fields are null only when the data isn't on the page.

Is scraping BBB legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for personal data) and BBB's terms.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.