# Mercari Japan Listings — One Row per Item, $0.0015 Each (`jpmarketdata/mercari-japan-listings`) Actor

Type a keyword and get every matching Mercari Japan listing, live or sold, one row each. Each row has title, price in yen, status (on sale / sold out), condition, category, who pays shipping, listing time and link — no seller data. $0.0015 per listing; nothing found = no charge. Unofficial.

- **URL**: https://apify.com/jpmarketdata/mercari-japan-listings.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 listing returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Mercari Japan Listings — One Row per Item, $0.0015 Each

**What it does:** Returns the Mercari Japan listings for your search — the listings themselves, one row each — live, sold, or both.

**You enter:** search terms, e.g. `Nikon Z6`; status (on sale / sold out / both); how many rows; price window

**You get:** one row per listing: title, price (yen), status, condition, category, who pays shipping, shop or individual, listed and last-updated time, thumbnail, working URL. No seller names or IDs.

**Price:** $0.0015 per listing delivered. No start fee, no per-keyword fee, same rate on every plan. Nothing found = no charge.

**Example:** enter `Nikon Z6` → e.g. "Nikon Z6 ボディ ミラーレス一眼" · ¥89,000 · on sale · no visible damage · seller pays shipping · listed 2026-08-06

> Unofficial — not affiliated with Mercari. Reads public pages only.

### What you get

```json
{
  "type": "listing",
  "keyword": "Nikon Z6",
  "id": "m81496913924",
  "title": "Nikon Z6 ボディ ミラーレス一眼",
  "priceJpy": 89000,
  "hasPrice": true,
  "status": "on_sale",
  "conditionId": 3,
  "condition": "no visible damage",
  "categoryId": 4006,
  "shippingPayerId": 2,
  "shippingPayer": "seller",
  "shippingMethodId": 14,
  "isShopListing": false,
  "listedAt": "2026-08-06T11:23:07+00:00",
  "updatedAt": "2026-08-09T01:58:00+00:00",
  "url": "https://jp.mercari.com/item/m81496913924",
  "thumbnail": "https://static.mercdn.net/thumb/item/webp/m81496913924_1.jpg?1786015387"
}
```

| field | meaning |
|---|---|
| `priceJpy` / `hasPrice` | asking price in yen. Mercari encodes "no price" as ¥9,999,999; that becomes `null` with `hasPrice: false`, never a nine-million-yen listing |
| `status` | `on_sale`, `sold_out` or `trading` — as reported per listing |
| `condition` / `conditionId` | Mercari's six condition grades, named |
| `shippingPayer` | `seller` (送料込み) or `buyer` (着払い); `null` when Mercari reports neither |
| `isShopListing` | whether this is a Mercari Shops listing rather than an individual one |
| `listedAt` | when the listing was created, in UTC |
| `updatedAt` | **the last change to the listing** — see the note below |
| `url` | a link that resolves for both listing types |

### Input

```json
{
  "keywords": ["Nikon Z6", "Nikon Z6 ボディ"],
  "status": "both",
  "maxListings": 60
}
```

| input | notes |
|---|---|
| `keywords` | one search per term; results are merged and de-duplicated across all of them |
| `status` | `on_sale`, `sold_out`, or `both`. `both` sends no filter, which is what Mercari's own search bar does — in practice that returns an almost entirely live book, so **ask for `sold_out` explicitly if you want sold listings** |
| `maxListings` | per search term, 10–2000 |
| `priceMinJpy` / `priceMaxJpy` | pushed to Mercari, so your page budget is spent on listings you want |

Listings are returned in Mercari's own relevance order — the order the site's search bar gives you.

### Three things this Actor is honest about

**Seller identities are never emitted.** Mercari's search response includes a seller id on every result. We drop it, and we do not emit seller names, shop ids or profile links either. Competing Mercari Actors advertise "prices, sellers, conditions"; this one deliberately stops at the listing. The rule is enforced by a test that asserts no seller id appears in any field — not as a key, and not hidden inside a URL.

**`updatedAt` is not a sale time.** Mercari's search API offers no sold-date sort and returns no sale timestamp. `updated` is simply the last time the listing changed — a price edit, a re-list, or the sale. Any Actor presenting it as "when it sold" is guessing. We name it `updatedAt` and leave it at that.

