All notable changes to this Actor are documented here.
Initial implementation. Exports Wallapop (Spain classifieds) search
results — title, description, price, location, images, and listing
metadata — for one or more keyword queries, no login.
- REQ-1/2/3/7:
WallapopClient (src/client.py) fetches
GET /api/v3/search via curl_cffi.requests.AsyncSession with
rotating browser impersonation (chrome131/chrome124/firefox147/
safari180), follows meta.next_page verbatim, and stops at
max_pages_per_query or when the cursor is absent.
- REQ-4:
WallapopRoutingError classifies the dead-endpoint 403
signature (text/html CloudFront body) with zero retries, distinct
from WallapopRequestError (retry exhaustion on 408/429/503/network
errors, backoff 2s→30s, 5 attempts).
- REQ-5: a genuinely empty search result SUCCEEDS with zero rows and a
status message naming the queries searched; a routing/request
failure fails loud (ERROR log + non-zero exit) with zero PPE charges.
- REQ-6: per-item and per-page fault isolation — a malformed item is
logged and skipped, never crashes the run (
src/scraper.py).
- REQ-8: run-wide
listing_id dedup across every query and page.
- REQ-9: proxy defaults to Apify Proxy datacenter tier
(
apifyProxyGroups: ["BUYPROXIES94952"]) — never Residential, never
a bare useApifyProxy: true.
- REQ-10:
ActorInput/ResultRow are Pydantic v2 models
(src/models.py), keyword-form Field(default=..., ...) throughout.
- REQ-11:
actor-start ($0.20) charges at most once per run, gated
behind the first batch of results that actually reaches the dataset
(_StartFee.charge_once(), ported verbatim from
upwork-job-leads-scraper) — never at boot, never on a zero-row run.
- REQ-12:
listing-scraped ($0.004) charges once per unique row
pushed.
- REQ-13/14/15/16/17: real HTTP calls and parsing against the live
endpoint (fixtures captured from a real
bicicleta search, T03), the
full .actor/ file set, an input_schema.json prefill exercising
page-2 pagination, a Devil Scrapes brand-voice README.md, and
promo.json.
Pricing: $0.20 actor-start + $0.004/listing (≈$4.00–4.20 / 1,000
results depending on batch size).