# Changelog of BBB Business Leads Scraper (`devilscrapes/bbb-business-leads-scraper`) Actor

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

## BBB Business Leads Scraper — Changelog

### 0.1 — 2026-08-12

Initial build. Dual-mode discovery/enrichment Actor for bbb.org:

- `searchQueries` (category+location discovery, paginated, throttled) and
  `profileUrls` (direct-URL enrichment) input modes, combined into one
  deduplicated (by `business_id`) target queue.
- `webDigitalData` inline-JSON extraction merged with DOM-parsed fields
  (address, accreditation date, years in business, website, category,
  complaint/review counts) into a single `ResultRow` per business.
- `curl-cffi` only, no browser automation — proxy hardcoded to Apify
  group `BUYPROXIES94952`, the only group confirmed (2026-08-12 cloud
  recon) to clear bbb.org's Cloudflare wall. WebShare and RESIDENTIAL
  are both confirmed-blocked for this target and are never used.
- Per-item fault isolation (one bad business never crashes the run),
  fail-loud on a zero-row run, partial-success status messages.
- Pydantic v2 `ActorInput`/`ResultRow` (ADR-0004); PPE `actor-start` +
  `business-scraped` (~$1.20/1,000 blended).
- REQ-1 through REQ-12 covered — see `docs/specs/bbb-business-leads-scraper/spec.md`.
- Local-green: 76 tests passing, ruff clean, prefill verified.
- **Not yet cloud-verified**: search pagination param and detail-page DOM
  selectors are best-effort guesses against fixtures marked
  `FIXTURE — synthetic, pre-cloud-recon`. `src/recon_cloud.py` is wired
  to confirm/correct these against live traffic — the orchestrator runs
  it (and full cloud QA) before publish.

### 0.0.1 — 2026-08-12

- Scaffolded: `.actor/` (actor.json, input/output/dataset schemas, PPE,
  Dockerfile), placeholder `src/main.py`, tests, README skeleton.
