BBB Scraper - Better Business Bureau Data avatar

BBB Scraper - Better Business Bureau Data

Pricing

from $0.69 / 1,000 search results

Go to Apify Store
BBB Scraper - Better Business Bureau Data

BBB Scraper - Better Business Bureau Data

Scrape Better Business Bureau (BBB.org) business listings by keyword and location. Get BBB rating, accreditation, address, phone, categories, and — with detail mode — complaints, reviews, owner, licenses, and social media. USA and Canada. Export JSON, CSV, Excel.

Pricing

from $0.69 / 1,000 search results

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

BBB Scraper (Better Business Bureau)

Extract business listings from Better Business Bureau (BBB.org) by keyword and location. The BBB Scraper returns the BBB letter-grade rating, accreditation status, contact details, and categories for every business — and, with detail mode, the full profile: complaints, customer reviews, owner name, license numbers, social media, business start date, and employee count. Covers the United States and Canada.

Turn any BBB.org search into a structured vendor list — rating, accreditation, phone, address, and categories in search mode; complaints, reviews, licenses, owner, and social media in detail mode — ready for lead lists, vendor vetting, and risk scoring.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Actor: parsebird/bbb-scraper (Apify). Scrapes business listings from bbb.org (Better Business Bureau), USA + Canada.
Call with ApifyClient:
client.actor("parsebird/bbb-scraper").call(run_input={
"keyword": "roofing contractor", # business type / profession / company name
"location": "Dallas, TX", # city+state, state, or ZIP / postal code
"country": "USA", # USA | CAN
"sort": "Relevance", # Relevance | Rating | Distance | Name
"accreditedOnly": false, # only BBB Accredited businesses
"scrapeDetails": false, # true = open each profile for complaints/reviews/owner/licenses/social
"searchUrls": [], # optional: pre-built https://www.bbb.org/search?... URLs
"maxResults": 100,
"maxPages": 10, # BBB caps at 15 pages (~225 results) per search
"proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"}
})
Output per business: businessName, profileUrl, bbbId, bbbRating, isAccredited, accreditationSince, address, city,
state, zipCode, phone, email, website, categories[], serviceAreas[], yearsInBusiness, businessStartDate,
businessType, numberOfEmployees, ownerName, licenseNumbers[], complaintsTotal, complaintsLast3Yrs,
complaintsLast12Mo, reviewCount, averageReviewRating, socialMedia{}, governmentActions, description,
searchKeyword, searchLocation, scrapedAt. (detail fields are null unless scrapeDetails=true)
API docs: https://apify.com/parsebird/bbb-scraper/api | Token: https://console.apify.com/account/integrations

What is the BBB Scraper?

The BBB Scraper is a data-extraction tool for BBB.org, the Better Business Bureau directory of accredited and non-accredited North American businesses. BBB has no public data API, so this actor is a BBB API alternative: give it a business type and a place and it returns a clean dataset of matching businesses with their BBB rating and accreditation status.

  • Search mode (default, fast) pulls the rating, accreditation flag, phone, address, and categories for every business in the search results.
  • Detail mode opens each BBB business profile and adds complaints history, customer review stats, owner / management contact, registered license numbers, social media links, business start date, employee count, and the full street address.

