Mercari Japan Scraper avatar

Mercari Japan Scraper

Pricing

from $2.99 / 1,000 listings

Go to Apify Store
Mercari Japan Scraper

Mercari Japan Scraper

Collect public Mercari Japan listings with prices, brands, conditions, sellers, shipping, images, and timestamps.

Pricing

from $2.99 / 1,000 listings

Rating

0.0

(0)

Developer

w3crawler

w3crawler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Categories

Share

Collect bounded public Mercari Japan listings through the anonymous public search API used by the Mercari Japan web page. Each saved row can include the item ID and canonical URL, title, JPY price, sale and listing status, brand, seller and shipping identifiers, category, images, timestamps, and source provenance when Mercari publishes them.

Get started

  1. Open the Actor Store page and select Try for free or open the Input tab.
  2. Supply either a keyword such as iphone or one or more public startUrls. URLs take precedence over the keyword.
  3. Leave limit at 50 for a normal run, or lower it for a first test. Keep maxPages at 1 while checking result quality.
  4. Start the Actor, open the dataset, and export the saved listings as JSON, CSV, or Excel. Open Run summary (OUTPUT) to check the outcome and counts.

Input

All fields are optional, but a run needs a keyword or at least one startUrls entry to have a source. Unsupported field names and out-of-range values are rejected before requests start.

FieldTypeRequired?DefaultMeaning
startUrlsobject arrayOptionalNot suppliedPublic jp.mercari.com search or item URLs; these take precedence over keyword. 1–20 entries.
keywordstringOptionalNot suppliedSearch keyword used when startUrls is empty, up to 300 characters.
sortstringOptional""Public search sort value: score, created_time, or price. Empty leaves the source order unchanged.
orderstringOptional""Public order value: asc or desc. Empty leaves the source order unchanged.
statusstring arrayOptionalNot suppliedListing status filters: on_sale, sold_out, or trading, up to 3 values.
priceMinintegerOptionalNot suppliedLower price bound, 0–1,000,000,000.
priceMaxintegerOptionalNot suppliedUpper price bound, 0–1,000,000,000.
limitintegerOptional50Maximum listing records emitted across all sources, 1–500.
maxPagesintegerOptional1Maximum public search API pages requested per source, 1–20.
timeoutSecsintegerOptional30Maximum wait for each public request, 5–120 seconds.
maxBytesintegerOptional5000000Maximum response size accepted for parsing, 1,000–15,000,000 bytes.
proxyConfigurationobjectOptional{"useApifyProxy":false}Optional standard Apify Proxy routing. It does not bypass access challenges.

Example input matching the saved iphone run:

{
"keyword": "iphone",
"sort": "",
"order": "",
"limit": 3,
"maxPages": 1,
"timeoutSecs": 30,
"maxBytes": 5000000,
"proxyConfiguration": {
"useApifyProxy": false
}
}

The Actor reads the anonymous public Mercari Japan search API. It does not use an account token, login, private endpoint, browser impersonation, or CAPTCHA bypass.

Output

The dataset contains one row per saved listing. Optional values are omitted when Mercari does not publish them; they are not inferred. No diagnostic or placeholder rows are written.

