# Poshmark Scraper (`lulzasaur/poshmark-scraper`) Actor

Scrape Poshmark fashion marketplace. Search clothing, shoes, accessories by brand and category. Returns prices, sizes, condition, and seller info.

- **URL**: https://apify.com/lulzasaur/poshmark-scraper.md
- **Developed by:** [lulz bot](https://apify.com/lulzasaur) (community)
- **Categories:** Other
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Poshmark Scraper - Fashion & Resale Marketplace

Scrape [Poshmark](https://poshmark.com) marketplace listings for fashion, clothing, shoes, and accessories at scale. Extract prices, brands, sizes, conditions, seller info, and engagement metrics -- perfect for resellers, fashion researchers, and price monitoring.

### Features

- Search by keyword with optional filters (brand, department, price range)
- Extract listing data directly from Poshmark's server-rendered state (fast, no browser needed)
- Optional detail page scraping for full descriptions, seller stats, photos, and style tags
- Automatic pagination to collect up to 5,000 results per query
- Sort by relevance, price, newest, or just shared
- Graceful abort handling for cost control

### What data can you get?

#### Search mode (fast, default)

- Listing ID, title, and description
- Price and original retail price
- Brand, size, and condition (New With Tags, New Without Tags, Good)
- Category, department, and subcategory
- Colors
- Cover image URL
- Seller username and display name
- Like, comment, and share counts
- Inventory status (available/sold)
- Creation and update dates
- Direct listing URL

#### Detail mode (scrapeDetails: true) -- additional fields

All of the above, plus:

- All photos (URLs at multiple resolutions)
- Size inventory breakdown (quantity available/sold per size)
- Style tags
- Seller city and state
- Seller follower/following counts
- Seller total listings
- Seller orders shipped and average ship time
- Seller join date and profile URL

### How to use

1. Enter one or more **search queries** (e.g., "Nike Air Max", "Lululemon leggings", "Coach bag")
2. Optionally filter by **department**, **brand**, or **price range**
3. Choose a **sort order** if needed
4. Toggle **Scrape Full Details** for complete listing data (slower but richer)
5. Run the scraper and download results as JSON, CSV, or Excel

### Example output

```json
{
    "listingId": "66c236d79ceaf7c22ae066dc",
    "title": "NWT Nike Blazer Shoes",
    "price": 70,
    "originalPrice": 100,
    "currency": "USD",
    "brand": "Nike",
    "size": "10",
    "condition": "New With Tags",
    "category": "Shoes",
    "department": "Women",
    "subcategory": "Sneakers",
    "colors": ["White", "Black"],
    "description": "Brand New & Never Worn\nWomen's Nike Blazer Shoes\nSize:10\nColor: Black & White",
    "imageUrl": "https://di2ponv0v5otw.cloudfront.net/posts/2024/08/18/.../m_abc123.jpg",
    "sellerUsername": "fashionista99",
    "sellerDisplayName": "Jane Doe",
    "likeCount": 74,
    "commentCount": 2,
    "shareCount": 2675,
    "status": "available",
    "url": "https://poshmark.com/listing/66c236d79ceaf7c22ae066dc",
    "searchQuery": "nike shoes",
    "scrapedAt": "2026-03-17T12:00:00.000Z"
}
```

### Input options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | string\[] | `["nike shoes"]` | Search terms to scrape (required) |
| `category` | string | -- | Department filter (e.g., "Women", "Men", "Kids") |
| `brand` | string | -- | Brand filter (e.g., "Nike", "Lululemon") |
| `minPrice` | integer | -- | Minimum price filter ($) |
| `maxPrice` | integer | -- | Maximum price filter ($) |
| `sortBy` | string | relevance | Sort: `price_asc`, `price_desc`, `added_desc`, `just_shared` |
| `maxListings` | integer | `100` | Max listings per query (0 = unlimited) |
| `scrapeDetails` | boolean | `false` | Visit each listing page for full data |
| `proxyConfiguration` | object | no proxy | Proxy settings for Apify platform |

### Use cases

- **Resellers**: Find underpriced fashion items to flip
- **Price monitoring**: Track used clothing prices by brand, size, and condition
- **Market research**: Analyze pricing trends for specific brands or categories
- **Inventory sourcing**: Find bulk inventory for your Poshmark, eBay, or Mercari store
- **Competitor analysis**: Monitor pricing strategies of other sellers
- **Data analysis**: Export to CSV/Excel for spreadsheet analysis

### How it works

1. **Search pages**: The scraper fetches Poshmark search result pages and extracts listing data from the `window.__INITIAL_STATE__` JavaScript object embedded in the server-rendered HTML. This contains rich structured data for all ~48 listings per page.

2. **Pagination**: Poshmark uses cursor-based pagination via a `max_id` parameter. The scraper automatically follows pagination until the requested number of listings is reached.

3. **Detail pages** (optional): When `scrapeDetails` is enabled, the scraper visits each listing's individual page to extract additional data including all photos, seller statistics, and style tags.

4. **Fallback**: If `__INITIAL_STATE__` parsing fails, the scraper falls back to JSON-LD structured data embedded in the page.

### Performance tips

- **Search mode** (`scrapeDetails: false`) is significantly faster since it extracts all data from search pages without visiting individual listings. Each search page contains ~48 listings, so 100 listings requires only 3 HTTP requests.
- **Detail mode** (`scrapeDetails: true`) makes one additional request per listing but provides photos, seller stats, and style tags.
- Use `maxListings` to control costs. Poshmark returns up to 5,000 results per search query.
- Use **Apify Schedules** to run daily for automated price tracking.
- Combine with **Apify integrations** (Google Sheets, Slack, Zapier) for automated workflows.

### Quick start

```bash
## Install dependencies
npm install

## Run locally
apify run --purge
```

### Deploy to Apify

```bash
apify login
apify push
```

### Limitations

- Only scrapes publicly available listing data
- Maximum ~5,000 results per search query (Poshmark platform limit)
- Seller contact info is not available through public pages
- Seller stats (followers, ship time) only available in detail mode

### Technology

- [Apify SDK](https://docs.apify.com/sdk/js) - Actor platform toolkit
- [Crawlee](https://crawlee.dev/) - CheerioCrawler for fast HTTP-based scraping
- [Cheerio](https://cheerio.js.org/) - HTML parsing and traversal

### Related Scrapers

More marketplace scrapers and data tools by [lulzasaur](https://apify.com/lulzasaur):

- [AbeBooks Scraper](https://apify.com/lulzasaur/abebooks-scraper) — Rare and used books
- [Bonanza Scraper](https://apify.com/lulzasaur/bonanza-scraper) — Online marketplace listings
- [Contractor License Verifier](https://apify.com/lulzasaur/contractor-license-scraper) — Multi-state license verification
- [Craigslist Scraper](https://apify.com/lulzasaur/craigslist-scraper) — Classifieds and for-sale posts
- [Goodreads Scraper](https://apify.com/lulzasaur/goodreads-scraper) — Book ratings and reviews
- [Grailed Scraper](https://apify.com/lulzasaur/grailed-scraper) — Luxury fashion resale
- [Houzz Scraper](https://apify.com/lulzasaur/houzz-scraper) — Home improvement professionals
- [IMDb Scraper](https://apify.com/lulzasaur/imdb-scraper) — Movie and TV show data
- [Nurse License Verifier](https://apify.com/lulzasaur/nurse-license-scraper) — State nursing board verification
- [OfferUp Scraper](https://apify.com/lulzasaur/offerup-scraper) — Local marketplace listings
- [PSA Population Report](https://apify.com/lulzasaur/psa-pop-scraper) — Card grading data
- [Redfin Scraper](https://apify.com/lulzasaur/redfin-scraper) — Real estate listings and prices
- [Reverb Scraper](https://apify.com/lulzasaur/reverb-scraper) — Music gear marketplace
- [StubHub Scraper](https://apify.com/lulzasaur/stubhub-scraper) — Event ticket prices
- [Swappa Scraper](https://apify.com/lulzasaur/swappa-scraper) — Used electronics marketplace
- [TCGPlayer Scraper](https://apify.com/lulzasaur/tcgplayer-scraper) — Trading card prices
- [ThriftBooks Scraper](https://apify.com/lulzasaur/thriftbooks-scraper) — Used book prices
- [Thumbtack Scraper](https://apify.com/lulzasaur/thumbtack-scraper) — Local service professionals

# Actor input Schema

## `searchQueries` (type: `array`):

List of search terms (e.g., 'Nike Air Max', 'Lululemon leggings', 'Coach bag'). Each query will produce a separate set of results.

## `category` (type: `string`):

Filter by department (e.g., 'Women', 'Men', 'Kids').

## `brand` (type: `string`):

Filter by brand name (e.g., 'Nike', 'Lululemon', 'Gucci').

## `maxListings` (type: `integer`):

Maximum number of listings to scrape per search query. Set to 0 for unlimited (up to 5000).

## `minPrice` (type: `integer`):

Minimum price filter.

## `maxPrice` (type: `integer`):

Maximum price filter.

## `sortBy` (type: `string`):

How to sort search results.

## `scrapeDetails` (type: `boolean`):

If enabled, visits each listing's detail page for descriptions, seller stats, and style tags. Slower but richer data.

## `proxyConfiguration` (type: `object`):

Proxy settings. Recommended to use Apify Proxy for best results.

## Actor input object example

```json
{
  "searchQueries": [
    "nike air max"
  ],
  "maxListings": 100,
  "sortBy": "",
  "scrapeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "nike air max"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lulzasaur/poshmark-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQueries": ["nike air max"] }

# Run the Actor and wait for it to finish
run = client.actor("lulzasaur/poshmark-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "nike air max"
  ]
}' |
apify call lulzasaur/poshmark-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lulzasaur/poshmark-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/eBAEtlRiRwdkrJOwk/builds/M6FL7MZnNFnHYhz9n/openapi.json
