Mercari Japan Scraper icon

Mercari Japan Scraper

From $0.80/1K. Scrape Mercari Japan listings, sellers and reviews at scale. Extract names, prices, conditions, photos, shipping details, descriptions…

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

Mercari Japan Scraper at a glance

Mercari Japan Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes id, kind, item type, url and name, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.40 per 1,000 results on the Apify Free plan and from $0.80 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
Ecommerce, Automation, Developer Tools
Region
Asia
Pricing
$1.40 per 1,000 results (Free plan), from $0.80 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
28 options

From $0.80/1K. Scrape Mercari Japan listings, sellers and reviews at scale. Extract names, prices, conditions, photos, shipping details, descriptions and seller profiles. Search by keyword with nine filters or paste Mercari URLs directly.

What Mercari Japan Scraper can do

  • Three ways to find data. Search by keyword with nine filters, paste any jp.mercari.com search, item or profile URL, or list seller IDs to pull their review history.
  • Detail enrichment on demand. Turn on fetchDetails to add full descriptions, every photo, comments, hashtags and a complete seller profile (bio, follower counts, rating split). Leave it off for lean, fast runs.
  • Rich seller data. With fetchDetails on, listings carry the seller's score, sell count, star rating, ratings breakdown, follower counts, official flag and SMS-verified status; review rows always carry the reviewed seller's score, ratings breakdown, follower counts and official flag.
  • Filter at the source. Status, condition, shipping payer, price range, brand, category and exclude-keyword all flow into the search itself, so you only pay for items you actually wanted.
  • Multi-keyword and multi-seller runs. List several keywords, URLs or seller IDs in one run; searches share the budget so each keyword or search URL gets a share, and Max Listings caps the whole run.

Choose what to collect

These inputs let you configure Mercari Japan Scraper - Products, Sellers & Reviews. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredHow to find data to scrape. 'search' and 'url' return items; 'reviews' returns one row per review left for the listed seller IDs.

Choices: search, url, reviews

queriesarrayKeywords to search for (Search mode only). Multi-keyword supported. Japanese and English both work. Each keyword runs its own paginated search; results are combined.
statusstringListing availability status (Search mode only).

Choices: any, on_sale, sold_out, trading

statusesarrayOptional multi-select (Search mode only). Pick any combination of On sale, Sold out and In trade. When set it overrides "Item Status" above; leave empty to use the single select.
sortBystringResult ordering (Search mode only). Default = relevance score.

Choices: score-desc, created-desc, created-asc, price-asc, price-desc, num-likes-desc

minPriceintegerMinimum price in JPY. Leave empty for no minimum.
maxPriceintegerMaximum price in JPY. Leave empty for no maximum.
Show 21 more inputs
More input fields
InputWhat it controls
itemConditionarrayFilter by condition (Search mode only). Multiple selectable. 1=New, 2=Like new, 3=No noticeable scratches, 4=Some scratches, 5=Damaged, 6=Poor condition.
shippingPayerstringWho pays shipping (Search mode only).

Choices: any, seller, buyer

