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

4

Total users

1

Monthly active users

18 hours

Issues response

2 days 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 includeDescription to also get the seller's full description text for the first listings of the run, for regular Mercari listings and Mercari Shops alike.

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.
  • Telling editions apart: with includeDescription on, read the description of a few candidates (for example CDs and Blu-rays) to check the edition, bonus discs or missing parts before you buy.
  • 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.

  5. With includeDescription on, the Actor reads the description of the first maxDescriptions listings it returns in the run (up to 50), one listing at a time with a 1.5 second pause, from the same item detail requests the website makes for an item page (api.mercari.jp/items/get for regular listings, api.mercari.jp/v1/marketplaces/shops/products/ for Mercari Shops). A description is used only when Mercari's answer carries the same item id.

If Mercari refuses a search or item detail request (HTTP 401, 403 or 429) or answers with a web page or redirect instead of data (for example a verification page), the run stops at once and says so in a free row: no retry, no proxy, no change of IP. Rows returned before that stay in the dataset. Only a network failure or a server error (HTTP 5xx) is retried, once, after 3 seconds.

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.
includeDescriptionoffAlso read the seller's description for the first listings returned in the run (regular and Mercari Shops listings). Empty or false = not read.
maxDescriptions10How many listings per run get a description, counted across all searches in the order rows are returned (1 to 50).
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",
"description": null,
"descriptionStatus": "not-requested",
"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.
  • description is the seller's description text exactly as Mercari serves it (line breaks kept), when includeDescription is on and descriptionStatus is ok. Otherwise it is null, and descriptionStatus says why:
descriptionStatusMeaning
okThe description was read (an empty text means the listing has none).
not-requestedincludeDescription is off.
over-max-descriptionsThe run had already read maxDescriptions descriptions.
listing-not-foundMercari answered "not found" for the item (removed after the search).
unreadableMercari's answer could not be read or carried a different item id, so nothing is guessed.
not-readThe run's maximum total charge had no room for this row (such rows are normally not returned at all).
  • The description is included in the price of the listing row; there is no extra charge for it. Seller names, seller ids and buyer ids 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, or a web page or redirect instead of data (for example a verification page), to a search or item detail request. The run stops without retrying.
request-rejectedMercari refused a search or item detail request (HTTP 400 or 401). The run stops without retrying.
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

  • Run start: $0.003 per run on the free plan, down to $0.00219 per run on higher Apify plans (Bronze $0.00273, Silver $0.00246, Gold $0.00219). Charged once for every run that searches Mercari - including a run that finds no new listings, and a run Mercari refuses. It is charged before the first request, so a run whose maximum total charge has no room for the start fee plus one listing row (in monitoring mode, plus one results page check) requests nothing and is charged nothing. A run Apify restarts or moves is charged once.
  • $4.00 per 1,000 listings, charged only for rows with status: "ok". Descriptions (includeDescription) are included at no extra charge.
  • In monitoring mode, also $0.30 per 1,000 results pages read, whether or not a page has new listings. Example: 5 keywords in one run every 15 minutes is 2,880 runs a month = $8.64 in run start fees, plus 14,400 pages (one each) = $4.32, plus $4.00 per 1,000 new listings returned. Putting several keywords in one run pays the start fee once for all of them; checking less often lowers the start fees.
  • 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 in page checks, plus the $0.003 run start fee) 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.
  • Descriptions are read only with includeDescription on, for at most 50 listings per run (one request per listing, one at a time). All photos, seller ratings and comments are not read.

Thanks for using this Actor

We build these tools for people who run them every day, and we improve them from what users tell us.

  • Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
  • Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.

If this Actor saved you time, a short review helps other people find it.