# Mercari Japan Scraper メルカリ: Sold Prices, Listings & Seller Data (`getascraper/mercari-japan-scraper`) Actor

Mercari Japan scraper (メルカリ) for live and sold listings by keyword, URL, item or seller: JPY and USD prices, condition, brand, shipping, seller ratings, photos, sold-price stats and a new-listing and price-drop monitor. No login, no cookies. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/getascraper/mercari-japan-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation
- **Features:** Limited permissions
- **Stats:** 22 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.87 / 1,000 mercari japan listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Mercari Japan Scraper メルカリ: Sold Prices, Listings & Seller Data

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#FDEEEE;border:1px solid #F6C9CB;border-top:4px solid #D81F26;color:#1C1917;border-radius:10px 10px 0 0">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Mercari Japan listings, sold prices and sellers as clean data, with dollar prices and a change monitor.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Search by keyword, address, item id or seller. Get live and sold listings with condition, brand, shipping and seller ratings, then schedule a saved search to catch new listings, price drops and sold items.</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F6C9CB;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 0 10px">
<span style="font-size:15px;font-weight:800;color:#9E1218">💴 Yen and dollars</span><br>
<span style="font-size:12px;color:#57534E">Every row carries the yen price and a dollar price from the rate Mercari shows.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F6C9CB;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#9E1218">📈 Sold price stats</span><br>
<span style="font-size:12px;color:#57534E">Median, quartiles and days to sell per keyword, plus a flag for listings under the sold median.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F6C9CB;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#9E1218">🧑‍💼 Seller and shipping</span><br>
<span style="font-size:12px;color:#57534E">Seller ratings, who pays shipping, ship-from area, English title and description.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F6C9CB;border-left:none;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 10px 0">
<span style="font-size:15px;font-weight:800;color:#9E1218">🔔 Change monitor</span><br>
<span style="font-size:12px;color:#57534E">NEW, PRICE_DROP, PRICE_RISE and SOLD events between scheduled runs.</span>
</td>
</tr>
</table>

メルカリ is Japan's largest secondhand marketplace. This Actor reads the public listings anyone can open without an account and returns them as rows for a spreadsheet, a database or an alert.

### 🔍 What does this Actor do?

- Searches Mercari Japan by keyword (English or Japanese), by pasted search or category page, by item id or item page, or by seller.
- Filters at the source: status, price, condition, brand, category, size, who pays shipping, ship-from prefecture, individual or shop sellers, and excluded words.
- Returns live listings and sold items, so you can read real sold prices.
- Adds a dollar price to every row and, on request, sold price statistics per keyword.
- Opens each listing for the full record: seller name and ratings, English title and description, all photos, shipping method, ship-from area, likes and comments.
- Remembers a saved search between runs and reports only what changed.

### 🎯 What can I use it for?

- **Cross-border resellers:** compare Japanese asking prices with sold prices before you buy.
- **Pricing analysts:** build a price history for a brand or model.
- **Sourcing teams:** get an alert when a wanted item appears or drops in price.
- **Data teams:** feed a de-duplicated listing table into a pipeline each day.

### 🚀 How to use it

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#FDEEEE;border:1px solid #F6C9CB;border-radius:10px 0 0 10px;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#D81F26;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick what to scrape</span><br>
<span style="font-size:12px;color:#57534E">Type keywords, paste Mercari pages, or add item and seller ids. Set status to Sold out for sold prices.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDEEEE;border:1px solid #F6C9CB;border-left:none;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#D81F26;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run it</span><br>
<span style="font-size:12px;color:#57534E">Start with the default of 25 results, then raise the limit.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDEEEE;border:1px solid #F6C9CB;border-left:none;border-radius:0 10px 10px 0;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#D81F26;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export or monitor</span><br>
<span style="font-size:12px;color:#57534E">Download CSV, Excel or JSON, or turn on the monitor and put the run on a schedule.</span>
</td>
</tr>
</table>

### 📥 Input

Every field is optional. With nothing set you get 25 live listings for the sample keyword.

