# Mercari Japan Search Scraper (`fetch_cat/mercari-japan-search-scraper`) Actor

Export public Mercari Japan listings, prices, sold status, condition, brand, seller summary, and images for sourcing and market analysis.

- **URL**: https://apify.com/fetch\_cat/mercari-japan-search-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 item processeds

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 Search Scraper

Export public **Mercari Japan** search results for resale sourcing, sold-price comparison, and availability monitoring. Get structured listing identity, JPY price, observed sold status, condition, brand, public seller summary, images, query provenance, and observation time.

### At a glance

- Search one or more Japanese or English keywords on `jp.mercari.com`.
- Filter available or sold public listings.
- Sort by relevance, newest listing, or price.
- Bound spend and output with `maxItems`.
- Export results as JSON, CSV, Excel, XML, or through the API.
- Receive an explicit summary for valid zero-match searches.

### Who is it for?

- **Resellers** comparing asking prices and sold observations.
- **Cross-border sourcing teams** building repeatable product shortlists.
- **Second-hand market analysts** measuring availability and price ranges.
- **Collectors** monitoring trading cards, consoles, fashion, and other categories.
- **Data teams** feeding public marketplace observations into dashboards or databases.

### Buyer workflows and use cases

- Export current listings for a sourcing spreadsheet.
- Compare sold observations before setting a resale price.
- Schedule a recurring availability monitor for a product category.
- Collect stable listing IDs for change detection.
- Compare conditions and public seller IDs across similar listings.

The Actor never signs in or collects messages, purchases, offers, private profiles, cookies, or authenticated seller data.

### Ready-to-run tasks

Use these editable Examples recipes for distinct buyer workflows:

- [Export source gaming consoles](https://apify.com/fetch_cat/mercari-japan-search-scraper/examples/source-gaming-consoles)
- [Compare sold trading card prices](https://apify.com/fetch_cat/mercari-japan-search-scraper/examples/compare-sold-trading-cards)
- [Monitor luxury handbag listings](https://apify.com/fetch_cat/mercari-japan-search-scraper/examples/monitor-luxury-handbags)

#### Export source gaming consoles

```json
{
  "searchQueries": ["Nintendo Switch"],
  "maxItems": 100
}
```

#### Compare sold trading card prices

```json
{
  "searchQueries": ["ポケモンカード"],
  "status": "sold",
  "maxItems": 100
}
```

#### Monitor luxury handbag listings

```json
{
  "searchQueries": ["ルイヴィトン バッグ"],
  "status": "available",
  "maxItems": 100
}
```

### Input configuration

| Setting | JSON key | Purpose | Default |
| --- | --- | --- | --- |
| Search queries | `searchQueries` | One or more non-empty Mercari Japan keywords. | Required |
| Maximum listings | `maxItems` | Total unique rows across every query. | `100` |
| Listing status | `status` | `all`, `available`, or `sold`. | `all` |
| Sort field | `sortBy` | `relevance`, `newest`, or `price`. | `relevance` |
| Sort direction | `sortOrder` | `desc` or `asc`. | `desc` |
| Proxy settings | `proxyConfiguration` | Optional Apify Proxy configuration. | Direct connection |

Queries are trimmed and deduplicated. An empty query array fails before crawling. `maxItems` accepts values from 1 to 10,000.

### Input example

```json
{
  "searchQueries": ["Nintendo Switch", "ポケモンカード"],
  "status": "sold",
  "sortBy": "newest",
  "sortOrder": "desc",
  "maxItems": 100
}
```

### Output fields

| Field | Description |
| --- | --- |
| `id` | Stable Mercari listing ID. |
| `url` | Public Mercari Japan listing URL. |
| `title` | Public listing title. |
| `price` | Numeric asking price. |
| `currency` | `JPY`. |
| `status` | Observed `available` or `sold` state. |
| `isSold` | Boolean sold-state convenience field. |
| `condition` | Japanese condition label when supplied upstream. |
| `category` | Public category when supplied upstream. |
| `brand` | Public brand when supplied upstream. |
| `seller` | Public seller ID and any displayed summary values. |
| `imageUrls` | Public thumbnail URLs. |
| `searchQuery` | Input query that produced the observation. |
| `scrapedAt` | ISO timestamp for the observation. |

Optional fields are emitted only when Mercari supplies them. The Actor does not add permanently empty compatibility fields.

### Output example

```json
{
  "id": "m58902716035",
  "url": "https://jp.mercari.com/item/m58902716035",
  "title": "Nintendo Switch console",
  "price": 24500,
  "currency": "JPY",
  "status": "available",
  "isSold": false,
  "condition": "目立った傷や汚れなし",
  "seller": {"id": "399804015"},
  "imageUrls": ["https://static.mercdn.net/thumb/item/webp/example.jpg"],
  "searchQuery": "Nintendo Switch",
  "scrapedAt": "2026-09-25T00:00:00.000Z"
}
```

### Pricing

The Actor uses pay-per-event pricing: a small run-start event plus one item event for each unique listing saved. Empty searches do not incur item charges. See the [live Pricing tab](https://apify.com/fetch_cat/mercari-japan-search-scraper/pricing) for current rates and subscription-tier discounts.

### API usage

#### Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/mercari-japan-search-scraper').call({
  searchQueries: ['Nintendo Switch'],
  maxItems: 20,
});
console.log(run.defaultDatasetId);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/mercari-japan-search-scraper").call(run_input={
    "searchQueries": ["Nintendo Switch"],
    "maxItems": 20,
})
print(run["defaultDatasetId"])
```

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/fetch_cat~mercari-japan-search-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries":["Nintendo Switch"],"maxItems":20}'
```

