# Poshmark Real-Time Data — Thrift & Resale Intel (`b2b_leads/poshmark-real-time-data-scraper`) Actor

Live Poshmark resale intelligence: keyword search, full product details, closet inventory, seller profiles, sold comps. Stream results in real time, get instant deal alerts via webhooks, price vintage & thrift finds with confidence. Free plan: 2 results/run.

- **URL**: https://apify.com/b2b\_leads/poshmark-real-time-data-scraper.md
- **Developed by:** [Emmanuel](https://apify.com/b2b_leads) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Poshmark Real-Time Data — Live Resale Market Intelligence

**Live Poshmark market data for vintage & thrift resellers:** keyword listing search, full product details, closet inventory tracking, seller profiles, sold comps, and instant deal alerts. Structured JSON streams to your dataset row-by-row while the run is still working — results start appearing in seconds.

> ⚠️ **Free Apify plan notice:** Free-tier accounts are limited to **2 results per run**. Upgrade to any paid Apify plan for unlimited exports. This is stated here, in the Actor input form, and in the run log — it is a policy limit, not an error.

### Who this is for

- **Vintage & thrift resellers** sourcing undervalued inventory (Poshmark, eBay, Depop, Mercari cross-listers)
- **Consignment shop owners** tracking competitor closets and market prices
- **Resale arbitrageurs** hunting margin spreads between platforms
- **Fashion market researchers & pricing intelligence teams** tracking sell-through and trend data
- **AI agents & automations** that need structured resale market data via the Apify MCP server

### What you can do with it

- **Find undervalued thrift & vintage inventory** — search "vintage single stitch tee", "carhartt detroit jacket", "vintage 90s levis 501", "patagonia fleece", "y2k baby tee", or "gorpcore north face" and sort by just-listed to catch fresh steals before anyone else.
- **Price comps & sell-through analysis** — pull completed sold listings to compute real market averages, sell-through rates, and realistic resale margins before you buy.
- **Closet inventory monitoring** — watch top competitors' and consignment sellers' full active stock, spot new listings and repricing moves.
- **Instant Slack / Discord deal alerts** — pipe every matched item to a webhook the moment it is saved, so your pricing bot or phone buzzes on newly listed steals.
- **Multi-platform pricing sync** — feed structured rows into Sheets, Airtable, Make, Zapier, n8n, or your own repricer.

### Features

| Feature | What it does | Output (`featureType`) |
|---|---|---|
| 🔍 **Listing Search** | Live keyword search with brand, size, condition, and min/max price filters | `listing_search` |
| ✨ **Full Details Enrichment** | Adds description, fabric/material, style tags, full image gallery, and seller shipping discounts **to the same search row** | `listing_search` (`detailsFetched: true`) |
| 📦 **Listing Details** | Full record for specific listings by URL or listing ID | `listing_details` |
| 👚 **Closet Listings** | Full active inventory of any reseller/thrift closet | `closet_listings` |
| 👤 **Seller Profile** | Reseller stats: love notes, items sold, closet size, followers, verification, bio | `seller_profile` |
| 🧾 **Sold Item Comps / History** | Completed & sold listings for market comps, margins, and sell-through | `sold_history` |
| 🔗 **Scrape By URL** | Direct processing of any Poshmark URL — search, closet, category page, brand feed, or listing | `scrape_by_url` |

**Enrichment, not filtering:** when **Enrich with full listing details** is on, every search result stays **one row** and gains deep fields in place (`detailsFetched: true`). No duplicate rows, no dropped items — every discovered item always reaches the dataset, so your run cost stays predictable. Enrichment adds a little extra time per listing.

### Quick start (10 results in seconds)

The Actor comes prefilled for an instant demo run:

1. Click **Start** — no configuration needed.
2. Defaults: Listing Search on, keywords `carhartt detroit jacket`, `vintage 90s levis 501`, `patagonia fleece`, **10 results per keyword**.
3. Watch the dataset fill row-by-row in real time.

#### Example thrift searches that work well

| Goal | Keywords | Filters |
|---|---|---|
| Workwear flips | `carhartt detroit jacket`, `carhartt vest` | brand: Carhartt |
| Vintage denim | `vintage 90s levis 501`, `levis 550 orange tab` | size: 32x32 |
| Gorpcore | `patagonia fleece`, `arc'teryx shell`, `north face nuptse` | max price: 60 |
| Y2K / streetwear | `y2k baby tee`, `vintage nba jersey`, `stussy 90s` | sort: just listed |
| Designer for cheap | `coach vintage bag`, `dooney bourke` | condition: NWT/NWOT |
| Band tees | `single stitch band tee`, `vintage concert tee` | max price: 40 |

### Full input reference

#### 🌍 Region

| Field | Type | Default | Notes |
|---|---|---|---|
| `country` | select | `US` | Marketplace region: `US`, `CA`, `UK`, `AU`. Affects currency and the recommended proxy country. |

#### 🔍 Listing Search (`enableListingSearch`, default **on**)

| Field | Type | Default | Notes |
|---|---|---|---|
| `searchKeywords` | string list | 3 thrift examples | Required when search is on. Any Poshmark search term. |
| `searchMaxResults` | integer | **10** | Max results per keyword (1–200). |
| `searchSort` | select | `relevance` | `relevance`, `newest` (just listed), `price_low_to_high`, `price_high_to_low`. |
| `searchBrand` | string | — | e.g. `Carhartt`, `Levi's`, `Patagonia`. |
| `searchSize` | string | — | e.g. `M`, `L`, `32x32`, `9.5`. |
| `searchCondition` | select | any | `nwt`, `nwot`, `g` (Good), `e` (Excellent), `p` (Poor). |
| `searchMinPrice` / `searchMaxPrice` | integer | — | Price window in region currency. |
| `searchOnSale` | boolean | `false` | Prefer listings marked down vs. original price. |
| `searchFetchFullDetails` | boolean | `false` | **Enrich with full listing details** — merges description, fabric/material, style tags, full gallery, and seller shipping discounts into the same row. |

#### 📦 Listing Details (`enableListingDetails`, default off)

| Field | Type | Notes |
|---|---|---|
| `listingUrls` | string list | Full listing URLs (`https://poshmark.com/listing/...`). |
| `listingIds` | string list | Listing IDs (the hex ID at the end of a listing URL). |

#### 👚 Closet Listings (`enableClosetListings`, default off)

| Field | Type | Default | Notes |
|---|---|---|---|
| `sellerUsernames` | string list | — | Closet usernames without `@`. Shared by Closet Listings, Seller Profile, and Sold Comps. |
| `sellerMaxListings` | integer | `30` | Max active listings per closet (1–500). |

#### 👤 Seller Profile (`enableSellerProfile`, default off)

Uses the same `sellerUsernames` list. One row per seller.

#### 🧾 Sold Item Comps / History (`enableSoldHistory`, default off)

Uses the same `sellerUsernames` list.

| Field | Type | Default | Notes |
|---|---|---|---|
| `soldMaxItems` | integer | `30` | Max sold items per seller (1–500). |

#### 🔗 Scrape By URL (`enableScrapeByUrl`, default off)

| Field | Type | Notes |
|---|---|---|
| `scrapeUrls` | string list | Any Poshmark search URL, closet URL, category page, brand feed, or single listing URL. |

#### Run volume

There is no single global cap — each feature section controls its own volume:

- **Listing Search** → `searchMaxResults` (per keyword)
- **Closet Listings** → `sellerMaxListings` (per seller)
- **Sold Comps** → `soldMaxItems` (per seller)
- **Listing Details** & **Scrape By URL** → the number of URLs/IDs you paste

#### 🔔 Delivery

| Field | Type | Default | Notes |
|---|---|---|---|
| `webhookUrl` | string | — | Optional. Every record is also POSTed here in real time. |
| `webhookFormat` | select | `json` | `json` (full record) or `slack` (Slack-ready message). |

#### 🌐 Connection

| Field | Type | Default | Notes |
|---|---|---|---|
| `proxyConfiguration` | proxy editor | Apify **RESIDENTIAL**, country `US` | Residential connections are strongly recommended. Match the country to your Region (US / CA / GB). |

### Output schema (field reference)

One dataset row per item. Filter views by `featureType`: `listing_search`, `listing_details`, `closet_listings`, `seller_profile`, `sold_history`, `scrape_by_url`.

#### Identity & links

`item_id` — listing ID · `item_url`, `url` — listing/closet URL · `slug` — URL slug · `featureType` — producing feature · `scrapedAt` — ISO timestamp · `position` — rank where found · `pageType` — detected page kind (URL feature)

#### Pricing

`current_price` · `original_price` (retail) · `currency` · `discount_percentage` · `price_drop_amount` · `accepts_offers` · `lowest_offer_accepted` (details)

#### Shipping

`shipping_cost` · `shipping_discount` (seller shipping promo text) · `free_shipping` · `ships_from` / `ships_to` · `item_location` · `local_pickup_available`

#### Product

`title` · `description` (full on details/enriched rows) · `brand`, `brand_id` · `size` · `condition` (New With Tags / New Without Tags / Good / Excellent / Poor) · `category`, `department`, `subcategory` · `color`, `colors` · `style_tags` (vintage, y2k, gorpcore…) · `pattern` · `material` (fabric) · `item_specifics` · `quantity_available` · `hashtags` · `is_nwt`, `is_nwot`, `is_handmade`, `is_vintage`, `is_authentic`

#### Images

`main_image_url` · `additional_image_urls` (full gallery on enriched/details rows)

#### Engagement & timing

`likes_count` · `shares_count` · `comments_count` · `number_of_offers` · `is_sold` · `status` · `created_at` · `updated_at` · `sold_at` · `last_price_drop_at` · `time_since_listed` · `is_newly_listed` (≤ 7 days)

#### Seller

`seller_username` · `seller_id` · `seller_display_name` · `seller_rating` · `seller_love_notes_count` · `seller_items_sold` · `seller_closet_size` · `seller_location` · `seller_verified` · `seller_last_active` · `seller_response_rate` · `seller_bundle_discount_percentage`

#### Seller profile rows

`display_name` · `full_name` · `bio` · `followers` · `following` · `total_sales` · `total_listings` · `total_likes` · `total_earnings` · `rating` · `love_notes_count` · `city`, `state` · `is_verified` · `member_since`

#### Run marker

`detailsFetched` — `true` when a search row was enriched in place (still one row per listing).

### Webhook integration

Every record is always written to the dataset. Add `webhookUrl` and each record is **additionally** POSTed in real time — perfect for instant deal alerts.

**Slack format** (`webhookFormat: "slack"`) — paste a Slack Incoming Webhook URL; messages render like:

```
:shopping_bags: *Vintage Carhartt Detroit Jacket Brown*
*Type:* listing_search  •  *Price:* USD 45 (was USD 98)  •  *Brand:* Carhartt  •  *Size:* L  •  *Condition:* Good  •  *Seller:* thrifthaus  •  12 likes
<https://poshmark.com/listing/...|Open on Poshmark>
```

**JSON format** (`webhookFormat: "json"`) — the full record object, one POST per row. Works with Discord (via /webhooks), Zapier, Make, n8n, or your own pricing bot:

```json
{
  "featureType": "listing_search",
  "title": "Vintage Carhartt Detroit Jacket Brown",
  "current_price": 45,
  "original_price": 98,
  "discount_percentage": 54,
  "brand": "Carhartt",
  "size": "L",
  "condition": "Good",
  "likes_count": 12,
  "seller_username": "thrifthaus",
  "item_url": "https://poshmark.com/listing/...",
  "scrapedAt": "2026-09-26T12:00:00.000Z"
}
```

Webhook delivery is best-effort: a slow or failing webhook URL never blocks or breaks the run or the dataset writes.

### Using with AI agents (MCP)

The Actor works great through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) with Claude Desktop, Cursor, LangChain, or any MCP client:

