BBB Business Listings Scraper — Search by Keywords & Location
Pricing
from $1.99 / 1,000 bbb_business_items
BBB Business Listings Scraper — Search by Keywords & Location
Scrapes business listings from the Better Business Bureau (BBB) by keywords and location. Returns ratings, accreditation status, contact info, categories, and service areas.
Pricing
from $1.99 / 1,000 bbb_business_items
Rating
0.0
(0)
Developer
DataCach
Actor stats
0
Bookmarked
7
Total users
4
Monthly active users
6 days ago
Last modified
Categories
Share
Extract business data from the Better Business Bureau (BBB) directory without an API key. Search any trade category—Plumbers, HVAC, Electricians, Roofers, Auto Repair, Contractors—across any US or Canadian city, state, or ZIP code. Get structured JSON with BBB ratings, accreditation status, phone numbers, addresses, GPS coordinates, service areas, and more.
Free tier available. No credit card required to start.
Why This BBB Scraper?
- Free to Start: Get up to 10 results per keyword at zero cost—no paid plan or proxy setup needed.
- Keyword + Location Search: Combine any trade category with any US or Canadian city, state, or ZIP code.
- BBB Ratings & Accreditation: Letter grade (A+ to F), numeric rating score (0–100), and accreditation status per business.
- Reliable & Maintained: Automatic retries with exponential backoff; selectors updated as BBB changes its layout.
- Concurrent Processing: Pages fetched in parallel with rate limiting—fast without triggering bans.
- Ready to Export: Clean, flat JSON output—import directly into Excel, Google Sheets, CRMs, or databases.
- Canada Supported: Works for both US and Canadian BBB listings.
Who Is This For?
This BBB data extractor is built for:
- Sales & Marketing Teams building targeted lead lists by trade and geography
- B2B Agencies prospecting home service businesses (plumbers, roofers, HVAC, electricians)
- Market Researchers analyzing BBB membership and rating distributions by industry
- Data Engineers feeding BBB business data into CRMs, dashboards, or enrichment pipelines
- Recruiters sourcing employers in the trades and service sectors
- Compliance Teams vetting vendors and suppliers via BBB accreditation status
Use Cases
- Lead Generation: Build targeted lists of local contractors, plumbers, roofers, and HVAC businesses by city or ZIP code.
- Sales Prospecting: Find BBB-accredited businesses in any trade to approach as potential clients or partners.
- Market Research: Analyze business density, BBB membership rates, and rating distributions across industries and regions.
- Competitive Intelligence: Monitor BBB ratings and accreditation status of competitors or industry peers.
- Directory Building: Create curated, verified business directories for the US and Canadian markets.
- Vendor & Supplier Vetting: Check BBB accreditation and ratings for procurement due diligence.
- CRM Enrichment: Add verified contact details, ratings, and service areas to existing business records.
What Data Does This Scraper Extract?
| Category | Fields |
|---|---|
| Business Identity | Name, business ID, type of business, categories |
| Contact Information | Phone numbers, full BBB profile URL, request-a-quote URL |
| Location Data | Street address, city, state, ZIP code, GPS coordinates |
| BBB Ratings | Letter grade (A+ to F), numeric score (0–100), accreditation status |
| Local BBB Chapter | Chapter name and ID, member status |
| Service Coverage | County-level service area summaries, service area flag |
| Charity Info | BBB Accredited Charity seal and status |
| Business Status | Active or out-of-business flag, logo URI |
| Extraction Metadata | Source keyword, extraction date and datetime (UTC) |
How It Works
- Input: Provide one or more trade category keywords and a target location (city + state or ZIP code).
- Location Resolution: The scraper resolves your location string via BBB's autocomplete API to find the exact internal location identifier.
- Search & Pagination: BBB is queried per keyword; the first page reveals total results and available pages.
- Parallel Fetching: All remaining pages are fetched concurrently (up to 5 simultaneous requests).
- Output: Structured business records pushed to the Apify dataset, downloadable as JSON, CSV, or Excel.
Input Parameters
| Field | Type | Description | Default | Example |
|---|---|---|---|---|
keywords | array | Trade categories or business types to search on BBB | Required | ["Plumber", "HVAC"] |
location | string | City + state, state name, or ZIP code | "Miami, FL" | "Austin, TX" or "90210" |
country | string | Country (USA or CAN) | "USA" | "CAN" |
max_results | integer | Maximum results per keyword | 10 | 100 |
Free vs. Paid Account Limits
| Limit | Free Account | Paid Account |
|---|---|---|
| Max keywords per run | 1 | 30 |
| Max results per keyword | 10 | Up to 1,000 |
Output Schema
Each business record contains:
{"id": "0845_11000868_5290","businessName": "Example Business","url": "https://www.bbb.org/us/fl/miami/profile/plumbers/example-business-0273-11000868","search_keyword": "Plumber","extraction_date": "2026-03-16","extraction_datetime": "2026-03-16T14:32:00.123456+00:00","address": "123 Main St","city": "Miami","state": "FL","postalcode": "33101-1234","tobText": "Plumbers","tobId": "10420-000","rating": "A+","ratingScore": 100,"bbbMember": true,"accreditationStatus": "Accredited","accreditedCharity": false,"isCharity": 0,"charitySeal": false,"phone": ["(305) 555-0123"],"location": "25.774265,-80.193659","businessId": "11000868","bbbId": "0273","bbbName": "Better Business Bureau Serving Southeast Florida","logoUri": null,"reportUrl": "/us/fl/miami/profile/plumbers/example-business-0273-11000868","localReportUrl": null,"leaveReviewUrl": "/us/fl/miami/profile/plumbers/example-business-0273-11000868/leave-a-review","requestAQuoteUrl": "/southeast-florida/quote/request-example-business-11000868","requestAQuoteUrlId": 739,"raqEnabled": true,"businessLoginUrl": "/southeast-florida/login","distance": null,"score": 914.74,"outOfBusinessStatus": null,"categories": [{ "id": "10420-000", "name": "Plumbers" }],"hasServiceArea": true,"serviceArea": null,"serviceAreaDescription": null,"serviceAreasSummary": ["Miami-Dade County, FL", "Broward County, FL"]}
Output Fields Reference
Extraction Metadata
url: Full absolute URL to the BBB business profile pagesearch_keyword: The keyword used in the search that returned this resultextraction_date: UTC date of extraction (ISO 8601, e.g."2026-03-16")extraction_datetime: UTC datetime with timezone (e.g."2026-03-16T14:32:00.123456+00:00")
Business Identity
id: Composite unique identifier (bbbId_businessId_sequence)businessName: Business name as listed on BBBbusinessId: Unique BBB business identifiertobText: Type of business / trade category labeltobId: Type of business category ID
Contact & Location
address: Street addresscity,state,postalcode: Location componentslocation: GPS coordinates as"latitude,longitude"phone: Array of phone numbers
BBB Ratings & Accreditation
rating: Letter grade (A+,A,B,C,D,F, orNRfor Not Rated)ratingScore: Numeric score (0–100) behind the letter ratingbbbMember: Whether the business holds BBB Accredited Business statusaccreditationStatus: Accreditation status stringbbbId: ID of the local BBB chapterbbbName: Name of the local BBB chapter
URLs
reportUrl: Relative path to the full BBB business profileleaveReviewUrl: Relative path to submit a customer reviewrequestAQuoteUrl: Relative path to request a quote (if enabled)raqEnabled: Whether request-a-quote is active for this business
Service Area
hasServiceArea: Whether the business serves an area beyond its addressserviceAreasSummary: Array of county/region strings the business coversserviceAreaDescription: Free-text description of the service area
Charity
isCharity: Integer flag (1= charity,0= not)charitySeal: Whether the business displays a BBB charity sealaccreditedCharity: Whether the business is a BBB Accredited Charity
Other
outOfBusinessStatus: Populated when a business is no longer operatingscore: Internal BBB relevance score used for search rankingcategories: Array of{ id, name }objects for all business categories
Performance
- Concurrency: Up to 5 simultaneous requests via asyncio semaphore
- Parallel pages: After page 1 reveals the total, all remaining pages are fetched at once
- Retries: Each request retries up to 3 times with exponential backoff
- Rate-aware: Controlled concurrency avoids triggering BBB's rate limiting
Frequently Asked Questions
What is the BBB and what data is publicly available? The Better Business Bureau is a non-profit organization that rates businesses on their practices, complaint history, and licensing. All business profiles, ratings, contact info, and accreditation data extracted by this actor are publicly accessible on bbb.org without a login.
Do I need a BBB API key to use this scraper? No. This actor scrapes publicly visible data from bbb.org directly—no API key, account, or subscription to BBB is required.
Can I scrape BBB data for all businesses in a state?
Yes. Use a state name (e.g. Texas) as the location and a broad keyword (e.g. Contractor). Combine multiple keyword searches and increase max_results to collect large datasets. Paid accounts support up to 30 keywords per run with up to 1,000 results each.
What's the difference between rating and ratingScore?
rating is the letter grade (A+, A, B…) displayed on BBB. ratingScore is the underlying numeric score (0–100) that determines the letter. A score of 97–100 maps to A+.
Does this scraper work for Canadian businesses?
Yes. Set country to CAN and provide a Canadian city or postal code as the location (e.g. Toronto, ON).
How fresh is the data?
The scraper fetches live data from bbb.org at run time. Each record includes extraction_date and extraction_datetime so you can track data freshness.
What happens if a keyword returns no results? The scraper logs a message and moves to the next keyword. No empty records are pushed to the dataset.
Can I use this for home services lead generation? Yes. This is one of the most common use cases. Search for Plumbers, Electricians, HVAC, Roofers, Landscapers, or any other trade in a specific city or ZIP code to build targeted prospect lists.
Is there a free plan? Yes. Free accounts can run 1 keyword per run and retrieve up to 10 results at no cost. Upgrade to a paid Apify plan to unlock up to 30 keywords and 1,000 results per keyword.
Limitations
- Concurrency cap: 5 concurrent requests to respect BBB's infrastructure
- Memory: Maximum 2 GB RAM per run
- Free account: 1 keyword, 10 results per run
- Paid account: Up to 30 keywords, up to 1,000 results per keyword
- Geography: US and Canadian BBB listings only
- Language: English-language content only
Legal Disclaimer
This scraper accesses publicly available business listing data from bbb.org. All extracted data is publicly visible without authentication. Ensure your usage complies with BBB's terms of service and applicable data protection regulations. This tool is intended for legitimate business research, lead generation, and market analysis.
Support
For technical support or feature requests, open an issue in the repository or contact us through the Apify platform.
Note: This scraper is designed for legitimate business research and market analysis. Please ensure compliance with all applicable laws and BBB's terms of service.