Poshmark Scraper — Listings, Prices, Sold Comps & Seller Leads
Pricing
from $1.50 / 1,000 results
Poshmark Scraper — Listings, Prices, Sold Comps & Seller Leads
Scrape Poshmark listings across the US & Canada. Search any keyword or department and pull price, size, brand, condition, colors, photos, likes and seller username/name for lead-gen — plus sold-item price history (sold comps). Fast, structured, no login.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Poshmark Scraper — Listings, Prices, Sold Comps & Seller Leads (US & Canada)
Extract Poshmark listings at scale — with prices, sizes, brands, conditions, photos, likes, seller profiles, and sold-item price history. Search any keyword or browse a whole department across the US and Canada marketplaces and get clean, structured JSON, CSV or Excel in seconds. Built for resellers, brands, sourcing teams, market researchers, and lead-gen — no login, no cookies, no fuss.
What This Actor Does
The Poshmark Scraper turns any Poshmark search into a structured dataset. Give it a keyword (nike air max, lululemon leggings, vintage levis), pick a department, choose available or sold listings, and it returns every listing as a clean row with:
- Pricing — current price, original/listing price, and currency (USD or CAD)
- Product — title, brand, size, condition, department, category, colors
- Media — cover photo plus all listing photos
- Engagement — like count and comment count (a proxy for demand)
- Availability — available vs. sold-out status
- Seller (lead-gen) — seller username, full name, and a direct link to their closet
- Description — the full listing description text
It works across the two active Poshmark marketplaces — United States (poshmark.com) and Canada (poshmark.ca) — and paginates deep past the first page so you can pull hundreds or thousands of listings per query.
Two things most Poshmark tools skip — and this one nails
- Sold comps (price history). Flip the status to Sold and you get recently sold listings with their final prices — the single most valuable input for pricing a resale item correctly. Stop guessing what a piece will sell for; see what it actually sold for.
- Seller leads. Every listing carries the seller's username, display name and closet URL, so you can build lists of active sellers by niche, brand, or category for outreach, recruiting, or partnership.
Why Use This Instead of Copy-Pasting or Building Your Own
Scraping Poshmark by hand or with a naive script gets painful fast:
- The site is a JavaScript app — a plain
curlof the page returns an almost-empty shell with no listing data. - Listings load through infinite scroll, and the pagination cursor is easy to get wrong — most DIY scripts pull the first ~40 results and then silently re-fetch the same page forever.
- Prices, sizes and brands come back in nested, inconsistent shapes that need normalizing before they're usable in a spreadsheet or database.
- Photos, seller info and sold-status live in different parts of the payload and are easy to miss.
- Running at any real volume means handling retries, backoff and rate politely so you don't get throttled.
This Actor handles all of it: correct deep pagination, clean camelCase fields, full photo arrays, seller lead extraction, sold-comp support, retries with backoff, and dedup — so you get a tidy dataset instead of a debugging project.
Quick Start
Run it in the console (no code)
- Open the Actor and click Try for free.
- Type a Search keyword (e.g.
lululemon leggings) — or leave it empty and pick a Department to browse. - Choose Listing status: Available (currently for sale), Sold (for sold comps / price history), or Both.
- Set Max listings and click Start.
- Download your data as JSON, CSV, Excel, or HTML, or push it to Google Sheets, a database, or a webhook.
Run it via API (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"query": "lululemon leggings","marketplace": "us","inventoryStatus": "available","sortBy": "newest","maxItems": 300,}run = client.actor("YOUR_USERNAME/poshmark-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["price"], item["sellerUsername"])
Pull sold comps for pricing (Python)
run_input = {"query": "nike dunk low panda","inventoryStatus": "sold", # <-- recently SOLD listings"sortBy": "newest","maxItems": 100,}run = client.actor("YOUR_USERNAME/poshmark-scraper").call(run_input=run_input)prices = [i["price"] for i in client.dataset(run["defaultDatasetId"]).iterate_items() if i["price"]]prices.sort()print("sold count:", len(prices))print("median sold price:", prices[len(prices)//2] if prices else None)
Run it via API (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('YOUR_USERNAME/poshmark-scraper').call({query: 'coach bag',marketplace: 'ca',inventoryStatus: 'available',maxItems: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, 'listings');
Input Parameters
| Field | Type | Description |
|---|---|---|
query | string | Keyword to search across title, brand, category and description (e.g. nike air max). Leave empty to browse a whole department. |
marketplace | select | us (poshmark.com) or ca (poshmark.ca). Default us. |
department | select | All, Women, Men, Kids, Home, Electronics, or Pets. Default All. |
inventoryStatus | select | available (for sale), sold (sold comps / price history), or all (both). Default available. |
sortBy | select | relevance, newest, price_high_low, price_low_high, or most_liked. Default relevance. |
maxItems | integer | Maximum listings to return. Default 100. A single query tops out around 5,000 results. |
proxyConfiguration | object | Optional. Works fine without a proxy; use one for very large volumes or a specific country. |
Tip: To pull a large slice of a brand or category, combine a specific query with sortBy: newest and a higher maxItems. To research pricing, run the same query twice — once with inventoryStatus: available and once with sold — and compare.
Output
Each listing is one dataset record. Example:
{"id": "6aa89243ab650b40c9f900c9","title": "Nike Dallas Cowboys Salute to Service Therma Fit Hoodie Black Camo Size Small","listingUrl": "https://poshmark.com/listing/6aa89243ab650b40c9f900c9","price": 25,"originalPrice": null,"currency": "USD","brand": "Nike","size": "S","condition": "ug","newWithTags": false,"department": "Men","category": "Sweatshirts & Hoodies","colors": ["Black", "Green"],"status": "available","likeCount": 3,"commentCount": 0,"description": "Brand new without tags. Ships same day...","coverImage": "https://.../m_6aabd9d9....jpg","images": ["https://.../a.jpg", "https://.../b.jpg"],"sellerUsername": "fabricreimagine","sellerName": "Fabric Reimagined","sellerId": "5df81b0d0b26fa7299d16814","sellerProfileUrl": "https://poshmark.com/closet/fabricreimagine","createdAt": "2026-09-17T05:13:40-07:00","scrapedAt": "2026-09-23T18:20:00.000Z"}
Field reference
| Field | Meaning |
|---|---|
id, title, listingUrl | Listing identity and direct link |
price, originalPrice, currency | Current price, original price (when set), and currency |
brand, size, condition, newWithTags | Product attributes; newWithTags is true for NWT listings |
department, category, colors | Classification and colors |
status | available or sold_out |
likeCount, commentCount | Engagement signals (demand proxy) |
description | Full listing description |
coverImage, images | Main photo and all photos |
sellerUsername, sellerName, sellerId, sellerProfileUrl | Seller lead data + closet link |
createdAt, scrapedAt | Listing creation time and scrape timestamp |
Use Cases
1. Reseller pricing & sold comps
Before you list, pull inventoryStatus: sold for the exact item and see the real distribution of final sale prices. Price to sell, not to sit. Track median sold price by brand, size, and condition over time.
2. Brand & category market research
How many active Nike listings are there this week? What's the average asking price for Lululemon leggings by size? Pull a brand across a department and build a live pricing and inventory snapshot.
3. Sourcing & arbitrage
Sort by price_low_high and scan for underpriced listings in a category you know well. Combine available prices with sold comps to spot margin opportunities.
4. Seller lead generation
Every record includes the seller's username, name and closet URL. Build targeted lists of active sellers in a niche — for wholesale outreach, consignment recruiting, cross-listing services, or partnership offers.
5. Trend & demand tracking
likeCount and commentCount are lightweight demand signals. Track which brands, styles or keywords are accumulating likes fastest and spot momentum early.
6. Inventory & competitor monitoring
Running a closet or a resale business? Monitor competing listings in your categories, watch price drops, and keep an eye on what's selling and what's sitting.
7. Dataset building for analytics & AI
Assemble clean, structured secondhand-fashion datasets for pricing models, recommendation engines, or resale-market dashboards.
Sold Comps: The Pricing Superpower
Most listing scrapers only show you what sellers hope to get. This Actor also pulls what items actually sold for. Set inventoryStatus to sold, search the item, and you get a list of recently sold listings with final prices — the closest thing to a "market price" on Poshmark.
A simple recipe for any item:
- Run the query with
inventoryStatus: sold,sortBy: newest. - Take the median of
priceacross results — that's your realistic sale price. - Run the same query with
inventoryStatus: availableto see current competition and how your price stacks up.
Frequently Asked Questions
Which Poshmark marketplaces are supported?
The two active ones: the United States (poshmark.com) and Canada (poshmark.ca). Prices come back in USD and CAD respectively.
Do I need a Poshmark login or cookies? No. The Actor reads publicly visible listing data — no account, login, or cookies required.
How many listings can I get per run? A single query returns up to roughly 5,000 listings. For broader coverage, split your search into narrower queries (by brand, department, or keyword) and run them in parallel.
Can I get the full price history of a single item?
Poshmark doesn't expose a per-listing price-change log, but sold mode gives you the sold-price distribution for a search — which is what you actually need to price accurately.
Is the seller's email or phone included? No. The Actor returns the seller's public username, display name and closet URL only. It does not extract private contact details.
How fast is it?
Roughly 100 listings in about 4 seconds for a typical query, scaling near-linearly with maxItems.
What formats can I export? JSON, CSV, Excel, HTML, or via API. You can also connect it to Google Sheets, webhooks, Make, Zapier, or your own pipeline.
Can I schedule it? Yes — use Apify Schedules to run daily/weekly and build a time series of prices, inventory, and sold comps.
Tips for Best Results
- Be specific with
query.nike dunk low pandareturns a tighter, more useful set than justnike. - Use
newestfor deep pulls. It paginates reliably when you want a large, fresh slice of a category. - Pair available + sold. Two quick runs give you both the competitive landscape and the real sale prices.
- Split big jobs. Several narrow queries beat one huge one for both speed and coverage.
- Schedule for trends. Daily runs turn snapshots into a price-and-demand time series.
Legal & Responsible Use
This Actor collects only publicly available listing information and is intended for legitimate research, pricing, analytics and business use. You are responsible for how you use the data. Please:
- Respect Poshmark's Terms of Service and robots directives.
- Comply with applicable data-protection laws (GDPR, CCPA, etc.) when handling any personal data such as seller usernames.
- Do not use the data for spam, harassment, or any unlawful purpose.
- Use reasonable request volumes and scheduling.
This project is an independent tool and is not affiliated with, endorsed by, or sponsored by Poshmark.