Poshmark Sold Listings Scraper avatar

Poshmark Sold Listings Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Poshmark Sold Listings Scraper

Poshmark Sold Listings Scraper

[๐Ÿ’ฐ $2.00 / 1K] Extract Poshmark sold listings and active listings โ€” final sold price, sold date, days-to-sell, brand, size, condition, and seller username. The sold-comps data Poshmark hides, with brand, department, price, and condition filters.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Pull real sold-comp data from Poshmark at scale โ€” final sold prices, exact sold dates, and days-to-sell that Poshmark never shows you, plus brand, size, condition, colors, and seller handle on every row. Search many keywords in one run and get one clean row per listing, ready for a spreadsheet or your pricing model. Built for resellers, sourcing pros, and brand analysts who need accurate Poshmark sold comps without manually scrolling through closed listings one page at a time.

Why This Scraper?

  • Real sold comps Poshmark hides โ€” every sold row carries the final sold price, the exact sold date, and a computed days-to-sell, the three numbers Poshmark removes from its public UI the moment an item sells.
  • Sold or active in one toggle โ€” flip listingStatus between sold comps (what items actually fetched) and live listings (what the current market is asking), instead of being locked to sold-only.
  • Multi-keyword batch search โ€” feed a whole product list into searchQueries and run every search in a single job; no one-keyword-per-run limit.
  • 7 departments โ€” scope to Women, Men, Kids, Home, Pets, Electronics, or leave on All departments.
  • 4 sort modes that hold across every keyword โ€” Most recent first, Price: low to high, Price: high to low, or Most liked, applied to the finished result set end to end rather than restarting at each keyword, so a 10-keyword job is one sorted list and not 10 stacked ones. Most recent first means the exact date each item changed hands on a sold run, so the top of your sheet is what the market paid this week, and the newest listings on an active run.
  • Brand-family filtering โ€” pass a single brand name (e.g. Nike, Coach) to scope results to that brand and its sub-labels, so "Nike" also pulls in Nike Air Jordan listings.
  • New-With-Tags-only filter โ€” narrow to brand-new, tagged inventory for deadstock and retail-arbitrage research.
  • Price-band filtering in USD โ€” set a minPrice, a maxPrice, or both to focus on a single price tier.
  • Live-show flyers, giveaways and bulk pallet lots filtered out โ€” Poshmark sellers post "listings" that are show flyers, giveaway notices, "unlisted inventory" placeholders priced up to the $50,000 ceiling, and pallet batches numbered 001 to 053 at one flat price that a seller creates and marks sold within seconds. On a designer-handbag search these can be 96% of what the site returns, and a single pallet burst took 18% of a dresses search. All of them are dropped automatically and replaced with real sales, so you never pay for a row you cannot price against โ€” while genuine mystery boxes, clothing lots and items sold live during a show stay in.
  • Repeat copies of one item collapsed to a single comp โ€” Poshmark gives sellers a "copy listing" button, and one physical item comes back as several separate paid rows; measured across 15 sold searches it is 6% of rows and reaches 29% on watches. Matching copies are recognised by seller, photo, price and size together, then removed and replaced with genuinely different items, so your median is not dragged toward whatever one seller duplicated. Different sizes of the same style stay as the separate sales they are.
  • Fabricated retail prices removed โ€” sellers with no retail price to enter type filler into the box (999, 88888, 123456), and those land in the original-price column where they inflate every discount and resale-margin figure computed from it. Filler is detected by pattern and by how far it sits from the actual sold price, so a $19 dress no longer claims a $22,222 retail while a genuine $55,296 Birkin keeps its real number.
  • Full listing detail on every row, no extra step โ€” each result already carries the complete seller description, every listed color, style tags, Poshmark category, the like, comment, and share counts, the original retail price for sell-through math, the condition in Poshmark's own words (New With Tags, Boutique, Like New, Good, Fair, Pre-owned) so you can price a Good tee against a Like New one, and every photo on the listing at full size โ€” 7 per item on average, up to 16 โ€” front, back, tags, flaws and all, not just the cover shot. No second lookup needed.

Use Cases

Reseller Pricing & Sourcing

  • Build a fresh sold-comp set for any item before you list, so you price to what actually sells.
  • Measure days-to-sell across brands and price bands to find the fastest-moving inventory.
  • Spot underpriced active listings to flip by comparing live asks against recent sold prices.

Brand & Market Research

  • Track real resale values for a single brand across departments over time.
  • Compare New-With-Tags sell-through against used-condition listings for the same product.
  • Benchmark a brand's secondary-market pricing against its retail price using the original-price field.

