Scrape BizQuest businesses for sale across the US: title, asking price, city, state, teaser, financing, real-estate and SBA tags, photo and listing URL for the nationwide feed or any state or city, deduplicated.
BizQuest businesses-for-sale scraper. src/routes.py builds the proven
route shapes (/businesses-for-sale/, /businesses-for-sale-in-<state>-<xx>/,
/businesses-for-sale-in-<city>-<xx>/) from includeNationwide, locations
and startUrls.
src/parser.py reads the inline JSON-LD SearchResultsPage.about[] (never the
raw anchors), drops franchise ads and broker cards by URL shape, and reads
tag chips and the sign-in gate off the server-rendered card by BW id.
src/scraper.py: run-wide dedupe by BW id, maxPages / maxItems /
empty-page / no-new-listings stops (the site clamps an out-of-range page back
to page 1), per-route fault isolation. 404 is not_found, an empty about[]
on a readable page finishes SUCCEEDED, a block with nothing emitted fails the run.
src/client.py: curl-cffi, rotating impersonation profiles and proxy session
ids, backoff 2s doubling to 30s, 5 attempts; a 200 without the results
JSON-LD is treated as a block, never as empty.
Default proxy is Apify RESIDENTIAL pinned to US.
Offline tests against trimmed real captures (no live network).