FieldTypeAvailabilityMeaning
recordTypestring enumAlwaysListing record type; always listing.
recordIdstringAlwaysStable anonymized row identifier.
idintegerAlwaysNumeric Mercari listing identifier.
urlstringAlwaysNormalized public Mercari Japan item URL.
listing_idstringAlwaysMercari listing identifier with the m prefix.
titlestringAlwaysPublic listing title.
descriptionstringWhen publishedPublic listing description when exposed.
pricenumberAlwaysPublic listing price in JPY.
currencystringAlwaysCurrency published by Mercari Japan.
brand_namestringWhen publishedReadable brand name when exposed.
brandobjectWhen publishedBounded brand object with identifiers and names.
listing_statusstringAlwaysSale status such as on_sale or sold_out.
listing_typestringAlwaysMercari listing type, such as ITEM_TYPE_MERCARI.
condition_idstringAlwaysPublished condition identifier; the label is not invented.
sellerobjectAlwaysBounded seller object, usually seller_id.
shippingobjectAlwaysPublished shipping payer and method identifiers.
catalogobjectAlwaysBounded catalog identifiers.
storeobjectWhen publishedStore data when the listing belongs to a shop.
category_idstringAlwaysPublished category identifier.
category_namestringWhen publishedCategory label when exposed.
imagesstring arrayAlwaysBounded public listing image URLs.
created_atstringAlwaysListing creation timestamp when parseable.
updated_atstringAlwaysLast listing update timestamp when parseable.
positionintegerAlwaysOne-based position after source order and deduplication.
sourceUrlstringAlwaysPublic search URL that produced the row.
finalUrlstringAlwaysFinal public request URL.
httpStatusintegerAlwaysHTTP status observed for the API response.
contentTypestringAlwaysResponse content type.
contentLengthintegerAlwaysBounded response size in bytes.
sourceTransportstring enumAlwaysofficial_public_api, apify_proxy, or fixture.
proxyConfiguredbooleanAlwaysWhether standard Apify Proxy routing was configured.
fingerprintAppliedbooleanAlwaysWhether a browser fingerprint was applied; this Actor does not apply one.
accessStatusstringAlwaysNormalized access outcome, such as success or blocked.
successbooleanAlwaysWhether the row is a successful listing extraction.
dataAvailablebooleanAlwaysWhether usable listing data is present.
statusstringAlwaysRow status.
inventoryRankintegerAlwaysCatalog inventory rank recorded for provenance.
actorNamestringAlwaysDisplay name of this Actor.
actorSlugstringAlwaysStore slug of this Actor.
actorStoreUrlstringAlwaysStore URL recorded for provenance.
targetHintstringAlwaysPublic target scope recorded for provenance.
accessPolicystringAlwaysPublic-access and no-bypass policy recorded for the row.
observedAtstringAlwaysUTC time at which the row was observed.
scrapedAtstringAlwaysUTC extraction timestamp.
generatedBystringAlwaysGenerator metadata for the row.
fieldCoveragestring arrayAlwaysTop-level fields populated in the row.
dataQualityobjectAlwaysBounded non-empty field quality metadata.

dataQuality contains recordStatus, targetSpecificFieldsClaimed, nonEmptyTopLevelFields, emptyTopLevelFields, and nullTopLevelFields.

The example below is a real saved row from the 2026-10-25 run. fieldCoverage, actorStoreUrl, targetHint, and accessPolicy are omitted for length; every value shown is unchanged.

{
"recordType": "listing",
"recordId": "listing:e1f66e3859c5e6a7b47f5d1a",
"id": 92330019632,
"url": "https://jp.mercari.com/item/m92330019632",
"listing_id": "m92330019632",
"title": "Apple iPhone SE 16GB 本体",
"price": 5200,
"currency": "JPY",
"brand_name": "Apple",
"brand": {
"id": "3272",
"name": "Apple",
"subName": "Apple"
},
"listing_status": "on_sale",
"listing_type": "ITEM_TYPE_MERCARI",
"condition_id": "4",
"seller": {
"seller_id": "325342832"
},
"shipping": {
"payer_id": "2",
"method_id": "17"
},
"catalog": {
"category_id": "859"
},
"category_id": "859",
"images": [
"https://static.mercdn.net/item/detail/webp/photos/m92330019632_1.jpg?1792921578",
"https://static.mercdn.net/thumb/item/webp/m92330019632_1.jpg?1792921578"
],
"created_at": "2026-10-25T09:46:18.000Z",
"updated_at": "2026-10-25T09:47:32.000Z",
"position": 1,
"sourceUrl": "https://jp.mercari.com/search?keyword=iphone",
"finalUrl": "https://jp.mercari.com/search?keyword=iphone",
"httpStatus": 200,
"contentType": "application/json",
"contentLength": 17419,
"sourceTransport": "official_public_api",
"proxyConfigured": false,
"fingerprintApplied": false,
"accessStatus": "success",
"success": true,
"dataAvailable": true,
"status": "success",
"inventoryRank": 94,
"actorName": "Mercari Japan Scraper",
"actorSlug": "mercari-japan-scraper",
"observedAt": "2026-10-25T20:47:50.972Z",
"scrapedAt": "2026-10-25T20:47:50.972Z",
"generatedBy": "Codex with GPT-5.6 Luna",
"dataQuality": {
"recordStatus": "non_empty",
"targetSpecificFieldsClaimed": true,
"nonEmptyTopLevelFields": 44,
"emptyTopLevelFields": 0,
"nullTopLevelFields": 0
}
}

