Isolated structured listing JSON, exact requested-item identity, unknown availability, SDK spending limits, listing-only dataset with KVS diagnostics, query-scoped persistent delivered-ID monitoring, honest coverage and MCP workflows.
- Reliability: every Facebook fetch now uses a total wall-clock deadline across
cookie warm-up, desktop/mobile variants, retries and backoff. Increasing
maxRetries can no longer multiply a job into a platform-level timeout.
- Added a 240-second internal run deadline. Completed listings and a partial
summary are saved before unfinished jobs are cancelled.
- Detail enrichment now has a separate 15-second budget and degrades to the
already parsed search-card result instead of blocking the whole run.
- Summary diagnostics count incomplete detail enrichments and mark the run
partial while preserving every available base listing.
- Generated coverage jobs are capped, unexpected job errors are isolated, and
summaries report
timedOutJobs plus partial.
- Local deployment/test helpers now read the Apify CLI token from Windows
Credential Manager when the newer
auth.json contains no plaintext token.
- Store listing (SEO): retitled to Facebook Marketplace Scraper - Listings, Prices, Sellers & Contacts (No Login) and rewrote the description around high-intent keywords. Added an end-of-run rating prompt.
- Cost/profitability: the facebook.com warm-up request no longer downloads the
page body (only the datr cookie from headers is needed), cutting residential
bandwidth ~40-50% per job — keeps even single-result runs comfortably profitable.
- Coverage expansion ("pagination") — when
maxItems > ~24, each search term is re-queried across multiple sort orders (newest, price asc/desc, distance) and deduped, surfacing 2-6× more unique listings per run (live test: 84 vs ~15-40 from one page). Toggle with expandCoverage.
- Coordinates —
latitude / longitude now extracted when present (listing detail pages; the search feed only carries city/state).
- ponytail note: this is heuristic coverage, not true deep cursor pagination — FB's GraphQL cursor needs a rotating
doc_id that isn't in the page. Documented upgrade path retained.
- No-login search confirmed working on Apify: direct fetch with browser-grade
headers and an anonymous cookie warm-up avoids the login redirect, and the
parser reads the real search feed — title, price, strikethrough price, image,
location (city/state), delivery types, category, status.
- Full description / seller / contacts come from the listing's own page → use
enrichDetails or item-URL mode.
- Kept: hard
maxItems cap, dedup, retries, incremental onlyNew, real-time webhook, video + seller-rating fields, debug probe.
- Initial release (no-login, direct fetch).