Inventory Valuation

  • Value a closet or consignment lot by pulling sold comps for each item and summing realistic exit prices.
  • Audit which size and color combinations command a premium within a brand.

Trend Analysis

  • Watch which styles, colors, and tags are selling fastest in a category.
  • Quantify demand by sorting on Most liked and cross-referencing likes against sold dates.

Getting Started

Simple โ€” one keyword, sold comps

{
"searchQueries": ["Lululemon leggings"]
}

Filtered โ€” one brand, New With Tags, price band

{
"searchQueries": ["Coach handbag"],
"listingStatus": "sold",
"brand": "Coach",
"condition": "nwt",
"minPrice": 50,
"maxPrice": 300,
"sortBy": "sold_recently",
"maxResults": 500
}

Advanced โ€” multi-keyword batch, full filters

{
"searchQueries": ["Nike Air Jordan 1", "Adidas Samba", "New Balance 990"],
"listingStatus": "sold",
"department": "men",
"condition": "all",
"minPrice": 80,
"maxPrice": 600,
"sortBy": "price_desc",
"maxResults": 2000
}

Input Reference

ParameterTypeDefaultDescription
searchQueriesarray of strings["Lululemon leggings"]Keywords, brands, or phrases to look for. Add several entries to run multiple searches in one job.
listingStatusstring (select)soldsold for items that already sold (sold comps) or available for items still for sale.

Filters

ParameterTypeDefaultDescription
departmentstring (select)allOne of All departments, Women, Men, Kids, Home, Pets, Electronics.
brandstring(empty)Return only items from this brand and its sub-labels (e.g. "Nike" also returns Nike Air Jordan). Leave empty to include every brand.
conditionstring (select)allall for any condition or nwt for New With Tags only.
minPriceinteger(none)Only return items at or above this price in USD.
maxPriceinteger(none)Only return items at or below this price in USD.
sortBystring (select)sold_recentlyMost recent first (newest sales on a sold search, newest listings on an active one), Price: low to high, Price: high to low, or Most liked.

Options

ParameterTypeDefaultDescription
maxResultsinteger100Maximum listings to collect across all searches. With several keywords the limit is shared evenly between them, so every keyword contributes. Set to 0 for no limit.
includePlaceholderListingsbooleanfalseKeep Live show flyers, giveaway notices, and bulk pallet or "unlisted inventory" placeholders in the results. Off by default so every row is a real item.

Output

Each listing is one flat row. Example sold-comp result:

{
"listingId": "65f1a2b3c4d5e6f7a8b9c0d1",
"title": "Lululemon Align High-Rise Leggings 25\" Black Size 6",
"brand": "lululemon athletica",
"size": "6",
"department": "Women",
"category": "Pants & Jumpsuits",
"colors": ["Black"],
"description": "Excellent used condition, no pilling. Inseam 25\".",
"condition": "not_nwt",
"conditionLabel": "Pre-owned",
"nwt": false,
"soldPrice": 58.0,
"originalPrice": 98.0,
"status": "sold",
"soldAt": "2026-05-28T14:21:09Z",
"listedAt": "2026-05-10T09:03:44Z",
"daysToSell": 18,
"styleTags": ["align", "leggings"],
"likesCount": 42,
"commentsCount": 3,
"shareCount": 7,
"sellerUsername": "closetdeals22",
"sellerName": "Jamie R.",
"thumbnailUrl": "https://di2ponv0v5otw.cloudfront.net/posts/.../s_cover.jpg",
"imageUrls": [
"https://di2ponv0v5otw.cloudfront.net/posts/.../l_cover.jpg",
"https://di2ponv0v5otw.cloudfront.net/posts/.../l_photo2.jpg",
"https://di2ponv0v5otw.cloudfront.net/posts/.../l_photo3.jpg",
"https://di2ponv0v5otw.cloudfront.net/posts/.../l_photo4.jpg",
"https://di2ponv0v5otw.cloudfront.net/posts/.../l_photo5.jpg"
],
"url": "https://poshmark.com/listing/65f1a2b3c4d5e6f7a8b9c0d1",
"isPlaceholderListing": false,
"scrapedAt": "2026-06-02T17:45:00Z"
}

Core Fields

