Mercari Scraper - Japan Listings, Prices and Sellers
Pricing
from $2.20 / 1,000 results
Mercari Scraper - Japan Listings, Prices and Sellers
Extract Mercari Japan listings, JPY prices, images, item details, seller profiles, categories and search filters. Search by keyword, URL or ID; pay per delivered row plus a run start fee.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Mercari Scraper
Extract Mercari Japan listings, JPY prices, seller profiles and category data as rows you can export.
- Search by keyword, category, brand or Mercari Japan URL.
- Get item details, shipping information and images when available.
- Collect seller profiles, their listings, category trees and search filters.
- Export rows or read them through the Apify API and MCP.
- Pay $3.00 per 1,000 delivered rows on the Free plan, plus a start fee.
What does Mercari Scraper do?
Mercari Scraper collects public data from jp.mercari.com for price tracking, resale research and catalog analysis. It covers Japan, not Mercari US. This is an unofficial tool, not affiliated with Mercari.
- Search, category and brand: collect item rows matching keywords or IDs.
- Item: retrieve one listing by
itemId. - Seller: retrieve a profile row followed by available item rows. Both count toward the same limit and have the same row price.
- Categories: collect category names, IDs and hierarchy.
- Facets: collect suggested search-filter rows, not products.
- Optional details:
enrichDetailsadds fields to existing search, category and brand rows. It is off by default and does not create extra billed rows.
What data can you extract from Mercari?
Fields vary by mode and source availability. recordType distinguishes item, seller, category and facet rows. Missing values can be absent or null; examples below illustrate the format, not a fresh collection.
Item rows
| Field | Description | Example |
|---|---|---|
itemId | Listing identifier | m60491956645 |
title | Listing title | Kindle Paperwhite |
url | Listing link | https://jp.mercari.com/item/m60491956645 |
price | Listed price | 8500 |
currency | Price currency | JPY |
status | Listing state | on_sale |
itemType | Marketplace listing type | mercari |
imageUrl | Main image | https://example.com/item.jpg |
images | Image links, up to 50 | ["https://example.com/item.jpg"] |
brand | Brand name | Apple |
brandId | Brand identifier | 3272 |
categoryId | Category identifier | 7 |
categoryPath | Available category names | ["Electronics", "Phones"] |
sellerId | Seller identifier | 123456789 |
sellerName | Public display name | Jane Doe |
description | Item description from details | Used device with charging cable |
shippingIncluded | Whether shipping is included | true |
shippingFee | Shipping label, not a numeric fee | 送料込み |
itemConditionId | Condition identifier | 1 |
numLikes | Likes reported in details | 12 |
numComments | Comment count, not comment text | 2 |
enriched | Whether optional details succeeded | true |
scrapedAt | Collection timestamp | 2026-10-24T03:00:00+00:00 |
Seller rows
| Field | Description | Example |
|---|---|---|
sellerId | Seller identifier | 123456789 |
sellerName | Public display name | Jane Doe |
url | Profile link | https://jp.mercari.com/user/profile/123456789 |
introduction | Public profile text | Secondhand books and electronics |
numSellItems | Source-reported item count | 25 |
listingCount | Listing rows collected in this portion, not lifetime total | 4 |
ratings | Available rating counts | {"good": 20, "normal": 0, "bad": 0} |
followerCount | Public follower count | 10 |
identityVerified | Source-provided verification signal | true |
badges | Available profile badges | ["official"] |
Category rows
| Field | Description | Example |
|---|---|---|
categoryId | Category identifier | 7 |
name | Category name | スマートフォン本体 |
url | Category search link | https://jp.mercari.com/search?category_id=7 |
depth | Hierarchy depth, starting at 1 | 3 |
nodeType | Hierarchy position | leaf |
parentId | Parent category identifier | 100 |
level | Source level, starting at 0 | 2 |
rootCategoryId | Top-level category identifier | 1 |
rootCategoryName | Top-level category name | Electronics |
hasChild | Whether child categories exist | false |
Facet rows
| Field | Description | Example |
|---|---|---|
facetId | Opaque filter identifier | example-facet-id |
parentFacetId | Parent filter identifier | null |
searchableValue | Filter name or value | category_id |
displayNames | Labels by language | {"ja": "カテゴリー"} |
leaf | Whether the filter has no children | false |
selected | Whether the filter is selected | false |
selectedState | Source selection state | null |
metadata | Additional filter information | null |
searchableValueTypes | Source value-type labels | [] |
recordType | Identifies filter rows | facet |
How to scrape Mercari
- Open Mercari Scraper in Apify Console.
- Fill one target field, such as
keyword. Clear the example keyword when using an ID instead. - Set
maxResultsto 5 for a first run. - Click Start and wait for completion.
- Open the dataset and download rows or read them through the API.
Empty input starts a kindle example search using the form prefill, capped at 10 rows. The form prefills maxResults with 3. This is a billed run, not a free preview. With mode: "auto", filling one target field selects its mode.
Search
Use keyword for one search or searchQueries for several. A nonempty searchQueries list replaces keyword. Add categoryId or brandId to narrow a keyword search.
Category
Set categoryId alone to list that category. Use categories mode first if you need IDs rather than guessing them.
Brand
Set brandId alone to list its items. This is not a brand-directory export.
Item
Set itemId to the identifier after /item/ in a Mercari Japan URL. Item mode returns details for one item, not related products.
Seller
Set sellerId from a profile URL. With maxResults: 1, the profile uses the allowance; choose a larger limit to include listings.
Categories
Choose mode: "categories" explicitly. No target is required. taxonomyDepth selects depth 1–4, with 3 as the default; maxResults limits returned category rows.
Facets
Choose mode: "facets" with a keyword, categoryId or brandId. Results describe suggested filters rather than matching listings.
URLs and conflicting targets
startUrls accepts search, item, seller and category-tree URLs. The URL path determines what is collected. A category or brand search URL without keyword= lists that page; to narrow it, put the keyword in the URL.
Automatic target priority is startUrls, itemId, sellerId, searchQueries, keyword, categoryId, then brandId. Do not mix unrelated targets; ignored fields appear in INPUT_REPORT.
What to fill in
| Field | What to enter | Default |
|---|---|---|
mode | Automatic selection or one of the seven modes above | auto |
keyword | Search text, preferably the Japanese product wording | Empty; prefill kindle |
searchQueries | List of search words or phrases | Empty |
startUrls | List of Mercari Japan URLs | Empty |
itemId | One listing ID | Empty |
sellerId | One numeric seller ID | Empty |
categoryId | Category ID, or a search filter | Empty |
brandId | Brand ID, or a search filter | Empty |
maxResults | Rows per input, 1–500 | 70; prefill 3 |
sort | recommended, created_time_desc or price_asc | recommended |
status | Listing filter, such as on_sale or sold_out | Empty |
priceMin | Minimum price in JPY | Unset |
priceMax | Maximum price in JPY | Unset |
itemConditionId | Mercari condition ID | Empty |
pageToken | Optional search-page token; normally leave empty | Empty |
enrichDetails | Add details to search, category and brand rows | false |
taxonomyDepth | Category depth, 1–4 | 3 |
useSeedPool | Allow recent, previously collected category data | true |
seedPoolMaxAgeS | Maximum age of that category data in seconds | 86400 |
Search:
{"mode": "search", "keyword": "kindle", "status": "on_sale", "maxResults": 5}
Category:
{"mode": "category", "categoryId": "3088", "enrichDetails": true, "maxResults": 3}
Brand:
{"mode": "brand", "brandId": "3272", "maxResults": 3}
Item:
{"mode": "item", "itemId": "m60491956645", "maxResults": 1}
Seller:
{"mode": "seller", "sellerId": "123456789", "maxResults": 5}
Categories:
{"mode": "categories", "taxonomyDepth": 2, "maxResults": 5}
Facets:
{"mode": "facets", "keyword": "iphone", "maxResults": 5}
maxItems and limit are accepted as aliases for the per-input maxResults limit. Unknown fields do not themselves fail a run: close misspellings are corrected where possible, and other unknown fields are ignored with a note. Invalid filters can be dropped; check the report instead of assuming every filter was applied.
Rejected input stops before collection and row charges, with INVALID_INPUT: followed by the field and correction. The start fee still applies. Every run writes its input interpretation to INPUT_REPORT in the default key-value store, including inferred, corrected and ignored fields.
Output example
An illustrative item row, not a live price quote:
{"recordType": "item","itemId": "m60491956645","title": "Kindle Paperwhite","price": 8500,"currency": "JPY","status": "on_sale","url": "https://jp.mercari.com/item/m60491956645","sellerId": "123456789","country": "JP","source": "jp.mercari.com","scrapedAt": "2026-10-24T03:00:00+00:00"}
Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. RUN_SUMMARY records delivery counts and partial-result information; ERROR_SUMMARY provides failure details when written.
Why use this Mercari scraper?
- Pay for delivered rows: result charges correspond to dataset rows, not attempted pages.
- Keep partial results: when collection ends early with saved rows available, the Actor delivers them and records the reason. Rows already in the dataset remain there; a forced abort can prevent undelivered rows from being saved.
- Understand missing data: unavailable fields stay absent or empty rather than being invented.
- Process several inputs: use
searchQueriesorstartUrls, with a separate allowance for each input. - Avoid extra setup: you do not need to set up proxies.
How much does it cost to scrape Mercari?
The Actor uses pay-per-event pricing. One start event costs $0.005, charged per GB of allocated memory with a minimum of one event. At the default 512 MB, the start charge is $0.005. Platform usage is included in these prices.
| Apify plan | Start at 512 MB | Price per row | Price per 1,000 rows |
|---|---|---|---|
| Free | $0.005 | $0.003 | $3.00 |
| Starter | $0.005 | $0.003 | $3.00 |
| Scale | $0.005 | $0.0026 | $2.60 |
| Business | $0.005 | $0.0022 | $2.20 |
maxResultsapplies to each input, defaults to 70 and accepts up to 500. Larger allowances are collected in parts of at most 70.- All row types count, including seller profiles, categories and facets.
- Free Apify plan runs are capped at 200 rows in total and 10 runs of this Actor.
- The whole run stops at your Maximum cost per run setting, called
maxTotalChargeUsdin the API.
Example: three keywords returning 50 rows each produce 150 delivered rows. On the Free plan at 512 MB, the charge is 150 × $0.003 + $0.005 = $0.455. Fewer delivered rows mean a smaller result charge; the start fee remains.
Use with AI agents and the API
Apify MCP server
Add this Actor to a remote-capable MCP client such as Claude, ChatGPT, Cursor or VS Code:
https://mcp.apify.com?tools=lentic_clockss/mercari-scraper
Sign in with Apify through OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; read rows with get-dataset-items. For clients without remote support, run npx @apify/actors-mcp-server --tools lentic_clockss/mercari-scraper with APIFY_TOKEN set.
Example prompt: “Find five on-sale Kindle listings on Mercari Japan and return their titles, prices and links.”
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/mercari-scraper").call(run_input={"keyword": "kindle", "maxResults": 5})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/mercari-scraper').call({keyword: 'kindle', maxResults: 5});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
For HTTP, send the input as JSON to POST https://api.apify.com/v2/acts/lentic_clockss~mercari-scraper/runs with an Authorization: Bearer header. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
Integrations
Use Apify integrations with Google Sheets, Make, Zapier, n8n, Slack or Airtable, or send a webhook to your application. Schedule repeated runs with Apify Schedules.
日本語の説明
メルカリ日本版の出品情報、価格、画像、出品者プロフィール、カテゴリを取得できます。商品を探すときは keyword に検索語を入力し、特定の商品は itemId、出品者は sellerId を指定してください。カテゴリ一覧は mode を categories に設定します。maxResults は入力ごとの取得上限です。出品者情報も一行として数え、残りの枠で商品を取得します。料金は開始料と、結果に保存された行数に応じた従量制です。まず少ない件数で確認してください。情報が公開されていない項目は空欄になることがあります。米国版や非公開ページは対象外です。
FAQ
Is it legal to scrape Mercari?
This Actor collects public data. You are responsible for complying with Mercari's terms and applicable data-protection law. Public availability does not remove those obligations; processing personal data requires a lawful basis.
Why did my run end as ABORTED?
An aborted run was stopped before normal completion. Check its status message and logs for the reason. Do not assume it will resume automatically. Review any existing dataset rows before starting another billed run.
How many results can I get?
Set maxResults from 1 to 500 per input. Availability, filters and the run's cost limit may reduce delivery. The Free plan allows at most 200 rows per run and 10 runs of this Actor. Seller profiles use one row of the allowance.
Why are some fields empty?
Mercari may omit a field, or it may exist only in item details. Try enrichDetails for search, category and brand rows. Missing details are not guaranteed to become available.
Does this support Mercari US?
No. Coverage is Mercari Japan. Acceptance of a Mercari-domain URL does not imply support for another country's marketplace.
Why did a seller run return a profile but no listings?
A limit of 1 leaves no room for listings. A seller may also have no available listings, or collection may stop early. Check RUN_SUMMARY for warnings and partial results.
Can I filter or sort listings?
Use status, priceMin, priceMax, itemConditionId and sort. Supported sorts are recommended, newest first and price ascending. These are listing-search controls, not filters for category or facet rows.
Is an empty result always a failure?
No. A search with no matches can finish successfully with zero rows and a reason in RUN_SUMMARY. Collection errors are handled separately. A zero-row run still incurs the start fee.
Limitations
- Japan only; no private accounts, purchases or login-only pages.
- Item IDs can become unavailable; no fixed example is guaranteed to remain listed.
- Mercari Shops listings may appear in search, but optional detail enrichment skips them and sets
enrichedtofalse. - Seller
listingCountdescribes collected listings, not complete seller inventory. - Category data can be reused within
seedPoolMaxAgeS; it is not necessarily refreshed for each run. - No automatic search-word translation or date-window expansion is provided.
- Source limits, interruptions and deduplication can produce fewer rows than requested.
Related scrapers
More e-commerce and marketplace scrapers from the same publisher:
- Walmart Product Scraper
- Temu Product Scraper
- Allegro Scraper
- TikTok Shop Product Scraper
- Amazon Search, Category & Best Sellers Scraper
- Coupang Product Scraper
- MercadoLibre Scraper
- Rakuten Japan Scraper
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Report problems or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.