Scrape live Poshmark listings by search keyword or department/category — price, condition, size, brand, seller, and photos per row, fully resolved with zero per-item fetches. We rotate fingerprints and retry blocks so your dataset stays clean.
Scaffolded: .actor/ (actor.json with categories: ["ECOMMERCE"],
input_schema.json / dataset_schema.json / output_schema.json
matching design.md field-for-field, pay_per_event.json with the
spec's 2 final events, Dockerfile), throwaway placeholder
src/models.py (bare ActorInput/ResultRow) and src/scraper.py
(NotImplementedError stub) so the repo's ADR-0004 Pydantic-wiring
gate (scripts/verify_pydantic.py) passes at scaffold time,
placeholder src/main.py (boots, validates input, pushes one
{"placeholder": true, ...} row, exits — no real crawler), test
scaffold (tests/conftest.py, tests/test_main.py), the QA fixture
(tests/fixtures/input.qa.json, spec's own live-verified
query="nike jacket"), README skeleton, scaffold.json,
promo.json.
.actor/icon.svg deferred to actor-icon-designer (Poshmark "P"
wordmark inside the canonical Devil Scrapes container).
Real implementation (src/parser.py, src/client.py, the real
src/models.py / src/scraper.py / src/main.py) is not
implemented yet — see
docs/specs/poshmark-listings-scraper/tasks.md (T01-T08).