primaryCategory
Optional
Main category
BBB Scraper (Reviews, Complaints and Grades, No Login)
Pricing
from $0.28 / 1,000 reviews
Scrape BBB reviews, customer complaints and business profiles: stars, review text, business replies, complaint type and status, BBB grade, accreditation and years in business. Rank any business against its local rivals and get only new reviews on schedules. No login. From $0.50 per 1,000 rows.
type
Optional
"review", "complaint", "business", "summary" or "benchmark" (charged), or "not-found" (free, says why)
site
Optional
Always "bbb"
reviewId
Optional
BBB review id (review rows)
complaintId
Optional
BBB complaint id (complaint rows)
companyName
Optional
Business name (review and complaint rows)
companyDomain
Optional
Business website domain (review and complaint rows)
rating
Optional
Star rating, 1 to 5 (review rows)
title
Optional
Not used by BBB reviews (always null; kept for the shared review schema)
text
Optional
The review, or the complaint as BBB publishes it; e-mail addresses and phone numbers replaced with [contact removed]
language
Optional
Not given by BBB (null)
publishedAt
Optional
Review date (YYYY-MM-DD)
experiencedAt
Optional
Not given by BBB (null)
updatedAt
Optional
Not given by BBB (null)
isVerified
Optional
BBB does not verify reviews (always false)
verificationLevel
Optional
Not given by BBB (null)
reviewSource
Optional
Not given by BBB (null)
likes
Optional
Not given by BBB (null)
reviewerName
Optional
The display name BBB shows, e.g. first name and last initial
reviewerCountry
Optional
Not given by BBB (null)
reviewerReviewCount
Optional
Not given by BBB (null)
replyText
Optional
The business's public reply to the review
replyPublishedAt
Optional
When the business replied (YYYY-MM-DD)
reviewerFollowUpText
Optional
The reviewer's public answer to the business's reply
reviewerFollowUpAt
Optional
When the reviewer answered
businessFollowUpText
Optional
The business's second reply
businessFollowUpAt
Optional
When the business replied again
reviewUrl
Optional
Link to the business's reviews page
complaintType
Optional
BBB complaint type, e.g. Delivery Issues
status
Optional
Complaint status, e.g. Resolved, Answered, Unanswered
filedAt
Optional
Complaint date (YYYY-MM-DD)
businessResponseText
Optional
The business's first response to the complaint
businessResponseAt
Optional
When the business first responded
messages
Optional
The whole public exchange after a complaint, in order: from (business or consumer), date, text
complaintsUrl
Optional
Link to the business's complaints page
companyUrl
Optional
Link to the business's BBB page
businessId
Optional
BBB ids of the business, "-" (business and summary rows)
name
Optional
Business name (business rows)
domain
Optional
Business website domain
websiteUrl
Optional
Business website
trustScore
Optional
Not used by BBB (always null; kept for the shared review schema)
stars
Optional
Average customer review stars BBB shows (business rows from a business page, and summary rows)
reviewCount
Optional
Customer reviews on BBB
reviewsLast12Months
Optional
Not given by BBB (null)
ratingBreakdown
Optional
Not given by BBB (null)
categories
Optional
BBB categories
primaryCategory
Optional
Main category
address
Optional
Street address the business lists
city
Optional
City
zipCode
Optional
ZIP or postal code
state
Optional
State or province code
country
Optional
US or CA
Optional
The e-mail address the business publishes on BBB, if any
phone
Optional
The phone number the business publishes on BBB
isClaimed
Optional
Not given by BBB (null)
isClosed
Optional
True when BBB says the business is out of business
bbbRating
Optional
BBB letter grade, A+ to F, or NR
isAccredited
Optional
True when the business is BBB accredited
accreditedSince
Optional
Accreditation date (YYYY-MM-DD)
businessStartedAt
Optional
When the business started, per BBB (YYYY-MM-DD)
yearsInBusiness
Optional
Years in business, per BBB
complaintCount
Optional
Complaints BBB counts for the business (BBB stops counting at 10,000)
complaintsClosedLast12Months
Optional
Complaints closed in the last 12 months
complaintsClosedLast3Years
Optional
Complaints closed in the last 3 years
legalEntityType
Optional
Corporation, LLC, sole proprietorship and so on
employees
Optional
Number of employees, per BBB
alertCount
Optional
Alerts BBB shows on the profile, such as government actions
localBbb
Optional
The local BBB that covers the business
latitude
Optional
Where BBB places the business on its map. BBB rounds many to 2 decimals (about 1 km, often the city centre), so treat it as approximate
longitude
Optional
Where BBB places the business on its map. BBB rounds many to 2 decimals (about 1 km, often the city centre), so treat it as approximate
licenses
Optional
Licences BBB lists for the business: number, issuing agency and expiry date (expiresAt). Empty when BBB lists none; null on search rows unless Full details is on
searchLocation
Optional
The search location that found the business; null for business links
source
Optional
How a business row was found: company (your link) or search
query
Optional
The search, for business rows found by one
rank
Optional
Position in the search results, 1-based
reason
Optional
Why a free row came back: not-found, no-results, invalid-input
message
Optional
What to change (free rows)
input
Optional
What you typed that produced the row
scrapedAt
Optional
When the run read the page (ISO 8601)
periodFrom
Optional
Summary rows: first day the numbers cover (YYYY-MM-DD); null when the business has no reviews or complaints on BBB
periodTo
Optional
Summary rows: last day the numbers cover, the day of the run (YYYY-MM-DD)
basis
Optional
Summary rows: how many complaints and reviews the numbers come from and how far back, so small samples are obvious Benchmark rows: how the competitors were chosen and measured
complaintsRead
Optional
Summary rows: complaints this run read for the business (null when complaints were not read)
complaintsComplete
Optional
Summary rows: true when every complaint BBB shows was read, so quiet months are real zeros
complaintsFrom
Optional
Summary rows: complaint numbers are complete from this day (YYYY-MM-DD)
complaintsByMonth
Optional
Summary rows: complaints filed in each of the last 12 calendar months, oldest first: month (YYYY-MM), count (null when the run didn't read back that far), partial (the read starts mid-month). The current month is month to date
complaintsLast90Days
Optional
Summary rows: complaints filed in the last 90 days; null when the read doesn't reach back that far
complaintsPrior90Days
Optional
Summary rows: complaints filed in the 90 days before those; null when the read doesn't reach back that far
complaintTrendPct
Optional
Summary rows: change from the prior 90 days to the last 90, in percent (null when either is unknown or the prior count is 0)
complaintStatusCounts
Optional
Summary rows: complaints read per BBB status, as BBB spells it
medianResponseDays
Optional
Summary rows: median days from a complaint being filed to the business's first public reply
p90ResponseDays
Optional
Summary rows: 90th percentile of those days
topComplaintTypes
Optional
Summary rows: up to 5 most common complaint types among complaints read: complaintType, count
reviewsRead
Optional
Summary rows: reviews this run read for the business, including any the stars or replies filter left out of the output (null when reviews were not read)
reviewsComplete
Optional
Summary rows: true when every review BBB shows was read
reviewsFrom
Optional
Summary rows: review numbers are complete from this day (YYYY-MM-DD)
averageStars
Optional
Summary rows: average stars of the reviews read
starCounts
Optional
Summary rows: reviews read per star rating, keys "1" to "5"
reviewsByMonth
Optional
Summary rows: reviews published in each of the last 12 calendar months, same shape as complaintsByMonth
complaintThemesByMonth
Optional
Summary rows: the last 12 months, oldest first, each {month (YYYY-MM), types (complaint counts per BBB complaint type, null when the run didn't read back that far), partial}
risingThemes
Optional
Summary rows: complaint types whose last-90-day count is at least double the 90 days before and at least 3, each {complaintType, last90Days, prior90Days}. An empty list means none; null means the read doesn't reach back 180 days
themeSummary
Optional
Summary rows: one plain sentence on the most common complaint type and any rising types
cohortScope
Optional
Benchmark rows: where the competitors are, like "Austin, TX" (or the state, when the city had fewer than 3)
competitorsCompared
Optional
Benchmark rows: how many local competitors with the same BBB category were compared
rankOverall
Optional
Benchmark rows: overall position among the business and its competitors, like "3 of 11" (1 is best); null when too little data to rank
overallRank
Optional
Benchmark rows: the business's overall rank, 1 is best
overallOf
Optional
Benchmark rows: how many businesses (including this one) were ranked overall
overallPercentile
Optional
Benchmark rows: 0 to 100, the share of competitors the business beats overall (ties count half)
benchmarkMetrics
Optional
Benchmark rows: one entry per measure (grade, stars, complaintsLast12Months, answeredShare, resolvedShare, avgResponseDays): value, rank (1 is best), of, percentile (0 to 100), betterThan, tiedWith, worseThan, cohortMedian, higherIsBetter. rank is null when fewer than 3 businesses have a figure
highlights
Optional
Benchmark rows: 2 to 4 plain sentences, like "Slower to reply than 8 of 10 local competitors (6 days on average)"
cohort
Optional
Benchmark rows: the competitors, best overall first: name, url, grade, stars, complaintsLast12Months, avgResponseDays, isAccredited, overallRank. Their business rows are only returned with includeCompetitorRows
licenseExpiresInDays
Optional
Licence expiry watch, business rows: days until the soonest matching licence expires (negative = already expired, up to 30 days ago)
licenseStatus
Optional
Licence expiry watch, business rows: "expiring", or "expired-recently" when a matching licence ended in the last 30 days
licenseAgencies
Optional
Licence expiry watch, business rows: the bodies that issued the matching licences
expiringLicenses
Optional
Licence expiry watch, business rows: only the matching licences: number, agency, expiresAt, expiresInDays