Poshmark Scraper icon

Poshmark Scraper

Scrape Poshmark fashion-resale listings: keyword search, brand and category browse, sold listings with sold dates, seller closet stats (followers,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Poshmark Scraper at a glance

Poshmark Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes kind, recordid, listingid, url and title, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.40 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Web data
Pricing
$2.00 per 1,000 results (Free plan), from $1.40 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
26 options
Run success
100.0% of completed public runs in the last 30 days

Scrape Poshmark fashion-resale listings: keyword search, brand and category browse, sold listings with sold dates, seller closet stats (followers, following). Filters for department, condition and availability. Incremental monitoring, resume, MCP export.

What Poshmark Scraper can do

  • Two ways to find data. Search mode covers keywords, brands and seller closets with filters applied. URL mode reads any listing, closet, brand, category or search link exactly as pasted.
  • Sold listings with sold dates. Switch Availability to Sold (or All) to pull sold-out listings alongside their sold date and quantity sold, the site's own price-history surface.
  • Seller closet profiles. Add a seller username or closet link and get that seller's follower, following and listing counts, followed by every listing in the closet.
  • Detail enrichment on demand. Turn it on to add the seller's full aggregate stats, the complete photo set and the shipping note to each listing, billed only for listings that were actually read.
  • Filters that are honest. Availability, department, condition, price range and shipping are narrowed on the site's own servers. Filters the site would silently ignore, like size or color, are not offered.
  • Built for monitoring. Incremental mode returns only new, updated and reappeared listings on repeat runs, and a refused run fails loudly instead of returning an empty dataset.

Choose what to collect

These inputs let you configure Poshmark Scraper - Listings, Sold Prices & Closets. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredSearch mode walks keyword searches, brand pages and seller closets forward, filters applied. URL mode reads the specific listing, brand, closet, category or search links you paste; the search-mode filter fields are ignored there.

Choices: search, url

searchQueriesarraySearch mode: keywords to search, one entry per search (for example: tote bag, wool coat). Leave empty if you only want brands or closets.
brandsarraySearch mode: brand names or brand-page paths (for example: Madewell, or Madewell-Women to pin a department). Leave empty if you only want keyword searches or closets.
brandstringSearch mode: one brand name or brand-page path (for example: Madewell). Same as adding one entry to the Brands list above.
closetsarraySearch mode: seller usernames or closet links. Each emits the seller's profile (followers, following, listing counts) followed by that closet's listings.
availabilitystringKeep Available for live listings, or Sold to pull sold listings with their sold dates (the source's price-history surface). All availability includes dropping-soon items.

Choices: available, sold_out, all

departmentstringKeep listings from one department only. Leave empty for all departments.

Choices: , Women, Men, Kids, Home, Electronics, Pets

Show 19 more inputs
More input fields
InputWhat it controls
conditionstringKeep listings in one condition tier only: New With Tags, Like New, Good, or Fair. Leave empty for all conditions.

Choices: , nwt, uln, ug, uf

minPricenumberKeep listings priced at or above this many dollars (rounded down to whole dollars). Leave empty for no minimum. Search mode; the site applies it server-side.
maxPricenumberKeep listings priced at or below this many dollars (rounded up to whole dollars). Leave empty for no maximum.
shippingFilterstringAll listings, only listings with free shipping, or listings with free or discounted shipping.

Choices: all, free, discounted_free

sortBystringResult order (search mode). Newest = most recently listed first; the site has no sort by sale date. Price and likes sort across the whole result set.

Choices: relevance, newest, price_asc, price_desc, likes

listingInputsarrayURL mode: listing links or bare listing ids, closet links, brand links, category links or search links. Each target is walked forward on its own.
urlsarrayAlias for Links, accepted under the name other Apify actors use for URL mode.
fetchDetailsbooleanRead each listing's own page and merge the seller's follower/following/listing counts, the full photo set and the shipping note into the record. Off by default; when on, each enriched listing carries a small per-listing surcharge (see pricing).
maxCommentsintegerWith detail enrichment on, attach up to this many buyer comments to each listing (default 20, 0 = none). Comments come from the page already read for enrichment, so they add no requests.
maxItemsintegerStop after this many records (default 20; 0 = no limit). The run then stops when each target's walk reaches the site's own end. Sellers count as records too when closets are scraped.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large pull without returning items already collected there.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns every matching listing as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED listings. A listing counts as UPDATED when any returned field changes (for example price, availability, title, description, photos, likes, shares or seller details); UPDATED rows list the changed fields in changedFields. Always left out of the change check (they stay in the output): comments (the nested buyer comments list; the comment count commentCount is compared), scrapedAt, _enrichmentFailed, and the derived copies soldPrice, status, nwt, likesCount, commentsCount, thumbnailUrl, daysToSell and shippingCost (each repeats a field that is already compared). Use Ignore fields when detecting changes to leave out more. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each keyword, brand, closet and filter setup; use State key to name or deliberately share a monitoring campaign.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the targets and filter settings.
emitUnchangedbooleanOff by default. Turn on to also return listings that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have.
emitExpiredbooleanOff by default. Turn on to also return listings that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned every tracked target.
ignoreFieldsForChangesarrayExtra field names that should NOT make a listing count as UPDATED, for example likeCount, shareCount or commentCount if you only care about price and availability. They are added to the fields that are always left out (comments, scrapedAt, _enrichmentFailed, soldPrice, status, nwt, likesCount, commentsCount, thumbnailUrl, daysToSell, shippingCost). The fields stay in the output; they are just left out of the change check and out of changedFields. Used only when Incremental changes is on.
mcpConnectorsarrayOptionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output.
notionParentPageUrlstringURL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

kindkind
recordIdrecordId
listingIdlistingId
urlurl
titletitle
brandbrand
sizesize
sizeDisplaysizeDisplay
conditioncondition
conditionLabelconditionLabel
priceprice
originalPriceoriginalPrice
Show 58 more fields
currencycurrency
availabilityavailability
soldAtsoldAt
listedAtlistedAt
updatedAtupdatedAt
departmentdepartment
categorycategory
subcategorysubcategory
colorscolors
styleTagsstyleTags
descriptiondescription
likeCountlikeCount
commentCountcommentCount
shareCountshareCount
offerCountofferCount
sellerUsernamesellerUsername
sellerNamesellerName
sellerUrlsellerUrl
coverImageUrlcoverImageUrl
pictureUrlspictureUrls
shippingNoteshippingNote
commentscomments
sellerFollowerssellerFollowers
sellerFollowingsellerFollowing
sellerListingssellerListings
changeTypechangeType
changedFieldschangedFields
firstSeenAtfirstSeenAt
lastSeenAtlastSeenAt
soldPricesoldPrice
statusstatus
nwtnwt
boutiqueboutique
likesCountlikesCount
commentsCountcommentsCount
thumbnailUrlthumbnailUrl
scrapedAtscrapedAt
daysToSelldaysToSell
shippingCostshippingCost
sellerLocationsellerLocation
sellerSoldCountsellerSoldCount
sellerAvgShipTimesellerAvgShipTime
_enrichmentFailed_enrichmentFailed
usernameusername
displayNamedisplayName
closetUrlclosetUrl
pictureUrlpictureUrl
citycity
statestate
biobio
joinedAtjoinedAt
lastActiveAtlastActiveAt
followersfollowers
followingfollowing
listingslistings
likeslikes
sharesshares
homeDomainhomeDomain

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "kind": "listing",
  "recordId": "e1111111111111111111111a",
  "listingId": "e1111111111111111111111a",
  "url": "https://poshmark.com/listing/Sample-Wool-Coat-e1111111111111111111111a",
  "title": "Sample Brand Co Wool Coat",
  "brand": "Sample Brand Co",
  "brandPath": "Sample-Brand-Co",
  "size": "M",
  "sizeDisplay": "US M",
  "condition": "nwt",
  "conditionLabel": "New With Tags",
  "price": 40,
  "originalPrice": 120,
  "currency": "USD",
  "availability": "sold",
  "soldAt": "2026-01-05T10:00:00-07:00",
  "soldQuantity": 1,
  "department": "Women",
  "category": "Coats & Jackets",
  "colors": [
    "Tan"
  ],
  "description": "Barely worn wool coat, smoke-free home.",
  "likeCount": 12,
  "commentCount": 2,
  "shareCount": 4,
  "sellerUsername": "sample_seller",
  "sellerName": "Sample Seller",
  "sellerUrl": "https://poshmark.com/closet/sample_seller",
  "pictureUrls": [
    "https://images.example.invalid/sample.jpg"
  ]
}

Ways to use this data

  • Resale sourcing and arbitrage: scan brand and keyword listings for underpriced items worth reselling.
  • Price and market research: collect sold listings with their sold dates and last asking prices to see which similar items sell, and when.
  • Closet and competitor tracking: monitor specific sellers' closets for new listings and price changes.
  • Fashion trend analysis: build datasets of styles, brands, colors and conditions across departments and categories.
  • Deal alerting: run Incremental mode on a saved search or brand to get only newly listed or price-changed items.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Poshmark Scraper return?

The documented output for Poshmark Scraper includes kind, recordid, listingid, url, title, brand, size and sizedisplay. Availability of each field depends on the source page and the selected mode.

How much does Poshmark Scraper cost?

It costs $2.00 per 1,000 results on the Apify Free plan and from $1.40 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared records, and unchanged ones are not billed unless you turn on Emit unchanged.

What is the difference between Resume and Incremental mode?

They solve two different problems. Resume continues ONE specific run that got interrupted, using its run or dataset ID so you don't pay to re-collect what it already has. Incremental mode is for running the same search, brand or closet again and again, for example daily, and getting only what changed.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Poshmark Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.