# Mercari US Listings Scraper (`automation-lab/mercari-us-listings-scraper`) Actor

Search Mercari US and extract public listings, prices, conditions, images, availability, shipping context, and seller details for resale research.

- **URL**: https://apify.com/automation-lab/mercari-us-listings-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.08 / 1,000 mercari 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/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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 US Listings Scraper

Collect public Mercari US marketplace listings as clean JSON, CSV, Excel, XML, or RSS data.

Search by keyword, paste a Mercari search URL, or extract one public item URL.
The Actor returns listing IDs, canonical URLs, titles, USD prices, conditions, brands, categories, images, availability, likes, seller context, and timestamps when Mercari exposes them.

Use the data for resale research, sold-comps analysis, price monitoring, inventory discovery, brand tracking, and marketplace intelligence.
No Mercari login or private API key is required.

### What does Mercari US Listings Scraper do?

The Actor turns public Mercari US searches and item pages into structured listing records.

It can:

- 🔎 search one or many product keywords;
- 🔗 accept Mercari search and item URLs;
- 💵 normalize Mercari prices from cents to USD;
- 🏷️ collect brand, category, size, and condition metadata;
- 📦 distinguish active and sold listings;
- 🖼️ return listing images and thumbnails;
- 👤 add public seller context on detailed records;
- 🎯 filter results with minimum and maximum prices;
- 🧹 deduplicate promoted or repeated listings by item ID;
- 📤 export results or connect them to another automation.

Search extraction uses Mercari's structured application data rather than fragile visual selectors.
This keeps fields consistent even when the page layout changes.

### Who is this Mercari scraper for?

#### Resellers and flippers

Compare active asks and recently sold listings before buying inventory.
Track specific models, collectibles, fashion labels, or product bundles.

#### Pricing analysts

Build repeatable samples for price distributions, condition adjustments, and listing velocity studies.
Use canonical item IDs to join snapshots over time.

#### Brands and marketplace teams

Monitor how branded products appear on a major peer-to-peer marketplace.
Review titles, categories, conditions, prices, and listing availability.

#### Researchers

Collect public marketplace observations with source URLs and extraction timestamps.
Keep the original search phrase on every search result.

#### Developers and automation builders

Feed Mercari listing data into databases, dashboards, alerts, spreadsheets, or AI workflows through the Apify API and integrations.

### Why use this Actor?

Mercari protects normal page delivery with Cloudflare and session checks.
A basic HTTP request often receives `403 Forbidden` instead of useful HTML.

This Actor handles the anonymous guest session and supported proxy path for you.
It also provides:

- predictable typed output;
- global result caps;
- cursor pagination;
- item deduplication;
- clear input validation;
- non-zero failure on total extraction failure;
- pay-per-result charging;
- scheduled runs and integrations on Apify.

You can focus on the resale or research workflow rather than maintaining Mercari request details.

### What Mercari listing data can I extract?

| Field | Description |
|---|---|
| `itemId` | Stable Mercari item identifier |
| `itemUrl` | Canonical public Mercari US item URL |
| `sourceUrl` | Search or item URL that produced the record |
| `searchKeyword` | Keyword used for a search result |
| `title` | Public listing title |
| `description` | Public description when detail enrichment is used |
| `price` | Current price normalized to USD |
| `priceCents` | Original integer price in cents |
| `originalPrice` | Original USD price when available |
| `condition` | New, like new, good, fair, or poor |
| `brand` | Public brand name |
| `category` | Mercari category name |
| `size` | Item size when applicable |
| `status` | Mercari listing status |
| `isSold` | Normalized sold-state flag |
| `likes` | Public like count when available |
| `imageUrl` | Primary image URL |
| `imageUrls` | All returned image URLs |
| `sellerId` | Public Mercari seller ID |
| `sellerName` | Public seller display name on detailed records |
| `sellerSalesCount` | Public sales count when exposed |
| `sellerListingsCount` | Public listed-item count when exposed |
| `sellerVerified` | Public verification signal when exposed |
| `scrapedAt` | UTC extraction timestamp |

Optional fields are omitted when Mercari does not return them for that mode or category.
The Actor never invents missing seller or listing values.

### How to scrape Mercari US listings

1. Open the Actor input page.
2. Add one or more phrases to **Search keywords**.
3. Optionally paste Mercari search or item URLs.
4. Choose active, sold, or all listing status.
5. Set a small **Maximum listings** value for the first run.
6. Leave the US residential proxy enabled.
7. Click **Start**.
8. Open the dataset to inspect or export the records.

