# Mercari Image Search Scraper (`piotrv1001/mercari-image-search-scraper`) Actor

The Mercari Image Search Scraper finds Mercari Japan listings that match a photo — reverse image search returning on-sale or sold items with yen prices, brand, condition, size, photos and seller, with price filters — ideal for sold comps, resale pricing and sourcing from Japan.

- **URL**: https://apify.com/piotrv1001/mercari-image-search-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 image searches

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

Find Mercari Japan listings from a photo. The **Mercari Image Search Scraper** takes image URLs and returns the visually matching listings from jp.mercari.com, the same "search by photo" the Mercari app offers, with price in yen, on-sale or sold status, brand, condition, size, photos and seller. Switch to **sold** listings to get sold comps by photo: what items that look like yours actually sold for. Built for resellers, buyers sourcing from Japan, pricing and authentication checks, and matching your stock to Mercari listings.

### ✨ Features

- 📷 **Photo in, listings out**: Any direct image URL (JPG, PNG, WebP, GIF or AVIF, up to 10 MB) or data: URL. Large photos are resized for you. One search per image.
- 🧾 **Sold comps by photo**: Choose on-sale listings, sold listings or both. Sold rows show the final listed price the item went for.
- 💴 **Price filters**: Limit matches to a yen price range.
- 🏷️ **Rich rows**: Name, price (JPY), status, brand, condition, size, category, shipping payer, thumbnails and photos, listing dates, seller ID or Mercari Shops shop ID, and a direct link.
- 🔢 **Deep results**: Up to 120 matches per page, most similar first, up to ~900 unique matches per photo. Repeats between pages are removed.
- 💸 **Pay per search**: One price per image searched and a small price per extra page. Images that fail to load or find no matches are free.

### 🛠️ How It Works

1. **Paste image URLs**: Product photos from your stock, a listing on another site, or any page.
2. **Pick status, price range and depth**: On sale, sold or all; optional min and max price in yen; how many matches per image.
3. **Run the scraper**: You get one row per matching listing, numbered by similarity and grouped by the photo that found it.

### 💰 Pricing

| Event        |    Price | What you get                                                     |
| ------------ | -------: | ---------------------------------------------------------------- |
| Actor start  | $0.00005 | Once per run                                                     |
| Image search |    $0.02 | One image searched, up to 120 matches                            |
| Results page |    $0.01 | Each additional page of up to 120 new matches for the same image |

100 images at the default 60 matches cost $2.00. One image at 300 matches costs $0.04 (the first page plus two more). The deepest search, about 900 matches, costs about $0.09. Images that cannot be loaded or find no matches are not charged. The run stops at your maximum charge per run.

### 📥 Input

| Field                | Type    | Description                                                         |
| -------------------- | ------- | ------------------------------------------------------------------- |
| `imageUrls`          | array   | Image URLs (or data: URLs) to search with.                          |
| `maxResultsPerImage` | integer | Matches per image, most similar first. Default `60`, maximum `960`. |
| `status`             | string  | `on_sale` (default), `sold` or `all`.                               |
| `priceMin`           | integer | Minimum price in JPY (optional).                                    |
| `priceMax`           | integer | Maximum price in JPY (optional).                                    |
| `proxyConfiguration` | object  | Keep the default.                                                   |

Example:

```json
{
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg"
    ],
    "maxResultsPerImage": 120,
    "status": "sold",
    "priceMin": 5000
}
```

### 📊 Sample Output Data

One row per matching listing. Example (two sold matches for one photo):