1. In your MCP client config, add the Apify MCP server with your `APIFY_TOKEN`.
2. Expose this Actor as a tool (Actor ID: `~your-username/poshmark-real-time-data`).
3. Ask natural-language questions like:
   - *"What is the average sold price for a 90s Carhartt J97 jacket on Poshmark?"*
   - *"Find Patagonia fleece listings under $30 posted today and Slack me the deals."*
   - *"Watch @topthriftcloset's inventory and tell me when they list Levis 501s under $25."*

The Actor returns clean, structured rows — no cleanup needed for LLM pipelines.

### Free-tier limits (paid-only features)

| Plan | Behavior |
|---|---|
| Free | Capped at **2 results per run** (default). The run finishes cleanly with a clear log message — this is a policy limit, not an error. |
| Any paid plan (Bronze+) | No caps — full output. |

Owner-side configuration (Apify Console → Actor → Environment variables, not visible to users):

- `FREE_TIER_MODE` = `limit` (default) or `block` (free users get 0 results with an upgrade message).
- `FREE_TIER_MAX_ITEMS` = `2` (default).

Paying users are detected automatically from platform run context — nothing to configure per-run.

### FAQ

**Do I need my own proxies?**
No. The Actor ships preconfigured for Apify Residential proxy (US default) and includes the residential proxy charge in its pricing. You can point the proxy editor at another residential provider if you prefer, but most users should leave the defaults. Match the proxy country to the Region field (US → US, CA → CA, UK → GB).