A first run with 20 listings is enough to confirm the schema for most workflows.
Increase the cap only after checking the data.

### Input options

#### Search keywords

Add phrases such as:

```json
{
  "keywords": ["nintendo switch", "pokemon booster box"],
  "maxItems": 40
}
````

#### Mercari search URLs

Paste the exact public search URL when another system already creates Mercari searches:

```json
{
  "startUrls": [
    { "url": "https://www.mercari.com/search/?keyword=vintage%20levis" }
  ],
  "maxItems": 25
}
```

#### Mercari item URLs

Use explicit items to collect a detailed public record:

```json
{
  "startUrls": [
    { "url": "https://www.mercari.com/us/item/m36640238524/" }
  ],
  "maxItems": 1
}
```

Only `mercari.com` US search and item URLs are accepted.
Unsupported hosts and paths fail closed.

### Filters and sorting

Choose one listing status:

- `active` for items currently offered;
- `sold` for sold and completed results;
- `all` for both states.

Available sort values are:

- `best_match`;
- `newest`;
- `price_low`;
- `price_high`;
- `most_liked`.

`minPrice` and `maxPrice` are USD amounts.
Listings without a parseable price are excluded when a price boundary is active.
The Actor rejects a minimum greater than the maximum.

### Detailed item enrichment

Set `includeDetails` to `true` when search results need descriptions, multiple images, likes, and richer seller fields.

```json
{
  "keywords": ["sony walkman"],
  "maxItems": 10,
  "includeDetails": true
}
```

Enrichment makes one additional structured item request per search record.
It therefore takes longer and transfers more proxy data than basic search mode.
If one detail request fails, the Actor keeps the valid search record and logs a warning.
Explicit item URLs always use the detail workflow.

### Output example

```json
{
  "itemId": "m36640238524",
  "itemUrl": "https://www.mercari.com/us/item/m36640238524/",
  "sourceUrl": "https://www.mercari.com/search/?keyword=nintendo%20switch",
  "searchKeyword": "nintendo switch",
  "title": "Nintendo Switch V2",
  "price": 250,
  "priceCents": 25000,
  "currency": "USD",
  "condition": "Like new",
  "brand": "Nintendo",
  "category": "Consoles",
  "status": "on_sale",
  "isSold": false,
  "imageUrl": "https://u-mercari-images.mercdn.net/photos/example.jpg",
  "sellerId": "275643313",
  "scrapedAt": "2026-07-24T03:03:25.311Z"
}
```

Actual records vary by listing category and extraction mode.

### How much does it cost to scrape Mercari listings?

The Actor uses pay-per-event pricing:

- one small start charge covers session initialization;
- one result event is charged for each unique listing saved.

Your final cost is visible before and after each run in Apify Console.
Tier discounts reduce the per-listing rate on larger Apify plans.
Detail enrichment does not create a second output charge, although it may use more compute and proxy bandwidth.

Keep first runs small, review the dataset, and then scale the result cap.

### Price-monitoring workflow

A practical monitoring setup is:

1. save a narrow keyword and price range;
2. schedule the Actor every few hours or daily;
3. write output to Google Sheets, a database, or a webhook;
4. deduplicate snapshots by `itemId`;
5. compare `price`, `status`, and `updatedAt` across snapshots;
6. alert when a new listing meets your buying rule.

The Actor does not maintain history inside one run.
Downstream storage should preserve snapshots when change tracking is required.

### Sold-comps workflow

Set `status` to `sold` and use a specific product phrase.
Collect condition and price fields for comparable items.

Good search phrases include model numbers, edition names, storage capacity, size, or release year.
Avoid mixing unrelated product variants in one keyword when calculating medians.

Mercari search order and inventory change continuously.
Treat results as a timestamped public sample, not a permanent complete archive.

### Resale sourcing workflow

Use active listings with `sort: newest` to discover fresh inventory.
Apply `maxPrice` to keep only candidates below a sourcing threshold.

Combine the dataset with your own fee, shipping, tax, and resale assumptions.
The Actor provides public source data but does not promise profit or investment outcomes.

### Integrations

#### Google Sheets

Send each run's dataset to a worksheet for manual review, pivots, and pricing comparisons.

#### Webhooks

Trigger an endpoint after a run succeeds, then process only unseen `itemId` values.

#### Make and Zapier

Connect new listing records to notifications, CRM rows, or inventory pipelines.

#### Slack and email

Send alerts only after your automation applies a specific price, brand, and condition rule.

#### Cloud storage and databases

Export JSON or CSV to S3-compatible storage, BigQuery, PostgreSQL, Snowflake, or another analytics destination.

### Use the Mercari scraper with the Apify API

Replace `APIFY_TOKEN` with your token.

#### JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/mercari-us-listings-scraper').call({
  keywords: ['nintendo switch'],
  maxItems: 20,
  status: 'active'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('APIFY_TOKEN')
run = client.actor('automation-lab/mercari-us-listings-scraper').call(run_input={
    'keywords': ['nintendo switch'],
    'maxItems': 20,
    'status': 'active',
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

#### cURL

```bash
curl -X POST \
  'https://api.apify.com/v2/acts/automation-lab~mercari-us-listings-scraper/runs?token=APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"keywords":["nintendo switch"],"maxItems":20}'
