Scrape used-car listings from Marktplaats.nl, the Netherlands' #1 marketplace (auto's) — price, make, model, year, mileage (km), fuel, transmission, body type, drivetrain, seller (dealer/private), city, and photos. Export to JSON or CSV; optionally enrich with the full Dutch description.
0.3 — 2026-07-28 — restore to main after 30-day success rate 20% (8/10 customer runs failed)
Root cause: actors/marktplaats-netherlands-cars/ never actually existed on
main — the 0.2 residential-proxy-guard fix (2026-06-10) was committed and
QA-passed only on the now-stale branch
fix/marktplaats-netherlands-cars-residential-proxy-guard, which was never
merged. Whatever build is live on the Apify platform therefore is not
reproducible from main's git history; the daily-report 403s are consistent
with the pre-fix (datacenter-proxy) source being what's actually deployed.
Action: ported the complete actor source (already carrying the 0.2
residential-proxy guard) from that branch onto main so the fix can finally
ship through the normal publish gates. No functional code changed relative
to the 0.2 guard — _REQUIRED_GROUP = "RESIDENTIAL",
_ensure_residential_groups override, _resolve_proxy_url fail-loud
RuntimeError, .actor/input_schema.json + tests/fixtures/input.qa.json
RESIDENTIAL default/prefill all verified intact.
Local verify: ruff check clean, pyright clean, pytest -q 24/24 green,
verify_input_prefill.py OK. Local apify run fails with "Proxy external
access isn't enabled for your account" — this is the documented FREE-plan
local-only proxy restriction (not a code regression); cloud runs resolve
RESIDENTIAL normally, per project-cloud-recon-unblocks-proxy.
Force-residential proxy guard: _resolve_proxy_url now always injects
RESIDENTIAL into apifyProxyGroups (overriding empty/missing/other groups)
and raises RuntimeError instead of returning None when the Apify Proxy
RESIDENTIAL group is unavailable — eliminating the no-proxy footgun.