**Why did my free run stop at 2 items?**
That's the free-plan cap described above — it applies to every Apify Actor on the free plan. Upgrade to any paid Apify plan and the cap disappears automatically; no code or config change needed.

**How fresh is the data?**
Every run collects live data at the moment you press Start. "Just listed" sort plus webhooks is the recommended combo for deal-alert workflows. Typical usage: schedule runs every 5–30 minutes on watchlists.

**Will I get rate-limited or blocked?**
The Actor paces keyword work with small randomized pauses, reuses a warmed-up session, and routes through residential connections with country targeting — the same safeguards used at 10,000+ item scale. Keep concurrency defaults and it just works.

**What does "Enrich with full listing details" cost me in time?**
It adds a little extra time per listing to hydrate full product fields in the same row. With it off you get fast search cards (price, title, brand, size, likes, condition). Either way, every discovered item is saved — items are never filtered out.

**Can I track sellers instead of keywords?**
Yes — Closet Listings, Seller Profile, and Sold Comps all share the `sellerUsernames` list. Combined with a schedule, you get a competitor inventory feed and sell-through history.

**How do I compute sell-through rate?**
Pull Sold Comps for a seller, then divide sold items by (sold + active closet listings) for the same seller — both features use the same usernames field, so one input drives both sides of the ratio.