| Field | Type | Required | Description |
|---|---|---|---|
| Mercari addresses | array of URLs | No | Search, category, item or seller profile pages from jp.mercari.com. |
| Item ids | array of text | No | Item ids such as m89066779395. Each returns a full record. |
| Seller ids | array of text | No | Numeric seller ids. Returns that seller's listings. |
| Search keywords | array of text | No | English or Japanese searches, merged without duplicates. |
| Listing status | array of enum | No | On sale, sold out (includes sales in progress) or trading. |
| Sort by, direction | enum | No | Relevance, newest, price or most liked, ascending or descending. |
| Minimum and maximum price | integer | No | Price range in yen. |
| Condition | array of enum | No | Condition 1 to 6. |
| Who pays shipping | enum | No | Any, seller or buyer. |
| Seller type | enum | No | Any, individuals or Mercari Shops. |
| Brand, category, size ids | array of text | No | Ids taken from a Mercari search address. |
| Ship-from prefecture ids | array of text | No | For example 13 for Tokyo. |
| Exclude words | text | No | Skip listings containing this word. |
| Full item details | boolean | No | Add seller, English text, all photos, shipping and likes. Slower. |
| Sold price statistics | boolean | No | One summary row per keyword and a below-median flag. |
| Yen to dollar rate | number | No | Your own rate. Empty uses the rate Mercari shows. |
| Maximum total results | integer | No | Stops the run after this many rows. Free plan runs are capped at 25. |
| Maximum per source | integer | No | Most rows taken from each keyword, address or seller. |
| Monitor changes, name, only changes | boolean, text | No | Remember the search between runs and save only what changed. |
| Proxy configuration | object | No | The default connects directly and switches to a proxy by itself if needed. |

### 📊 Data table

Fields a listing does not show are left out of the row. Nothing is filled with placeholders.

| Field | Type | Description |
|---|---|---|
| `listing_id` | string | Mercari item id. Stable across runs, so it works as a database key. |
| `url` | string | Link to the listing on jp.mercari.com. |
| `title` | string | Listing title in Japanese as posted. |
| `title_en` | string | English title provided by Mercari. Only with full item details. |
| `price` | number | Asking price in yen (a number). |
| `currency` | string | Always JPY. |
| `price_usd` | number | Price in US dollars, from the rate Mercari shows or your own rate. Left out when no rate is available. |
| `fx_rate_usd` | number | Dollars per yen used for price_usd. |
| `status_label` | string | on_sale, sold_out or trading. |
| `is_sold` | boolean | True for sold out and trading listings. |
| `sold_at_estimate` | string | Approximate sale time (last update of a sold listing). |
| `days_to_sell` | number | Approximate days from listing to sale. |
| `days_listed` | number | Days an on-sale listing has been up. |
| `condition_id` | string | Condition code 1 to 6. |
| `condition_name` | string | Condition in English. |
| `seller_id` | string | Seller id. |
| `seller_name` | string | Seller name. Only with full item details. |
| `seller_url` | string | Seller profile link. |
| `seller_rating_count` | number | Number of seller ratings. Full details only. |
| `seller_score` | number | Seller score. Full details only. |
| `seller_rating_good` | number | Good ratings. Full details only. |
| `seller_rating_bad` | number | Bad ratings. Full details only. |
| `seller_star_rating` | number | Star rating. Full details only. |
| `seller_sell_count` | number | Items the seller has sold. Full details only. |
| `category_id` | string | Category id. |
| `category_name` | string | Category name. |
| `category_path` | array | Category path from top level. |
| `brand_id` | string | Brand id. |
| `brand_name` | string | Brand name. |
| `shipping_payer` | string | seller or buyer pays shipping. |
| `shipping_method` | string | Shipping method name. |
| `shipping_from_area` | string | Prefecture the item ships from. Full details only. |
| `shipping_duration_days` | string | Days to ship. Full details only. |
| `seller_pays_shipping` | boolean | True when shipping is included in the price. |
| `item_type` | string | individual or shop. |
| `description` | string | Seller description in Japanese. Full details only. |
| `description_en` | string | English description from Mercari. Full details only. |
| `thumbnail_url` | string | Main photo link. |
| `photo_urls` | array | Photo links. |
| `created_at` | string | When the item was listed. |
| `updated_at` | string | Last update time. |
| `likes_count` | number | Likes. Full details only. |
| `comments_count` | number | Comments. Full details only. |
| `vs_sold_median_pct` | number | Percent above or below the recent sold median. With sold price statistics. |
| `below_sold_median` | boolean | True when priced under the sold median. |
| `change_type` | string | Monitor only: NEW, PRICE_DROP, PRICE_RISE, SOLD, UPDATED or UNCHANGED. |
| `previous_price` | number | Monitor only: price in the previous run. |
| `price_change_pct` | number | Monitor only: price change in percent. |
| `price_history` | array | Monitor only: up to 12 dated price points. |
| `first_seen_at` | string | Monitor only: when your monitor first saw the listing. |
| `days_tracked` | number | Monitor only: days since first seen. |
| `source_query` | string | The keyword, address or seller that returned the row. |
| `scraped_at` | string | Collection time. |

