How to Scrape Mercari Japan Listings for a Resale Comparison
A search for a console or phone on Mercari can include the device, accessories, empty boxes, and bundles. Before comparing prices, you need to separate those results.
The Mercari Listings Scraper collects Mercari Japan search results and can add descriptions, seller information, and photos. I maintain the Actor. This guide builds a small comparison of active listings, then uses detail mode where the search card does not tell you enough.

Choose the market and the item precisely
This Actor targets Mercari Japan, with price filters in Japanese yen. It is not a walkthrough for the US marketplace. The current input supports one keyword string, plus optional category, brand, condition, price, shipping-payer, and status filters.
Both English and Japanese keywords are accepted. Use the wording that finds the products you want when you browse the Japanese site. For the example below, ニンテンドースイッチ searches for Nintendo Switch-related listings, but you should still expect accessories and bundles until you narrow the results.
If you have a specific model in mind, include its distinguishing name. Keep different hardware generations, storage capacities, editions, and conditions in separate comparisons.
Collect twenty active listings
Open the Actor on Apify, choose the JSON view of Input, and enter:
{
"keyword": "ニンテンドースイッチ",
"itemStatus": ["STATUS_ON_SALE"],
"sortBy": "SORT_CREATED_TIME",
"sortOrder": "ORDER_DESC",
"maxItems": 20,
"fetchItemDetails": false
}
maxItems caps the run. Its current allowed range is 1 to 15,000, so zero is not an unlimited setting here. fetchItemDetails: false collects the basic listing records without requesting full item details.
Click Start, open the dataset, and review a few names and URLs. A recent listing is not necessarily a relevant listing. If most results are accessories, improve the keyword or use a verified category ID before collecting a larger sample.
An abbreviated historical output illustrates the distinction:
{
"id": "m17108645847",
"name": "Nintendo Switch2 ソフト 2本セット",
"price": "15080",
"status": "ITEM_STATUS_ON_SALE",
"itemConditionId": "1",
"sellerId": "614470169",
"url": "https://jp.mercari.com/item/m17108645847"
}
The name describes a two-game software bundle, not a console. Its price should not be included in an average for console hardware. This is an older example showing how to read the record, not a current listing recommendation.
The basic sample also stores price as a string. Parse it as a number for calculations while preserving the original value. Keep JPY as an explicit column in your spreadsheet because this sample does not include a separate currency field.

Know the cost before enabling details
Pricing as of September 6, 2026: a listing event costs $0.002, and detail enrichment adds $0.008 per item. The Actor-start event is $0.00005 per GB of allocated memory, with at least one event.
Twenty basic listings correspond to $0.04 in listing event fees. If the same run successfully enriches all twenty, the detail events add $0.16, for $0.20 before the start charge. Inspect the actual charge breakdown for the events a run produces.
A listing-price increase to $0.004 is scheduled for September 9, 2026. The scheduled detail rate remains $0.008. Check the live pricing page when you run the Actor, especially if you save a recurring task.
Use details to resolve ambiguous listings
After improving the search, repeat the small run with fetchItemDetails set to true. Detail mode adds information such as the description, seller name and ratings, and higher-resolution photos. It still starts from a keyword search; the current schema has no direct-item-URL input.
That matters when comparing two runs. The search results may change between your basic run and your enriched run, so match records by id rather than row position. Do not assume the second run will enrich exactly the same twenty items.
Read descriptions for missing parts, damage, bundle contents, and other facts that change value. Use photos to check the item rather than treating a clean title as evidence of its condition. If category or condition IDs are important to your pipeline, retain the original codes and verify their meanings before assigning labels.
Basic and detail output can use different types and status strings. The historical samples show a string price in one mode and a number in the other, plus different representations of an on-sale status. Normalize those values explicitly when joining datasets.
Make a comparison table
Export CSV and retain id, name, url, price, status, and sellerId. Add collection time, currency, model, condition notes, and bundle contents. Export JSON when you need the nested seller ratings or photo arrays.
Remove duplicate IDs, then separate hardware, software, accessories, and bundles. Within the relevant group, compare the same model and similar condition. Check who pays shipping before combining prices into a single figure.
Calculate a median only from those comparable rows and retain the sample size beside it. Label it as an active asking-price sample. It tells you what sellers are requesting, not what buyers have paid or what your own item will sell for.
The Actor also documents trading and sold-out status filters. Keep those results in separate runs with their status recorded. A sold-out label alone does not verify a buyer's final payment, fees, or the transaction date you need for a historical analysis.
Check surprises before scheduling
If results are empty, remove optional filters one at a time and check the keyword on Mercari Japan. Keep the item cap small while diagnosing the search. If detail fields are absent, check that enrichment was enabled and inspect the log for failed detail requests.
Treat a zero aggregate seller score cautiously when other rating fields are populated. The older detail sample contains that combination, so the aggregate alone is not a sound basis for declaring a seller untrusted.
Once the search is useful, save it as an Apify task and keep dated exports. Preserve disappeared listings as previous observations; their absence from the next limited search is not proof that they sold.
The Mercari Node.js example is available for automating this workflow after you have checked the output manually.
Frequently asked questions
Does this guide cover Mercari US?
No. This Actor targets Mercari Japan, and its price filters use JPY.
Can I enrich a list of specific item URLs?
The current input schema requires a keyword and does not expose a direct-item-URL field. Detail mode enriches results from the configured search.
Is detail enrichment included in the listing price?
No. Detail enrichment is an additional event on top of the listing event. Check current pricing and any scheduled rate changes before running or scheduling the Actor.