**Is any raw source payload included?**
No — rows contain only the clean, structured fields documented above. There is no raw-data option and no internal payload dumps in webhooks.

**Does the run timeout?**
Runs support up to 10,000 seconds (about 2.7 hours) per run, which covers 10,000+ item exports at default pacing. For larger volumes, run multiple scheduled passes with smaller per-section limits.

### Pricing model

This Actor uses **Pay-Per-Event (PPE)**: you are charged one `result` event per dataset row saved. Set a max spend per run in Apify Console — when your limit is reached, the Actor stops gracefully, writes its summary, and exits cleanly without errors.

### Disclaimer

This Actor is not affiliated with, endorsed by, or sponsored by Poshmark. It provides access to publicly available marketplace information for research and business intelligence. Respect Poshmark's Terms of Service when using collected data.

***

*Built for the thrift & resale community. Happy flipping! 🧥*

# Actor input Schema

## `country` (type: `string`):

Poshmark marketplace region. Affects currency and the recommended proxy country.

## `enableListingSearch` (type: `boolean`):

Live keyword search across Poshmark — thrift brands, streetwear, and vintage finds. On by default and prefilled so you can click Start and get results in seconds.

## `searchKeywords` (type: `array`):

One or more search terms, e.g. "carhartt detroit jacket", "vintage 90s levis 501", "patagonia fleece", "single stitch band tee". Required when Listing Search is on.

