Poshmark Scraper — Listings, Prices, Sold Comps & Seller Leads avatar

Poshmark Scraper — Listings, Prices, Sold Comps & Seller Leads

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Poshmark Scraper — Listings, Prices, Sold Comps & Seller Leads

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

  1. 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.
  2. 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 curl of 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)

  1. Open the Actor and click Try for free.
  2. Type a Search keyword (e.g. lululemon leggings) — or leave it empty and pick a Department to browse.
  3. Choose Listing status: Available (currently for sale), Sold (for sold comps / price history), or Both.
  4. Set Max listings and click Start.
  5. 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 ApifyClient
client = 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

FieldTypeDescription
querystringKeyword to search across title, brand, category and description (e.g. nike air max). Leave empty to browse a whole department.
marketplaceselectus (poshmark.com) or ca (poshmark.ca). Default us.
departmentselectAll, Women, Men, Kids, Home, Electronics, or Pets. Default All.
inventoryStatusselectavailable (for sale), sold (sold comps / price history), or all (both). Default available.
sortByselectrelevance, newest, price_high_low, price_low_high, or most_liked. Default relevance.
maxItemsintegerMaximum listings to return. Default 100. A single query tops out around 5,000 results.
proxyConfigurationobjectOptional. 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

FieldMeaning
id, title, listingUrlListing identity and direct link
price, originalPrice, currencyCurrent price, original price (when set), and currency
brand, size, condition, newWithTagsProduct attributes; newWithTags is true for NWT listings
department, category, colorsClassification and colors
statusavailable or sold_out
likeCount, commentCountEngagement signals (demand proxy)
descriptionFull listing description
coverImage, imagesMain photo and all photos
sellerUsername, sellerName, sellerId, sellerProfileUrlSeller lead data + closet link
createdAt, scrapedAtListing 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:

  1. Run the query with inventoryStatus: sold, sortBy: newest.
  2. Take the median of price across results — that's your realistic sale price.
  3. Run the same query with inventoryStatus: available to 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 panda returns a tighter, more useful set than just nike.
  • Use newest for 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.

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.