Example row:

```json
{
  "type": "listing",
  "url": "https://jp.mercari.com/item/m89066779395",
  "listing_id": "m89066779395",
  "title": "Apple Watch 本体 se",
  "title_en": "Apple Watch SE (Device Only)",
  "price": 9500,
  "currency": "JPY",
  "price_usd": 62.99,
  "status_label": "on_sale",
  "condition_name": "No noticeable scratches or marks",
  "seller_name": "ゆかゆか",
  "seller_rating_count": 98,
  "seller_score": 96,
  "brand_name": "Apple",
  "category_name": "Apple Watch本体",
  "shipping_payer": "seller",
  "shipping_from_area": "Gunma",
  "source_query": "apple watch",
  "detail_scraped": true
}
```

### 💰 Pricing

You pay per result saved. A run that finds nothing costs nothing, and there are no subscriptions. Sold price summary rows count as results. In monitor mode with only changes on, unchanged listings are not saved and not charged. Free plan runs are limited to 25 results per run, 3 runs per day and a short wait between runs.

### ⭐ Enjoying Mercari Japan Scraper メルカリ: Sold Prices, Listings & Seller Data?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#FDEEEE;border:1px solid #F6C9CB;border-left:5px solid #D81F26;border-radius:10px 10px 0 0;color:#1C1917">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Sourcing from Japan is worth a quick rating.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other resellers find this Actor. Your feedback also tells us what to add next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#D81F26;border:1px solid #D81F26;border-left:5px solid #D81F26;border-top:none;border-radius:0 0 10px 10px;text-align:center;color:#FFFFFF">
<a href="https://apify.com/getascraper/mercari-japan-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

#### How do I get sold prices on Mercari Japan?

Set Listing status to Sold out and turn on Sold price statistics. You get the sold rows plus one summary row per keyword with the median, quartiles and average days to sell. The sale time is approximate: it is the last update of the sold listing.

#### How do I track new listings and price drops?

Turn on Monitor changes, give the search a name, keep the same filters and put the run on a schedule. The first run saves everything as NEW. Later runs save only NEW, PRICE_DROP, PRICE_RISE and SOLD listings. Include Sold out in the status filter to receive SOLD events.

#### Does it need a Mercari account?

No. It reads public listings only and never asks for a login, cookie or key.

#### Are prices in dollars?

Yes. Each row has price_usd when a rate is available, using the rate Mercari shows or the rate you enter.

### 🔗 Other actors