```

### Use Mercari data through MCP

Apify MCP lets Claude and other compatible clients run the Actor as a tool.

#### Claude Code setup

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/mercari-us-listings-scraper"
```

#### Claude Desktop setup

Add the following server to Claude Desktop's MCP configuration.

#### Cursor setup

Add the same server object to Cursor's MCP settings.

#### VS Code setup

Add the same server object to your VS Code MCP configuration.

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=automation-lab/mercari-us-listings-scraper"
    }
  }
}
```

Example prompts:

- “Find 20 active Mercari US listings for Nintendo Switch OLED and summarize the price range.”
- “Collect recently sold Sony Walkman listings and group prices by condition.”
- “Extract this Mercari item URL and return the seller and listing metadata.”

Never paste an Apify token into an untrusted prompt or public document.

### Proxy and reliability

Mercari often blocks ordinary datacenter requests.
The default input uses an Apify US residential proxy session.

For best reliability:

- keep the residential group enabled;
- start with modest result caps;
- avoid many overlapping searches for the same phrase;
- use detail enrichment only when its extra fields are needed;
- schedule reasonable intervals instead of continuous polling;
- inspect logs after an upstream block.

A run fails rather than returning a misleading empty success when every requested source produces zero records.

### Data quality notes

Mercari may repeat promoted records between pages.
The Actor deduplicates by `itemId` across the full run.

Price values from Mercari's application response are integer cents.
The Actor returns both `priceCents` and normalized `price` in USD.

Seller names and richer metrics are usually available only from item detail data.
Search-only records may contain just a seller ID.

Category and condition availability depends on the listing.
Optional values are not converted into empty placeholder strings.

### Limits

- The Actor extracts public Mercari US data only.
- It does not log in, message sellers, buy items, or place offers.
- It does not bypass private account controls.
- It does not guarantee every Mercari result at every moment.
- Mercari can change its anonymous data interface or anti-bot policy.
- Result availability varies by keyword, filters, geography, and time.
- One run can save at most 1,000 unique listings.
- Detailed enrichment is slower than search-only extraction.

### Legal and responsible use

This Actor collects public marketplace information.
Use it only when you have a lawful purpose and follow applicable contracts, privacy rules, intellectual-property law, and Mercari's terms.

Do not use marketplace data for unlawful discrimination, harassment, stalking, fraud, or identity profiling.
Do not treat seller metadata as a consumer report for credit, employment, insurance, tenancy, or another regulated eligibility decision.

Minimize retained personal data and secure exported datasets.
You are responsible for your input, run frequency, storage, and downstream use.

### Troubleshooting

#### Why did the run report a Mercari session block?

Confirm that the proxy input still uses the `RESIDENTIAL` group.
Retry with a fresh run after a short pause.
If the issue persists, inspect the run log for the HTTP status and contact support with the run URL.

#### Why are seller name and description missing?

Basic search responses contain fewer fields.
Enable `includeDetails`, or provide explicit item URLs.

#### Why are there fewer rows than `maxItems`?

The keyword may have fewer matching listings, price filters may exclude rows, or duplicate promoted records may have been removed.
`maxItems` is a cap, not a promised minimum.

#### Why was my URL rejected?

The Actor accepts only Mercari US `/search/?keyword=...` and `/us/item/{id}/` URLs.
Use `keywords` for plain text searches.

#### Why did a price filter remove a listing?

When a minimum or maximum is active, unparseable prices fail closed.
This prevents unknown-price records from silently crossing your boundary.

### FAQ

#### Does the Actor need a Mercari account?

No.
It uses Mercari's anonymous guest session for public listing data.

#### Can it collect sold listings?

Yes.
Set `status` to `sold`.

#### Can it scrape one listing?

Yes.
Paste the public Mercari US item URL in `startUrls`.

#### Does it download images?

It returns public image URLs.
It does not copy image binaries into the dataset.

#### Can I schedule recurring monitoring?

Yes.
Use an Apify schedule and store snapshots in your preferred destination.

#### Are results deduplicated?

Yes, within each run by Mercari item ID.

#### Is the Actor a Mercari API?

It is an independent Apify Actor that reads public Mercari application data.
It is not endorsed by Mercari.

### Related marketplace scrapers

- [Mercari Japan Listings Scraper](https://apify.com/automation-lab/mercari-japan-listings-scraper) for the Japanese marketplace and JPY listing data.
- [eBay Product Search Scraper](https://apify.com/automation-lab/ebay-product-search-scraper) for eBay product discovery and pricing research.
- [Facebook Marketplace Scraper](https://apify.com/automation-lab/facebook-marketplace-scraper) for public local marketplace listings where supported.

Choose the actor that matches the marketplace, geography, currency, and workflow you actually need.

### Support

If a valid public Mercari US input fails, open an Actor issue from Apify Console.
Include:

- the run URL;
- a redacted example input;
- the expected record or search behavior;
- whether basic or detailed mode was used;
- the approximate failure time.

Do not post private credentials or personal data in a public issue.

# Actor input Schema

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

Mercari US searches such as Nintendo Switch or vintage Levi's.

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

Mercari US /search/?keyword= URLs and /us/item/{id}/ URLs.

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

Global maximum number of unique listings saved across all inputs.

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

Collect active listings, sold listings, or both.

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

Choose how Mercari orders each keyword search before records are collected.

## `minPrice` (type: `number`):

Keep only listings at or above this price; items without a parseable price are excluded.

## `maxPrice` (type: `number`):

Keep only listings at or below this price; items without a parseable price are excluded.

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

Fetch each item detail to add description, likes, fees, shipping, images, and seller metrics. Slower and more proxy-intensive.

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

US residential proxy is recommended because Mercari blocks many datacenter requests.

## Actor input object example

```json
{
  "keywords": [
    "nintendo switch"
  ],
  "startUrls": [],
  "maxItems": 20,
  "status": "active",
  "sort": "best_match",
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Unique Mercari US listings with normalized prices, item metadata, availability, images, seller context, source URLs, and extraction timestamps.

# 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": [
        "nintendo switch"
    ],
    "startUrls": [],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/mercari-us-listings-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": ["nintendo switch"],
    "startUrls": [],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "nintendo switch"
  ],
  "startUrls": [],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call automation-lab/mercari-us-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/mercari-us-listings-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Mercari US Listings Scraper",
        "description": "Search Mercari US and extract public listings, prices, conditions, images, availability, shipping context, and seller details for resale research.",
        "version": "0.1",
        "x-build-id": "6c6vtWbd0mq9GvBan"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~mercari-us-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-mercari-us-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/automation-lab~mercari-us-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-mercari-us-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/automation-lab~mercari-us-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-mercari-us-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keywords": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "Mercari US searches such as Nintendo Switch or vintage Levi's.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Mercari search or item URLs",
                        "type": "array",
                        "description": "Mercari US /search/?keyword= URLs and /us/item/{id}/ URLs.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Maximum listings",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Global maximum number of unique listings saved across all inputs.",
                        "default": 20
                    },
                    "status": {
                        "title": "Listing status",
                        "enum": [
                            "active",
                            "sold",
                            "all"
                        ],
                        "type": "string",
                        "description": "Collect active listings, sold listings, or both.",
                        "default": "active"
                    },
                    "sort": {
                        "title": "Sort order",
                        "enum": [
                            "best_match",
                            "newest",
                            "price_low",
                            "price_high",
                            "most_liked"
                        ],
                        "type": "string",
                        "description": "Choose how Mercari orders each keyword search before records are collected.",
                        "default": "best_match"
                    },
                    "minPrice": {
                        "title": "Minimum price (USD)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Keep only listings at or above this price; items without a parseable price are excluded."
                    },
                    "maxPrice": {
                        "title": "Maximum price (USD)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Keep only listings at or below this price; items without a parseable price are excluded."
                    },
                    "includeDetails": {
                        "title": "Enrich search results with item details",
                        "type": "boolean",
                        "description": "Fetch each item detail to add description, likes, fees, shipping, images, and seller metrics. Slower and more proxy-intensive.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "US residential proxy is recommended because Mercari blocks many datacenter requests.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
