Mercari Scraper – Live Thrift Resale Data avatar

Mercari Scraper – Live Thrift Resale Data

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Mercari Scraper – Live Thrift Resale Data

Mercari Scraper – Live Thrift Resale Data

Live Mercari resale intelligence for thrift, vintage & streetwear resellers. Keyword search, full listing details, closet inventory, seller stats, sold comps & URL scrape — streamed as structured JSON in real time. Free plan: 2 results per run; paid plans unlimited.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Emmanuel

Emmanuel

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Mercari Real-Time Data — live resale market intelligence, thrift price comps, closet inventory, and vintage deal finder

Mercari Real-Time Data turns Mercari into a live pricing feed for fashion resellers. Search any thrift, vintage, or streetwear keyword and stream structured, ready-to-analyze data — prices, brands, sizes, condition, likes, seller stats, sold comps — straight into your dataset in real time. Whether you flip vintage single-stitch tees, hunt gorpcore fleece under retail, or run pricing models across marketplaces, this Actor gives you the market picture in seconds.

⚠️ Free plan notice: on a free Apify plan, runs are limited to 2 items per run. Upgrade to any paid Apify plan (Bronze or higher) for unlimited exports. See Free plan vs paid plans for details.


👥 Who is this for?

  • Vintage & thrift resellers sourcing undervalued inventory for Poshmark, eBay, Depop, and Mercari cross-listing
  • Resale arbitrageurs hunting under-retail deals: vintage single-stitch tees, designer denim, gorpcore, Y2K, grail sneakers
  • Consignment shop owners monitoring competitor closet inventory and sell-through
  • Fashion market researchers and pricing intelligence teams tracking brand-level trends
  • AI agents & automation builders wiring live resale data into Claude, LangChain, Zapier, Make, or custom pricing bots

🎯 What you can do with it

  • Find undervalued thrift & vintage inventory — search "vintage 90s levis 501" with a max price and stream every hit with likes and condition to spot steals before anyone else
  • Price comps & sell-through analysis — pull completed and sold listings for a brand or seller, compute average sold price, sell-through rate, and resale margins
  • Closet inventory monitoring — track top competitors' or consignment closets' stock, pricing moves, and listing cadence
  • Instant Slack / Discord deal alerts — every scraped row can be pushed live to a webhook, so newly listed steals hit your phone in seconds
  • Multi-platform pricing sync — export clean JSON/CSV to feed cross-listing, repricing, and inventory pipelines
  • AI agent feeds — plug the Actor into the Apify MCP server and ask your assistant market questions directly (see below)

✨ Feature matrix

FeatureWhat it doesOutput (featureType)
🔍 Listing SearchLive keyword search with brand, size, condition, and min/max price filters. Defaults to 10 results per keyword for instant demo runs.listing_search
🧬 Full Details EnrichmentOptional toggle on Listing Search: each search row is enriched in place with description, fabric/material tags, style tags, full image gallery, and seller shipping discounts. Same row, details_fetched: true — never duplicates, never filters items out.listing_search
📦 Listing DetailsFull listing records for specific Mercari URLs or listing IDs.listing_details
🏬 Closet ListingsScrape any reseller/thrift closet inventory to track competitor stock.closet_listings
👤 Seller ProfileReseller stats: love notes (ratings), items sold, closet size, verification, bio details.seller_profile
🧾 Sold Item Comps / HistoryCompleted and sold listings to calculate real market comps, resale margins, and sell-through rates.sold_history
🔗 Scrape By URLDirect Mercari URL processing: search URLs, closet URLs, item pages, category pages, brand feeds.scrape_by_url

🚀 Quick start

  1. Click Start — the input is prefilled with three thrift keywords and 10 results max, so your first run finishes in seconds.
  2. Watch results stream into the dataset row by row.
  3. (Optional) Enable Enrich with full listing details for deeper rows, or add a Webhook URL for instant alerts.

Example searches that work well

GoalKeywordsFilters
Vintage denim flipsvintage 90s levis 501, wrangler cowboy cutMax price 60
Gorpcore sourcingpatagonia fleece, arcteryx gamma mxCondition: like new
Workwear grailscarhartt detroit jacket, carhartt single knee—
Y2K / streetweary2k baby tee, stussy 90s—
Sneaker compsjordan 1 chicago 1985Sort: price high → low

📥 Input parameters

🌍 Region

FieldTypeDefaultDescription
RegionselectUSMercari market: US (USD) or JP (JPY). Affects currency and the recommended connection region.

🔍 Listing Search (on by default)