categoryIdsarrayCategory IDs (Search mode only): the number from a Mercari URL (category_id=859 is smartphones), or the category name in Japanese or English as Mercari shows it (for example Smartphones), looked up in Mercari's own category list. A name that matches nothing, or several categories, stops the run and says which. Leave empty for all categories.
brandIdsarrayBrand IDs (Search mode only): the number from a Mercari URL (brand_id=3272 is Apple), or the brand name as Mercari shows it (for example Apple or Nike), looked up in Mercari's own brand list. A name that matches nothing, or several brands, stops the run and says which.
excludeKeywordstringItems matching this keyword are filtered out by the upstream search (Search mode only).
urlsarrayMercari Japan links (URL mode only), one per line. Accepted: search and category links (keyword, category_id, brand_id, status, price, condition, sort, seller_id, page_token), item pages (/item/, /en/item/, /shops/product/, legacy item.mercari.com/jp//), and seller /user/profile/ or /user/reviews/ pages (surfaces every review). Filter-mode fields are ignored. Left untouched, URL mode scrapes the example of each shape; replace them with your own links. Unrecognised links log a warning.
sellerIdsarraySeller IDs or seller-page URLs (Reviews mode only). Each entry can be a numeric seller ID or a full /user/profile/ or /user/reviews/ URL; both work. Multi-seller supported; each seller's reviews are surfaced as separate rows.
reviewSubjectstringWhether to fetch reviews left for the user as seller, as buyer, or both (Reviews mode only).

Choices: seller, buyer, both

reviewFamearrayRating buckets to include (Reviews mode only). 'good' = positive, 'normal' = neutral, 'bad' = negative. Default = all three.
maxPagesintegerOptional bound on pages walked per keyword / URL / seller. ~20 listings per page in Search/URL mode; up to 100 reviews per page in Reviews mode. Leave empty to walk every result page.
maxListingsintegerCap across all keywords/URLs/sellers combined; applies to listings and to review rows in Reviews mode. Values above 100000 and 0 are both treated as 100000 (still capped by maxPages).
fetchDetailsbooleanIf true (Search/URL mode only), the actor visits each listing's detail page to enrich the record with full description, all photos, comment count, like count, and seller rating breakdown (good/normal/bad). Adds one request per listing.
resumeFromRunIdstringOptional: paste a previous run ID (or dataset ID) from this actor. Rows already collected there are skipped, so this run only returns new ones. Leave empty for a normal run. For recurring daily monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring of the same search/URLs. The first run returns all matching items as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED items. UPDATED means a listing's content changed since the last run (price, status, title, description, photos, condition, shipping and similar fields); changedFields names exactly which. Live counters that move on their own are excluded from the comparison and never cause UPDATED: likes, comments count and the seller's rating/follower/sell-count statistics (they are still shown in the output). You can exclude more with "Ignore fields when detecting changes". Turn on "Emit unchanged" or "Emit expired" only when you also want those items returned (and billed). State is kept separately per search/URL and filter setup; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from run ID above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/URL and filter settings, so different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return items that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return items that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Max listings/Max pages capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayOptional. Output field names (top-level, for example photos or description) to exclude from UPDATED change detection and from changedFields, in addition to the built-in exclusions (likes, comments count and seller statistics). Use this if a field in your setup changes on its own without a real listing change. The fields stay in the output; they just stop counting as a change. Changing this list does not re-bill your tracked items.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
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.

idID (text)
kindKind (text)
itemTypeItem Type (text)
urlURL (link)
nameName (text)
pricePrice (¥) (number)
currencyCurrency (text)
statusStatus (text)
itemConditionCondition (text)
categoryIdCategory (text)
thumbnailThumbnail (image)
subjectReview Subject (text)
Show 39 more fields
fameReview Rating (text)
messageReview Message (text)
createdAtCreated / Posted (text)
raterNameRater (text)
raterIdRater ID (text)
sellerIdSeller ID (text)
sellerNameSeller (text)
sellerScoreSeller Score (number)
sellerNumRatings# Ratings (number)
sellerProfileUrlSeller URL (link)
changeTypeChange (incremental mode) (text)
changedFieldsChanged Fields (text)
firstSeenAtFirst Seen (text)
lastSeenAtLast Seen (text)
shippingPayerShipping (text)
sellerIntroductionBio (text)
sellerNumSellItemsListed Items (number)
sellerStarRatingStars (number)
sellerRatingsGoodGood (number)
sellerRatingsNormalNormal (number)
sellerRatingsBadBad (number)
sellerFollowerCountFollowers (number)
sellerFollowingCountFollowing (number)
sellerIsOfficialOfficial? (boolean)
sellerQuickShipperQuick Ship? (boolean)
sellerSmsVerifiedSMS Verified? (boolean)
descriptionDescription (text)
hashtagsHashtags (text)
numLikesLikes (number)
numCommentsComments (number)
itemBrandNameBrand (text)
itemConditionSubnameCondition Detail (text)
categoryPathCategory Path (text)
shippingMethodNameShipping Method (text)
shippingPayerNameShipping Payer (text)
shippingFromAreaShips From (text)
shippingDurationShip Time (text)
photosPhotos (text)
updatedAtUpdated (text)

Example output

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

{
  "id": "m12345678901",
  "url": "https://jp.mercari.com/item/m12345678901",
  "itemType": "marketplace",
  "name": "Nintendo Switch 有機ELモデル 本体 ホワイト",
  "price": 28000,
  "currency": "JPY",
  "status": "on_sale",
  "itemCondition": "no noticeable scratches or stains",
  "itemConditionSubname": "目立った傷や汚れなし",
  "categoryId": "112",
  "categoryName": "家庭用ゲーム本体",
  "categoryPath": "ゲーム・おもちゃ・グッズ > テレビゲーム > 家庭用ゲーム本体",
  "itemBrandId": "1234",
  "itemBrandName": "Nintendo",
  "shippingPayer": "seller",
  "shippingMethodName": "らくらくメルカリ便",
  "thumbnail": "https://static.mercdn.net/thumb/item/webp/m12345678901_1.jpg",
  "photos": [
    "https://static.mercdn.net/item/detail/orig/photos/m12345678901_1.jpg",
    "https://static.mercdn.net/item/detail/orig/photos/m12345678901_2.jpg"
  ],
  "description": "新品未使用に近い状態です。動作確認済みです。箱と付属品すべて揃っています。",
  "numLikes": 12,
  "numComments": 2,
  "hashtags": [
    "ニンテンドースイッチ",
    "任天堂"
  ],
  "sellerId": "123456789",
  "sellerName": "サンプル太郎",
  "sellerIntroduction": "フォロー割引あります。よろしくお願いします。",
  "sellerScore": 348,
  "sellerNumRatings": 350,
  "sellerStarRating": 5,
  "sellerFollowerCount": 42,
  "sellerFollowingCount": 10,
  "sellerIsOfficial": false,
  "sellerSmsVerified": true,
  "createdAt": "2026-01-01T00:00:00+00:00",
  "updatedAt": "2026-01-05T00:00:00+00:00"
}

Ways to use this data

  • Resellers and arbitrage: compare prices for the same keyword or category across many listings and sellers before buying or listing.
  • Seller due diligence: pull a seller's full review history, rating breakdown and follower counts before a trade.
  • Price and market monitoring: track a keyword or category over time with incremental mode and inspect changedFields for what moved.
  • Brand and category watching: keep an eye on a set of brand or category IDs and get only the new listings on each run.
  • Marketplace analytics: feed listing and seller data into a spreadsheet, dashboard or BI tool.

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 Mercari Japan Scraper return?

The documented output for Mercari Japan Scraper includes id, kind, item type, url, name, price (¥), currency and status. Availability of each field depends on the source page and the selected mode.

How much does Mercari Japan Scraper cost?

It costs $1.40 per 1,000 results on the Apify Free plan and from $0.80 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, reappeared or expired records against a state the actor keeps for that search, and unchanged ones are not billed unless you opt in with emitUnchanged.

What's the difference between Resume and Incremental mode?

They solve different problems. Resume (resumeFromRunId) continues one specific interrupted run so it does not restart from scratch. Incremental mode is for running the same search or URLs repeatedly (for example, every day) and getting only what changed each time. Using both together on a search that already has incremental state fails the run, since the actor cannot tell which baseline to use.

Why did my run fail instead of returning an empty dataset?

A run fails only when it cannot be trusted to mean anything: an invalid resumeFromRunId, or turning on Incremental mode with Resume on a search that already has tracked state. Everything else, including the site rejecting requests, a keyword with no matches, or no keywords/URLs/seller IDs at all, finishes as a normal successful run with an empty (or partial) dataset and a status message explaining why.

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 Mercari Japan Scraper?

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