Mercari Scraper | Listings, Sold Prices and Sellers avatar

Mercari Scraper | Listings, Sold Prices and Sellers

Pricing

from $2.98 / 1,000 listings

Go to Apify Store
Mercari Scraper | Listings, Sold Prices and Sellers

Mercari Scraper | Listings, Sold Prices and Sellers

Mercari scraper for Mercari Japan (メルカリ): 100 listings in 13 seconds, 47 fields each. Get the price in yen, real sold prices, condition, full description, category, brand, seller name, ratings and sales, shipping origin and every photo. Search by keyword, URL or id, no Mercari account needed.

Pricing

from $2.98 / 1,000 listings

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Mercari Scraper (メルカリ) | Listings, Sold Prices and Sellers (2026)

1 keyword. 100 Mercari listings. 47 fields per listing.

From SilentFlow. Creators of Pinterest Scraper (#1 for “pinterest pins scraper” in Apify Store search) and Leboncoin Scraper Ppe, with 230,000+ combined lifetime runs.

Every Mercari Japan listing as one complete row: the price in yen, on sale or sold, the condition, the full description, the seller's ratings and sales, where it ships from, and every photo. Our test run returned 100 Nintendo Switch listings in 14 seconds, each with its listing page and its seller already read, with no Mercari account and no Japanese phone number.

Why choose this actor?

Opening fifty Mercari tabs to read the condition notes and check each seller's ratings? Building a price guide from ask prices because the sold ones are hard to collect? Getting a seller id and a condition code when you needed a name and a word?

  • 47 fields filled per listing, not 22. On the default run (100 listings for nintendo switch), 47 of the 52 fields carry a value on at least half the rows: the full description, the condition in plain English, the category path in words, the brand, the seller's name, their good, normal and bad ratings, star score and number of sales, the prefecture the item ships from and the shipping delay, likes, comments and every photo in full size. The most used Mercari Japan scraper shows 22 fields in its README example, with a seller id but no seller name or rating, codes instead of the condition and shipping method, and no description.
  • Keywords, URLs and ids, in one form. Search by keyword, paste any jp.mercari.com address (search with its filters, listing, Mercari Shops product, seller profile, category, brand), or paste bare ids: a listing id (m39681789670), a Mercari Shops product id or a seller id (259877772). In our test, three ids gave 40 rows in 6 seconds: one listing, one Shops product and 38 listings of the seller's inventory. The most used Mercari Japan scraper takes a keyword and URLs, not ids.
  • Eight form fields, none of them required. Keywords, URLs, ids and a cap at the top, then status, sort and a yen price range. The prefilled input runs as is. Sort and direction are one menu (Price: low to high, Newest first, Most liked), and there is no connection setting to pick. The most used Mercari Japan scraper has nine fields.

Try Mercari Scraper

Try your first 100 listings

Paste this input in the JSON tab of the Input page and press Start. It reads the 100 Nintendo Switch listings Mercari Japan ranks first among those on sale, with the listing page and the seller of each one.

{
"keywords": ["nintendo switch"],
"maxItems": 100,
"status": ["on_sale"],
"sort": "relevance"
}

It runs on the Apify Free plan. Each listing becomes one row of your dataset: open the Output tab to see the table, switch to the Sellers view to compare sellers, or export the rows as JSON, CSV or Excel.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it the full picture of this scraper:

You have access to the Mercari Scraper on Apify: silentflow/mercari-scraper
It reads Mercari Japan (jp.mercari.com, メルカリ) without an account and returns one row per listing.
Every row includes the listing page (description, all photos, likes, comments, hashtags, shipping)
and the seller (name, rating split, star score, sales count).
Input schema (no field is required, at least one of keywords, startUrls or ids is needed):
- keywords (array of strings): searches on Mercari Japan, Japanese or English ("nintendo switch", "ポケモンカード").
- startUrls (array of {url}): jp.mercari.com addresses. Search pages keep their filters
(keyword, status, sort, order, price_min, price_max, item_condition_id, category_id, brand_id, exclude_keyword).
Also /item/m..., /shops/product/..., /user/profile/{sellerId} (whole inventory), /category/{id}, /brand/{id}.
- ids (array of strings): listing ids (m39681789670), Mercari Shops product ids (spthBBmXq9U6WbK2V3izBG)
or seller ids (259877772, whole inventory). A pasted URL also works.
- maxItems (integer, default 100): max rows for the whole run, across keywords, URLs and ids.
- status (array, default ["on_sale"]): any of on_sale, sold_out, trading. Sold and trading are real sold prices.
- sort (string, default "relevance"): relevance, newest, oldest, price_asc, price_desc, most_liked.
- priceMin, priceMax (integers, JPY): price band. Empty means no bound.
Filters written in a URL win over the form filters for that URL. Seller ids and profiles return
on sale, sold and trading listings, newest first.
Output per listing (52 fields, null when absent):
- id (string, m... or Shops product id), url (string), title (string)
- description (string), status (on_sale | sold_out | trading), condition (string, English), conditionId (1-6)
- category (string), categoryId (integer), categoryPath (string, "root > ... > leaf"), brand (string), brandId (integer)
- hashtags (array of strings), itemType (mercari | shop)
- isAuction (boolean), auctionHighestBid, auctionBidsCount, auctionInitialPrice (integers), auctionEndsAt (RFC 3339)
- price (integer, JPY), currency ("JPY"), likesCount, commentsCount (integers)
- sellerId, sellerName, sellerUrl, sellerAvatarUrl (strings), sellerRatingsGood, sellerRatingsNormal,
sellerRatingsBad, sellerRatingsCount, sellerSalesCount (integers), sellerStarRating (number),
sellerIsOfficial, sellerIsSmsVerified (booleans), sellerCreatedAt (RFC 3339)
- shippingPayer (seller | buyer), shippingMethod, shippingFromArea (prefecture), shippingDuration (strings),
shippingDurationMinDays, shippingDurationMaxDays (integers), isAnonymousShipping (boolean)
- createdAt, updatedAt (RFC 3339 UTC)
- imageUrl (string), images (array of strings), thumbnailUrl (string), imagesCount (integer)
- searchKeyword (string, the keyword or "seller ..." / "category ..." that found the row), scrapedAt (RFC 3339), dataType ("listing")
Use apify-client for Python or JavaScript: client.actor("silentflow/mercari-scraper").call(run_input=...).

How to scrape Mercari Japan listings

Three inputs, from the simplest to the most complete. Each one runs as is.

Get the top 100 listings for a keyword

{
"keywords": ["nintendo switch"],
"maxItems": 100
}

The listings Mercari Japan shows first for the keyword, on sale, each with its price in yen, condition, description, seller ratings, shipping prefecture and photos. English keywords work; the same search in Japanese (ニンテンドースイッチ) often returns more, because sellers write their titles in Japanese.

Pull real sold prices for Pokémon 151 cards, newest first

{
"keywords": ["ポケモンカード 151"],
"status": ["sold_out", "trading"],
"sort": "newest",
"priceMin": 1000,
"maxItems": 30
}

Sold and Trading listings are items a buyer already paid for, so their price is what the card went for, not what a seller hopes for. In our test run this input returned 30 rows in 4 seconds, the most recent sales first. Raise maxItems to a few hundred for a proper comps table.

Read a listing, a Shops product and a seller's inventory from their ids

{
"ids": ["m33875233066", "spthBBmXq9U6WbK2V3izBG", "259877772"],
"maxItems": 40
}

A listing id starts with m, a Mercari Shops product id is a long code of letters and digits, and a seller id is a number. The first two give one row each; the seller id gives the seller's whole inventory, on sale, sold and trading, newest first. In our test this input returned 40 rows in 6 seconds.

Input parameters

ParameterTypeDefaultDescription
keywordsarray of stringsprefilled with nintendo switchSearches on Mercari Japan, one per line, in Japanese or English. Each keyword runs its own search; results are combined without duplicates.
startUrlsarray of URLsnonejp.mercari.com addresses: search pages with their filters, listings, Mercari Shops products, seller profiles, categories and brands. See the formats below.
idsarray of stringsnoneListing ids (m...), Mercari Shops product ids or seller ids. A pasted URL also works.
maxItemsinteger100Max rows for the whole run, across keywords, URLs and ids. No fixed limit.
statusarray["on_sale"]on_sale, sold_out, trading (paid, shipping in progress). Pick several to mix them.
sortstringrelevancerelevance, newest, oldest, price_asc, price_desc, most_liked.
priceMinintegernoneOnly listings at or above this price, in yen.
priceMaxintegernoneOnly listings at or below this price, in yen.

Keywords run first, then URLs, then ids, and the run stops at maxItems. A listing found twice (by two keywords, or by a keyword and a URL) is delivered once.

Accepted formats in startUrls:

You pasteThe run reads
https://jp.mercari.com/search?keyword=iphone%2015&status=sold_outthat search, with every filter of the address
https://jp.mercari.com/en/search?keyword=watchthe same search from the English site
https://jp.mercari.com/item/m39681789670that single listing
https://jp.mercari.com/shops/product/spthBBmXq9U6WbK2V3izBGthat single Mercari Shops product
https://jp.mercari.com/user/profile/259877772the seller's whole inventory, on sale, sold and trading, newest first
https://jp.mercari.com/category/702the category feed (702 is Nintendo Switch games)
https://jp.mercari.com/brand/7572the brand feed (7572 is Nintendo Switch)

Search addresses keep the filters Mercari writes in them: keyword, exclude_keyword, status, sort and order, price_min, price_max, item_condition_id, category_id, brand_id, shipping_payer_id and seller_id. A filter written in the address wins over the form for that address; a filter the address leaves out is taken from the form. So the condition filter, the category and the excluded words, which the form does not show, all ride in a search address you build on jp.mercari.com and paste here.

Accepted formats in ids:

You pasteThe run reads
m39681789670that listing
spthBBmXq9U6WbK2V3izBGthat Mercari Shops product
259877772the seller's whole inventory, on sale, sold and trading, newest first
any address from the table abovethe same as in startUrls

An address or id that is not a Mercari Japan page is skipped and named in the log, and the rest of the input still runs. A listing that was deleted gives no row and is named in the log.

What data can you extract from Mercari?

Each row is one listing, with 52 top-level fields grouped the way you read them.

GroupFields
Identity (3)id (the listing id, stable), url (the listing page), title
Content (11)description, status, condition, conditionId, category, categoryId, categoryPath, brand, brandId, hashtags, itemType
Auction (5)isAuction, auctionHighestBid, auctionBidsCount, auctionInitialPrice, auctionEndsAt
Price and interest (4)price (yen, integer), currency, likesCount, commentsCount
Seller (13)sellerId, sellerName, sellerUrl, sellerAvatarUrl, sellerRatingsGood, sellerRatingsNormal, sellerRatingsBad, sellerRatingsCount, sellerStarRating, sellerSalesCount, sellerIsOfficial, sellerIsSmsVerified, sellerCreatedAt
Shipping (7)shippingPayer, shippingMethod, shippingFromArea, shippingDuration, shippingDurationMinDays, shippingDurationMaxDays, isAnonymousShipping
Time (2)createdAt (listed), updatedAt (last change), both RFC 3339 UTC
Media (4)imageUrl (first photo, full size), images (every photo, full size), thumbnailUrl, imagesCount
Meta (3)searchKeyword (what found the row), scrapedAt, dataType

What the values look like:

  • Prices are numbers in yen. price: 16000 with currency: "JPY", never a string. For an auction listing, price is the current highest bid and auctionHighestBid, auctionBidsCount and auctionEndsAt say where the auction stands.
  • Codes come with their words. conditionId: 4 comes with condition: "Some scratches or stains", the category id with its name and the whole path (ゲーム・おもちゃ・グッズ > テレビゲーム > Nintendo Switch > 本体(Nintendo Switch)), the shipping method with its name (ゆうゆうメルカリ便) and the payer with seller or buyer.
  • The seller is on the row. sellerRatingsGood: 218, sellerRatingsBad: 0 and sellerSalesCount: 109 tell you who you are buying from without opening their profile. The Sellers view of the dataset lines them up.
  • Text stays in the seller's words. Titles, descriptions, category names and prefectures are in Japanese as Mercari shows them; the condition is in English so you can filter on it.
  • Absent is null. A listing without a brand has brand: null, never an empty string. A listing that is not an auction has null in the four auction numbers.
  • Mercari Shops rows are rows too. itemType: "shop" marks products sold by a shop on Mercari Shops; their seller fields hold the shop's name, page, star score and review count, and the good, normal and bad split is null because Mercari Shops does not publish it.

Output example

A real row from the default run (the images list is cut to three photos here; the row has twelve):

{
"id": "m39681789670",
"url": "https://jp.mercari.com/item/m39681789670",
"title": "Nintendo Switch Joy-Con (L) ネオンブルー/ (R)…",
"description": "Nintendo Switch Joy-Con(L)ネオンブルー/(R)ネオンレッドのセットです。\n\n4年ほど前に購入しましたが、Switch 2へ買い替えたため出品します。\n\n【商品の状態】\n・全体的に使用感、傷や汚れがあります。\n・画面保護フィルムは割れていたため剥がしています。\n・Joy-Conのスティックに不具合があり、動きが悪い状態です。\n・一度充電できなくなったため、充電口を修理して使用していました。\n・HDMIケーブルは元のものが分からなくなったため付属しません。\n\n中古品のため、上記以外にも傷や使用感があります。\n商品の状態は写真にてご確認ください。\n\n本体は初期化済みです。\n\n中古品であること、上記の状態をご理解いただける方のみご購入をお願いいたします。\n\nノークレーム・ノーリターンでお願いいたします。\n\n#NintendoSwitch\n#Nintendo_Switch\n#Switch\n#ゲーム",
"status": "on_sale",
"condition": "Some scratches or stains",
"conditionId": 4,
"category": "本体(Nintendo Switch)",
"categoryId": 701,
"categoryPath": "ゲーム・おもちゃ・グッズ > テレビゲーム > Nintendo Switch > 本体(Nintendo Switch)",
"brand": "Nintendo Switch",
"brandId": 7572,
"hashtags": ["NintendoSwitch", "Nintendo_Switch", "Switch", "ゲーム"],
"itemType": "mercari",
"isAuction": false,
"auctionHighestBid": null,
"auctionBidsCount": null,
"auctionInitialPrice": null,
"auctionEndsAt": null,
"price": 16000,
"currency": "JPY",
"likesCount": 32,
"commentsCount": 2,
"sellerId": "712772789",
"sellerName": "ゆずりん",
"sellerUrl": "https://jp.mercari.com/user/profile/712772789",
"sellerAvatarUrl": "https://static.mercdn.net/images/member_photo_noimage.png",
"sellerRatingsGood": 218,
"sellerRatingsNormal": 0,
"sellerRatingsBad": 0,
"sellerRatingsCount": 218,
"sellerStarRating": 5,
"sellerSalesCount": 109,
"sellerIsOfficial": false,
"sellerIsSmsVerified": true,
"sellerCreatedAt": "2018-02-16T15:53:48Z",
"shippingPayer": "seller",
"shippingMethod": "ゆうゆうメルカリ便",
"shippingFromArea": "広島県",
"shippingDuration": "4~7日で発送",
"shippingDurationMinDays": 4,
"shippingDurationMaxDays": 7,
"isAnonymousShipping": true,
"createdAt": "2026-09-23T02:51:51Z",
"updatedAt": "2026-09-23T16:13:02Z",
"imageUrl": "https://static.mercdn.net/item/detail/orig/photos/m39681789670_1.jpg?1790131911",
"images": [
"https://static.mercdn.net/item/detail/orig/photos/m39681789670_1.jpg?1790131911",
"https://static.mercdn.net/item/detail/orig/photos/m39681789670_2.jpg?1790131911",
"https://static.mercdn.net/item/detail/orig/photos/m39681789670_3.jpg?1790131911"
],
"thumbnailUrl": "https://static.mercdn.net/thumb/item/webp/m39681789670_1.jpg?1790131911",
"imagesCount": 12,
"searchKeyword": "nintendo switch",
"scrapedAt": "2026-09-24T12:06:15Z",
"dataType": "listing"
}

Advanced usage

Five recipes for what the examples above do not show. Each JSON runs as is.

Find the cheapest like-new iPhone 15 from a saved search address

{
"startUrls": [
{"url": "https://jp.mercari.com/search?keyword=iphone%2015&status=on_sale&sort=price&order=asc&price_min=20000&item_condition_id=1,2"}
],
"maxItems": 50
}

Build the search on jp.mercari.com with the filter panel (here: new or like new, 20,000 yen and up, cheapest first), copy the address, paste it. Every filter of the address applies, including the condition filter the form does not show. In our test this input returned 50 new or like-new listings from 20,000 to 22,000 yen in 7 seconds. Schedule it hourly and alert on the first rows to catch underpriced units before other buyers.

Watch a category for new listings

{
"startUrls": [{"url": "https://jp.mercari.com/category/702?sort=created_time&order=desc"}],
"priceMax": 5000,
"maxItems": 150
}

Category 702 is Nintendo Switch games. Newest first with a price cap gives you the fresh cheap listings of a whole category, with no keyword to guess. In our test this input returned 150 listings in 18 seconds, over two result pages. Compare id with the previous run to keep only what is new.

Rank the most liked sneakers under 5,000 yen

{
"keywords": ["スニーカー"],
"sort": "most_liked",
"priceMax": 5000,
"maxItems": 60
}

likesCount is how many buyers saved the listing: sorting by it surfaces what the market wants at that price. In our test the 60 rows came back in 7 seconds, and all 60 were Mercari Shops products (itemType: "shop"). Filter the dataset on itemType to split shops from individuals, or add ids of the shops you already follow.

List a brand's cheapest listings from its brand page

{
"startUrls": [{"url": "https://jp.mercari.com/brand/7572"}],
"priceMax": 5000,
"sort": "price_asc",
"maxItems": 100
}

A brand page is every listing Mercari files under that brand, whatever words the seller used in the title. Brand 7572 is Nintendo Switch. The form's price cap and sort apply because the address sets neither. In our test this input returned 100 listings in 12 seconds, cheapest first. Use it for price bands, grey-market checks or a catalogue of what a brand resells for.

Turn a list of listing ids into full rows

{
"ids": ["m95620225726", "m95544906250", "m77758109901", "m91494214072", "m84324289691"]
}

Ids from a spreadsheet, a watch list or another tool come back as complete rows: current price, status (still on sale, or sold), condition, description, seller and photos. Run it daily to see which of your watched listings sold and at what price. In our test these five ids returned five rows in 3 seconds; a sixth id that does not exist was skipped and named in the log.

FAQ

What is Mercari (メルカリ)? Mercari is a Japanese flea-market app where people sell new and used items to each other: games, trading cards, sneakers, fashion, figures, electronics. Mercari Shops (メルカリShops) is its section for small businesses. This scraper reads jp.mercari.com, the Japanese marketplace, not mercari.com in the United States.

Do I need a Mercari account or a Japanese phone number? No. The scraper reads what any visitor sees on jp.mercari.com without logging in. You only give it keywords, addresses or ids.

Can I search in English? Yes. English keywords work, and brand names such as nintendo switch or iphone 15 match many listings. Sellers write in Japanese, so the Japanese word (スニーカー for sneakers, ポケモンカード for Pokémon cards) usually returns more listings. Titles and descriptions come back in the seller's own words.

Are the sold prices real? Yes. A Sold listing (sold_out) or a Trading listing (trading, paid and in shipping) is an item a buyer paid for, so its price is the price it sold at. On sale listings show what sellers ask. Pick Sold and Trading in Listing status for comps.

How many listings can I get? As many as you set in maxItems, with no fixed limit. Each search is read page after page, 120 listings a page, until the cap or the last page. A popular keyword has thousands of listings: split it into narrower searches (by price band, status or category) when you want to compare the slices, and keep maxItems at what you will use, since each row is one listing read in full.

How fresh is the data? Live. Every run reads Mercari at that moment: prices, statuses, likes and seller ratings are the ones shown when the run starts, and a listing posted a minute before is in it.

What about Mercari Shops products? They come in the same rows, marked itemType: "shop", with the shop's name, page, star score and review count in the seller fields. Mercari Shops does not publish a good, normal and bad split or a sales count, so those fields are null on shop rows.

Can I combine several filters? Yes, they add up. keywords: ["ps5 本体"], status: ["sold_out", "trading"], sort: "newest" and priceMin: 30000 returns the latest PS5 consoles sold for 30,000 yen or more; in our test, 20 of them in 3 seconds with maxItems: 20. For the condition, category or excluded words, build the search on jp.mercari.com and paste its address: every filter in it applies.

Which links are permanent? url is the listing page and sellerUrl the seller's page; both work as long as the listing and the account exist, and id never changes. Photo links point to Mercari's image server; Mercari can remove the photos of a deleted listing, so download the ones you want to keep.

Can I run it on a schedule? Yes. Save your input as a task and add a schedule in Apify. With sort: "newest" and a small maxItems, an hourly run gives you the new listings of your searches.

How do I get the data into my tools? Every run's dataset exports to JSON, CSV, Excel, XML or RSS from the Output tab, or from the API: https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv. Apify integrations send it to Google Sheets, Slack, Zapier, Make or a webhook.

Is it legal to scrape Mercari? The scraper reads public listings that anyone can see in a browser without logging in. How you use them is up to you: see the Legal compliance section below.

More SilentFlow scrapers

🛒 E-commerce

💼 Jobs

🏠 Real estate

📣 Social media

🏢 Business data

✈️ Travel

🎯 Lead generation

🔎 SEO

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available data from Mercari Japan (jp.mercari.com). It does not bypass any login, paywall or CAPTCHA, and never uses a Mercari account. Users are responsible for complying with Mercari's terms of service and applicable data protection laws (GDPR, CCPA, APPI in Japan, and PIPL where relevant). Rows carry seller nicknames, profile links and avatars, which can be personal data: handle them accordingly, keep only what you need, and honor removal requests. The data returned is informational; verify accuracy for regulated use cases.

Mercari Scraper by SilentFlow: Mercari Japan listings, sold prices and sellers, ready for your spreadsheet.