FieldTypeDefaultDescription
Search keywordsstring list3 thrift examplesOne or more search terms. Required when Listing Search is on.
Max results per keywordinteger (1–200)10Listings per keyword. Defaults to 10 for instant first runs.
Sort orderselectcreated_timeRelevance, newest, price low→high, price high→low, most liked.
Brand filtertext—e.g. Carhartt, Levi's, Patagonia.
Size filtertext—e.g. M, L, 32.
Condition filterstring list—Condition IDs: 1 New, 2 Like new, 3 Hardly used, 4 Lightly used, 5 Used, 6 Damaged.
Min / Max priceinteger—Price window in region currency — perfect for under-retail hunts.
Listing status filterstring listSTATUS_ON_SALESTATUS_ON_SALE for live, STATUS_SOLD_OUT for sold.
Category IDtext—Optional numeric category ID.
Enrich with full listing detailscheckboxfalseEnriches each search row in place with description, fabric/material tags, style tags, full image gallery, and seller shipping discounts. Same row (featureType: listing_search, details_fetched: true). Adds a little extra time per listing to enrich full product details.

📦 Listing Details

FieldTypeDefaultDescription
Listing IDsstring list—24-character Mercari listing IDs.
Listing URLsstring list—Full product URLs.

🏬 Closet Listings / 👤 Seller Profile / 🧾 Sold Item Comps

FieldTypeDefaultDescription
Seller IDsstring list—Mercari seller IDs. Shared by Closet Listings, Seller Profile, and Sold Comps.
Seller usernamesstring list—Alternative to seller IDs.
Max listings per closetinteger (1–500)30Active listings per closet.
Max sold items per sellerinteger (1–200)30Sold listings per seller.

🔗 Scrape By URL

FieldTypeDefaultDescription
Mercari URLsstring list—Any Mercari search, closet, item, category, or brand URL. Auto-detects the page type.
Max pages per URLinteger (1–20)3How many result pages to browse per URL.

✨ Output options

FieldTypeDefaultDescription
Include descriptioncheckboxtrueKeep seller-written description text.
Include shipping detailscheckboxtrueKeep shipping cost, method, and origin.
Include seller detailscheckboxtrueKeep seller rating, counts, and location on item rows.

⚙️ Run limits & delivery

FieldTypeDefaultDescription
Global max itemsinteger (1–10000)—Hard cap across all features.
Webhook URLtext—Optional real-time push of every row (see Webhooks).
Webhook formatselectjsonjson (full record) or slack (Slack message).

🌐 Connection

FieldTypeDefaultDescription
Proxy settingsproxyApify Residential, USResidential proxies recommended. Match the country to the Region.

📤 Output fields (dataset schema)

Every row carries featureType, country, scrapedAt, and url, plus the fields below depending on the feature.

Pricing

FieldTypeNotes
current_pricenumberCurrent asking (or sold) price.
currencystringUSD / JPY.
original_pricenumberSeller's original price when discounted.
discount_percentagenumberComputed markdown %.
shipping_costnumber0 = free shipping.
shipping_payerstringWho pays shipping (seller-paid discounts show here).
free_shippingboolean
accepts_offers / price_is_negotiablebooleanNegotiation signals.
lowest_offer_acceptednumberWhen exposed by the seller.

Product

FieldTypeNotes
title, descriptionstringDescription filled on details/enriched rows.
brand, brand_idstringe.g. Carhartt.
sizestring
conditionstringnew, like_new, good, fair, poor.
condition_descriptionstringSeller's damage/notes text.
category, subcategory, category_pathstring/arrayFull hierarchy.
color, material, genderstringFabric/material when exposed.
style_tags, hashtagsarrayStyle & thrift tags.
item_specificsobjectExtra structured specifics when available.
is_vintage, is_handmade, is_authenticbooleanVintage & authenticity flags.
main_image_url, additional_image_urlsstring/arrayFull gallery on enriched rows.

Engagement & timing

FieldTypeNotes
likes_count, comments_count, views_countintegerDemand signals.
number_of_offersinteger
is_promoted, is_featuredboolean
created_at, updated_at, sold_atstringISO timestamps.
time_since_listedstringe.g. 2d 4h.
is_newly_listedbooleanListed in the last 24 h — instant-deal-alert bait.
is_sold, statusAvailability.

Seller

FieldTypeNotes
seller_username, seller_id, seller_display_namestring
seller_rating, seller_ratings_countLove notes.
seller_items_sold, seller_items_listedintegerSales history & closet size.
seller_verified, seller_response_rateTrust signals.
seller_location, seller_join_date, seller_last_activestring

