Scrape Discogs marketplace listings (asking prices, seller, condition, ships-from) plus public marketplace stats for any release ID or search query. Public API + HTML. No login.
Add prefill to the discriminating input field so Apify's automated daily QA receives a runnable payload. Empty-input runs were tripping the Pydantic model_validate XOR/required-field check inside 100 ms, which after three consecutive days flagged the Actor "Under maintenance" and unlisted it from the Apify Store.
[0.0.2] — 2026-05-17
Default useProxy=true — Cloudflare 403s un-proxied Apify datacenter
IPs on the marketplace HTML surface (caught only by cloud QA).
HTML client treats 403 as retriable (alongside 408 / 429 / 503)
so a fresh proxy session can be tried between attempts.
[0.0.1] — 2026-05-16
Initial public release.
Two-source pipeline: Discogs JSON REST API (release metadata + marketplace
stats + search) plus public marketplace HTML (per-listing asking prices,
seller, condition, ships-from).
Pydantic v2 input + output models (ADR-0004); single ResultRow schema
with a row_type discriminator distinguishes per-listing rows from
per-release stats rows.
curl-cffichrome131 impersonation + one-shot Discogs homepage warm-up
passes Cloudflare cleanly (verified live 2026-05-16, no JS challenge).
Discogs REST API requires a custom User-Agent
(DevilScrapes/0.1 (+https://apify.com/DevilScrapes)) — Discogs rejects
default curl-cffi UAs with 403.
Conservative pacing (INTER_REQUEST_SLEEP_S = 1.5, ~40 req/min) under
Discogs' 60 req/min API limit and 25 req/min HTML limit.
PPE: actor-start $0.05, result-row $0.005 — ~$5.05 per 1,000 rows.
Input XOR: exactly one of releaseIds or searchQuery must be set
(validated before any network call).
Per-release fail isolation; only an entirely empty dataset triggers a
non-zero exit.