BBB Scraper — Ratings, Accreditation & Contacts avatar

BBB Scraper — Ratings, Accreditation & Contacts

Pricing

from $4.00 / 1,000 business founds

Go to Apify Store
BBB Scraper — Ratings, Accreditation & Contacts

BBB Scraper — Ratings, Accreditation & Contacts

Scrape Better Business Bureau (bbb.org) businesses by keyword + location or profile URL. Returns BBB rating, accreditation, phone, website, address & contacts. MCP/API-ready.

Pricing

from $4.00 / 1,000 business founds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

a month ago

Last modified

Share

What is BBB Scraper — Ratings, Accreditation & Contacts?

BBB Scraper extracts Better Business Bureau (bbb.org) business profiles into a dataset, one row per business, from a keyword plus location search or from profile URLs. Each row returns the BBB letter rating, accreditation status and date, years in business, entity type, categories, phone, website, full address with coordinates, opening hours, complaint counts and listed management contacts. Lead-generation teams, vendor due-diligence analysts, reputation researchers and AI agents use it to build trusted lists of US and Canadian local businesses.

Why teams use this BBB scraper

  • Trust signals in one row. bbbRating, isAccredited, dateAccredited and yearsInBusiness show standing at a glance.
  • Complaint history. complaintsCount, complaintsClosedLast3Years and complaintsClosedLast12Months support due-diligence checks.
  • Outreach-ready contacts. phone, website, formattedAddress and contacts (name and title) come with each enriched profile.
  • Map-ready. latitude and longitude place each business on a map.
  • Filters for clean lists. minRating and accreditedOnly keep only the businesses you want.
  • Two depths. Enriched profiles by default, or lighter listing rows with enrichDetails set to false.

Best fit for US and Canadian service businesses where BBB standing matters: contractors, plumbers, HVAC, roofers, movers and other local trades, plus supplier checks before signing a contract.

Example workflow: from a trade and city to a vetted lead list

A home-services marketplace starts with searchKeyword set to plumber, location set to Los Angeles, CA, accreditedOnly set to true and minRating set to A. The dataset returns each plumber's businessName, bbbRating, yearsInBusiness, phone, website and complaintsCount. They sort by yearsInBusiness, drop businesses with open complaints, and export the shortlist to their partner-onboarding sheet. A monthly schedule per metro area keeps the list current and lets them compare ratings over time.

How to scrape BBB

  1. Enter a Search keyword such as hvac contractor and a Location as City, ST, or paste profile URLs in BBB profile URLs.
  2. Choose Country, set Max results, and optionally Minimum BBB rating or BBB-accredited businesses only.
  3. Click Start, then export the dataset as JSON, CSV or Excel, or read it through the API.

Input

{
"searchKeyword": "plumber",
"location": "Los Angeles, CA",
"country": "US",
"maxResults": 20,
"enrichDetails": true,
"minRating": "Any",
"accreditedOnly": false
}
FieldTypeWhat it controls
searchKeywordstringBusiness type or name, for example plumber or general contractor.
locationstringCity, ST for the US or City, Province for Canada. Optional.
countrystringUS or CA. Default US.
startUrlsarrayDirect bbb.org/.../profile/... URLs to scrape in depth.
maxResultsintegerBusinesses to return across the run. Default 100.
enrichDetailsbooleanOpen each profile for full detail. Default true.
minRatingstringMinimum BBB letter rating, from A+ to F, or Any.
accreditedOnlybooleanKeep only BBB-accredited businesses. Default false.
storeRawSamplebooleanSave a raw page sample to the key-value store for inspection. Default false.
proxyConfigurationobjectApify Residential proxy pinned to the chosen country by default.

Output

One dataset row per business.

FieldWhat it contains
businessName, altBusinessNamesBusiness name and other registered names
bbbId, urlBBB business ID and profile URL
bbbRatingLetter rating from A+ to F
isAccredited, accreditationStatus, dateAccreditedAccreditation flag, label and date
businessStarted, incorporatedDate, bbbFileOpened, yearsInBusinessBusiness history
entityTypeCorporation, LLC and similar
categories, primaryCategoryBBB business categories
phone, websiteContact details
street, city, state, postalCode, country, formattedAddressAddress
latitude, longitudeCoordinates
complaintsCount, complaintsClosedLast3Years, complaintsClosedLast12MonthsComplaint history
ratingCount, averageStarRatingCustomer review signals when published
contactsListed management contacts with name and title
hoursOpening hours by weekday
logoBusiness logo when published
scrapedFrom, scrapedAtprofile or search, and the collection time

The schema also includes email, numberOfEmployees, additionalWebsites and servingArea, filled when the BBB profile publishes them.

