Poshmark Listings Scraper
Pricing
from $18.00 / 1,000 poshmark listing saveds
Poshmark Listings Scraper
Scrape public Poshmark browse and listing pages for resale sourcing, price research, and market analysis. Returns prices, brands, sizes, images, availability, engagement, timestamps, and public seller handles. Not for private accounts or contact harvesting. $0.018/listing plus platform usage.
Pricing
from $18.00 / 1,000 poshmark listing saveds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
15 days ago
Last modified
Categories
Share
Poshmark Listings Scraper for Resale Data
Use this Apify Actor to turn a keyword, a public Poshmark browse page, or a direct listing URL into one record per saved listing. It is built for resale sourcing, price research, assortment monitoring, and market analysis, and it returns public fields such as title, brand, size, price, availability, images, engagement counts, timestamps, and public seller handles. The actor works as an Apify Actor usable through Apify MCP, with a stable dataset-backed output for downstream analysis.
Best fit and connected workflows
This Actor fits workflows that begin with a public Poshmark search phrase or saved browse page and end with structured listing data.
Common routing patterns include:
- Keyword research for a brand or product phrase, then comparison across price, size, and availability.
- A curated public browse URL with Poshmark filters preserved, then extraction into a dataset for analysis.
- A direct listing URL when you need one exact item record, its public photos, and seller context.
- Sold-comparable research using the sold availability filter and publication timestamps.
- Agent workflows that need a consistent JSON record per listing and a clean dataset readback through Apify MCP or the Actor API.
Practical scenario
Maya is checking a public Poshmark browse page for running shoes. She starts with the keyword nike shoes, keeps availability set to available, and lets the Actor enrich each listing page. The returned record includes title, brand, size, price, like count, published time, listing URL, and seller username. Maya uses those fields to shortlist items for sourcing and opens the listing URLs to review the public photos before choosing the next watchlist action.
Inputs
| Field | Type | Default | Purpose |
|---|---|---|---|
searchQuery | string | nike shoes | Product or brand phrase converted to a public Poshmark browse URL. |
startUrls | array | [] | Public Poshmark /browse/, /brand/, /category/, or /listing/ URLs. |
maxResults | integer | 25 | Maximum number of validated listings saved and billed in the run. |
includeDetails | boolean | true | Opens each public listing page to refresh price, inventory, images, engagement, and timestamps. |
availability | string | available | Returns available listings, sold listings, or both. |
department | string | Women | Department used for keyword-generated browse pages and server-rendered availability filters. |
sortBy | string | relevance_v2 | Browse order for keyword-generated results. |
maxConcurrency | integer | 3 | Parallel request cap for public Poshmark requests. |
proxyConfiguration | object | Apify Residential proxy in the US | Network route for public Poshmark pages. |
Focused input example
{"searchQuery": "lululemon define jacket","availability": "sold","department": "Women","sortBy": "added_desc","maxResults": 20,"includeDetails": true,"maxConcurrency": 3}
Output fields
Each dataset row represents one complete validated public Poshmark listing.
| Field | Type | Meaning |
|---|---|---|
listingId | string | Stable Poshmark listing identifier. |
listingUrl | string | Public canonical-style Poshmark listing URL. |
title | string | Public listing title. |
description | string or null | Public seller-written description, capped at 5,000 characters. |
brand | string or null | Brand assigned to the listing. |
department | string or null | Top-level catalog department such as Women or Men. |
category | string or null | Catalog category. |
subcategory | string or null | First catalog feature or subcategory when present. |
size | string or null | Seller-selected display size. |
price | number or null | Current listing price. |
originalPrice | number or null | Original or compare-at price. |
currency | string or null | Currency code supplied by Poshmark, normally USD. |
discountPercent | number or null | Calculated percentage below original price. |
availability | string | Normalized item inventory status. |
status | string or null | Raw public status returned by Poshmark. |
isSold | boolean | Whether the listing inventory is sold out. |
isMultiItem | boolean | Whether inventory contains multiple item units or sizes. |
quantityAvailable | integer or null | Sum of publicly exposed available size quantities. |
imageUrl | string or null | Largest available cover image URL. |
imageUrls | array | Deduplicated public listing image URLs, capped at 12. |
colors | array | Public color labels assigned to the listing. |
styleTags | array | Public style tags assigned to the listing. |
sellerUsername | string or null | Public Poshmark seller handle. |
sellerDisplayName | string or null | Public display name shown with the listing. |
sellerProfileUrl | string or null | Public closet URL constructed from the seller handle. |
likeCount | integer | Public listing like count. |
commentCount | integer | Public listing comment count. |
shareCount | integer | Public listing share count. |
publishedAt | string or null | First public publication time when available. |
updatedAt | string or null | Last public update time when available. |
statusChangedAt | string or null | Most recent public listing or inventory status-change time. |
sourceUrl | string | Source page from which the listing was collected. |
scrapedAt | string | UTC timestamp when the record was normalized. |
Illustrative output record
{"listingId": "6a50a7029f19e233e4b2264d","listingUrl": "https://poshmark.com/listing/Nike-Flex-Shoes-Running-Athletic-Sneakers-Sz-11-6a50a7029f19e233e4b2264d","title": "Nike Flex Shoes Running Athletic Sneakers Sz. 11","description": "Nike Flex Running Shoes size 11. Great shape!","brand": "Nike","department": "Women","category": "Shoes","subcategory": "Athletic Shoes","size": "11","price": 13,"originalPrice": null,"currency": "USD","discountPercent": null,"availability": "available","status": "published","isSold": false,"isMultiItem": false,"quantityAvailable": 1,"imageUrl": "https://di2ponv0v5otw.cloudfront.net/posts/example.jpg","imageUrls": ["https://di2ponv0v5otw.cloudfront.net/posts/example.jpg"],"colors": ["Pink","White"],"styleTags": ["Athleisure","Activewear"],"sellerUsername": "public_seller","sellerDisplayName": "Public Seller","sellerProfileUrl": "https://poshmark.com/closet/public_seller","likeCount": 3,"commentCount": 0,"shareCount": 2,"publishedAt": "2026-07-10T08:02:25.000Z","updatedAt": "2026-07-13T16:05:32.000Z","statusChangedAt": "2026-07-10T08:02:25.000Z","sourceUrl": "https://poshmark.com/browse/nike-shoes","scrapedAt": "2026-07-15T10:00:00.000Z"}
How it works
The Actor accepts either a search keyword or a list of public Poshmark URLs. When you provide a keyword, it converts it into a public browse URL. When you provide startUrls, those URLs take precedence.
It reads public /browse/, /brand/, /category/, and /listing/ pages only. When includeDetails is enabled, it opens each public listing page before saving the record so the dataset can include refreshed price, inventory, images, engagement, and timestamps. Saved rows are normalized into the default dataset with a consistent field contract.
Pricing
This Actor uses pay per event plus Apify platform usage.
- Actor start: charged once per run, scaled by allocated memory
- Poshmark listing saved: charged for each complete validated public listing saved to the default dataset
- Apify compute and proxy usage: billed separately through the platform
For current pricing, open the live Pricing tab on the Actor page.
As an example, a run that saves ten listings records ten listing saves, and the event-based charge follows the live Pricing tab, plus platform usage.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. The tool exposes structured inputs and a dataset-backed output that agents can read after the run.
Tool description: Extract public Poshmark listings from a keyword, browse URL, or direct listing URL, then read normalized listing records from the default dataset.
Actor identity: khadinakbar/poshmark-listings-scraper
Use
khadinakbar/poshmark-listings-scraperfor public Poshmark resale research. Start from a keyword or browse URL, then return the dataset rows with title, brand, size, price, availability, images, seller handle, and timestamps.
Output interpretation: Each dataset row is one public listing saved as a complete validated record. availability provides the normalized inventory state, while status, isSold, quantityAvailable, and statusChangedAt add public context. sourceUrl shows the browse page or listing URL that produced the record.
Provenance and scope: The Actor works from public Poshmark pages only. It surfaces public seller handles and public closet URLs, while keeping the collection centered on listing data.
Pagination and cost guidance: maxResults sets the hard cap for validated listings saved and billed across the run. Higher maxConcurrency can speed up larger detail runs, while lower values create a gentler request pattern. includeDetails adds a public listing-page refresh before each row is saved.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/poshmark-listings-scraper').call({searchQuery: 'nike shoes',availability: 'available',department: 'Women',sortBy: 'relevance_v2',maxResults: 10,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Best results and outcome guidance
Use a specific brand or product phrase for keyword runs when you want broad public browse coverage. Use startUrls when you already have a filtered browse page or a direct listing URL. Set availability to match the research task, such as available listings for sourcing or sold listings for comparable-sales review. Keep includeDetails enabled when freshness, images, and engagement matter, and use a lower maxConcurrency when you want a gentler request pattern. For larger research jobs, increase maxResults only as far as the analysis needs.
Continue the workflow
- Then use Sephora Product Scraper for US Catalog Research to extend Poshmark Listings Scraper for Resale Data with a neighboring commerce research source when the brief calls for Sephora data.
- Then use Ozon Scraper — Russia Marketplace Products, Prices & Reviews to extend Poshmark Listings Scraper for Resale Data with a neighboring commerce research source when the brief calls for Ozon data.
Design note
I found that the dataset contract includes both sellerUsername and sellerProfileUrl, which makes public seller context easy to reuse without relying on account-internal fields.
FAQ
Can I use this Actor for a saved browse URL with Poshmark filters?
Yes. startUrls accepts public /browse/ URLs, so you can keep the Poshmark filters already present in the page.
Can I request one exact listing page?
Yes. A public /listing/ URL can be passed in startUrls to collect a single exact item record.
How do I switch between live sourcing and sold-comparable research?
Use the availability input. available is suited to live sourcing, sold to sold-comparable analysis, and all to collect both.
Which department should I pick for keyword-generated searches?
Choose the public Poshmark department that matches the item family, such as Women, Men, Kids, Home, Electronics, or Pets.
What happens if I need richer listing details?
Keep includeDetails enabled. The Actor opens each public listing page before saving it so the record can include refreshed price, inventory, images, engagement, and timestamps.
Responsible use
Use this Actor on public Poshmark pages only and in ways that align with applicable law, Poshmark's terms, privacy rules, and your own contractual obligations. The output is designed for listing analysis, resale sourcing, and market research, with a scope centered on public listing data rather than contact harvesting, private account access, or account automation.