**Mercari Shops links.** About a quarter of a typical result page is Mercari Shops (`ITEM_TYPE_BEYOND`), and those listings return **404** on the `jp.mercari.com/item/{id}` path that ordinary listings use — they live at `jp.mercari.com/shops/product/{id}`. This Actor picks the right one per listing, so every `url` in the output resolves.

Two fields you may expect and will not find: **brand** and **favourite count**. Mercari's search response carries neither (`itemBrand` came back `null` on every one of 352 results across three keywords, including two brand searches). They exist only on the per-listing detail endpoint, which costs one extra request per row — a trade that does not fit a $0.0015 listing, and we would rather omit a column than ship one full of nulls.

### Pricing

**$0.0015 per listing delivered, flat.**

- No start fee.
- No per-keyword fee.
- No free-plan surcharge — the same rate on every plan.
- Duplicates are de-duplicated by listing id across pages *and* across your keywords, and **you are charged only for what reached your dataset**. Overlapping search terms cost you nothing extra.

Read-only public data, no login, throttled requests (1.5s between pages), no browser, 256 MB. Nothing is stored between runs.

### If something goes wrong

- **Wrong number or a failed run?** Open a ticket on the **Issues** tab. I read every one and reply within 2 business days (Japan time).
- **You never get a fake "empty" result.** If the site can't be read, the run fails and says so.
- **No results = no charge.** You only pay for results you actually get.
- **Checked every week.** An automatic test runs this tool weekly; if the site changes, I fix it.
- **Public pages only.** No login, no personal data, and it goes easy on the site.

### More tools by the same author

- [Mercari Japan Sold Prices — What Items Really Sell For](https://apify.com/jpmarketdata/mercari-japan-price-checker)
- [Mercari Japan Underpriced Deals — Under the Sold Price](https://apify.com/jpmarketdata/mercari-japan-underpriced-deals)
- [Yahoo! Auctions Japan Sold Prices — Median, Range, Bids](https://apify.com/jpmarketdata/yahoo-auction-sold-comps)
- [Japan Used Camera & Lens — Dealer Price vs Sold Price](https://apify.com/jpmarketdata/japan-camera-gear-sold-comps)
- [Japan Figure & Gunpla — New Price vs Used Sold Price](https://apify.com/jpmarketdata/japan-figure-gunpla-resale-value)
- [Used iPhone & Android Prices Japan — Dealer vs Sold](https://apify.com/jpmarketdata/japan-phone-resale-value)
- [Yahoo, Mercari & PayPay Japan — Same Item, 3 Prices](https://apify.com/jpmarketdata/japan-resale-cross-market-checker)
- [Mercari & Yahoo Japan Demand Check — Sold vs Still Listed](https://apify.com/jpmarketdata/japan-sell-through-rate)

All tools (Japan marketplaces, real estate, jobs, racing, prediction markets): <https://apify.com/jpmarketdata>

### Disclaimer

Unofficial, independent tool — **not affiliated with, endorsed by, or sponsored by Mercari**. Product names and logos belong to their owners and only say where the data comes from. Data is read from public pages, for market research; check before you act on it.

# Actor input Schema

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

What to search for on Mercari Japan.

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

Live listings, sold listings, or both.

## `maxListings` (type: `integer`):

How many listings to return per search term.

## `priceMinJpy` (type: `integer`):

Pushed to Mercari.

## `priceMaxJpy` (type: `integer`):

Pushed to Mercari.

## Actor input object example

```json
{
  "keywords": [
    "Nikon Z6"
  ],
  "status": "both",
  "maxListings": 100
}
```

# Actor output Schema

## `listings` (type: `string`):

One record per Mercari Japan listing: title, price, condition, shipping payer, seller and URL.

# 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": [
        "Nikon Z6"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/mercari-japan-listings").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": ["Nikon Z6"] }

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/mercari-japan-listings").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": [
    "Nikon Z6"
  ]
}' |
apify call jpmarketdata/mercari-japan-listings --silent --output-dataset

```

## MCP server setup

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

```

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/5pe3dEsXtHJqmH66d/builds/msupkNPSemxxikfk1/openapi.json
