Poshmark Sold Listings Scraper - Mercari, Depop & Grailed avatar

Poshmark Sold Listings Scraper - Mercari, Depop & Grailed

Pricing

from $1.28 / 1,000 listings

Go to Apify Store
Poshmark Sold Listings Scraper - Mercari, Depop & Grailed

Poshmark Sold Listings Scraper - Mercari, Depop & Grailed

[Limited Launch Offer $1.50/1K] Poshmark sold listings plus Mercari US, Depop and Grailed in one schema: sold price comps, sold date, days to sell, brand, size, condition. Free resale comps stats.

Pricing

from $1.28 / 1,000 listings

Rating

0.0

(0)

Developer

Scrape With Me

Scrape With Me

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

38 minutes ago

Last modified

Share

Poshmark Sold Listings Scraper - Mercari, Depop & Grailed Price Comps

Get Poshmark sold listings and Mercari US, Depop and Grailed listings - real sold price comps with sold date and days to sell - in one run. Type a search like nike dunk low or lululemon align 25 and get sold listings and/or active listings from all four resale apps in the same format:

  • Sold price and sold date, original price, and days to sell (listing date to sale).
  • Title, brand, size, condition, new or used, category, shipping price when shown.
  • Seller, likes, location, main photo, listing URL.
  • A free price summary per search and marketplace: listing count, min / 25% / median / average / 75% / max price, median days to sell and the share of new items.

No login, no cookies, no browser - fast and cheap.

Why this one

  • Four marketplaces, one schema. Compare what the same item sells for on Poshmark, Mercari, Depop and Grailed without merging four different exports.
  • Real sold comps. Sold listings with the price they sold at and when, so you can price inventory, find arbitrage between apps and see how fast things move.
  • Price statistics included. Every search ends with a summary row (median, quartiles, average, days to sell) - no spreadsheet needed for a quick comp.
  • Filters that work on the marketplace side. Price range and sort order are sent to each site, so you don't pay for listings you filter out.
  • Clean results. Results that only match one word of your search (filler that some apps add) are dropped.

Poshmark sold listings and Mercari US sold prices

Sold listings come straight from each marketplace's own search with the sold filter on: Poshmark "sold" items, Mercari US sold and in-transaction items, and Grailed sold items, each with the price it sold for. Depop lists only items for sale.

Resale price comps summary (median, quartiles, days to sell)

With includeSummary on (default), every search and marketplace gets one extra row with the listing count, min / 25% / median / average / 75% / max price, the median days to sell and the share of new items - a ready-made comp.

Use cases

  • Resellers and flippers: price a pair, a bag or a jacket from recent sales before you list it.
  • Sourcing / arbitrage: spot items selling for more on one app than another.
  • Brand and market research: resale value, sell-through speed and the share of new-with-tags items for a brand or model.
  • Run it on a schedule: weekly comps for a brand or model, sent to your repricing tool, sheet, BI tool or app through the API.

Input example

{
"searchQueries": ["nike dunk low panda", "arcteryx beta ar"],
"marketplaces": ["poshmark", "mercari", "depop", "grailed"],
"listingStatus": "sold",
"sortBy": "newest",
"minPrice": 50,
"maxPrice": 400,
"maxResultsPerSearch": 100,
"includeSummary": true
}
  • listingStatus: sold (price comps), active (for sale now) or both.
  • sortBy: newest (recently sold / listed), relevance, priceLow, priceHigh.
  • maxResultsPerSearch applies to each keyword on each marketplace (and each status when both).

Output example

A listing row (real data):

{
"type": "listing",
"marketplace": "mercari",
"status": "sold",
"id": "m94060806073",
"url": "https://www.mercari.com/us/item/m94060806073/",
"title": "Arc’teryx Beta AR Jacket Mens 2XL",
"brand": "Arc'teryx",
"size": "XXL (50-52)",
"condition": "New",
"isNew": true,
"category": "Jackets",
"price": 400.0,
"originalPrice": 450.0,
"soldPrice": 400.0,
"currency": "USD",
"soldAt": "2025-11-25T21:44:11Z",
"listedAt": "2025-06-27T23:40:05Z",
"daysToSell": 150.9,
"sellerId": "331703238",
"imageUrl": "https://u-mercari-images.mercdn.net/photos/m94060806073_1.jpg?1751730594",
"imageCount": 1,
"searchQuery": "arcteryx beta ar",
"scrapedAt": "2026-10-09T01:06:40Z"
}

A summary row (one per search and marketplace, free):

{
"type": "summary",
"marketplace": "mercari",
"status": "sold",
"searchQuery": "arcteryx beta ar",
"currency": "USD",
"listingCount": 15,
"minPrice": 200.0,
"p25Price": 216.0,
"medianPrice": 250.75,
"averagePrice": 268.17,
"p75Price": 300.0,
"maxPrice": 400.0,
"medianDaysToSell": 36.1,
"newShare": 0.6
}

Every row has the same fields; a field a marketplace doesn't show is null (for example Mercari doesn't show seller usernames in search, Depop doesn't show listing dates). The dataset has two views: Listings and Price summary.

Run it on a schedule and connect it to your tools

Schedule: in Apify Console open Schedules → Create, pick this actor and your input, and set it to run every Monday at 07:00 (your time zone) for a fresh dataset on a fixed day. Each run returns the full, current result set as a new dataset.

Integrations (Actor → Integrations tab, no code):

  • Google Sheets — append every run's rows to a sheet.
  • Make, Zapier, n8n — start the actor from a scenario/zap/workflow and use the rows in the next steps.
  • Webhook — get a POST to your endpoint when a run succeeds, then download the dataset.
  • Slack / email — notify your team when a scheduled run finishes.

AI agents (MCP) — Claude, ChatGPT, Cursor, VS Code or any MCP client can run it as a tool: add the Apify MCP server https://mcp.apify.com?actors=kalilfagundes.w/resale-sold-comps-scraper (sign in with your Apify account) and ask for the data in plain language. The agent fills the input from the input schema and reads the dataset back.

API — call it from your code (pip install apify-client / npm i apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("kalilfagundes.w/resale-sold-comps-scraper").call(run_input={
"searchQueries": [
"nike dunk low",
"lululemon align leggings"
],
"listingStatus": "both",
"sortBy": "newest",
"maxResultsPerSearch": 60,
"maxItems": 1000
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('kalilfagundes.w/resale-sold-comps-scraper').call({
"searchQueries": [
"nike dunk low",
"lululemon align leggings"
],
"listingStatus": "both",
"sortBy": "newest",
"maxResultsPerSearch": 60,
"maxItems": 1000
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Pricing

Pay per event, platform usage included: one listing event per listing row. Summary rows are free. Higher Apify plans get lower prices (see the Pricing tab). Set a maximum cost per run in the run options; the actor stops cleanly when it is reached.

Limits

  • Depop does not show sold items publicly, so Depop only returns active listings (with listingStatus active or both).
  • Grailed returns up to 1,000 listings per search (its search limit); split a broad search into narrower ones for more.
  • Sold date: Poshmark and Mercari give the time the listing changed to sold; Grailed gives the sale time.
  • Prices are in USD (US marketplaces). Mercari here is mercari.com (US), not Mercari Japan.

Feedback

If this actor saves you time, a quick rating on its Store page helps other people find it. Something not working? Open an issue in the Issues tab and it gets fixed fast.