# Poshmark Listings Scraper - Search, Sold Items & Closets (`confidential_gnat/poshmark-listings-scraper`) Actor

Scrapes Poshmark (poshmark.com) listings by keyword, brand, category, seller closet or link. Sold and available items with prices, original price, discount, sold date, brand, size, condition, photos, likes, seller details and comments. Filters, cache for new items only.

- **URL**: https://apify.com/confidential_gnat/poshmark-listings-scraper.md
- **Developed by:** [ActorFlow](https://apify.com/confidential_gnat) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

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 Listings Scraper (poshmark.com) - Search, Sold Items, Closets & Prices

**Scrape listings from Poshmark (poshmark.com)**: title, brand, size, price, original price, discount, condition, photos, likes, comments and seller details. Search by **keyword, brand, category or seller closet**, collect **sold listings** with their sold date, or open single listings, then export the data as **JSON, CSV or Excel** or call the actor as an **API**. Paste a Poshmark link or type a keyword, press **Start** and get a clean table.

**Target website:** [poshmark.com](https://poshmark.com)

![Poshmark Listings Scraper cover](https://i.postimg.cc/2SJBNd4T/Gemini-Generated-Image-ihliruihliruihli.jpg)

### ✨ Features of this Poshmark listings scraper

- **Listing extraction** - search results, brand pages, category pages, seller closets and single listing pages with price, original price, discount, brand, size, colors, condition, description, photos, status and dates.
- **Sold listings** - switch the status to sold to get sold items with the sold date and sold price, handy for resale price research.
- **Pagination support** - pages are followed automatically until your item limit is reached.
- **Filters** - department, category, brand, sizes, colors, condition, price range, sort order and listing status.
- **Full details on demand** - optionally add shipping cost, comments, who liked an item and the seller profile (followers, items sold, location, member since).
- **Big searches** - when a search is bigger than what Poshmark shows for one search, it is split into smaller ones automatically so you can collect more.
- **Cache for new items** - run the same search on a schedule and get only new or changed listings.
- **Proxy support** - datacenter proxies are used by default and are enough.
- **No browser required** - runs are fast and cheap.

### 🚀 How to scrape Poshmark listings in 5 steps

1. [Sign up](https://apify.com/sign-up) for a free Apify account - includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Fill in the **Input** fields (a Poshmark URL, a search keyword or a seller username is required).
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### 💰 Pricing for the Poshmark scraper

This actor uses **pay-per-result** billing based on the compute units a run consumes.

- New Apify accounts include **$5 of free monthly credit**.
- Runs without a browser cost significantly less than browser-based scrapers.
- Datacenter proxies are used by default; they are cheap and enough for Poshmark.

### 🖼️ Poshmark scraper input screenshot

![Poshmark Listings Scraper input form in Apify Console: Poshmark URLs, search keywords, cache project name, max items per input, scrape full details, listing status, department and brand](https://i.postimg.cc/NjVrv810/Gemini-Generated-Image-p3h535p3h535p3h5.jpg)

The numbers match the input fields below:

1. **Poshmark URLs**: search, brand, category, closet or listing pages.
2. **Search keywords**: keywords to search, one per entry.
3. **Cache project name**: reuse it on each run to get only new and changed listings.
4. **Max items per input**: the listing limit for each URL, keyword or seller.
5. **Scrape full details**: add shipping cost, comments, likers and the seller profile.
6. **Listing status**: available or sold listings.
7. **Department**: Women, Men, Kids, Home, Pets or Electronics.
8. **Brand**: only listings of this brand.

### 🔧 Poshmark scraper input configuration

| Field | Type | Required | Default | Description |
| ----- | ---- | -------- | ------- | ----------- |
| Poshmark URLs (`startUrls`) | array | - | prefilled search | Search, brand, category, closet or single listing links. Filters in the link are kept. |
| Search keywords (`searchQueries`) | array | - | - | Keywords to search, one per entry. |
| Seller usernames (`sellers`) | array | - | - | Usernames whose closet to scrape. |
| Cache project name (`cacheProjectName`) | string | - | - | Same name on each run gives only new or changed listings. |
| Max items per input (`maxItems`) | integer | - | `5` | Maximum listings saved for each URL, keyword or seller. |
| Scrape full details (`scrapeDetails`) | boolean | - | `false` | Adds shipping, comments, likers and the seller profile. |
| Listing status (`availability`) | string | - | `available` | `available` or `sold_out` (sold listings with the sold date). |
| Department (`department`) | string | - | - | Women, Men, Kids, Home, Pets or Electronics. |
| Category (`category`) | string | - | - | Poshmark category name such as Tops, Shoes or Bags. |
| Brand (`brand`) | string | - | - | Brand name as Poshmark writes it, for example Nike. |
| Sizes (`sizes`) | array | - | - | Sizes to keep, for example M, 8 or XL. |
| Colors (`colors`) | array | - | - | Poshmark color names such as Black or Red. |
| Condition (`condition`) | string | - | `all` | `all` or `nwt` (new with tags only). |
| Minimum price (`minPrice`) | integer | - | - | Lowest price in whole dollars. |
| Maximum price (`maxPrice`) | integer | - | - | Highest price in whole dollars. |
| Sort by (`sortBy`) | string | - | `best_match` | `best_match`, `added_desc`, `price_asc`, `price_desc`, `like_count` or `price_drop`. |
| Proxy configuration (`proxyConfiguration`) | object | - | Apify Proxy on | Proxy settings. |

**Supported URL types:**

- Search: `https://poshmark.com/search?query=nike+hoodie&type=listings`
- Sold search: `https://poshmark.com/search?query=nike+hoodie&type=listings&availability=sold_out`
- Brand: `https://poshmark.com/brand/Nike`
- Category: `https://poshmark.com/category/Women-Tops`
- Seller closet: `https://poshmark.com/closet/prettyflowers1`
- Single listing: `https://poshmark.com/listing/Nike-Green-Crewneck-Sweatshirt-6ae4ecfa5551aad6a9fefbd1`

### 📦 Poshmark scraper output data

Each listing is one flat JSON row with the same keys every time (`null` where Poshmark has no value): `id`, `url`, `title`, `description`, `brand`, `department`, `category`, `subcategory`, `size`, `colors`, `condition`, `isNewWithTags`, `listingType`, `styleTags`, `price`, `currency`, `originalPrice`, `discountPercent`, `firstPrice`, `priceDropPercent`, `shippingDiscount`, `status`, `soldAt`, `statusChangedAt`, `quantityAvailable`, `createdAt`, `updatedAt`, `firstPublishedAt`, `likesCount`, `commentsCount`, `sharesCount`, `coverImage`, `images`, `videoUrl`, `sellerUsername`, `sellerName`, `sellerId`, `sellerUrl`, `sellerPicture`, `shipping`, `comments`, `likers`, `sellerFollowers`, `sellerFollowing`, `sellerListings`, `sellerItemsSold`, `sellerOrdersShipped`, `sellerFiveStarRatings`, `sellerLocation`, `sellerMemberSince`, `sellerLastActive`, `sellerOnVacation`, `sourceUrl`, `changeType`, `previousPrice`, `previousStatus`, `scrapedAt`.

The dataset has 4 views. **Listings** shows the main listing fields with the cover image. **Sold listings** focuses on sold items and their sold date. **Sellers** shows the seller profile fields. **Changes since last run** shows what is new or changed when a cache project name is used.

**Output at a glance:**

| Listing | Brand | Size | Price | Orig. price | Status | Sold at | Likes |
| ------- | ----- | ---- | ----- | ----------- | ------ | ------- | ----- |
| [Lululemon Wunder Groove Pant \*Full-On Luon](https://poshmark.com/listing/Lululemon-Wunder-Groove-Pant-Full-On-Luon-Black-5b34433a9fe48612db8dbe2a) | lululemon athletica | Various | $78 | $98 | sold | 2019-04-02 | 502 |
| [Lululemon align pant 28](https://poshmark.com/listing/Lululemon-align-pant-28-5e1e6f71689ebc06b82f162b) | lululemon athletica | Various | $75 | $98 | sold | 2026-08-25 | 454 |
| [Lululemon align tank](https://poshmark.com/listing/Lululemon-align-tank-5fb2d338ffba94b9cbbeb7d9) | lululemon athletica | 6 | $65 | $65 | sold | 2022-01-02 | 312 |
| [Lululemon Key to Balance Tank - Camo](https://poshmark.com/listing/Lululemon-Key-to-Balance-Tank-Camo-613e6646c936afb888e6e90e) | lululemon athletica | 8 | $68 | - | sold | 2022-09-12 | 304 |
| [Lululemon Align 6” Black](https://poshmark.com/listing/Lululemon-Align-6-Black-6396bcd3308f07c3cc980cd3) | lululemon athletica | Various | $64 | - | sold | 2025-07-09 | 301 |

**Sample output (raw JSON):**

```json
[
  {
    "id": "6396bcd3308f07c3cc980cd3",
    "url": "https://poshmark.com/listing/Lululemon-Align-6-Black-6396bcd3308f07c3cc980cd3",
    "title": "Lululemon Align 6” Black",
    "description": "Black",
    "brand": "lululemon athletica",
    "department": "Women",
    "category": "Shorts",
    "subcategory": null,
    "size": "Various",
    "colors": [
      "Black"
    ],
    "condition": "New With Tags",
    "isNewWithTags": true,
    "listingType": "multi_item",
    "styleTags": [
      "Activewear",
      "Yoga",
      "Biker Short"
    ],
    "price": 64,
    "currency": "USD",
    "originalPrice": null,
    "discountPercent": null,
    "firstPrice": null,
    "priceDropPercent": null,
    "shippingDiscount": null,
    "status": "sold",
    "soldAt": "2025-07-09T21:27:35.000Z",
    "statusChangedAt": "2025-07-09T21:27:35.000Z",
    "quantityAvailable": 0,
    "createdAt": "2022-12-12T05:32:03.000Z",
    "updatedAt": "2026-08-03T04:22:33.000Z",
    "firstPublishedAt": "2022-12-12T05:35:11.000Z",
    "likesCount": 301,
    "commentsCount": 19,
    "sharesCount": 165,
    "coverImage": "https://di2ponv0v5otw.cloudfront.net/posts/2022/12/11/6396bcd3308f07c3cc980cd3/l_64e191f4ffb5d0d233ba6a1f.jpg",
    "images": [
      "https://di2ponv0v5otw.cloudfront.net/posts/2022/12/11/6396bcd3308f07c3cc980cd3/l_6396bce1bd66cdf0544333f9.jpg",
      "https://di2ponv0v5otw.cloudfront.net/posts/2022/12/11/6396bcd3308f07c3cc980cd3/l_6396bcf6308f071879980d7b.jpg"
    ],
    "videoUrl": null,
    "sellerUsername": "visi0123",
    "sellerName": "Visi. Closet🌸",
    "sellerId": "60f4d94e6afdc3e012129e21",
    "sellerUrl": "https://poshmark.com/closet/visi0123",
    "sellerPicture": "https://di2ponv0v5otw.cloudfront.net/users/2023/01/21/19/t_63ccb385ce9ec588b8725bed.jpg",
    "shipping": "$6.49 Shipping",
    "comments": [
      {
        "id": "63aa40bc955a4bf09db13ae5",
        "username": "emilyja07",
        "name": "Emily Anthony",
        "text": "are these high rise",
        "createdAt": "2022-12-27T00:47:56.000Z"
      },
      {
        "id": "63aa54a02938f8dac765e8e5",
        "username": "visi0123",
        "name": "Visi. Closet🌸",
        "text": "@emilyja07 yes",
        "createdAt": "2022-12-27T02:12:48.000Z"
      }
    ],
    "likers": [
      {
        "username": "cielo_carretero",
        "name": "Cielo Carretero",
        "likedAt": "2022-12-12T06:43:17.000Z"
      },
      {
        "username": "meganauk",
        "name": "Megan Auk",
        "likedAt": "2022-12-12T08:15:07.000Z"
      }
    ],
    "sellerFollowers": 44087,
    "sellerFollowing": 25126,
    "sellerListings": 1902,
    "sellerItemsSold": "1300+",
    "sellerOrdersShipped": 1221,
    "sellerFiveStarRatings": 102,
    "sellerLocation": null,
    "sellerMemberSince": "2021-07-19T01:45:50.000Z",
    "sellerLastActive": "2026-11-01T07:00:00.000Z",
    "sellerOnVacation": false,
    "sourceUrl": "https://poshmark.com/search?query=lululemon+align&type=listings&sort_by=like_count&availability=sold_out",
    "changeType": null,
    "previousPrice": null,
    "previousStatus": null,
    "scrapedAt": "2026-11-02T17:57:50.327Z"
  },
  {
    "id": "613e6646c936afb888e6e90e",
    "url": "https://poshmark.com/listing/Lululemon-Key-to-Balance-Tank-Camo-613e6646c936afb888e6e90e",
    "title": "Lululemon Key to Balance Tank - Camo",
    "description": "NWT Lululemon Key to Balance Tank in Heritage 365 Camo Deep Coal Multi (black and gray csmo). Through every bend and stretch, find the balance you seek and the coverage you need in this high-neck tank",
    "brand": "lululemon athletica",
    "department": "Women",
    "category": "Tops",
    "subcategory": "Tank Tops",
    "size": "8",
    "colors": [
      "Black",
      "Gray"
    ],
    "condition": "New With Tags",
    "isNewWithTags": true,
    "listingType": "multi_item",
    "styleTags": [
      "Athleisure",
      "Camo"
    ],
    "price": 68,
    "currency": "USD",
    "originalPrice": null,
    "discountPercent": null,
    "firstPrice": null,
    "priceDropPercent": null,
    "shippingDiscount": null,
    "status": "sold",
    "soldAt": "2022-09-12T14:27:33.000Z",
    "statusChangedAt": "2022-09-12T14:27:33.000Z",
    "quantityAvailable": 0,
    "createdAt": "2021-09-12T20:42:46.000Z",
    "updatedAt": "2026-07-06T17:00:21.000Z",
    "firstPublishedAt": "2021-09-12T20:44:37.000Z",
    "likesCount": 304,
    "commentsCount": 5,
    "sharesCount": 204,
    "coverImage": "https://di2ponv0v5otw.cloudfront.net/posts/2021/09/12/613e6646c936afb888e6e90e/l_613e66701801368b4bb7fb69.jpg",
    "images": [
      "https://di2ponv0v5otw.cloudfront.net/posts/2021/09/12/613e6646c936afb888e6e90e/l_613e666fc32ee6bf691fd852.jpg",
      "https://di2ponv0v5otw.cloudfront.net/posts/2021/09/12/613e6646c936afb888e6e90e/l_613e6671c693bdeca1a72c3a.jpg"
    ],
    "videoUrl": null,
    "sellerUsername": "rereese",
    "sellerName": "Rebecca Y",
    "sellerId": "5a8273dd00301c50d1403a51",
    "sellerUrl": "https://poshmark.com/closet/rereese",
    "sellerPicture": "https://di2ponv0v5otw.cloudfront.net/users/2018/02/12/5a8273dd00301c50d1403a51/t_5a8273dd00301c50d1403a6f.jpg",
    "shipping": "$6.49 Shipping",
    "comments": [
      {
        "id": "6240d7176ab2f4aad2857f05",
        "username": "kowca1987",
        "name": "Karolina Owca",
        "text": "I saw you had another one in a bigger size can you measure this one for me across the bust?",
        "createdAt": "2022-03-27T21:28:55.000Z"
      },
      {
        "id": "6240d98d8a92fb99acc1b446",
        "username": "rereese",
        "name": "Rebecca Y",
        "text": "@kowca1987 yes, the size 8 is approximately 15.75 inches across at the bust. The Nulu fabric is the same fabric that align tights are made of and does have a good amount of stretch to it",
        "createdAt": "2022-03-27T21:39:25.000Z"
      }
    ],
    "likers": [
      {
        "username": "clothedncourage",
        "name": "Mackenzie Kern",
        "likedAt": "2021-09-13T03:30:22.000Z"
      },
      {
        "username": "charlie_9",
        "name": "Kelcie Sackett",
        "likedAt": "2021-09-13T14:41:04.000Z"
      }
    ],
    "sellerFollowers": 132987,
    "sellerFollowing": 309,
    "sellerListings": 14386,
    "sellerItemsSold": "9600+",
    "sellerOrdersShipped": 8240,
    "sellerFiveStarRatings": 1117,
    "sellerLocation": null,
    "sellerMemberSince": "2018-02-13T05:13:01.000Z",
    "sellerLastActive": "2026-11-01T07:00:00.000Z",
    "sellerOnVacation": false,
    "sourceUrl": "https://poshmark.com/search?query=lululemon+align&type=listings&sort_by=like_count&availability=sold_out",
    "changeType": null,
    "previousPrice": null,
    "previousStatus": null,
    "scrapedAt": "2026-11-02T17:57:50.327Z"
  }
]
```

### 🔁 Scrape only new Poshmark listings with the cache

Type the same **Cache project name** on every scheduled run and the scraper remembers every listing it has saved under that name. Listings already saved with the same price and status are **skipped**, are **not charged** and are **not counted towards Max items**. New listings get `changeType: "new"`; a listing whose price or status changed (for example it was sold) gets `changeType: "updated"` with the old price in `previousPrice` and the old status in `previousStatus`. Each cache name is a separate cache, so you can track several searches independently. Sort by newest first and a run stops after the first page that has nothing new. Tip: put the actor on an Apify Schedule (for example daily) with the same input and cache name.

### 🐍 How to scrape Poshmark with Python, JavaScript or the API

Run the actor programmatically with the official Apify clients. Replace `<YOUR_API_TOKEN>` with the token from your [Apify Console](https://console.apify.com/account/integrations).

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("confidential_gnat/poshmark-listings-scraper").call(run_input={
    "searchQueries": ["lululemon leggings"],
    "availability": "sold_out",
    "maxItems": 20,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript** (`npm install apify-client`):

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('confidential_gnat/poshmark-listings-scraper').call({
    searchQueries: ['lululemon leggings'],
    availability: 'sold_out',
    maxItems: 20,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**cURL** - start a run and wait for the dataset:

```bash
curl -X POST "https://api.apify.com/v2/acts/confidential_gnat~poshmark-listings-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["lululemon leggings"], "availability": "sold_out", "maxItems": 20}'
```

### 💡 What you can use Poshmark listing data for

- Resale price research: see what items really sold for, and how fast.
- Price monitoring of brands, styles and competing sellers.
- Sourcing and arbitrage: find underpriced listings and price drops.
- Trend and demand analysis from likes, comments and shares.
- Seller research: closet size, items sold, ratings and activity.

Resellers, fashion brands, market analysts and data teams in e-commerce and secondhand fashion typically use this data.

### ⚠️ Limitations of the Poshmark scraper

- **Login-required pages** - the actor cannot access content behind a login, such as private messages or your own account.
- **Search depth** - Poshmark shows about 5,000 listings for one search; bigger asks are split by department, price and color, which takes more requests.
- **Likers** - the list of people who liked an item is the part Poshmark shows publicly, not always every liker.
- **Missing values** - sellers do not fill in every field (original price, condition), so those come back as `null`.

### ❓ Poshmark scraper FAQ

#### Can I scrape Poshmark legally?

The actor only collects data that is already publicly visible on Poshmark, with no login, paywall or private content. Scraping publicly available data is generally considered lawful (see *hiQ Labs v. LinkedIn*), but you are responsible for complying with Poshmark's Terms of Service and applicable laws such as GDPR and CCPA if personal data is involved.

#### What data does the Poshmark scraper return?

Title, brand, size, colors, condition, price, original price, discount, status, sold date, photos, likes, comments count, shares and seller details. Switch on full details to add shipping cost, the comments themselves, likers and the seller profile.

#### How many listings can I scrape from one search or closet?

`maxItems` applies to each start URL, keyword or seller separately. Poshmark shows about 5,000 listings for one search, closet or category, and above that the actor splits the search automatically.

#### Do I need a proxy to scrape poshmark.com?

Datacenter Apify Proxy is switched on by default and is enough. You can turn it off or choose your own proxies in the proxy field.

#### How do I scrape Poshmark with Python?

Use the Python example above and iterate over the dataset items returned by the run.

#### Can I run this Poshmark scraper on a schedule?

Yes, use Apify Schedules. Add a cache project name and each scheduled run saves only new or changed listings, which are not charged again.

#### How do I get sold listings from Poshmark?

Set Listing status to Sold, or paste a search link that has `availability=sold_out`. Sold rows have `status: "sold"` and the sold date in `soldAt`.

#### What output formats are supported?

JSON, CSV, Excel, XML and RSS, either from the **Output** tab or through the Apify API.

### 🔗 Relevant actors for Poshmark

| Scraper | Description |
| ------- | ----------- |
| [🛒 eBay Listings Scraper](https://apify.com/confidential_gnat/ebay-listings-scraper) | Scrape eBay (ebay.com) search results and item pages |
| [🇯🇵 Mercari Japan Scraper](https://apify.com/confidential_gnat/mercari-japan-listings-scraper) | Scrapes Mercari Japan (jp.mercari.com) listings |
| [📦 Kleinanzeigen Classifieds Scraper](https://apify.com/confidential_gnat/kleinanzeigen-listings-scraper) | Scrape ads from Kleinanzeigen (kleinanzeigen.de, formerly eBay Kleinanzeigen) |
| [🏷️ Carousell Products Scraper](https://apify.com/confidential_gnat/carousell-products-scraper) | Scrape Carousell.sg product listings for prices, seller ratings, deal methods & more. Ex... |
| [🧧 AliExpress Products Scraper](https://apify.com/confidential_gnat/aliexpress-products-scraper) | Scrape products from AliExpress (aliexpress.com) search results and product pages |

### 🔗 Other actors you may find useful

| Scraper | Description |
| ------- | ----------- |
| [💼 HiringCafe Jobs Scraper](https://apify.com/confidential_gnat/hiringcafe-jobs-scraper) | Scrapes job listings from HiringCafe (hiringcafe.com) |
| [🛍️ Woolworths Products Scraper](https://apify.com/confidential_gnat/woolworths-products-scraper) | Scrape Woolworths Australia grocery products |
| [📄 Google Patents Scraper](https://apify.com/confidential_gnat/google-patents-scraper) | Scrapes patent data from Google Patents (patents.google.com) by keyword or URL, includin... |
| [📰 Substack Scraper](https://apify.com/confidential_gnat/substack-newsletter-scraper) | Scrape Substack (substack.com) posts by keyword search, publication or post URL |
| [🎵 Spotify Monthly Listeners Scraper](https://apify.com/confidential_gnat/spotify-monthly-listeners-scraper) | Scrapes an artist's monthly listeners, followers, top cities, discography, top tracks, a... |

### 💬 Support & contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/poshmark-listings-scraper/issues/open).

You can also find more of our actors on the [Actor Flow](https://apify.com/confidential_gnat) page.

# Actor input Schema

## `startUrls` (type: `array`):

Search pages (https://poshmark.com/search?query=nike\&type=listings), brand pages, category pages, seller closets (https://poshmark.com/closet/username) or single listings. Filters in the URL are kept; the filter fields below replace them when filled in.

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

Keywords to search, one per entry, for example a brand or product name. The filters below apply to each of them.

## `sellers` (type: `array`):

Poshmark usernames whose closet to scrape, for example prettyflowers1.

## `cacheProjectName` (type: `string`):

Use the same name on each scheduled run to get only new or changed listings. Listings already saved under this name with the same price and status are skipped, not charged and not counted towards Max items. Each record gets a changeType: new or updated.

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

Maximum listings saved for each URL, keyword or seller. Poshmark shows about 5,000 listings for one search; above that the actor splits the search by department, price and color automatically to collect more.

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

Also open each listing to add shipping cost, the comments, who liked it and the seller profile (followers, items sold, location, member since). Slower, a few extra requests per listing.

## `availability` (type: `string`):

Available listings still for sale, or sold listings (with the sold date). Pasted URLs that already carry a status keep it unless you pick sold here.

## `department` (type: `string`):

Narrow the search to one department.

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

Poshmark category name, used together with a department, for example Tops, Shoes, Dresses or Bags.

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

Brand name exactly as Poshmark writes it, for example Nike or lululemon athletica.

## `sizes` (type: `array`):

Sizes to keep, for example M, 8 or XL. Which sizes exist depends on the department.

## `colors` (type: `array`):

Colors to keep, for example Black or Red (Poshmark color names).

## `condition` (type: `string`):

All conditions, or only items that are new with tags.

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

Lowest price in whole dollars.

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

Highest price in whole dollars.

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

Order of the results. Newest first combines well with the cache to pick up only new listings.

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

Datacenter proxies are enough for Poshmark and used by default. Turn Apify Proxy off only if you run from an address Poshmark does not block.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://poshmark.com/search?query=nike+hoodie&type=listings"
    }
  ],
  "maxItems": 5,
  "scrapeDetails": true,
  "availability": "available",
  "condition": "all",
  "sortBy": "best_match",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://poshmark.com/search?query=nike+hoodie&type=listings"
        }
    ],
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/poshmark-listings-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 = {
    "startUrls": [{ "url": "https://poshmark.com/search?query=nike+hoodie&type=listings" }],
    "maxItems": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/poshmark-listings-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 '{
  "startUrls": [
    {
      "url": "https://poshmark.com/search?query=nike+hoodie&type=listings"
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call confidential_gnat/poshmark-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_gnat/poshmark-listings-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/mhTAsayPYJesUnEQk/builds/tT9vmxWR0ciJZHW90/openapi.json