FieldTypeDescription
listingIdstringPoshmark listing identifier.
titlestringListing title.
brandstringBrand name as listed.
sizestringItem size with its size system.
departmentstringDepartment the item is listed in.
categorystringPoshmark category for the item.
colorsarray of stringsColors listed on the item.
descriptionstringFull listing description.
conditionLabelstringCondition in plain words, exactly as Poshmark shows it on the listing: New With Tags, Boutique, Like New, Good, Fair, or Pre-owned. Empty when the seller left the condition unset.
conditionstringPoshmark's own short condition tag behind conditionLabel (nwt, ret, uln, ug, uf, not_nwt), kept for anyone already matching on it.
nwtbooleanWhether the item is New With Tags.
styleTagsarray of stringsStyle tags applied by the seller.
urlstringFull listing URL.
isPlaceholderListingbooleantrue when the listing is a Live show flyer, giveaway notice, or a bulk pallet / "unlisted inventory" placeholder rather than a real item. Always false unless you turn on includePlaceholderListings.
scrapedAtstring (ISO 8601)When the row was collected.

Pricing & Status

FieldTypeDescription
soldPricenumberThe sold price on sold listings, the current asking price on active ones. The results table heads this column Sold / Asking Price so an active-listing run never reads as a completed sale; check status to tell the two apart.
originalPricenumberOriginal retail price, or null when the seller did not enter one.
statusstringsold or available.

Dates & Velocity

FieldTypeDescription
soldAtstring (ISO 8601)Date the item sold (sold listings only).
listedAtstring (ISO 8601)Date the item was first listed.
daysToSellintegerDays between listed and sold.

Seller & Engagement

FieldTypeDescription
sellerUsernamestringSeller handle.
sellerNamestringSeller display name.
likesCountintegerNumber of likes on the listing.
commentsCountintegerNumber of comments.
shareCountintegerNumber of shares.

Media

FieldTypeDescription
thumbnailUrlstringCover photo, small size โ€” the image Poshmark shows on the search grid.
imageUrlsarray of stringsEvery photo on the listing at full size, cover shot first, one entry per photo. Averages 7 per listing and goes up to 16.

Tips for Best Results

  • For pricing research, combine listingStatus: sold with sortBy: sold_recently to build the freshest possible comp set: the run walks backwards from the most recent sale, so a few hundred rows on a busy keyword usually covers the last day or two of trading, while a niche keyword reaches back weeks.
  • Sold results top out at 5,000 per keyword. To dig deeper into a popular product, split the keyword by a brand or a tight minPrice/maxPrice band and run several focused searches instead of one broad one.
  • Every row already carries the full description, colors, style tags, category, and like/comment/share counts โ€” no extra step or setting is needed to get the complete listing detail.
  • imageUrls holds the listing's whole photo set, so you can grade condition from the flaw and tag close-ups instead of the cover shot alone. Around 3% of listings are posted with a single photo, so treat a one-entry list as "seller only uploaded one", not as missing data.
  • Compare originalPrice against soldPrice to measure how much of retail value a brand holds on the secondary market.
  • Sort on daysToSell after a run to find which styles, sizes, and colors sell fastest, then prioritize sourcing those.
  • Searching luxury categories like designer handbags? Live-show flyers priced near Poshmark's $50,000 ceiling dominate a Price: high to low sort. The run already drops them, but pairing a maxPrice with Most recent first keeps your comp set in the real market range.
  • Sorting by Most recent first puts whatever sold in the last few hours at the very top, which is exactly where a seller's pallet burst lands. Those numbered flat-price batches are removed for you, so the first screen of a sold-comps export is real garments rather than one seller's inventory counter.
  • Start with a maxResults of 50โ€“100 to preview the shape of the data, then raise it once you are happy with your filters.
  • Set listingStatus: available to size up the live market โ€” how many comparable items are currently listed and at what asking prices โ€” before deciding what to buy.

Pricing

From $2.00 per 1,000 results โ€” simple per-result pricing, undercutting comparable Poshmark tools. No compute or time-based charges โ€” you pay per result, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

ResultsNo discountBronzeSilverGold
100$0.24$0.23$0.21$0.20
1,000$2.40$2.25$2.10$2.00
10,000$24.00$22.50$21.00$20.00
100,000$240.00$225.00$210.00$200.00

A "result" is one listing row in your dataset. Apify platform usage fees are billed separately.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n โ€” Workflow automation
  • Google Sheets โ€” Direct spreadsheet export
  • Slack / Email โ€” Notifications on new results
  • Webhooks โ€” Trigger custom APIs on run completion
  • Apify API โ€” Full programmatic access

This scraper collects publicly available listing data for legitimate research, pricing, and analytics purposes. You are responsible for using the collected data in compliance with Poshmark's terms of service, applicable laws, and any relevant data-protection regulations. Do not use the data to harass sellers, infringe intellectual property, or process personal data unlawfully. Always review the target site's terms before running large jobs.