Mercari Japan Scraper & New Listing Monitor - Prices in JPY
Pricing
from $2.92 / 1,000 listing returneds
Mercari Japan Scraper & New Listing Monitor - Prices in JPY
For resellers, sourcing and price research: Mercari Japan listings by keyword or search URL, newest first, with title, price in JPY as a number, on sale or sold, condition, brand, photo, link and listing time. Search sold items to see what things sold for. Monitoring returns only new listings.
Pricing
from $2.92 / 1,000 listing returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Search Mercari Japan (jp.mercari.com) by keyword or by pasting a search URL, and get one row per listing, newest first: item id and link, title, price in JPY as a number, item status (on sale, trading, sold out), condition, brand, who pays shipping, photo, and when the listing was created and last updated.
Turn on monitoring mode, schedule the Actor, and each run returns only new listings: listings created since the previous run of the same search that were not returned before. Use it to catch new listings for a product, a brand or a price range without paying for the same listings again.
Unofficial. This Actor is not affiliated with or endorsed by Mercari, Inc. It reads the same search results the jp.mercari.com website shows to anyone without an account. It does not log in and does not collect seller names or seller ids.
What you can use it for
- New listing alerts: schedule monitoring mode for
ポケモンカードwith a price range and send the new rows to Slack, email or a spreadsheet with an Apify integration. - Price research: search with
status: ["sold_out"]to see what items actually sold for, oron_salefor current asking prices. - Sourcing and resale (せどり): watch a model name with
condition: ["new"]and a maximum price. - Market data: export listings with price, condition, brand and category id to CSV, Excel or JSON.
How it works
- For each keyword (or search URL), the Actor sends the same search request the jp.mercari.com website sends (
api.mercari.jp/v2/entities:search, with a signing key created for each run; no account). - Mercari returns up to 120 listings per results page. The Actor reads pages one at a time, with a 1.5 second pause between pages, until it has
limitlistings or Mercari has no more. - Every row says which search and which position it came from (
searchKeyword,searchUrl,position,page). The same listing found by two searches in one run is returned and charged once. - Filters (price, status, condition, excluded words) are applied by Mercari's own search. On 2026-09-17 a price filter of 3,000-5,000 yen returned 8,267 matches and 0 rows outside the range, and
sold_outreturned only sold listings.
If Mercari refuses a request (HTTP 403 or 429), the run stops at once and says so in a free row, instead of retrying harder.
Input
| Field | Default | What it does |
|---|---|---|
keywords | example keyword | Search terms, one per line. Japanese terms match the most listings. |
keyword | - | One more search term (same field name as other Mercari scrapers). |
startUrls | - | jp.mercari.com search URLs. Their own filters are used: keyword, exclude_keyword, price_min, price_max, status, item_condition_id, category_id, brand_id, shipping_payer_id, sort, order. A URL with any other filter gets a free invalid-input row, because ignoring the filter would return a wider search. |
excludeKeyword | - | Leave out listings containing this word (for example ジャンク). |
status | ["on_sale"] | on_sale, trading, sold_out. An empty list returns all statuses. |
condition | all | new, like_new, good, fair, poor, bad. |
priceMin, priceMax | no limit | Price range in yen. |
sort, order | created_time, desc | created_time (newest first), score (relevance) or price; desc or asc. Monitoring mode always uses newest first. |
limit | 100 | Listings per search, up to 10,000 (a larger value is read as 10,000). In monitoring mode it applies to the first run of a search only. |
monitoringMode | false | Return only new listings (see below). |
resetMonitoringState | false | Forget what was remembered for the searches in this input. Turn it off again after one run. |
keyword, startUrls, status, priceMin, priceMax, sort, order and limit use the same names and values as the most used Mercari Japan scraper on Apify, so an input from it can be pasted here. Two differences: without status this Actor returns only listings on sale (pass "status": [] for all), and only search result URLs are read from startUrls (not item or category pages).
{"keywords": ["ポケモンカード リザードン", "nintendo switch 2"],"status": ["on_sale"],"priceMin": 3000,"priceMax": 30000,"limit": 200}
If you leave keywords, keyword and startUrls out with monitoring off, the example keyword ポケモンカード is searched and the run log says so. In monitoring mode a keyword or URL is required, so a schedule never pays to watch the example.
Output
One row per listing (read on 2026-09-17, UTC):
{"status": "ok","searchKeyword": "ニンテンドースイッチ","searchUrl": "https://jp.mercari.com/search?keyword=%E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81&price_min=3000&price_max=5000&status=on_sale&sort=created_time&order=desc","position": 1,"page": 1,"itemId": "m58924705013","itemUrl": "https://jp.mercari.com/item/m58924705013","name": "Switch2 アナザーエデン ビギンズ 通常版 ①","priceJpy": 3980,"currency": "JPY","itemStatus": "on_sale","conditionId": 1,"condition": "New, unused","conditionJa": "新品、未使用","listingType": "mercari","brand": "Nintendo Switch","categoryId": 7015,"shippingPaidBy": "seller","thumbnailUrl": "https://static.mercdn.net/thumb/item/webp/m58924705013_1.jpg?1789606516","photoUrl": "https://static.mercdn.net/item/detail/webp/photos/m58924705013_1.jpg?1789606516","createdAt": "2026-09-17T00:55:16.000Z","updatedAt": "2026-09-17T00:55:16.000Z","isNewSinceLastRun": null}
priceJpyis the listed price in yen as a number.isPriceHiddenistrue(andpriceJpyisnull) when Mercari marks the price as not shown.itemStatusison_sale,trading(bought, not yet completed) orsold_out;itemStatusRawkeeps Mercari's own value.conditionis an English label for Mercari's condition id andconditionJais the label Mercari shows. The six ids were checked against Mercari's own item pages on 2026-09-17.shippingPaidByisseller(送料込み) orbuyer(着払い), checked the same way;nullwhen Mercari does not say (Mercari Shops listings).listingTypeismercariormercari-shops. Mercari Shops items have ashopIdand an item URL under/shops/product/.createdAtandupdatedAt: Mercari's "newest first" order is not strictly by creation time. A listing the seller edits (for example a lower price) can move up, so a row near the top can have an oldcreatedAt. On 2026-09-17 the first results page for ニンテンドースイッチ included a listing created about 160 days earlier.isNewSinceLastRunisnullwith monitoring off,falseon the first monitoring run of a search andtrueon later runs.- Seller names, seller ids, buyer ids and descriptions are not returned.
Rows that are never charged
| Status | Meaning |
|---|---|
no-results | Mercari answered with a result count of 0 for the search. |
no-new-listings | Monitoring mode: nothing new in this search since the previous check. |
limit-reached | limit listings were returned and Mercari has more (the row says how many Mercari reports; Mercari's count stops at 15,000). |
no-further-results-served | Mercari stopped returning further results pages before the count it reported. On 2026-09-17 results page 85 (listings 10,081-10,200) still worked and page 125 came back empty. |
more-new-listings-possible | Monitoring mode read its maximum of 20 results pages for the search without reaching the listings it had already seen; check more often or narrow the search. |
blocked | Mercari answered HTTP 403 or 429. The run stops. |
request-rejected | Mercari refused the request (HTTP 400 or 401). The run stops. |
unreadable | A results page could not be read. |
invalid-input | A URL that is not a jp.mercari.com search page, uses a filter this Actor does not apply, or another input error. |
duplicate-search | The same keyword and filters appeared earlier in the input. |
budget-reached | The run's maximum total charge had no room for more. |
not-checked | The search was not read (the run stopped earlier, or more than 50 searches were given). |
Pricing
- $4.00 per 1,000 listings, charged only for rows with
status: "ok". - In monitoring mode, also $0.30 per 1,000 results pages read, whether or not a page has new listings. Example: 5 keywords checked every 15 minutes, one page each, is 14,400 pages a month = $4.32, plus $4.00 per 1,000 new listings returned.
- How many pages a check reads depends on how busy the search is. Measured on 2026-09-17: a check of ロレックス デイトナ read 1 page, and checks of ニンテンドースイッチ 5 minutes apart read 1 to 2 pages. ポケモンカード (on sale, no other filter) changes by about one results page every 1.5 minutes, so a check every 15 minutes reads about 10 pages ($0.003 per check) and returns several hundred new listings. Narrow busy searches with a price range, condition or excluded words.
The Actor reads only as many pages as the run's maximum total charge can pay for (with monitoring on, a page check and a listing each), and a free row says what was not read.
Monitoring mode
- The Actor remembers, for each search (keyword plus all filters), when it last checked and which listings it returned. Changing any filter makes it a new search.
- First run of a search: returns up to
limitlistings, newest first, and remembers the other listings on the results pages it read, back to 15 minutes before the run. - Later runs: return listings created since 15 minutes before the previous check that were not returned before. The Actor reads newest first and stops after the first results page that is older than that (by the median update time on the page), or that is mostly listings it has already seen and older than the previous check. At most 20 results pages (2,400 listings) are read per search per run.
- If a results page cannot be read or Mercari refuses a request, the search keeps its previous check time, so the next run looks at the same period again; the run does not report "no new listings" for it.
- The same listing is not returned again by another search of the same input in a later run: listings a search skipped because another search had returned them are remembered for both.
- Older listings that a seller edits can move up Mercari's order; they are not returned again as new. Price changes of listings already returned are not tracked.
- Do not put the same search in two schedules that can run at the same time: each run merges only what it handled into the stored record and checks its write, but Apify's key-value store has no atomic update, so two runs finishing at the same moment can still overwrite each other.
- If Apify restarts or moves a run, listings already in the run's dataset are not returned or charged again, results pages already charged are not charged again, and searches already finished are skipped.
Limits
- Up to 50 searches and up to 10,000 listings per search per run, read one page at a time with a 1.5 second pause between pages (about 85 pages for 10,000 listings).
- In monitoring mode, a run of many busy searches can take several minutes (up to 20 pages per search). Keep the schedule interval longer than a run, so that a run does not start while the previous one is still going.
- This Actor uses Mercari's web search interface, which is not a public API and can change without notice. If Mercari changes it, rows come back as
unreadableorrequest-rejectedinstead of wrong data. - Item descriptions, all photos, seller ratings and comments are not read (one request per listing would multiply the load on Mercari).