Mercari Japan Scraper & New Listing Monitor - Prices in JPY avatar

Mercari Japan Scraper & New Listing Monitor - Prices in JPY

Pricing

from $2.92 / 1,000 listing returneds

Go to Apify Store
Mercari Japan Scraper & New Listing Monitor - Prices in JPY

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

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

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, or on_sale for 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

  1. 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).
  2. 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 limit listings or Mercari has no more.
  3. 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.
  4. 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_out returned 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

FieldDefaultWhat it does
keywordsexample keywordSearch 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.
conditionallnew, like_new, good, fair, poor, bad.
priceMin, priceMaxno limitPrice range in yen.
sort, ordercreated_time, desccreated_time (newest first), score (relevance) or price; desc or asc. Monitoring mode always uses newest first.
limit100Listings 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.
monitoringModefalseReturn only new listings (see below).
resetMonitoringStatefalseForget 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
}
  • priceJpy is the listed price in yen as a number. isPriceHidden is true (and priceJpy is null) when Mercari marks the price as not shown.
  • itemStatus is on_sale, trading (bought, not yet completed) or sold_out; itemStatusRaw keeps Mercari's own value.
  • condition is an English label for Mercari's condition id and conditionJa is the label Mercari shows. The six ids were checked against Mercari's own item pages on 2026-09-17.
  • shippingPaidBy is seller (送料込み) or buyer (着払い), checked the same way; null when Mercari does not say (Mercari Shops listings).
  • listingType is mercari or mercari-shops. Mercari Shops items have a shopId and an item URL under /shops/product/.
  • createdAt and updatedAt: 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 old createdAt. On 2026-09-17 the first results page for ニンテンドースイッチ included a listing created about 160 days earlier.
  • isNewSinceLastRun is null with monitoring off, false on the first monitoring run of a search and true on later runs.
  • Seller names, seller ids, buyer ids and descriptions are not returned.

Rows that are never charged

StatusMeaning
no-resultsMercari answered with a result count of 0 for the search.
no-new-listingsMonitoring mode: nothing new in this search since the previous check.
limit-reachedlimit listings were returned and Mercari has more (the row says how many Mercari reports; Mercari's count stops at 15,000).
no-further-results-servedMercari 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-possibleMonitoring 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.
blockedMercari answered HTTP 403 or 429. The run stops.
request-rejectedMercari refused the request (HTTP 400 or 401). The run stops.
unreadableA results page could not be read.
invalid-inputA URL that is not a jp.mercari.com search page, uses a filter this Actor does not apply, or another input error.
duplicate-searchThe same keyword and filters appeared earlier in the input.
budget-reachedThe run's maximum total charge had no room for more.
not-checkedThe 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 limit listings, 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 unreadable or request-rejected instead of wrong data.
  • Item descriptions, all photos, seller ratings and comments are not read (one request per listing would multiply the load on Mercari).