# BBB Scraper API — $0.002 per business

> BBB Scraper API: Businesses from a Better Business Bureau search — name, phone, full. $0.002 per delivered business, nothing delivered means nothing charged.

[Home](https://quanticdata.io/)/[Collectors](https://quanticdata.io/collectors/)/*BBB Scraper API*

# BBB Scraper API

A BBB scraper API that searches the Better Business Bureau for a trade in a US location and returns each business with name, phone, full postal address and its BBB profile URL, deduplicated on the BBB’s own business id. Read from the structured block the BBB publishes for search engines — the only part of the page readable without a browser.

By [Aldo Morese](https://quanticdata.io/about/), founder of QuanticData · Published Aug 21, 2026 · Updated Sep 3, 2026

[Get my free API key](https://app.quanticdata.io/register) [See the request](/collectors/bbb-scraper-api/#integration)

$0.002 per delivered business · $2 free every month · Failed runs never billed

POST /v1/scraper/collectors/bbb_businesses/run

```
$ curl $QD/bbb_businesses/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"query": "plumber", "location": "Chicago,  IL", "max_results": 60}'
{ "status": "done", "count": 60,
  "results": [
    {
      "id": "…",
      "name": "…",
      "phone": "…",
      "street": "…" } ],
  "cost": 0.12 }
# 60 businesss × $0.002 · nothing delivered, nothing charged
```

You send query and location; the run goes out through a residential exit and comes back as businesses with rank, id and name — 10 fields on every row — and you are billed $0.002 for each business actually delivered, nothing for a run that delivers none.

**$0.002 / business**1,000 businesss on the free $2 every month

**Semantic input**query, location, country — no URL lists

**Up to 200**businesss per run, pagination handled for you

**No browser**read over HTTP/TLS — cheaper and faster than rendering

On this page: [Try it](/collectors/bbb-scraper-api/#try) [What it is](/collectors/bbb-scraper-api/#what) [Limits](/collectors/bbb-scraper-api/#caps) [Output fields](/collectors/bbb-scraper-api/#output) [Inputs](/collectors/bbb-scraper-api/#input) [Pricing](/collectors/bbb-scraper-api/#pricing) [Integration](/collectors/bbb-scraper-api/#integration) [Use cases](/collectors/bbb-scraper-api/#use-cases) [Versus the alternatives](/collectors/bbb-scraper-api/#compare) [FAQ](/collectors/bbb-scraper-api/#faq)

Try it

## BBB businesses, running now

Change the input and run it against the live collector — nothing to install, no sign-up.

Run it from your own code, on your own inputs

Same collector, same rows — $2 of free API credit every month, no card.

[Get my free API key](https://app.quanticdata.io/register)

## What a BBB scraper API does

The BBB search page needs JavaScript to show its rows, but it server-renders a schema.org results block for search engines with each business as a LocalBusiness: postal address, phone and profile URL. This collector reads that block, which makes the site readable on a plain fetch at all. It accepts both shapes the block takes — an entry that is the business directly, and one that wraps it in a list item — rather than assuming one.

Two decisions are worth stating out loud. Identity: the same company appears in one result set both as its main profile and as a per-location entry, with different URLs and an identical BBB id embedded in both; deduplicating on the URL would keep both and charge you twice for one lead, so rows are keyed on the id. Honesty: the BBB letter grade and the accreditation badge — the reason most people look at BBB — are not in the structured block, only in the rendered markup, and they are not collected. A grade added from an unverified selector would be worse than an absent one: it is a number customers act on.

Input is meaning, not a URL *query* *location* *country* *max_results*

## Limits, in plain numbers

Everything that bounds one run of this collector. No hidden throttles.

Max per run

200 businesss

Price

$0.002 / business

Per 1,000

$2.00

Failed runs

Free zero rows, zero charge

Free every month

$2 no card

Rate limit

60 req/min on the free tier

## What one business looks like

Every delivered business carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

| Field | Type | What it holds |
| --- | --- | --- |
| `rank` | integer | 1-based position across pages, after duplicates are removed. |
| `id` | string · nullable | BBB business id. The same company can appear as both a main profile and a per-location entry — these share an id and are delivered once. |
| `name` | string | Business name. |
| `phone` | string · nullable | Phone number as published. |
| `street` | string · nullable | Street address. |
| `city` | string · nullable | City. |
| `state` | string · nullable | State code. |
| `postal_code` | string · nullable | ZIP code. |
| `country` | string · nullable | Country code. |
| `url` | string · nullable | BBB profile URL. |

## Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

| Input | Type | Required | What it does |
| --- | --- | --- | --- |
| `query` | string | yes | What to search for, e.g. "plumber" or "roofing". |
| `location` | string | yes | US city and state, e.g. "Chicago, IL". |
| `country` | string | no | ISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool. |
| `max_results` | integer | no | How many businesses to deliver at most (1–200). You pay only for delivered businesses. |

Pricing

## BBB Scraper API pricing

$0.002 per delivered business. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 1,000 businesss before you spend anything.

**$0.002**per delivered business*$2 per 1,000 delivered businesss*

**1,000 businesss**on the free allowance*$2 every month, no card*

**Zero rows**zero charge*blocks, captchas and retries are on us*

**−30%**on volume tiers*the catalog returns your key's price*

### Pay as you go

$0/mo

- $2 free credit / month

- 60 requests / min

- List unit prices

### Starter

$19/mo

- $15 free credit / month

- 300 requests / min

- 10% off unit prices

Most popular

### Growth

$79/mo

- $50 free credit / month

- 600 requests / min

- 20% off unit prices

### Scale

$299/mo

- $250 free credit / month

- 1,200 requests / min

- 30% off unit prices

Same wallet, same key and same $2 monthly allowance as every other [Data API](https://quanticdata.io/web-data-api-for-ai/). Prices are launch pricing read live from the billing config — `GET /v1/scraper/collectors` returns the price your key actually pays.

Integration

## One POST, typed rows

Base URL `https://api.quanticdata.io/v1`, Bearer auth, the same key as every other Data API. Endpoint: `POST /v1/scraper/collectors/bbb_businesses/run`.

```
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/bbb_businesses/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"plumber","location":"Chicago, IL","max_results":60}'
```

```
import requests

r = requests.post(
    "https://api.quanticdata.io/v1/scraper/collectors/bbb_businesses/run",
    headers={"Authorization": f"Bearer {QD_API_KEY}"},
    json={
        "query": "plumber",
        "location": "Chicago, IL",
        "max_results": 60
    },
    timeout=120,
)
for row in r.json()["payload"]["results"]:
    print(row)
```

```
const res = await fetch(
  "https://api.quanticdata.io/v1/scraper/collectors/bbb_businesses/run",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.QD_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({"query":"plumber","location":"Chicago, IL","max_results":60}),
  },
);
const { payload } = await res.json();
console.table(payload.results);
```

```
claude mcp add quanticdata \
  -e QUANTICDATA_API_KEY=qd_live_your_key_here \
  -- npx -y quanticdata-mcp

# then, in the chat:
> run the bbb_businesses collector with query="plumber" and location="Chicago, IL"
```

## What people build with the BBB scraper API

Three shapes of work this endpoint was designed around.

### Trade lead lists

Plumbers, roofers, movers in a metro with phone and postal address, one row per business rather than per location.

### Directory cross-checks

Join BBB rows with Google Maps and business-directory rows by phone or address to find who is listed where.

### Territory mapping

Street, city, state and ZIP as separate fields, so a trade’s footprint can be mapped without parsing addresses.

## BBB Scraper API versus rolling your own

The differences that actually cost time when you build this in-house.

|  | DIY scraper | This collector |
| --- | --- | --- |
| Readability | A JavaScript page with empty rows on a plain fetch | The structured block the BBB ships for search engines |
| Duplicates | Main profile and each location as separate leads | One row per BBB business id |
| Grades | Scraped from selectors nobody verified | Not collected, and the page says so |
| Blocks | Your IPs | Residential exits, failed runs free |

## What people search for

Live autocomplete demand around BBB businesses, pulled with our own Keyword ideas collector.

Searches: [apify bbb scraper](/collectors/bbb-scraper-api/#try) [bbb data scraper](/collectors/bbb-scraper-api/#try)

The same call you would paste into a terminal: a Bearer key, query, location and country in the body, and back the envelope every QuanticData endpoint returns — type, message, payload — where count is how many businesses arrived and usage.cost_usd is $0.12, which is 60 × $0.002. A run that delivers nothing costs nothing. The key is good for 60 req/min on the free tier.

## Sources and standards

The platform documentation and standards this collector is built against — check any claim on this page against the primary source:

- [Better Business Bureau: terms of use](https://www.bbb.org/terms-of-use)

- [Schema.org: the LocalBusiness type](https://schema.org/LocalBusiness)

- [Schema.org: the Review type](https://schema.org/Review)

## FAQ

Questions we get about the BBB scraper API.

[Something else? Ask us →](mailto:hello@quanticdata.io)

### Does it return the BBB rating or accreditation?

No. Those two are only in the rendered markup, not in the structured block this reads, and guessing them from selectors would put unverified grades in your data. The row carries what the BBB states for search engines: identity, address, phone and profile URL.

### Why is the same company not listed twice?

Because it is the same company. The BBB lists a business once as its main profile and again per location, with the same id in both URLs; the collector keys on that id so a lead is delivered — and billed — once.

### Which locations work?

US locations as the BBB search accepts them, typically “City, ST”. Pass the trade as `query`.

### Is there a BBB API?

Not a public one for search. This reads the public results page and needs no account.

### Is there a free BBB scraper API?

Every account gets $2 of credit every month with no card, which is about 1,000 delivered businesss on this endpoint at $0.002 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

### How much does one run cost?

Multiply the rows you actually receive by $0.002. A run capped at 200 businesss — the maximum for this collector — costs $0.4 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and `GET /v1/scraper/collectors` returns the price your key actually pays.

## Run the BBB scraper API now

$2 of free credit every month, no card. Your key returns its own prices from `GET /v1/scraper/collectors`.

[Get my free API key](https://app.quanticdata.io/register)

Related: [All 100 collectors](https://quanticdata.io/collectors/) [Lead Scraper API](https://quanticdata.io/collectors/lead-scraper-api/) [Google Maps Scraper API](https://quanticdata.io/collectors/google-maps-scraper-api/) [Email Scraper API](https://quanticdata.io/collectors/email-scraper-api/) [Company data](https://quanticdata.io/scrape-company-data/) [Documentation](https://quanticdata.io/docs/)

## Also on this site

Quantic**Data**

Residential proxies & web data APIs for AI.

#### Proxies

- [Residential Basic](https://quanticdata.io/residential-proxies/#basic)

- [Residential Premium](https://quanticdata.io/residential-proxies/#plans)

- [Cheap Residential](https://quanticdata.io/cheap-residential-proxies/)

- [Mobile Proxies](https://quanticdata.io/mobile-proxies/)

- [Datacenter Proxies](https://quanticdata.io/datacenter-proxies/)

- [ISP Proxies](https://quanticdata.io/isp-proxies/)

- [Rotating Proxies](https://quanticdata.io/rotating-proxies/)

- [Sneaker Proxies](https://quanticdata.io/sneaker-proxies/)

- [SOCKS5 Proxies](https://quanticdata.io/socks5-proxies/)

- [IPv6 Proxies](https://quanticdata.io/ipv6-proxies/)

- [Proxy locations](https://quanticdata.io/proxies/)

#### Data APIs

- [MCP Server](https://quanticdata.io/mcp-server/)

- [Web Scraper API](https://quanticdata.io/web-scraping-api/)

- [SERP API](https://quanticdata.io/serp-api/)

- [Collectors](https://quanticdata.io/collectors/)

- [Web Data for AI](https://quanticdata.io/web-data-api-for-ai/)

- [Quantic AI](https://quanticdata.io/ai-web-scraping-service/)

- [Browser AI Agents](https://quanticdata.io/browser-ai/)

- [Crawl & Map](https://quanticdata.io/crawl-map/)

- [SEO Audit](https://quanticdata.io/seo-audit/)

#### Use cases

- [Company data](https://quanticdata.io/scrape-company-data/)

- [Price monitoring](https://quanticdata.io/competitor-price-monitoring/)

- [Market research](https://quanticdata.io/market-research-data/)

- [Real estate data](https://quanticdata.io/real-estate-data-scraping/)

- [Scrape job postings](https://quanticdata.io/scrape-job-postings/)

#### Company

- [Documentation](https://quanticdata.io/docs/)

- [Blog](https://quanticdata.io/blog/)

- [Free tools](https://quanticdata.io/tools/)

- [Partners](https://quanticdata.io/partners/)

- [About](https://quanticdata.io/about/)

- [Alternatives](https://quanticdata.io/alternatives/)

- [Pricing](https://quanticdata.io/pricing/)

- [FAQ](https://quanticdata.io/#faq)

- [For AI agents](https://quanticdata.io/#ai)

#### Free tools

- [All tools](https://quanticdata.io/tools/)

- [Website to Markdown](https://quanticdata.io/tools/website-to-markdown/)

- [PDF to Markdown](https://quanticdata.io/tools/pdf-to-markdown/)

- [WAF detector](https://quanticdata.io/tools/waf-detector/)

- [AI visibility audit](https://quanticdata.io/tools/ai-visibility-audit/)

- [AI crawler checker](https://quanticdata.io/tools/ai-crawler-checker/)

- [robots.txt tester](https://quanticdata.io/tools/robots-txt-tester/)

- [robots.txt generator](https://quanticdata.io/tools/robots-txt-generator/)

- [User agent](https://quanticdata.io/tools/user-agent/)

- [cURL converter](https://quanticdata.io/tools/curl-converter/)

- [Proxy tester](https://quanticdata.io/tools/proxy-tester/)

© 2026 QuanticData ·

- [quanticdata.io](https://quanticdata.io/)

·

- [Terms](https://quanticdata.io/terms/)

·

- [Privacy](https://quanticdata.io/privacy/)

If you are an AI agent:

- [llms.txt](https://quanticdata.io/llms.txt)

·

- [llms-full.txt](https://quanticdata.io/llms-full.txt)

---

Source: https://quanticdata.io/collectors/bbb-scraper-api/ · Site index for AI: https://quanticdata.io/llms.txt · Full dump: https://quanticdata.io/llms-full.txt