### MCP and AI agents

Use the Actor through the official Apify MCP Server:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=fetch_cat/mercari-japan-search-scraper"
```

Or add the server to an MCP client configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/mercari-japan-search-scraper"
    }
  }
}
```

Example prompt: “Export 20 available Nintendo Switch listings from Mercari Japan and summarize the price range.”

### Scheduling and integrations

Schedule repeat runs in Apify Console to monitor inventory. Send completed datasets to Google Sheets, webhooks, cloud storage, or your own API. Compare stable `id`, `price`, and `status` fields between runs to detect changes.

### Limits and caveats

- Mercari may change its public web application, JSON fields, rate limits, or geo behavior.
- A listing can change or disappear after it is collected.
- Sold status is an observation, not a historical transaction record.
- Category, brand, and seller summary fields are included only when the public search response supplies them.
- This product targets Mercari Japan, not Mercari US.
- It does not send messages, make offers, or purchase products.

### Related Actors

For broader discovery workflows, combine this Actor with public search or ecommerce Actors from the `fetch_cat` Store profile. Keep Mercari Japan monitoring separate from Mercari US because their sources and listing semantics differ.

### FAQ

#### Can I export sold listings?

Yes. Set `status` to `sold`. The Actor requests Mercari's public sold states and defensively discards contradictory available rows.

#### Does it require a Mercari account?

No. The Actor uses anonymous public search data and does not accept credentials or cookies.

#### What happens when there are no matches?

The run succeeds with zero dataset rows and saves `noMatches: true` in the `OUTPUT` summary.

#### Can I download CSV or Excel?

Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, and API access.

#### Why is an optional field missing?

Mercari does not expose every field for every result. The Actor omits unavailable optional values instead of guessing.

### Support

Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID, redacted input, expected behavior, actual behavior, and one reproducible public listing or search URL. Never include account credentials, cookies, messages, or purchase data.

# Changelog

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

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search on public Mercari Japan listings.

## `maxItems` (type: `integer`):

Total unique listings to save across all queries.

## `status` (type: `string`):

Return all, available, or sold listings.

## `sortBy` (type: `string`):

Order public search results by relevance, newest listing, or price.

## `sortOrder` (type: `string`):

Choose descending or ascending order for the selected sort.

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

Optional Apify Proxy settings for production reliability.

## Actor input object example

```json
{
  "searchQueries": [
    "Nintendo Switch"
  ],
  "maxItems": 100,
  "status": "all",
  "sortBy": "relevance",
  "sortOrder": "desc"
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `summary` (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 = {
    "searchQueries": [
        "Nintendo Switch"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/mercari-japan-search-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 = { "searchQueries": ["Nintendo Switch"] }

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/mercari-japan-search-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 '{
  "searchQueries": [
    "Nintendo Switch"
  ]
}' |
apify call fetch_cat/mercari-japan-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fetch_cat/mercari-japan-search-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/AHC9Ld6OStFxfWzyS/builds/RNF80Ykthd6FGwptq/openapi.json