What can the BBB Scraper do?

  • 🔎 Search BBB by business type, profession, or company name and by city, state, or ZIP / postal code.
  • 🇺🇸🇨🇦 Cover the United States and Canada (the country input drives BBB's find_country).
  • ⭐ Get the BBB letter grade (A+ … F, or NR) and BBB Accreditation status for every result.
  • 🔗 Feed it pre-built BBB search URLs to reuse curated queries and filters.
  • 🧾 Detail mode: complaints (all-time, last 3 years, last 12 months), review count and average rating, owner name, license numbers, social media, government actions, and the "About this business" description.
  • ✅ Filter to BBB Accredited only, and sort by relevance, rating, distance, or name.
  • ⏱️ Run on a schedule, call it by API, and export to JSON, CSV, Excel, HTML, or XML.

What data can you extract from BBB.org?

FieldDescription
businessNameCompany / DBA name as displayed by BBB
profileUrlCanonical BBB profile URL
bbbIdBBB's stable business identifier
bbbRatingLetter grade — A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F, or NR
isAccreditedtrue if "BBB Accredited Business since…", false if "Not BBB Accredited", null if undetermined
accreditationSinceAccreditation start date (detail mode)
address / city / state / zipCodeBusiness address as reported to BBB
phone / email / websiteContact details (obfuscated emails are decoded) (email/website: detail mode)
categoriesBBB business categories
serviceAreasCities / regions the business reports serving (detail mode)
yearsInBusiness / businessStartDateTime in operation (detail mode)
businessTypeLegal structure — LLC, Corporation, Inc, Sole Proprietorship, Partnership, LP, LLP (detail mode)
numberOfEmployeesEmployee count as printed on BBB (detail mode)
ownerNameOwner / principal / management contact (detail mode)
licenseNumbersLicense numbers registered with BBB (detail mode)
complaintsTotal / complaintsLast3Yrs / complaintsLast12MoBBB complaints closed (detail mode)
reviewCount / averageReviewRatingCustomer review count and 1–5 average (detail mode)
socialMedia{ facebook, linkedin, twitter, instagram } — the business's own accounts (detail mode)
governmentActionsSummary of government / regulatory actions on the profile (detail mode)
description"About this business" narrative (detail mode)
searchKeyword / searchLocation / scrapedAtProvenance

How to scrape BBB.org

  1. Open the BBB Scraper and go to the Input tab.
  2. Enter a Keyword (e.g. plumber, HVAC, home builder) and a Location (Dallas, TX, California, 90210, Toronto, ON).
  3. Choose Country (USA or CAN) and a Sort order.
  4. (Optional) Turn on BBB Accredited only.
  5. (Optional) Turn on Scrape details to enrich every result with complaints, reviews, owner, licenses, and social media. Detail mode needs the run to have 2 GB memory and a proxy.
  6. Set Max results and Max pages (BBB returns at most ~225 businesses per search).
  7. Click Start and download the results as JSON, CSV, or Excel from the Output tab.

Using pre-built search URLs

Run a search on bbb.org, copy the https://www.bbb.org/search?... URL, and paste it into Search URLs. Each URL is walked page by page; keyword, location, country, and sort are taken from the URL.

BBB Rating Reference

BBB issues one letter-grade rating per business on a 13-point scale plus a "not rated" bucket. The grade is computed from complaint history, transparency of the business, time in operation, government action, advertising practices, and licensing. Accreditation and rating are independent — a business can be A+ and not accredited (never applied), or B- and accredited (passed the standards review despite mixed complaints). Score risk with both bbbRating and isAccredited.

Investment-grade (low risk, default vendor whitelist)

RatingMeaning
A+Top score — clean complaint history, transparent, tenured
AExcellent — minor blemishes, all resolved
A-Very good — a small number of unresolved items

Sub-investment (still operating, vet manually)

RatingMeaning
B+ / B / B-Above average — review complaint themes before engagement
C+ / C / C-Average — a pattern of complaints or limited transparency
D+ / D / D-Poor — recurring unresolved complaints, government action, or short history

Distressed (high risk, recommend exclude)

RatingMeaning
FWorst rating — unresolved complaints, fraud allegations, or refusal to engage with BBB
NRNot Rated — insufficient information or business too new

How much does it cost to scrape BBB.org?

This actor uses pay-per-event pricing with two events:

EventWhat it isFreeBronzeSilverGold
Search resultone business from search mode$0.99 / 1,000$0.89$0.79$0.69
Business detailone fully enriched profile (detail mode)$3.99 / 1,000$3.49$2.99$2.49

A 500-business search-mode run costs about $0.50 on the Free plan. Enriching those 500 profiles costs about $2.00. Apify's free monthly usage credits cover thousands of records.

Input

{
"keyword": "roofing contractor",
"location": "Dallas, TX",
"country": "USA",
"sort": "Relevance",
"accreditedOnly": false,
"scrapeDetails": false,
"maxResults": 100,
"maxPages": 10,
"proxyConfiguration": { "useApifyProxy": false }
}

Output example

Search-only record (scrapeDetails: false):

{
"businessName": "Skyline Roofing & Solar",
"profileUrl": "https://www.bbb.org/us/tx/dallas/profile/roofing-contractors/skyline-roofing-solar-0875-90719612",
"bbbId": "90719612",
"bbbRating": "A+",
"isAccredited": true,
"accreditationSince": null,
"address": null,
"city": "Dallas",
"state": "TX",
"zipCode": "75254",
"phone": "+1 214 555 0142",
"email": null,
"website": null,
"categories": ["Roofing Contractors", "Solar Energy Contractors"],
"serviceAreas": null,
"searchKeyword": "roofing contractor",
"searchLocation": "Dallas, TX",
"scrapedAt": "2026-05-16T14:22:11.401Z"
}

Fully enriched record (scrapeDetails: true):

{
"businessName": "Northstar HVAC Services LLC",
"profileUrl": "https://www.bbb.org/us/az/phoenix/profile/heating-and-air-conditioning/northstar-hvac-services-1126-99999001",
"bbbId": "99999001",
"bbbRating": "A",
"isAccredited": true,
"accreditationSince": "3/14/2014",
"address": "2400 W Camelback Rd Ste 210",
"city": "Phoenix",
"state": "AZ",
"zipCode": "85015",
"phone": "+1 602 555 0188",
"email": "service@northstar-hvac.example",
"website": "https://northstar-hvac.example",
"categories": ["Heating and Air Conditioning", "Air Duct Cleaning", "Furnace Repair"],
"serviceAreas": ["Phoenix, AZ", "Scottsdale, AZ", "Tempe, AZ", "Mesa, AZ"],
"yearsInBusiness": 17,
"businessStartDate": "1/1/2008",
"businessType": "LLC",
"numberOfEmployees": "25",
"ownerName": "Ms. Maria S. Alvarez",
"licenseNumbers": ["ROC 99999", "ROC 99998"],
"complaintsTotal": 12,
"complaintsLast3Yrs": 7,
"complaintsLast12Mo": 2,
"reviewCount": 184,
"averageReviewRating": 4.6,
"socialMedia": {
"facebook": "https://www.facebook.com/northstarhvacaz",
"linkedin": "https://www.linkedin.com/company/northstar-hvac",
"instagram": "https://www.instagram.com/northstar.hvac/"
},
"governmentActions": null,
"description": "Full-service residential and commercial HVAC contractor serving the Phoenix metro since 2008.",
"searchKeyword": "HVAC",
"searchLocation": "Phoenix, AZ",
"scrapedAt": "2026-05-16T14:25:48.117Z"
}

Use cases

  • 🧰 Vendor & supplier vetting — pull a rated shortlist of contractors before you engage.
  • 📇 Lead generation — build local B2B lists filtered to a minimum BBB grade or accreditation.
  • 🛡️ Risk & compliance — flag vendors with F ratings, government actions, or spikes in recent complaints.
  • 📊 Market research — measure accreditation rates and complaint volume by industry and metro.
  • 🏗️ Sales prospecting — target accredited businesses in a category and city with owner names and phones.

How it works

  1. In search mode the actor queries BBB's public search endpoint and reads the businesses page by page (BBB serves up to 15 pages of 15).
  2. Each result is mapped to the output schema with rating, accreditation, address, phone, and categories.
  3. In detail mode a stealth browser opens each BBB profile (BBB profiles sit behind Cloudflare), and the structured profile state is parsed for complaints, reviews, owner, licenses, social media, and firmographics.
  4. Rows are pushed to the dataset. You are charged one search-result event per row, or one business-detail event per enriched row.

FAQ

Does it cover Canada? Yes. Set country to CAN and use a Canadian location like Toronto, ON or a postal code.

Why does BBB only return ~225 results per search? BBB's search is capped at 15 pages of 15. For larger jobs, narrow the keyword or location, or supply several searchUrls covering different areas.

What's the difference between accreditation and rating? They are independent. isAccredited means the business applied and met BBB's accreditation standards; bbbRating is the letter grade computed from complaint history and other factors. See the BBB Rating Reference above.

Why are email, website, and complaint counts null in my results? Those come from the business profile page. Turn on Scrape details to collect them. In search mode only the fields BBB exposes in search results are filled.

Do I need a proxy? Search mode works without one. Detail mode opens Cloudflare-protected profile pages, so a proxy (Residential, US) is required and pre-selected.

How current is the data? It is scraped live from BBB.org on each run. Use Apify scheduling to keep a dataset fresh.

Something looks wrong or missing. Open the Issues tab on the actor page with an example input and we will take a look.

API usage examples

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("parsebird/bbb-scraper").call(run_input={
"keyword": "electrician",
"location": "Austin, TX",
"country": "USA",
"accreditedOnly": True,
"maxResults": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["businessName"], item["bbbRating"], item["phone"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('parsebird/bbb-scraper').call({
keyword: 'HVAC',
location: 'Phoenix, AZ',
country: 'USA',
scrapeDetails: true,
maxResults: 50,
proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'], apifyProxyCountry: 'US' },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((it) => console.log(it.businessName, it.bbbRating, it.complaintsTotal));

This actor collects information that BBB.org publishes publicly and does not log in or bypass access controls beyond rendering a page as an ordinary browser would. Ratings, complaint counts, and reviews are BBB's own published data; business names, owner names, and contact details may be personal data, and if you store or process them you must comply with the GDPR, CCPA, and other applicable law. You use this actor at your own responsibility. It is not affiliated with, endorsed by, or connected to the Better Business Bureau or the International Association of Better Business Bureaus.