{
"businessName": "Fords Plumbing",
"altBusinessNames": ["Robert Ford Plumbing And Heating, Inc."],
"bbbId": "1216-100081178",
"url": "https://www.bbb.org/us/ca/los-angeles/profile/plumber/fords-plumbing-1216-100081178",
"bbbRating": "A+",
"isAccredited": true,
"accreditationStatus": "BBB Accredited Business",
"dateAccredited": "2010-10-04",
"businessStarted": "1962-09-11",
"incorporatedDate": "2007-08-06",
"yearsInBusiness": 64,
"entityType": "Corporation",
"categories": ["Plumber", "Sewer Contractors", "Leak Detection", "Water Heater Installation", "Drain Cleaning"],
"primaryCategory": "Plumber",
"phone": "(310) 815-1515",
"email": null,
"website": "https://www.fordsplumbingandheating.com/",
"street": "5818 Venice Blvd",
"city": "Los Angeles",
"state": "CA",
"postalCode": "90019-5019",
"country": "US",
"formattedAddress": "5818 Venice Blvd, Los Angeles, CA 90019-5019",
"latitude": 34.049841,
"longitude": -118.33846,
"ratingCount": 0,
"averageStarRating": null,
"complaintsCount": 1,
"complaintsClosedLast3Years": 1,
"complaintsClosedLast12Months": 1,
"contacts": [
{ "name": "Jordan Example", "title": "President" },
{ "name": "Casey Example", "title": "Manager" }
],
"hours": { "monday": "Open 24 Hours", "tuesday": "Open 24 Hours" },
"logo": null,
"scrapedFrom": "profile",
"scrapedAt": "2026-10-01T13:34:50.492Z"
}

Contact names in this example are fictional placeholders.

Pricing

This Actor uses Pay per event with Apify platform usage included in the event price. Each business is charged once: a Profile enriched event when its full profile is scraped (the default, and every profile URL), or a Business found event when enrichDetails is false and only listing fields are returned. Each run also has one Actor Start event.

Worked example in words: an enriched search capped at twenty businesses costs twenty Profile enriched events plus one Actor Start event. The same search with enrichment off costs twenty Business found events instead. Check the live Pricing tab on this page for current event prices.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~bbb-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchKeyword": "hvac contractor", "location": "Austin, TX", "maxResults": 25, "accreditedOnly": true}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/bbb-scraper").call(run_input={
"searchKeyword": "roofing contractor",
"location": "Toronto, ON",
"country": "CA",
"maxResults": 30,
"minRating": "A",
})
for biz in client.dataset(run["defaultDatasetId"]).iterate_items():
print(biz["businessName"], biz["bbbRating"], biz["phone"], biz["yearsInBusiness"])

Use with AI agents (MCP)

Connect the Actor to Claude, ChatGPT, Cursor or any MCP client through Apify MCP and ask:

Find 20 BBB-accredited plumbers in Los Angeles with an A rating or better. Return name, rating, years in business, phone, website and complaint count.

The agent sets searchKeyword, location, accreditedOnly and minRating, reads rows back from the dataset, and cites each business by url and scrapedAt. maxResults sets the cost scope before the run starts.

Best results

Starting situationHelpful actionExpected outcome
A large metro targetRun one search per city or suburb and merge on bbbIdWider coverage than a single search page set
Listing fields are enoughSet enrichDetails to falseFaster, lighter rows
A vetted partner listCombine accreditedOnly with minRating set to AOnly well-rated accredited businesses
Known businesses to checkPaste their profile URLs in startUrlsFull detail for exactly those businesses
Canadian marketsSet country to CA and location to City, ProvinceResults from the Canadian BBB directory
Due diligenceRead complaintsClosedLast12Months and dateAccredited togetherA quick view of recent standing

Builder's note

I built this Actor around BBB's trust signals because they are what Google Maps data leaves out: accreditation, letter ratings, complaint history and business age. I designed enrichment as the default since contacts, hours and history live on the profile page, and kept a lighter listing mode with its own event for runs that only need names and ratings. I found that rating and accreditation filters are most useful after enrichment, so they apply once each profile is read.

FAQ

Which countries does it cover?

The United States and Canada, chosen with country.

How do I collect more than one search returns?

Run several locations, for example one per metro area or suburb, and merge the datasets on bbbId.

Why are some fields empty?

BBB publishes different details for different businesses. Fields such as email and averageStarRating are filled when the profile shows them.

Which proxy should I use?

Keep the default Apify Residential proxy pinned to the chosen country.

Responsible use

This Actor collects publicly available business-directory information from bbb.org. Use it in line with BBB's terms of service and applicable laws. Profiles can list names of owners and managers, which are personal data under laws such as the CCPA and Canada's PIPEDA, so use them only with a lawful basis and honor opt-outs before outreach. BBB is a trademark of its owner; this independent Actor is not affiliated with or endorsed by the Better Business Bureau.