Documentation Python quickstart Blog Free tools hello@quanticdata.ioLog in

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.

$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
BBB Scraper API: query and location in, a residential exit in the middle, delivered rows with rank, id and name on the right, $0.002 per business.
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 / business1,000 businesss on the free $2 every month
Semantic inputquery, location, country — no URL lists
Up to 200businesss per run, pagination handled for you
No browserread over HTTP/TLS — cheaper and faster than rendering

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

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.

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.

FieldTypeWhat it holds
rankinteger1-based position across pages, after duplicates are removed.
idstring · nullableBBB 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.
namestringBusiness name.
phonestring · nullablePhone number as published.
streetstring · nullableStreet address.
citystring · nullableCity.
statestring · nullableState code.
postal_codestring · nullableZIP code.
countrystring · nullableCountry code.
urlstring · nullableBBB profile URL.

Inputs

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

InputTypeRequiredWhat it does
querystringyesWhat to search for, e.g. "plumber" or "roofing".
locationstringyesUS city and state, e.g. "Chicago, IL".
countrystringnoISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool.
max_resultsintegernoHow 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.002per delivered business$2 per 1,000 delivered businesss
1,000 businessson the free allowance$2 every month, no card
Zero rowszero chargeblocks, captchas and retries are on us
−30%on volume tiersthe 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

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. 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}'

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 scraperThis collector
ReadabilityA JavaScript page with empty rows on a plain fetchThe structured block the BBB ships for search engines
DuplicatesMain profile and each location as separate leadsOne row per BBB business id
GradesScraped from selectors nobody verifiedNot collected, and the page says so
BlocksYour IPsResidential exits, failed runs free

What people search for

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

BBB Scraper API: the POST to /v1/scraper/collectors/bbb_businesses/run with query and location on the left, and the JSON envelope on the right with 60 businesses and usage.cost_usd $0.12.
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:

FAQ

Questions we get about the BBB scraper API.

Something else? Ask us →

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