## `searchMaxResults` (type: `integer`):

Maximum listings to return for each keyword (1–200). Default 10 — perfect for instant demo runs.

## `searchSort` (type: `string`):

How to order search results. "Just listed" is ideal for deal alerts on fresh inventory.

## `searchBrand` (type: `string`):

Limit results to a brand, e.g. Carhartt, Levi's, Patagonia, The North Face, Lululemon.

## `searchSize` (type: `string`):

e.g. M, L, XL, 32x32, 9.5.

## `searchCondition` (type: `string`):

Filter by item condition.

## `searchMinPrice` (type: `integer`):

Minimum listing price in the selected region currency.

## `searchMaxPrice` (type: `integer`):

Maximum listing price — pair with "Just listed" sort to catch underpriced steals fast.

## `searchOnSale` (type: `boolean`):

Prefer listings that show a markdown vs. the original retail price when available.

## `searchFetchFullDetails` (type: `boolean`):

When on, each search result stays ONE row (featureType listing\_search, detailsFetched=true) but is enriched with description, fabric/material, style tags, full image gallery, and seller shipping discounts. Adds a little extra time per listing. When off, you get fast search cards with price, title, brand, size, likes, and condition. Every discovered item is always saved — never filtered out.

## `enableListingDetails` (type: `boolean`):

Fetch the full record for specific Poshmark listings by URL or listing ID.

## `listingIds` (type: `array`):

Poshmark listing IDs, e.g. 660e1a1b2c3d4e5f6a7b8c9d.

## `listingUrls` (type: `array`):

