# Poshmark Sold Comps (`lowlanddata/poshmark-sold-comps`) Actor

Pull Poshmark sold listings only - the prices items actually sold for. Clean JSON with price, brand, size, condition and sold-out status, zero seller data. Newest-first monitoring, pay per result. Built for resale pricing, sourcing decisions and AI pipelines.

- **URL**: https://apify.com/lowlanddata/poshmark-sold-comps.md
- **Developed by:** [Lowland Data](https://apify.com/lowlanddata) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 83.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.69 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Sold Comps — real sold prices, privacy-safe

Pull **sold listings only** from Poshmark — the prices items actually sold for, not the prices sellers wish for. Clean, structured JSON with price, brand, size and condition, ready for resale pricing, sourcing decisions and data pipelines.

**No seller personal data, ever.** This scraper is built privacy-first: seller usernames, full names, user IDs, avatars, comment threads and like lists never appear in the output — not as an option you have to remember to switch off, but by design.

### Quick start (30 seconds)

1. Put the item you want comps for into **searchQuery** — e.g. `nike cortez`.
2. Click **Start**. That's the whole minimum setup.
3. When the run finishes, open the dataset's **Overview** tab for a clean table, or **Export** it as CSV/Excel/JSON.

Optional knobs: a price band and just-in sorting for monitoring — and any input works on a daily Schedule.

### What you can build with it

- **Price your resale inventory on real sales.** Asking prices lie; sold prices don't. Every item in this feed actually sold at the price shown.
- **Know before you buy.** Sourcing at a thrift store or auction? A quick comps run tells you what the resale market actually pays for that model and size.
- **Track sell-through pricing over time.** Run weekly and chart how sold prices move by size and condition.
- **Feed an AI agent clean data.** Every field is structured, predictable and free of personal data, so an assistant or pipeline can consume it directly — no scrubbing, no compliance review before you store it.

### What you get

Each listing is one dataset item:

```json
{
  "listingId": "6a7200000000000000000001",
  "url": "https://poshmark.com/listing/Nike-Cortez-6a7200000000000000000001",
  "title": "Nike Cortez",
  "brand": "Nike",
  "priceUsd": 65,
  "originalPriceUsd": 90,
  "currency": "USD",
  "size": "US 10",
  "condition": "used",
  "newWithTags": false,
  "department": "Men",
  "colors": ["Blue", "White"],
  "availability": "sold_out",
  "likeCount": 13,
  "commentCount": 2,
  "publishedAt": "2026-08-04T08:20:10-07:00",
  "coverImageUrl": "https://di2ponv0v5otw.cloudfront.net/posts/example/m_cover.jpg"
}
```

Field notes, so you know exactly what you are buying:

- `priceUsd` is the price shown on the sold listing, in dollars; `originalPriceUsd` is the seller's stated retail price when given — the discount story in two numbers.
- Every item carries `availability: "sold_out"` — this feed is sold listings only, by construction; a site change can never silently turn it into wish-price listings.
- `condition` is `new_with_tags` or `used`, with the `newWithTags` boolean for easy filtering.
- `likeCount` and `commentCount` are live demand signals.

### How much do Poshmark sold comps cost?

$1.99 per 1,000 sold comps delivered, pay-as-you-go — no subscription, no charge for empty or failed runs. In plain dollars:

- **100 listings ≈ $0.20** — a daily niche watch.
- **500 listings ≈ $1.00** — a solid comps snapshot.

The price is all-inclusive — your runs' platform usage is covered by it, with no separate compute or proxy charges. Runs are fast — a scoped few-hundred-item run typically finishes in under ten seconds. Datacenter proxies are sufficient — no residential proxy surcharge needed.

Free-plan runs are limited to a sample of 25 items, enough to evaluate the output format against your real query.

### Not technical? Let your AI assistant set it up

Copy this into ChatGPT, Claude or any AI assistant, fill in the one line, and follow the conversation:

```text
Help me set up the "Poshmark Scraper" actor on Apify
(https://apify.com/lowlanddata/poshmark-sold-comps). Guide me one step at a time.

What I want comps for: [E.G. "Nike Cortez size 10"]

Guide me to:
1. Propose my input values: searchQuery (what I'd type in the Poshmark search box),
   an optional priceMinUsd/priceMaxUsd band, sortBy "newest" for monitoring,
   and maxItems.
2. Create a free Apify account (apify.com), open the actor page, paste the values
   into the Input form, and start a run.
3. Set up a daily Schedule in the Apify Console with the same input, plus an email
   or Slack integration so new results reach me automatically.
4. Show me how to export results as CSV/Excel, or read them from the API if I code.
5. If the results are what I wanted, remind me at the end to leave a quick rating on the actor page, and to report anything broken or missing on its Issues tab.
```

### Input

| Field                | Description                                                                                     |
| -------------------- | ----------------------------------------------------------------------------------------------- |
| `searchQuery`        | What you'd type in the Poshmark search box. Required.                                           |
| `priceMinUsd`        | Only listings costing at least this many dollars.                                               |
| `priceMaxUsd`        | Only listings costing at most this many dollars.                                                |
| `sortBy`             | `newest` (just in, default), `price_asc`, `price_desc`, or `relevance`.                         |
| `postedAfter`        | Only listings posted on or after this date (YYYY-MM-DD). Stops early with newest-first sorting. |
| `postedBefore`       | Only listings posted on or before this date (YYYY-MM-DD).                                       |
| `maxItems`           | Stop after this many listings (default 500).                                                    |
| `proxyConfiguration` | Proxy settings; keep Apify proxy enabled.                                                       |

A run minimally needs a `searchQuery`; invalid combinations (like an inverted price band) fail immediately with the reason in the run's status message.

### Use it from your code

Run the actor and get items straight back with one HTTP call (fine for scoped runs up to ~5 minutes):

```bash
curl "https://api.apify.com/v2/acts/lowlanddata~poshmark-sold-comps/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -X POST -H "Content-Type: application/json" \
  -d '{"searchQuery": "nike cortez", "maxItems": 100}'
```

Node.js:

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('lowlanddata/poshmark-sold-comps').call({
  searchQuery: 'nike cortez',
  maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lowlanddata/poshmark-sold-comps").call(
    run_input={"searchQuery": "nike cortez", "maxItems": 100})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

Schedules, webhooks and the Make/Zapier/n8n integrations all work out of the box — this is a standard Apify actor.

### Use it with AI agents (MCP)

Claude, Cursor and other MCP-capable agents can run this scraper as a tool through Apify's hosted MCP server: the agent fills in the search itself, starts the run and reads the results — no glue code.

Claude Code:

```bash
claude mcp add apify --transport http "https://mcp.apify.com?actors=lowlanddata/poshmark-sold-comps"
```

Cursor or Claude Desktop (add a custom connector / MCP server with this URL):

```text
https://mcp.apify.com?actors=lowlanddata/poshmark-sold-comps
```

Sign in with your Apify account when prompted — runs are billed to it. Setup details per client: [Apify MCP docs](https://docs.apify.com/platform/integrations/mcp).

Prompts that work once connected:

- "Pull sold comps for 'nike cortez' and give me the median sold price by size."
- "Get the last 100 sold 'lululemon define jacket' listings and summarize price by condition."
- "Compare sold prices for 'coach tabby' this month against my asking price."

### Is it legal to scrape Poshmark?

Public listing data — prices, brands, sizes, conditions — is public commercial information, and this scraper is built so that the hard part of the question never arises: **no personal data enters your dataset in the first place.** US state privacy laws such as the CCPA set rules on personal information; an output that carries no usernames, no seller identity and no social graph is the point of this actor, not an afterthought.

Structurally, the extractor maps a fixed whitelist of fields out of the page's data. Seller identity, comment threads, like lists and tracking parameters are never read into the output. Requests are paced, load on the site is kept negligible, and no anti-bot protection is bypassed.

One honest limit: listing titles are the seller's own words, delivered as-is. If a seller chooses to type contact details into their title, that text is not rewritten — the guarantee covers the data fields, not the content sellers publish about themselves.

### Is there a Poshmark API alternative?

Poshmark publishes no public API. This actor is the practical alternative: the same listings as structured JSON through one HTTP call (`run-sync-get-dataset-items`), on a schedule, or as an MCP tool for AI agents — with the privacy question already answered in the data itself.

### Does Poshmark block scrapers?

Poshmark serves its search pages openly to ordinary requests — and this actor stays inside that welcome: paced requests, standard datacenter proxies, load kept negligible. No CAPTCHA fights, no bot-wall cat-and-mouse — which is also why runs are fast and reliable enough for daily schedules.

### How do I monitor Poshmark prices?

Set `sortBy: "newest"` with your query and price band, cap `maxItems` to a page or two, and add a daily (or hourly) Schedule in the Apify Console with an email/Slack integration on the runs — every new listing lands in your inbox with the price already parsed. The AI-assistant prompt above walks a non-technical user through exactly this setup.

### FAQ

**Can I get seller names or closets?** No — by design. That is the product: data you can store, share and process without a privacy review.

**Are live listings included?** No — this actor is sold listings only. For live asking prices, use the [Poshmark Scraper](https://apify.com/lowlanddata/poshmark-scraper).

**Can I get only recently listed comps?** Yes — set `postedAfter` to a date and the feed narrows to items listed since then; with newest-first sorting the run stops early once it reaches older items.

**How fresh is the data?** Live at run time — every run queries Poshmark directly. For continuous freshness, schedule the actor.

**Can I export to Excel or CSV?** Yes — every dataset exports as CSV, Excel, JSON or XML from the Apify Console or API.

**Does it work with Make, Zapier or n8n?** Yes — it is a standard Apify actor; all platform integrations, webhooks and schedules apply.

**How do I see what an item sold for on Poshmark without endless scrolling?** One run on the item's name returns the sold listings as a sortable table — price, brand, size, condition per row — instead of a feed you scroll through.

**Are these real sold prices or just asking prices?** Every item in this feed carries `availability: "sold_out"` by construction — the price shown is the price on the listing that sold. The wish-price side of the market is deliberately excluded here.

**Can I filter comps by the date the item sold?** No — honest limit: `postedAfter`/`postedBefore` filter on `publishedAt`, the date the listing was posted. The output has no sold-date field, because the search data does not expose one.

**How big a comps sample should I pull?** The default `maxItems` of 500 is a solid snapshot for most models — about $1.00 of usage. Narrow queries may return fewer, which is itself information.

**Can I get comps for a specific size?** Put the size in the query if sellers usually write it in titles, or pull the model broadly and filter the export on the `size` field — every item carries it.

**How do I separate new-with-tags comps from used ones?** Split on the `newWithTags` boolean or the `condition` value — NWT items sell at a different level and shouldn't be averaged with used ones.

**Can I compare sold prices with current asking prices?** Yes — run this actor and the live-listings [Poshmark Scraper](https://apify.com/lowlanddata/poshmark-scraper) on the same query. The gap between median ask and median sold is your negotiation room.

**Do sold listings show the retail price?** When the seller entered one, `originalPriceUsd` sits next to the sold price. Treat it as the seller's claim about retail, not a verified figure.

**Is it allowed to collect sold-listing data?** The output keeps you on solid ground: a fixed field whitelist strips out everything US privacy laws like the CCPA care about — no usernames, no seller identity, no social graph. Prices and product attributes are public commercial data.

**Do the demand signals survive on sold items?** Yes — `likeCount` and `commentCount` are still there, useful for judging how contested an item was before it sold.

**Can I track how sold prices move over time?** Run the same query on a weekly Schedule and chart the results by size and condition — each run is a dated snapshot of the sold market.

**How much do sold comps cost?** $1.99 per 1,000 delivered comps; a typical 100-item pull is around $0.20. Runs that fail or come back empty cost nothing.

**Why am I seeing only 25 comps?** Free Apify plans cap each run at a 25-item sample, meant for checking the format. Move to any paid plan for full pulls.

**Can an AI agent compute the median sold price for me?** Yes — connected through Apify's MCP server, an agent like Claude can pull the comps and answer "median sold price by size" in one prompt.

### Related scrapers

The same clean-output guarantee, next door:

- [Poshmark Scraper](https://apify.com/lowlanddata/poshmark-scraper) — live Poshmark listings, the asking-price side of the market.

- [Kijiji Scraper](https://apify.com/lowlanddata/kijiji-ca-scraper) — Canada's largest classifieds site.

- [Vinted Scraper](https://apify.com/lowlanddata/vinted-scraper) — Europe's largest fashion resale marketplace.

- [Kleinanzeigen.de Scraper](https://apify.com/lowlanddata/kleinanzeigen-scraper) — Germany's biggest classifieds site.

### Troubleshooting

The actor fails fast with the reason in the run's status message:

- **"priceMinUsd must not be higher than priceMaxUsd."** — swap the two values.
- **"Poshmark blocked the run before any results could be fetched. This is usually temporary - retry in a few minutes."** — a temporary block on the first request; a retry usually lands on a clean proxy session.
- **Fewer items than requested on a free plan** — the 25-item free sample cap; run on a paid Apify plan for full results.

### Support

Found an issue or missing a field you need? Open an issue on the actor's **Issues tab** — reports get fixed, this actor is actively maintained.

Working well for you? A **rating on this page** takes ten seconds and helps other buyers find a privacy-clean option among the lookalikes — it is also the clearest signal of what we should build next.

# Actor input Schema

## `searchQuery` (type: `string`):

The item to pull sold comps for, exactly as you would type it in the Poshmark search box, e.g. "nike cortez" or "coach tabby".

## `priceMinUsd` (type: `integer`):

Only include listings costing at least this many dollars.

## `priceMaxUsd` (type: `integer`):

Only include listings costing at most this many dollars.

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

Order of results: newest (just sold-in, best for monitoring), price\_asc, price\_desc, or relevance.

## `postedAfter` (type: `string`):

Only include listings posted on or after this date (YYYY-MM-DD or a full ISO timestamp). With newest-first sorting the run stops early once older listings are reached.

## `postedBefore` (type: `string`):

Only include listings posted on or before this date (YYYY-MM-DD or a full ISO timestamp).

## `maxItems` (type: `integer`):

Stop after this many listings. Free-plan runs are capped at 25 items.

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

Proxy settings. Keep Apify proxy enabled.

## Actor input object example

```json
{
  "searchQuery": "nike",
  "sortBy": "newest",
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

Scraped Poshmark listings, one JSON object per listing.

# 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 = {
    "searchQuery": "nike",
    "sortBy": "newest",
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("lowlanddata/poshmark-sold-comps").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 = {
    "searchQuery": "nike",
    "sortBy": "newest",
    "maxItems": 25,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("lowlanddata/poshmark-sold-comps").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 '{
  "searchQuery": "nike",
  "sortBy": "newest",
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call lowlanddata/poshmark-sold-comps --silent --output-dataset

```

## MCP server setup

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

```

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/mfEuUP4ffGlzY0BTG/builds/EQtn6jWZLEiMq1gSR/openapi.json
