BBB Business Leads Scraper
Pricing
from $1.20 / 1,000 business scrapeds
BBB Business Leads Scraper
Scrape structured business leads from bbb.org by category+location search or direct profile URLs — business name, phone, address, BBB rating, accreditation status, and years in business, ready for prospecting and reputation research.
Pricing
from $1.20 / 1,000 business scrapeds
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Share
🎯 What this scrapes
BBB (Better Business Bureau) accreditation and letter-grade ratings are a trust signal SMB lead-gen agencies, franchise HQs, insurers, and reputation-monitoring teams all want at scale, but bbb.org fronts every page with a bot-management challenge most scrapers can't clear. This Actor discovers businesses by category+location search or enriches a list of direct BBB profile URLs, returning name, contact info, BBB rating/accreditation, address, and years in business as clean, typed dataset rows.
🔥 What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- SMB lead-gen prospecting — build fresh prospect lists by category and metro, with BBB rating and accreditation baked in as a pre-qualifying trust signal.
- Franchise HQ territory audits — enumerate accredited vs. non-accredited competitors across a franchise footprint.
- Insurance and vendor vetting — check accreditation status, complaint counts, and years-in-business before onboarding a contractor or vendor.
- Reputation monitoring — enrich an existing business list with current BBB rating, review counts, and accreditation dates via direct profile URLs.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchQueries | array | no | [] | Discovery mode: list of {"category": "...", "location": "..."} objects, e.g. category="plumber", location="Austin, TX".… |
profileUrls | array | no | [] | Direct-URL enrichment mode: bbb.org/{us,ca}/.../profile/... URLs to fetch as-is. At least one of Search queries or… |
maxResultsPerQuery | integer | no | 40 | Cap on businesses discovered per Search queries item. |
maxTotalResults | integer | no | 500 | Hard cap on businesses returned across the whole run, both modes combined. |
proxyConfiguration | object | no | {'useApifyProxy': True, 'apifyProxyGroups': ['BUYPROXIES94952']} | Pinned to BUYPROXIES94952 — the only proxy group confirmed to clear bbb.org's Cloudflare wall. |
Example input
{"searchQueries": [{"category": "plumber","location": "Austin, TX"}],"profileUrls": ["https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803"],"maxResultsPerQuery": 5,"maxTotalResults": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["BUYPROXIES94952"]}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
business_name | string | webDigitalData.business_name. |
bbb_id | string | webDigitalData.bbb_id (issuing BBB office). |
business_id | string | webDigitalData.business_id. |
canonical_url | string | Resolved profile URL. |
phone | ['string', 'null'] | webDigitalData.business_phone. |
address | ['object', 'null'] | street/city/state/zip_code, all best-effort. |
bbb_rating | ['string', 'null'] | webDigitalData.business_rating (letter grade). |
accredited | boolean | webDigitalData.accredited_status == 'AB'. |
accreditation_date | ['string', 'null'] | Detail-page DOM. |
years_in_business | ['integer', 'null'] | Detail-page DOM. |
website | ['string', 'null'] | Detail-page DOM. |
category | ['string', 'null'] | Search result / breadcrumb. |
complaint_count | ['integer', 'null'] | Detail-page DOM, best-effort. |
review_count | ['integer', 'null'] | Detail-page DOM, best-effort. |
average_review_score | ['number', 'null'] | Detail-page DOM, best-effort. |
scraped_at | string | ISO-8601 UTC timestamp at fetch time. |
Example output
{"business_name": "Calixto Plumbing","bbb_id": "0825","business_id": "1000223803","canonical_url": "https://www.bbb.org/us/tx/austin/profile/plumber/calixto-plumbing-0825-1000223803","phone": "(512) 945-3143","address": {"street": "1200 Main St","city": "Austin","state": "TX","zip_code": "78753-6003"},"bbb_rating": "A+","accredited": true,"accreditation_date": "2018-03-14","years_in_business": 8,"website": "https://calixtoplumbing.com","category": "Plumber","complaint_count": 2,"review_count": 14,"average_review_score": 4.6,"scraped_at": "2026-08-12T10:00:00Z"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.20 | One-off warm-up charge per run |
business-scraped | $0.0012 | PPE event |
Example: 1 000 results at the rates above ≈ $1.40. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
Full complaint-narrative or review-text scraping is out of scope — only aggregate counts/scores are surfaced. Covers US/CA BBB directories only, no international equivalents. One-shot per run — no rating-history or alerting. No lead scoring or third-party enrichment beyond what the BBB profile page itself publishes.
❓ FAQ
Do I need a BBB account or API key?
No. This Actor scrapes bbb.org's own publicly listed business profile data — no login, no API key.
Why is the proxy group locked to BUYPROXIES94952?
bbb.org fronts every page with a Cloudflare bot-management challenge. Cloud recon (2026-08-12) confirmed BUYPROXIES94952 is the only proxy group in this account that clears it — Apify RESIDENTIAL had zero availability and Webshare residential was independently confirmed blocked for this target. The Actor hardcodes it so a run never silently falls back to a blocked path.
Can I mix category search and direct profile URLs in one run?
Yes — searchQueries (discovery) and profileUrls (direct enrichment) both run in the same call, deduped by business_id, first-seen wins.
Does this scrape review text or complaint narratives?
No. Only aggregate counts/scores (review_count, complaint_count, average_review_score) are surfaced — per-review text and complaint narratives are out of scope.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.