Full Poshmark listing URLs (https://poshmark.com/listing/...).

## `enableClosetListings` (type: `boolean`):

Collect the full active inventory of any reseller or thrift closet — track competitor stock and repricing moves.

## `sellerUsernames` (type: `array`):

Poshmark closet usernames (without @). Shared by Closet Listings, Seller Profile, and Sold Comps.

## `sellerMaxListings` (type: `integer`):

Maximum active listings to collect per closet (1–500).

## `enableSellerProfile` (type: `boolean`):

Extract reseller stats: love notes, items sold, closet size, follower count, verification, bio details, and location.

## `enableSoldHistory` (type: `boolean`):

Collect completed and sold listings for real market comps, resale margins, and sell-through analysis.

## `soldMaxItems` (type: `integer`):

Maximum sold listings to collect per seller (1–500).

## `enableScrapeByUrl` (type: `boolean`):

Paste any Poshmark URL — search results, closet, category page, brand feed, or single listing.

## `scrapeUrls` (type: `array`):

Any Poshmark search, closet, category, brand, or listing URL.

## `webhookUrl` (type: `string`):

Optional. Every record is always saved to the run dataset — this webhook is an ADDITIONAL real-time push. Each new row is also POSTed to this URL (Slack, Discord, Zapier, Make, n8n, custom pricing bot).

## `webhookFormat` (type: `string`):

json = full record object; slack = Slack-friendly message payload.

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

Residential proxy recommended. Match the country to the Market region above (US by default).

## Actor input object example

```json
{
  "country": "US",
  "enableListingSearch": true,
  "searchKeywords": [
    "carhartt detroit jacket",
    "vintage 90s levis 501",
    "patagonia fleece"
  ],
  "searchMaxResults": 10,
  "searchSort": "relevance",
  "searchBrand": "",
  "searchSize": "",
  "searchCondition": "",
  "searchOnSale": false,
  "searchFetchFullDetails": false,
  "enableListingDetails": false,
  "listingIds": [],
  "listingUrls": [],
  "enableClosetListings": false,
  "sellerUsernames": [
    "poshmark"
  ],
  "sellerMaxListings": 30,
  "enableSellerProfile": false,
  "enableSoldHistory": false,
  "soldMaxItems": 30,
  "enableScrapeByUrl": false,
  "scrapeUrls": [
    "https://poshmark.com/search?query=vintage%20carhartt&type=listings"
  ],
  "webhookUrl": "",
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `allResults` (type: `string`):

Full dataset for this run (every featureType).

## `overview` (type: `string`):

Core fields across features, including detailsFetched for search rows.

## `search` (type: `string`):

featureType=listing\_search only. One listing = one row; full details are merged when "Enrich with full listing details" is enabled.

## `details` (type: `string`):

featureType=listing\_details — only from the Listing Details feature (specific IDs/URLs), not from search enrichment.

## `closet_listings` (type: `string`):

No description

## `seller_profile` (type: `string`):

No description

## `sold_history` (type: `string`):

No description

## `scrape_by_url` (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 = {
    "country": "US",
    "enableListingSearch": true,
    "searchKeywords": [
        "carhartt detroit jacket",
        "vintage 90s levis 501",
        "patagonia fleece"
    ],
    "searchMaxResults": 10,
    "searchSort": "relevance",
    "searchCondition": "",
    "searchOnSale": false,
    "searchFetchFullDetails": false,
    "enableListingDetails": false,
    "listingIds": [],
    "listingUrls": [],
    "enableClosetListings": false,
    "sellerUsernames": [
        "poshmark"
    ],
    "sellerMaxListings": 30,
    "enableSellerProfile": false,
    "enableSoldHistory": false,
    "soldMaxItems": 30,
    "enableScrapeByUrl": false,
    "scrapeUrls": [
        "https://poshmark.com/search?query=vintage%20carhartt&type=listings"
    ],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("b2b_leads/poshmark-real-time-data-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 = {
    "country": "US",
    "enableListingSearch": True,
    "searchKeywords": [
        "carhartt detroit jacket",
        "vintage 90s levis 501",
        "patagonia fleece",
    ],
    "searchMaxResults": 10,
    "searchSort": "relevance",
    "searchCondition": "",
    "searchOnSale": False,
    "searchFetchFullDetails": False,
    "enableListingDetails": False,
    "listingIds": [],
    "listingUrls": [],
    "enableClosetListings": False,
    "sellerUsernames": ["poshmark"],
    "sellerMaxListings": 30,
    "enableSellerProfile": False,
    "enableSoldHistory": False,
    "soldMaxItems": 30,
    "enableScrapeByUrl": False,
    "scrapeUrls": ["https://poshmark.com/search?query=vintage%20carhartt&type=listings"],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("b2b_leads/poshmark-real-time-data-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 '{
  "country": "US",
  "enableListingSearch": true,
  "searchKeywords": [
    "carhartt detroit jacket",
    "vintage 90s levis 501",
    "patagonia fleece"
  ],
  "searchMaxResults": 10,
  "searchSort": "relevance",
  "searchCondition": "",
  "searchOnSale": false,
  "searchFetchFullDetails": false,
  "enableListingDetails": false,
  "listingIds": [],
  "listingUrls": [],
  "enableClosetListings": false,
  "sellerUsernames": [
    "poshmark"
  ],
  "sellerMaxListings": 30,
  "enableSellerProfile": false,
  "enableSoldHistory": false,
  "soldMaxItems": 30,
  "enableScrapeByUrl": false,
  "scrapeUrls": [
    "https://poshmark.com/search?query=vintage%20carhartt&type=listings"
  ],
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call b2b_leads/poshmark-real-time-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,b2b_leads/poshmark-real-time-data-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/h918J7qVxt6LxUS3c/builds/VUhY8V34rZdJUWJPu/openapi.json
