# Changelog of BBB Scraper (`haketa/bbb-scraper`) Actor

- **URL**: https://apify.com/haketa/bbb-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/haketa/bbb-scraper.md

## Changelog

### 1.1.0 — 2026-11-01

- **Major extraction fix — BBB redesign support.** BBB migrated its search and profile pages to a React/Next.js app that embeds all structured data in a `window.__PRELOADED_STATE__` JSON object. The previous CSS-class + free-text parsers had silently regressed to `null` for most enrichment fields. The scraper now reads `__PRELOADED_STATE__` as the authoritative, redesign-proof source (with the legacy JSON-LD / CSS / regex strategies retained as fallbacks that only fill gaps).
- **Fixed `bbbRating` on search cards.** Listing-only runs (`scrapeDetails: false`) now return the BBB letter grade (A+ … F) for every card — previously `0%`, now ~100%. Also recovered `phone`, `categories`, `city`, `state` and `zipCode` on search cards from the page state.
- **Fixed detail-page enrichment.** With `scrapeDetails: true`, coverage jumped from near-zero to high across the board: `isAccredited`, `accreditationSince`, `complaintsTotal`, `complaintsLast3Yrs`, `complaintsLast12Mo`, `reviewCount`, `averageReviewRating`, `categories`, `businessType`, `ownerName`, `yearsInBusiness`, `businessStartDate` and `zipCode` now populate reliably (identity + rating + complaints + reviews at ~100% in verification).
- **Correct stable `bbbId`.** The business identifier is now taken from the page state's `businessId` (e.g. `91349575`), matching the trailing digits of the profile URL slug.
- **Date normalization.** `accreditationSince` and `businessStartDate` are normalized from BBB's ISO timestamps to US `M/D/YYYY` display format for a stable, backward-compatible column.
- **Verified:** fresh run of 400 unique businesses across 5 US metros with 0 duplicates, 100% identity-field coverage (businessName / profileUrl / city / state) and the recovered `bbbRating` present on search cards; a detail-mode sample confirmed accreditation, complaints and review fields populate at ~100%.
- **Docs:** README refreshed to the current output schema and field coverage, pagination/scale note corrected to BBB's 15-results-per-page / 15-page-per-query reality, and FAQ / related-scrapers sections updated.

### 1.0.0 — 2026-05

- Initial public release: headed Playwright Chromium with Cloudflare challenge handling, USA + Canada coverage, search-card and full-detail extraction, BBB rating + accreditation + complaint counts + reviews + owner + firmographics + social media, pay-per-event pricing.