Run summary

Run summary is stored separately from the dataset in the run's key-value store under OUTPUT.

FieldMeaning
statusRun outcome: SUCCEEDED or FAILED.
runStatusCanonical run status; matches status.
dataStatusDataset completeness: COMPLETE, PARTIAL, NO_RESULTS, or FAILED.
actorNameActor display name.
actorSlugActor store slug.
inventoryRankCatalog inventory rank recorded for provenance.
recordCountListing rows saved to the dataset.
resultCountAlias of recordCount.
listingCountAlias of recordCount.
diagnosticCountRequest or extraction issues recorded outside the dataset.
diagnosticCodesDiagnostic codes collected during the run.
sourceCountUnique public source URLs processed.
queryCountSearch queries represented by the source URLs.
uniqueRecordCountDistinct listing URLs after deduplication.
duplicateCountRows discarded as duplicate URLs.
requestedLimitConfigured global listing cap.
requestedMaxPagesConfigured page cap per source.
requestCountPublic API requests attempted.
successfulRequestsSuccessful public API responses.
pagesFetchedSuccessful search pages fetched.
sourceTransportTransport used for the run.
proxyConfiguredWhether standard Apify Proxy routing was configured.
fixtureModeWhether a repository-local fixture was used.
fingerprintAppliedWhether a browser fingerprint was applied; always false here.
apiEndpointAnonymous public API endpoint used for live requests.
sourceUrlsUnique public source URLs processed.
generatedByGenerator metadata.
generatedAtUTC summary creation time.
StatusData statusMeaning
SUCCEEDEDCOMPLETEListings were saved without an extraction problem.
SUCCEEDEDPARTIALListings were saved, but a later problem prevented a complete run. Saved rows remain available.
SUCCEEDEDNO_RESULTSThe source completed cleanly and returned no matching listings.
FAILEDFAILEDA fatal error occurred before any usable listing was saved.

Example OUTPUT from the 2026-10-25 run:

{
"status": "SUCCEEDED",
"runStatus": "SUCCEEDED",
"dataStatus": "COMPLETE",
"actorName": "Mercari Japan Scraper",
"actorSlug": "mercari-japan-scraper",
"inventoryRank": 94,
"recordCount": 3,
"resultCount": 3,
"listingCount": 3,
"diagnosticCount": 0,
"diagnosticCodes": [],
"sourceCount": 1,
"queryCount": 1,
"uniqueRecordCount": 3,
"duplicateCount": 0,
"requestedLimit": 3,
"requestedMaxPages": 1,
"requestCount": 1,
"successfulRequests": 1,
"pagesFetched": 1,
"sourceTransport": "official_public_api",
"proxyConfigured": false,
"fixtureMode": false,
"fingerprintApplied": false,
"apiEndpoint": "https://api.mercari.jp/v2/entities:search",
"sourceUrls": [
"https://jp.mercari.com/search?keyword=iphone"
],
"generatedBy": "Codex with GPT-5.6 Luna",
"generatedAt": "2026-10-25T20:47:51.175Z"
}

Coverage and limitations

The Actor queries the anonymous public Mercari Japan search API with bounded pages, a response-size cap, and deduplication by item URL. It does not crawl every Mercari category, read private seller data, or bypass access controls. Numeric condition, shipping, and category identifiers are retained exactly as published; labels are not guessed and no extra private request is made. Prices are point-in-time JPY values and can change after the run. Optional fields are omitted when the source does not publish them, and blocked, empty, or partial responses are reported in the run summary rather than written as data rows.

Usage and support

Apify charges standard Actor compute, network, and storage usage. Start with a small limit and one source, inspect the dataset and OUTPUT, then scale pages and sources gradually. See the Actor's Pricing tab for current account rates. Use the Actor Issues page to report a problem. Include the run ID, the input used, and the run summary; do not include tokens, cookies, or private data. This Actor is not affiliated with or endorsed by Mercari. Use it only for public data and in accordance with Mercari's terms, robots guidance, and applicable law.