# Mercari Japan Listings by Condition, Price & Status (`dataspryva/mercari-japan-listings-by-condition-price`) Actor

Search Mercari Japan by keyword and filter by item condition, listing status, and price range in JPY, with seller, category, images, and listing URL for each match.

- **URL**: https://apify.com/dataspryva/mercari-japan-listings-by-condition-price.md
- **Developed by:** [Dataspryva](https://apify.com/dataspryva) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 Listings by Condition, Price & Status

Scrape **Mercari Japan** (`jp.mercari.com`) for active, sold and in-transaction listings. Search by keyword with condition, price, status, category, brand, size and seller filters, or paste search, item and Mercari Shops links. Each row carries the listing's real price in yen, condition, status, seller rating, description, photos and shipping details.

No login, cookies, API key or proxy setup is needed. Prices are in JPY; condition and status labels are in English.

### What this actor does

- **Keyword search** with Mercari's own filters: condition (six grades), price range, status (on sale, sold out, trading, sold, all), category, brand, size, seller type and exclude keyword.
- **Paste links**: search result URLs keep their filters; item URLs and Mercari Shops product URLs return one detailed record each. Mix different link types in one run.
- **Mercari Shops storefronts**: list a shop's products with the same detail enrichment.
- **Five sort orders**: relevance, newest, price low to high, price high to low, most liked.
- **Rich records**: description, every photo, seller name and rating, likes, category path, brand, size, shipping payer/method/origin/speed and auction data when present.
- Empty fields are omitted from a record rather than filled with `null` or a placeholder.

### Output per listing

| Field | Description |
|---|---|
| `itemId` | Mercari item ID (personal) or product ID (Mercari Shops) |
| `itemUrl` | Direct listing URL (`/item/...` or `/shops/product/...`) |
| `itemType` | `personal` or `shop` |
| `name` | Listing title as written by the seller |
| `price` | Price in Japanese yen |
| `currency` | Always `JPY` |
| `status` | `on_sale`, `sold_out` or `trading` |
| `condition` | English condition label: New, Like New, Good, Fair, Poor or Very Poor |
| `conditionId` | Mercari condition ID (1-6) |
| `brandName`, `brandId` | Brand, when the listing has one |
| `category`, `categoryId` | Leaf category name and ID (`category` is the numeric ID when `includeDetails=false`) |
| `categoryPath` | Full category path, e.g. `ゲーム・おもちゃ・グッズ > テレビゲーム > Nintendo Switch` |
| `sizeName`, `sizeId` | Size, when the listing has one |
| `description` | Full listing description |
| `imageUrl`, `imageUrls[]` | Main full-size photo and all photos |
| `thumbnailUrl` | Thumbnail image |
| `seller` | Seller display name |
| `sellerId` | Seller ID (or Mercari Shops shop ID) |
| `sellerRating` | Seller star rating (0-5) |
| `sellerRatingCount` | Number of seller ratings |
| `likes` | Like count; zero is a real value |
| `commentCount` | Comment count, when shown |
| `shippingPayer` | `Seller` or `Buyer` |
| `shippingMethod` | Shipping method, e.g. `らくらくメルカリ便` |
| `shippingFromArea` | Prefecture the item ships from |
| `shippingDuration` | Dispatch window, e.g. `1~2日で発送` |
| `isAuction`, `auction` | Auction flag and bid details when the listing is an auction |
| `createdAt`, `updatedAt` | Listing timestamps in ISO 8601 UTC |
| `searchKeyword`, `sourceUrl` | Keyword or source link that produced the row |
| `scrapedAt` | When the row was collected |

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search`, `byUrl` or `shop` |
| `keyword` | string | – (prefill: `Nintendo Switch`) | Search term (mode=search) |
| `startUrls` | array | – | Search, item or shop links (mode=byUrl) |
| `shop` | string | – | Mercari Shops ID, storefront URL or shop product URL (mode=shop) |
| `status` | string | `on_sale` | `on_sale`, `sold_out`, `trading`, `sold` (sold out + trading) or `all` |
| `condition` | string | `any` | `any`, or 1-6 (New … Very Poor) |
| `sortBy` | string | `default` | `default`, `created_time`, `price_asc`, `price_desc` or `num_likes` |
| `category` | string | – | Category name, path or numeric ID |
| `brand` | string | – | Brand name (Japanese or English) or numeric ID |
| `size` | string | `any` | Any of Mercari's 130 size values, grouped by size type |
| `sellerType` | string | `any` | `any`, `individual` or `shop` |
| `excludeKeyword` | string | – | Drop titles containing this word |
| `minPrice` | integer | – | Minimum price in JPY |
| `maxPrice` | integer | – | Maximum price in JPY |
| `maxItems` | integer | `100` | Maximum listings to save (1-2,000) |
| `includeDetails` | boolean | `true` | Open each listing for description, all photos, seller rating, likes and shipping details |

#### Example: like-new games under ¥5,000

```json
{
  "mode": "search",
  "keyword": "Nintendo Switch",
  "condition": "2",
  "maxPrice": 5000,
  "sortBy": "price_asc",
  "maxItems": 100
}
```

#### Example: sold comparables for a camera

```json
{
  "mode": "search",
  "keyword": "Nikon Z6",
  "status": "sold",
  "sortBy": "created_time",
  "maxItems": 200
}
```

#### Example: brand and size on fashion

```json
{
  "mode": "search",
  "keyword": "Tシャツ",
  "brand": "Nike",
  "size": "3",
  "condition": "3",
  "maxItems": 50
}
```

#### Example: paste links

```json
{
  "mode": "byUrl",
  "startUrls": [
    { "url": "https://jp.mercari.com/search?keyword=ポケモンカード&status=on_sale&price_min=1000" },
    { "url": "https://jp.mercari.com/item/m62109311441" },
    { "url": "https://jp.mercari.com/shops/product/2JXdgagXNJQg8TL7TuwiZG" }
  ],
  "maxItems": 20
}
```

#### Example: a Mercari Shops storefront

```json
{
  "mode": "shop",
  "shop": "https://jp.mercari.com/shops/profile/Bh6cspVjCR9oww4P7w7eHm",
  "maxItems": 100,
  "sortBy": "price_asc"
}
```

### Use cases

- **Resale sourcing** — find underpriced items by condition and price band before competitors.
- **Sold-price research** — collect sold and in-transaction listings for a model or brand.
- **Price monitoring** — schedule a search and compare asking prices over time.
- **Brand and size intelligence** — see what a brand actually lists in each size and condition.
- **Shop catalogue exports** — export a Mercari Shops storefront with seller ratings and photos.
- **Cross-border sourcing** — use the description, photos and shipping origin to evaluate imports.

### FAQ

#### Do I need a Mercari account, cookies or an API key?

No. The actor reads public Mercari Japan listing data without login, cookies or an API key.

#### Do I need to configure a proxy?

No. The actor connects directly to Mercari without a proxy. Just fill in the input and run it.

#### What is the difference between `sold_out`, `trading` and `sold`?

`sold_out` returns only completed sales. `trading` returns listings with a purchase in progress. `sold` combines both, which matches Mercari's own "sold out" filter on the website. When you paste a Mercari search link, its own `status` value is honored as the site defines it, so a link using the site's `status=sold_out` filter maps to `sold` (sold out plus trading). Use the `status` input for an exact `sold_out` filter.

#### Why are some fields missing from a record?

Mercari does not publish every field for every listing. For example, many listings have no brand or size. Those fields are omitted; the actor never invents values.

#### What does `includeDetails` change?

With details on, the actor opens each listing to add its full description, all photos, seller name and rating, likes, category name and path, and shipping details. Turning it off makes runs faster; `category` then falls back to the numeric ID and the description, seller rating, likes, category path and shipping details are omitted.

#### How many listings can I get per run?

Up to 2,000 per run. Mercari itself serves at most about 100 pages per search (roughly 12,000 unique listings) and reports a matching count capped at 15,000. Split a broad search by category, brand or price range to go deeper.

#### Does the condition filter use English or Japanese grades?

The input uses Mercari's numeric grades 1-6, shown in English as New, Like New, Good, Fair, Poor and Very Poor. Japanese titles and descriptions stay in their original language.

#### Can I use Japanese keywords and brand names?

Yes. Keywords, category names and brand names accept Japanese and English. Brand and category names are resolved to Mercari's own IDs automatically.

#### Are Mercari Shops listings included?

Yes. Search results include both individual and shop listings unless you choose `sellerType`; `mode=shop` lists a whole storefront. Shop product links use `/shops/product/...` URLs.

#### Is this affiliated with Mercari?

No. This is an independent third-party actor that reads public Mercari Japan listing data and is not operated by or affiliated with Mercari.

# Actor input Schema

## `mode` (type: `string`):

How to find listings.

## `keyword` (type: `string`):

Search term, in Japanese or English (mode=search).

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

Search, item or shop links to scrape (mode=byUrl). Mixing link types is fine.

## `shop` (type: `string`):

Shop ID, storefront URL or shop product URL (mode=shop).

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

On sale, exact sold out, trading, sold (sold out plus trading, the site's sold filter), or all.

## `condition` (type: `string`):

Filter by Mercari's six condition grades.

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

Result order.

## `category` (type: `string`):

Category name, path or numeric ID, e.g. `ゲーム・おもちゃ・グッズ > テレビゲーム` or `7002`.

## `brand` (type: `string`):

Brand name (Japanese or English) or numeric ID, e.g. `Nintendo`, `任天堂` or `15487`.

## `size` (type: `string`):

Mercari size filter. The group name is shown before each size.

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

Individual sellers, Mercari Shops, or both.

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

Drop listings whose title contains this word. Applied by Mercari's search.

## `minPrice` (type: `integer`):

Lowest price in Japanese yen.

## `maxPrice` (type: `integer`):

Highest price in Japanese yen.

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

Maximum listings to save.

## `includeDetails` (type: `boolean`):

Open each listing for its description, all photos, seller rating, likes and shipping details.

## Actor input object example

```json
{
  "mode": "search",
  "keyword": "Nintendo Switch",
  "status": "on_sale",
  "condition": "any",
  "sortBy": "default",
  "size": "any",
  "sellerType": "any",
  "maxItems": 3,
  "includeDetails": true
}
```

# Actor output Schema

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

Dataset containing all scraped Mercari Japan listing records.

# 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 = {
    "mode": "search",
    "keyword": "Nintendo Switch",
    "status": "on_sale",
    "condition": "any",
    "sortBy": "default",
    "size": "any",
    "sellerType": "any",
    "maxItems": 3,
    "includeDetails": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("dataspryva/mercari-japan-listings-by-condition-price").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 = {
    "mode": "search",
    "keyword": "Nintendo Switch",
    "status": "on_sale",
    "condition": "any",
    "sortBy": "default",
    "size": "any",
    "sellerType": "any",
    "maxItems": 3,
    "includeDetails": True,
}

# Run the Actor and wait for it to finish
run = client.actor("dataspryva/mercari-japan-listings-by-condition-price").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 '{
  "mode": "search",
  "keyword": "Nintendo Switch",
  "status": "on_sale",
  "condition": "any",
  "sortBy": "default",
  "size": "any",
  "sellerType": "any",
  "maxItems": 3,
  "includeDetails": true
}' |
apify call dataspryva/mercari-japan-listings-by-condition-price --silent --output-dataset

```

## MCP server setup

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

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/lGwJaWQQLr64msxVU/builds/R72wWR4KFU8fnAnNo/openapi.json