```json
[
    {
        "searchImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
        "position": 1,
        "id": "2JWYZxHqSZfrFU8pDm8TzD",
        "url": "https://jp.mercari.com/shops/product/2JWYZxHqSZfrFU8pDm8TzD",
        "name": "ナイキ NIKE Air Jordan 1 High OG \"Lost & Found/Chicago\" エアジョーダン1 ハイ OG \"ロスト&ファウンド/シカゴ\"  スニーカー 赤 レッド 27㎝ DZ5485-612",
        "price": 25900,
        "currency": "JPY",
        "status": "ITEM_STATUS_SOLD_OUT",
        "itemType": "ITEM_TYPE_BEYOND",
        "isShopsItem": true,
        "brandName": "NIKE",
        "brandId": "857",
        "categoryId": 345,
        "itemConditionId": 3,
        "condition": "No noticeable scratches or stains",
        "size": null,
        "shippingPayerId": 0,
        "sellerId": null,
        "shopId": "GqU4Yahsuz6LW3NZZR53T8",
        "thumbnails": ["https://assets.mercari-shops-static.com/-/small/plain/2JWbCFAH6ahoFnQoUz6NV2.jpg@webp"],
        "photos": ["https://assets.mercari-shops-static.com/-/large/plain/2JWbCFAH6ahoFnQoUz6NV2.jpg@webp"],
        "created": "2026-09-09T10:26:06.000Z",
        "updated": "2026-09-10T10:42:38.000Z",
        "scrapedAt": "2026-10-09T09:21:30.360Z"
    },
    {
        "searchImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
        "position": 4,
        "id": "m47659420623",
        "url": "https://jp.mercari.com/item/m47659420623",
        "name": "NIKE AIR JORDAN 1 HIGH OG スニーカー　26.5cm",
        "price": 7800,
        "currency": "JPY",
        "status": "ITEM_STATUS_SOLD_OUT",
        "itemType": "ITEM_TYPE_MERCARI",
        "isShopsItem": false,
        "brandName": "NIKE",
        "brandId": "857",
        "categoryId": 345,
        "itemConditionId": 3,
        "condition": "No noticeable scratches or stains",
        "size": "26.5cm",
        "shippingPayerId": 2,
        "sellerId": "386820444",
        "shopId": null,
        "thumbnails": ["https://static.mercdn.net/thumb/item/webp/m47659420623_1.jpg?1789176983"],
        "photos": ["https://static.mercdn.net/item/detail/webp/photos/m47659420623_1.jpg?1789176983"],
        "created": "2026-09-12T01:36:23.000Z",
        "updated": "2026-09-14T14:05:25.000Z",
        "scrapedAt": "2026-10-09T09:21:30.360Z"
    }
]
```

- `status` is `ITEM_STATUS_ON_SALE`, `ITEM_STATUS_SOLD_OUT` or `ITEM_STATUS_TRADING` (sold, transaction in progress). The **Sold** filter returns the last two.
- `isShopsItem` marks Mercari Shops listings (business sellers). They have a `shopId` and a `/shops/product/` link; regular listings have a `sellerId`.
- Field names match the [Mercari Listings Scraper](https://apify.com/piotrv1001/mercari-listings-scraper), so you can merge the two datasets.
- Images that fail come back as `{ "searchImage": "...", "status": "image_error" | "failed" | "no_matches", "error": "..." }` rows and are not charged.

### 🔗 Use cases

- **Sold comps by photo**: Price an item from its picture by looking at what similar items sold for on Mercari Japan.
- **Sourcing from Japan**: Find who is selling a product you only have a photo of, and at what price.
- **Reseller pricing**: Check on-sale and sold prices before you list.
- **Catalogue matching**: Map your stock to Mercari listings by image instead of by Japanese titles.

### 🔗 Related Actors

- [Mercari Listings Scraper](https://apify.com/piotrv1001/mercari-listings-scraper): Mercari Japan listings from a keyword search, with item details and seller profiles.
- [AliExpress Image Search Scraper](https://apify.com/piotrv1001/aliexpress-image-search-scraper): the same photo search on AliExpress.
- [Amazon Image Search Scraper](https://apify.com/piotrv1001/amazon-image-search-scraper) — find Amazon products that look like your photo.

Turn pictures into Mercari prices. Run the **Mercari Image Search Scraper** today! 🚀

# Actor input Schema

## `imageUrls` (type: `array`):

Photos to search Mercari Japan with: direct image URLs (JPG, PNG, WebP, GIF or AVIF, up to 10 MB) or data: URLs. One search per image. Leave empty to try two example photos.

## `maxResultsPerImage` (type: `integer`):

Matching listings to return per image, most similar first. A results page holds up to 120; Mercari returns up to ~900 per photo.

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

Listings for sale now, sold listings (sold comps: what the item actually went for), or both.

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

Only listings priced at or above this, in Japanese yen.

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

Only listings priced at or below this, in Japanese yen.

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

Keep the default.

## Actor input object example

```json
{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Nintendo-Switch-Console-Docked-wJoyConRB.jpg/960px-Nintendo-Switch-Console-Docked-wJoyConRB.jpg"
  ],
  "maxResultsPerImage": 60,
  "status": "on_sale",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `matches` (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 = {
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Nintendo-Switch-Console-Docked-wJoyConRB.jpg/960px-Nintendo-Switch-Console-Docked-wJoyConRB.jpg"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/mercari-image-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 = {
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Nintendo-Switch-Console-Docked-wJoyConRB.jpg/960px-Nintendo-Switch-Console-Docked-wJoyConRB.jpg",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/mercari-image-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 '{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Nintendo-Switch-Console-Docked-wJoyConRB.jpg/960px-Nintendo-Switch-Console-Docked-wJoyConRB.jpg"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call piotrv1001/mercari-image-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/mercari-image-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/hOGEDfLKwzJb2hpxK/builds/hfaWXHhDlnLsn0u72/openapi.json