Shipping & location

FieldType
item_location, ships_from, ships_to, shipping_method, local_pickup_availablestring / array / boolean

Row metadata

FieldTypeNotes
featureTypestringWhich feature produced the row.
positionintegerSearch rank.
details_fetchedbooleantrue when the search row was enriched in place.
pageTypestringscrape_by_url rows only.

🔔 Webhook integration

Every row is always saved to the run dataset. Optionally, each row is also POSTed in real time to your webhook — perfect for instant alerts when a rare thrift item or low-priced comp drops.

Setup:

  1. Put your webhook URL into Webhook URL (Slack, Discord, Zapier, Make, n8n, or your own pricing bot).
  2. Choose Webhook format:
    • json — the full dataset record as JSON (Slack: use with Incoming Webhooks + a formatter; Discord/Zapier/Make: consume directly).
    • slack — a ready-to-post Slack message payload ({"text": "…"}), just paste a Slack Incoming Webhook URL.
  3. Start the run — alerts arrive as rows stream, not at the end.

Slack payload example:

{
"text": ":shopping_bags: *Carhartt Detroit Jacket Vintage Brown* • *Price:* $85 • *Brand:* Carhartt • *Condition:* good\n*Seller:* thriftking92\n<https://www.mercari.com/us/item/m12345678901/|Open on Mercari>"
}

JSON payload: the full dataset record (all fields from the Output section above).

🤖 MCP / AI Agent usage

Plug this Actor into Claude Desktop, Cursor, or LangChain via the Apify MCP Server:

  1. In Claude Desktop / Cursor, add the Apify MCP server and sign in with your Apify token.
  2. Enable this Actor for the assistant.
  3. Ask natural-language questions like:
    • "What is the average sold price for a 90s Carhartt J97 jacket on Mercari?"
    • "Find Patagonia fleece under $40 with more than 10 likes."
    • "Watch this closet and alert me when new vintage Levi's 501s drop."

The Actor returns clean, structured rows your AI agent can aggregate, chart, or reason over directly.


🔒 Free plan vs paid plans

PlanBehavior
Free (no paid plan)Runs are capped at 2 items per run. A clear log line explains the cap and the run exits gracefully — no errors.
Any paid plan (Bronze+)Paying user — full output. Unlimited results, all features, no caps.
  • The cap applies to the whole run (all features combined) and is visible in the run's OUTPUT summary under paywall.
  • Owners can tune the free cap (FREE_TIER_MAX_ITEMS) or block free runs entirely (FREE_TIER_MODE=block) via Actor environment variables in the Apify Console.
  • Pay-per-event charges apply per collected result on paid plans.

❓ FAQ

Does this need my Mercari login or account? No. The Actor collects publicly available catalog data — no accounts, no logins, nothing to configure.

Do I need proxies? No setup needed — the Actor defaults to Apify Residential proxies (US) automatically, and the input lets you switch regions. Residential connections give the most reliable results at scale.

Why do I only get 2 results? You're on a free Apify plan. Free runs are capped at 2 items so you can try before you buy. Upgrade to any paid plan for unlimited exports.

How fast is a run? A prefilled 10-result search finishes in seconds. Full-details enrichment adds a little extra time per listing to enrich full product details. Large runs (10,000+ items) stream row by row, so memory stays flat and the run remains stable for hours (runs support up to 10,000 seconds).

How often can I run it? As often as you like. For continuous monitoring, schedule the Actor (e.g. every 15 minutes with a webhook) and diff dataset rows by created_at / is_newly_listed for new-drop alerts.

Is there rate limiting? The Actor automatically paces requests with small randomized pauses, rotates connections, and retries transient hiccups on your behalf. You don't need to configure anything — just keep result volumes within your plan's budget.

Can I get the raw internal payloads? No — output is a clean, stable, structured catalog schema. This keeps your pipelines from breaking when internal formats change.

Which regions are supported? US and JP markets. Currency and language adapt automatically.


🧾 Notes

  • One listing = one dataset row. Full-details enrichment merges into the same row (details_fetched: true) — never duplicates, never filters items out.
  • Every discovered item goes to the dataset, even when deep attributes are unavailable — those rows simply carry null in the missing fields.
  • Structured catalog intelligence only: stable field names, no internal payloads, no brittle formats.

Keywords this Actor shines with: thrift flips, vintage finds, streetwear, gorpcore, Y2K, resale arbitrage, market comps, sell-through, closet monitoring, Poshmark / eBay / Depop / Mercari cross-listing.