Poshmark Listings Scraper avatar

Poshmark Listings Scraper

Pricing

Pay per event

Go to Apify Store
Poshmark Listings Scraper

Poshmark Listings Scraper

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.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Categories

Share


🎯 What this scrapes

Poshmark doesn't publish a clean bulk-export of its own listings, and the field's own volume leader has zero reviews to show for 3,000+ runs. This Actor reads Poshmark's own server-rendered search and category pages — the same window.__INITIAL_STATE__ payload the site ships to every browser, not a private reverse-engineered endpoint — so resale-market researchers and inventory tools get fully-resolved listing data (price, condition, seller, brand, photos) in one pass, no per-item detail fetch required.

🔥 What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python.
  • 🌐 Proxy rotation via Apify Proxy — fresh session and exit IP on every block.
  • 🔁 Retries with exponential backoff on 408 / 429 / 503 — up to 5 attempts per page, Retry-After honoured.
  • 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.

💡 Use cases

  • Reseller comps pricing — pull current asking prices by keyword or category before pricing your own inventory.
  • Inventory sourcing — scan a category for underpriced items matching a brand or condition profile.
  • Brand monitoring — track how many listings and what price band a brand holds on Poshmark right now.
  • Resale-market research — build a keyword-level snapshot of active supply, condition mix, and seller activity.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — provide a search query, a category, or both (query wins when both are set).
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
querystringno*'—'Free-text search keyword, e.g. "nike jacket". Takes precedence over category when both are set.
categorystringno*'—'Department/category path to browse instead of searching, e.g. "Women-Dresses". Ignored when query is also set.
maxResultsintegerno200Cap on total emitted rows per run. Pagination stops early once reached.
proxyConfigurationobjectno{"useApifyProxy": true}Datacenter proxy by default. Never set this to the RESIDENTIAL group — it has zero available IPs on the free plan.

* At least one of query / category is required.

Example input

{
"query": "nike jacket",
"maxResults": 3,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
listing_idstringPoshmark's own listing ID.
titlestringListing title.
description['string', 'null']Listing description.
pricenumberCurrent asking price, USD.
original_price['number', 'null']Original asking price before any markdown, USD.
currencystringPrice currency code, default 'USD'.
condition['string', 'null']Poshmark's own condition short code, e.g. 'uln'.
size['string', 'null']Listing size, display form when available.
brand['string', 'null']Brand tag.
department['string', 'null']Department, e.g. 'Men'.
category['string', 'null']Category, e.g. 'Jackets & Coats'.
seller_usernamestringSeller's Poshmark username.
seller_full_name['string', 'null']Seller's display name.
like_countintegerNumber of likes.
comment_countintegerNumber of comments.
statusstringListing status, e.g. 'published'.
is_availablebooleanDerived: true when inventory status is 'available'.
colorsarrayListed color tags — may be empty, never null.
picture_url['string', 'null']Cover photo URL.
photo_urlsarrayAll listing photo URLs — may be empty, never null.
listing_urlstringCanonical poshmark.com/listing/ URL, constructed with no extra fetch.
scraped_atstringISO-8601 UTC timestamp when this row was recorded.

Example output

{
"listing_id": "6a6e55a3b14a06829f1dc05f",
"title": "Nike Sb Jacket",
"description": null,
"price": 70.0,
"original_price": null,
"currency": "USD",
"condition": "uln",
"size": "L",
"brand": "Nike",
"department": "Men",
"category": "Jackets & Coats",
"seller_username": "closet_example",
"seller_full_name": "Example Seller",
"like_count": 12,
"comment_count": 2,
"status": "published",
"is_available": true,
"colors": [
"Black"
],
"picture_url": "https://di2ponv0v5otw.cloudfront.net/posts/2026/08/10/example.jpg",
"photo_urls": [
"https://di2ponv0v5otw.cloudfront.net/posts/2026/08/10/example.jpg"
],
"listing_url": "https://poshmark.com/listing/Nike-Sb-Jacket-6a6e55a3b14a06829f1dc05f",
"scraped_at": "2026-08-15T12:00:00.000Z"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.05One-off warm-up charge per run
listing-result$0.0015Charged for each listing row written to the dataset

Example: 1 000 results at the rates above ≈ $1.55. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

Sold/historical listings and seller-closet crawls are out of scope — only live, published listings from the search/category grid are returned. Custom sort order isn't supported; results follow Poshmark's own default relevance/recency ranking. Non-US Poshmark storefronts are unverified and out of scope for v1.

❓ FAQ

Do I need a Poshmark account or API key?

No. This Actor reads Poshmark's own publicly server-rendered search and category pages — no login, no API key.

What happens if I set both Search query and Category?

Search query wins — Category is ignored and a warning is logged. Neither endpoint accepts a combined filter.

Do I need a residential proxy?

No — Poshmark's search and category pages return clean 200s from datacenter IPs. proxyConfiguration defaults to standard Apify Proxy, no forced group.

Does this fetch each listing's detail page?

No — the search/category grid data already carries every field this Actor emits, so there's no extra per-item HTTP call.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.