- [Mercari Sold Comps Scraper: Sold Prices & Days to Sell](https://apify.com/getascraper/mercari-sold-comps-scraper) ↗ - Sold price analysis for Mercari.
- [Mercari Seller Scraper: Shop Listings, Ratings & Item History](https://apify.com/getascraper/mercari-seller-scraper) ↗ - Seller shops and item history.
- [Mercari US Scraper: Active & Sold Listings, Price & Seller Data](https://apify.com/getascraper/mercari-us-scraper) ↗ - Mercari in the United States.
- [Buyee Scraper: Yahoo Auctions & Mercari Japan Data](https://apify.com/getascraper/buyee-scraper) ↗ - Yahoo Auctions and Mercari through Buyee.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/mercari-japan-scraper/changelog.md

# Actor input Schema

## `startUrls` (type: `array`):

Paste Mercari Japan search pages, category pages, single item pages or seller profile pages. Item pages return one full record each, seller pages return that seller's listings. Add userData.inputId to tag the rows from an address.

## `itemIds` (type: `array`):

Mercari item ids such as m89066779395. Each one returns a full record with seller, shipping and description.

## `sellerIds` (type: `array`):

Numeric seller ids (the number in a seller profile address). Returns that seller's listings, with the status filter below applied.

## `keywords` (type: `array`):

One or more English or Japanese searches. Each keyword is searched separately and the results are merged without duplicates. The sample keyword is ignored when you add addresses, item ids or seller ids.

## `status` (type: `array`):

On sale for live listings. Sold out also covers items whose sale is in progress, which makes it the source for sold prices.

## `sort` (type: `string`):

Order of the results: relevance, newest, price or most liked.

## `order` (type: `string`):

Descending shows the highest price or newest first, ascending the opposite.

## `priceMin` (type: `integer`):

Only listings priced at or above this amount in yen.

## `priceMax` (type: `integer`):

Only listings priced at or below this amount in yen.

## `itemConditionIds` (type: `array`):

Keep only listings in these conditions. Leave empty for all conditions.

## `shippingPayer` (type: `string`):

Seller means shipping is included in the price. Buyer means shipping is paid on delivery.

## `sellerType` (type: `string`):

Individual sellers only, Mercari Shops merchants only, or both.

## `brandIds` (type: `array`):

Mercari brand ids to include (the brand_id number in a Mercari search address).

## `categoryIds` (type: `array`):

Mercari category ids to include (the category_id number in a Mercari search address).

## `sizeIds` (type: `array`):

Mercari size ids to include (the size_id number in a Mercari search address).

## `shippingFromAreaIds` (type: `array`):

Keep only items shipped from these prefectures, for example 13 for Tokyo.

## `excludeKeyword` (type: `string`):

Skip listings whose text contains this word, for example junk or case.

## `fetchItemDetails` (type: `boolean`):

Open every listing to add the seller name and ratings, description, English title and description, all photos, shipping method, ship-from area, likes and comments. Slower than a plain scan.

## `includeSoldStats` (type: `boolean`):

For each keyword, add one summary row with the median, quartiles, range and average days to sell of recently sold items, and flag live listings priced below that median.

## `jpyToUsdRate` (type: `number`):

Optional. Dollars per yen, for example 0.0066. Leave empty to use the rate Mercari shows, which is added as price_usd when available.

## `maxResults` (type: `integer`):

Stops the run after this many listings across all sources.

## `maxItemsPerQuery` (type: `integer`):

Most listings taken from each keyword, address or seller.

## `monitorMode` (type: `boolean`):

Remember this search between runs and report new listings, price drops, price rises and sold items. Run it on a schedule.

## `monitorName` (type: `string`):

A short name for this saved search, for example watches under 20000. Runs with the same name share one memory.

## `onlyChanges` (type: `boolean`):

Save only new, changed and sold listings. Turn off to also save listings that did not change.

## `proxyConfiguration` (type: `object`):

Connection settings. The default connects directly and switches to an Apify datacenter proxy by itself if Mercari stops answering. Choose Apify proxy to always use one.

## Actor input object example

```json
{
  "keywords": [
    "apple watch"
  ],
  "status": [
    "on_sale"
  ],
  "sort": "score",
  "order": "desc",
  "shippingPayer": "any",
  "sellerType": "any",
  "fetchItemDetails": false,
  "includeSoldStats": false,
  "maxResults": 25,
  "maxItemsPerQuery": 25,
  "monitorMode": false,
  "onlyChanges": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "apple watch"
    ],
    "status": [
        "on_sale"
    ],
    "sort": "score",
    "order": "desc",
    "shippingPayer": "any",
    "sellerType": "any",
    "fetchItemDetails": false,
    "includeSoldStats": false,
    "maxResults": 25,
    "maxItemsPerQuery": 25,
    "monitorMode": false,
    "onlyChanges": true,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/mercari-japan-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["apple watch"],
    "status": ["on_sale"],
    "sort": "score",
    "order": "desc",
    "shippingPayer": "any",
    "sellerType": "any",
    "fetchItemDetails": False,
    "includeSoldStats": False,
    "maxResults": 25,
    "maxItemsPerQuery": 25,
    "monitorMode": False,
    "onlyChanges": True,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/mercari-japan-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "apple watch"
  ],
  "status": [
    "on_sale"
  ],
  "sort": "score",
  "order": "desc",
  "shippingPayer": "any",
  "sellerType": "any",
  "fetchItemDetails": false,
  "includeSoldStats": false,
  "maxResults": 25,
  "maxItemsPerQuery": 25,
  "monitorMode": false,
  "onlyChanges": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call getascraper/mercari-japan-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/mercari-japan-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Mo6aFec1NiyCc3FSZ/builds/9oU46VcXMBvG2jt9g/openapi.json
