# Mercari Email Scraper (`neuro-scraper/mercari-email-scraper`) Actor

Mercari Email Scraper SD - Mercari Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from Mercari results by keyword, location and email domain - Mercari email extractor.

- **URL**: https://apify.com/neuro-scraper/mercari-email-scraper.md
- **Developed by:** [Neuro Scraper](https://apify.com/neuro-scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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 Email Scraper

The **Mercari Email Scraper** collects publicly indexed contact emails from Mercari sellers using Google search results. It targets both `mercari.com` and `jp.mercari.com`, so US resale and Japanese secondhand listings are in scope.

It is a Google SERP scraping tool, not a marketplace crawler. The **Mercari Email Scraper** never logs in, never opens Mercari itself, and never touches the Mercari API.

Be honest about what you will get. In live testing the **Mercari Email Scraper** scored 4/10 on identity resolution, and only about 2 in 10 rows carried a usable profile URL.

That means moderate yield. Most rows hand you an email plus `accountName` and `title` context; a minority resolve all the way to a `https://www.mercari.com/u/{username}/` profile.

If you need a Mercari seller email list for cold outreach or ICP research, that trade-off is usually fine. If you need a clean handle on every row, read the Limitations section before you run.

#### What the Mercari Email Scraper actually does

The **Mercari Email Scraper** builds Google queries with the `site:` operator, fetches result pages through the Apify GOOGLE_SERP proxy, and pulls emails out of the returned snippets.

Every lead is deduplicated globally and pushed to the Apify dataset as it is found. Nothing is buffered until the end of the run.

Because it reads only public search results, the **Mercari Email Scraper** runs with no browser, no JavaScript rendering, no cookies and no authentication.

### Key features of the Mercari Email Scraper

Everything below is what the Mercari Email Scraper actually does, with no feature invented for the listing.

| Feature | What it means in practice |
|---|---|
| Google SERP scraping via `site:` operator | Queries are scoped to `mercari.com` and `jp.mercari.com` only |
| Query expansion | Base, quoted and `intitle:` variants plus one per query modifier; base queries run first |
| Domain-filtered regex | Only emails on your `customDomains` are kept |
| Global deduplication | One row per unique email across every query and page |
| Email normalisation | Handles `name [at] domain [dot] com`, `(at)`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Rejects `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` will not match inside `@gmail.company` or `@gmail.com.br` |
| Soft-wrap repair | Drops a hit that is only the tail of another email in the same block |
| Structural block parsing | Finds the `<h3>` title then the smallest surrounding block, instead of relying on Google CSS class names |
| Whole-page fallback parser | If Google's markup changes, the run degrades to "emails without account details", not "no emails" |
| Retries with exponential backoff | Up to 3 attempts per page, fresh proxy session per request |
| CAPTCHA and block detection | Consent pages and "unusual traffic" responses are retried, not counted as empty |
| Blocked-query requeue | Failed or blocked queries are retried once at the end of the run |
| Resumable state | Progress is stored in the key-value store, keyed by an input hash, and saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Concurrency control | An `asyncio` worker pool with a shared stop signal on `maxEmails` |
| Dataset export | CSV, JSON, Excel and XML output straight from the Apify dataset |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |

### How the Mercari Email Scraper works

Step one is query construction. The **Mercari Email Scraper** combines each keyword with each email domain and each query modifier, scoped to the two Mercari domains with `site:`.

A representative query looks like `site:mercari.com reseller "@gmail.com" "wholesale"`. With `expandQueries` on you get several phrasings per keyword-domain pair.

Step two is fetching. Pages go out concurrently through the Apify GOOGLE_SERP proxy, with proxy rotation and a fresh session on every request.

Step three is snippet parsing. Each result block is located structurally, then scanned with a domain-filtered regex for emails.

Step four is enrichment. Where Google exposes a Mercari handle, the **Mercari Email Scraper** fills `username` and builds the canonical `profileUrl`. Where it does not, those fields stay empty.

Step five is output. Deduplicated rows are pushed to the dataset immediately, so a long **Mercari Email Scraper** run produces usable Mercari reseller leads while it is still running.

### Input fields for the Mercari Email Scraper

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["seller", "reseller"]` | Search terms describing the Mercari accounts you want |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com","@yahoo.com"]` | Only emails on these domains are kept; the `@` is optional |
| `maxEmails` | integer 1-10000 | `20` | Stop after this many unique emails |
| `countryCode` | string | `""` | Two-letter country for the search proxy (US, GB, JP...) |
| `expandQueries` | boolean | `true` | Search each keyword x domain pair in several phrasings |
| `queryModifiers` | array | `["email","contact us","wholesale","customer service","stockist"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1-50 | `30` | Page cap per query |
| `maxConcurrency` | integer 1-20 | `5` | Parallel queries |

Only `keywords` is required. Every other Mercari Email Scraper field has a working default tuned for this marketplace.

#### Mercari Email Scraper input example

A standard US-facing run of the **Mercari Email Scraper** aimed at resale power sellers:

```json
{
  "keywords": ["reseller", "sneaker reseller", "vintage clothing seller"],
  "location": "Los Angeles",
  "customDomains": ["@gmail.com", "@yahoo.com"],
  "maxEmails": 200,
  "countryCode": "US",
  "expandQueries": true,
  "queryModifiers": ["email", "contact us", "wholesale", "customer service", "stockist"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

#### Targeting jp.mercari.com with the Mercari Email Scraper

Mercari is a Japanese company and `jp.mercari.com` is a first-class domain here, not an afterthought. The **Mercari Email Scraper** searches it in the same run as `mercari.com`.

For the Japanese secondhand market, set `countryCode` to `"JP"` and write your keywords in Japanese. Terms such as 出品者 (seller), 中古 (used/secondhand) and メルカリ (Mercari) work as ordinary search terms.

```json
{
  "keywords": ["出品者", "中古", "メルカリ せどり"],
  "location": "東京",
  "customDomains": ["@gmail.com", "@yahoo.com"],
  "maxEmails": 150,
  "countryCode": "JP",
  "expandQueries": true,
  "queryModifiers": ["email", "contact us", "wholesale", "customer service", "stockist"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Mixed-language runs are fine. Japanese keywords with English modifiers still surface `jp.mercari.com` sellers, because the modifier is only one term in a longer query.

Yield in Japanese depends on how those pages are indexed, exactly as it does in English. No volume is promised in either language.

### Output fields from the Mercari Email Scraper

Every dataset item from the **Mercari Email Scraper** has all fourteen fields below, even when a value is empty.

| Field | Meaning |
|---|---|
| `network` | Platform name |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used |
| `title` | Raw result title |
| `accountName` | Account label Google prints |
| `fullName` | Display name parsed from a profile-style title; empty for listing captions |
| `username` | URL-safe handle when Mercari exposes one; otherwise `null` |
| `profileUrl` | Canonical `https://www.mercari.com/u/{username}/` when a handle is known; otherwise empty |
| `url` | Direct Mercari link when exposed, else the profile URL |
| `description` | Bio or listing snippet, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain, e.g. `@gmail.com` |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email |
| `foundAt` | ISO 8601 UTC timestamp |

#### Mercari Email Scraper output example

This is what real Mercari Email Scraper output looks like, including the common case where no handle resolved:

```json
[
  {
    "network": "Mercari",
    "keyword": "reseller",
    "query": "site:mercari.com reseller \"@gmail.com\" \"wholesale\"",
    "title": "vintagevaultla on Mercari",
    "accountName": "vintagevaultla",
    "fullName": "Vintage Vault LA",
    "username": "vintagevaultla",
    "profileUrl": "https://www.mercari.com/u/vintagevaultla/",
    "url": "https://www.mercari.com/u/vintagevaultla/",
    "description": "Vintage denim and 90s streetwear. Bundles welcome. Wholesale inquiries vintagevaultla.shop@gmail.com",
    "email": "vintagevaultla.shop@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T09:14:22Z"
  },
  {
    "network": "Mercari",
    "keyword": "sneaker reseller",
    "query": "site:mercari.com intitle:\"sneaker reseller\" \"@yahoo.com\"",
    "title": "Sneaker reseller - contact us - Mercari",
    "accountName": "Sneaker reseller",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "",
    "description": "Deadstock pairs shipped same week. Bulk lots and trade offers to soleplug.bulk@yahoo.com",
    "email": "soleplug.bulk@yahoo.com",
    "emailDomain": "@yahoo.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T09:17:48Z"
  },
  {
    "network": "Mercari",
    "keyword": "出品者",
    "query": "site:jp.mercari.com 出品者 \"@gmail.com\" \"email\"",
    "title": "中古カメラ 出品者 - メルカリ",
    "accountName": "camerakobo",
    "fullName": "",
    "username": "camerakobo",
    "profileUrl": "https://www.mercari.com/u/camerakobo/",
    "url": "https://www.mercari.com/u/camerakobo/",
    "description": "中古カメラとレンズ。お問い合わせは camerakobo.jp@gmail...",
    "email": "camerakobo.jp@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-31T09:21:03Z"
  }
]
```

Note the second row. `username` is `null` and `profileUrl` is empty, which is the majority case on this platform.

Note also the third row's `possiblyTruncated: true`. The snippet ellipsis touched the address, so verify that one before you send anything.

### Use cases for the Mercari Email Scraper

| Who | How they use the Mercari Email Scraper |
|---|---|
| Reseller SaaS vendors | Build a resale seller list of power sellers to pitch inventory and pricing tools |
| Cross-listing app makers | Find sellers already listing across marketplaces and offer one-click cross-posting |
| Consignment and thrift sourcing teams | Source secondhand marketplace leads for buy-back and consignment partnerships |
| Wholesale and liquidation suppliers | Reach resellers who explicitly mention wholesale or stockist terms |
| Agencies serving the resale economy | Assemble Mercari seller contact lists for client campaigns |
| Shipping, packaging and photo-studio services | Prospect high-volume sellers with clear operational pain |
| Japanese market researchers | Study `jp.mercari.com` sellers and secondhand category structure |
| Marketplace analysts | Sample public seller descriptions for ICP research and category sizing |

Every one of these is B2B prospecting against publicly published business contact details, which is the only job the Mercari Email Scraper is built for.

### Tips to get more from the Mercari Email Scraper

Keep keywords specific. `vintage denim seller` will outperform `seller` because it survives Google's roughly 300-result cap per query.

Widen `customDomains` when volume is low. Adding `@hotmail.com` or `@outlook.com` to the **Mercari Email Scraper** input usually lifts the count.

Leave `expandQueries` on. It is the main defence against that per-query result ceiling, and base queries still run first.

Raise `maxConcurrency` carefully. Higher parallelism means more pages per minute but also more CAPTCHA detection and retries.

Run the **Mercari Email Scraper** twice with different `countryCode` values, once for `US` and once for `JP`. Global deduplication means the two runs will not fight each other inside one dataset.

Sort your export by `possiblyTruncated` before importing to a CRM. Clean rows first, flagged rows second.

For neighbouring resale platforms, run the same input shape through the [Poshmark Email Scraper](https://apify.com/leads-scraper/poshmark-email-scraper), the [Depop Email Scraper](https://apify.com/leads-scraper/depop-email-scraper) or the [Vinted Email Scraper](https://apify.com/leads-scraper/vinted-email-scraper).

Broader marketplace coverage comes from the [eBay Email Scraper](https://apify.com/leads-scraper/ebay-email-scraper) and the [Etsy Email Scraper](https://apify.com/leads-scraper/etsy-email-scraper). For Japan specifically, pair this Actor with the [Rakuten Email Scraper](https://apify.com/neuro-scraper/rakuten-email-scraper).

### Related Actors

| Actor | What it collects |
|---|---|
| [Mercari Email and Phone Number Scraper](https://apify.com/neuro-scraper/mercari-email-and-phone-number-scraper) | Emails and phone numbers from Mercari |
| [Mercari Phone Number Scraper](https://apify.com/neuro-scraper/mercari-phone-number-scraper) | Public phone numbers from Mercari |
| [AliExpress Email Scraper](https://apify.com/neuro-scraper/aliexpress-email-scraper) | Public contact emails from AliExpress |
| [Allegro Email Scraper](https://apify.com/neuro-scraper/allegro-email-scraper) | Public contact emails from Allegro |
| [Amazon Email Scraper](https://apify.com/leads-scraper/amazon-email-scraper) | Public contact emails from Amazon |
| [Best Buy Seller Email Scraper](https://apify.com/leads-scraper/best-buy-seller-email-scraper) | Public contact emails from Best Buy |
| [BigCommerce Store Email Scraper](https://apify.com/neuro-scraper/bigcommerce-store-email-scraper) | Public contact emails from BigCommerce Store |
| [Cdiscount Email Scraper](https://apify.com/neuro-scraper/cdiscount-email-scraper) | Public contact emails from Cdiscount |
| [Coupang Email Scraper](https://apify.com/neuro-scraper/coupang-email-scraper) | Public contact emails from Coupang |
| [Depop Email Scraper](https://apify.com/leads-scraper/depop-email-scraper) | Public contact emails from Depop |
| [DHgate Email Scraper](https://apify.com/neuro-scraper/dhgate-email-scraper) | Public contact emails from DHgate |
| [eBay Email Scraper](https://apify.com/leads-scraper/ebay-email-scraper) | Public contact emails from eBay |
| [Ecwid Store Email Scraper](https://apify.com/neuro-scraper/ecwid-store-email-scraper) | Public contact emails from Ecwid Store |
| [Etsy Email Scraper](https://apify.com/leads-scraper/etsy-email-scraper) | Public contact emails from Etsy |
| [Faire Email Scraper](https://apify.com/leads-scraper/faire-email-scraper) | Public contact emails from Faire |
| [Flipkart Email Scraper](https://apify.com/leads-scraper/flipkart-email-scraper) | Public contact emails from Flipkart |
| [Home Depot Seller Email Scraper](https://apify.com/leads-scraper/home-depot-seller-email-scraper) | Public contact emails from Home Depot |
| [JD.com Email Scraper](https://apify.com/leads-scraper/jd-com-email-scraper) | Public contact emails from JD.com |
| [Lazada Email Scraper](https://apify.com/neuro-scraper/lazada-email-scraper) | Public contact emails from Lazada |
| [Lowe's Seller Email Scraper](https://apify.com/leads-scraper/lowes-seller-email-scraper) | Public contact emails from Lowe's |
| [MercadoLibre Email Scraper](https://apify.com/neuro-scraper/mercadolibre-email-scraper) | Public contact emails from MercadoLibre |
| [Newegg Email Scraper](https://apify.com/leads-scraper/newegg-email-scraper) | Public contact emails from Newegg |
| [Otto Email Scraper](https://apify.com/leads-scraper/otto-email-scraper) | Public contact emails from Otto |
| [Overstock Email Scraper](https://apify.com/leads-scraper/overstock-email-scraper) | Public contact emails from Overstock |
| [Poshmark Email Scraper](https://apify.com/leads-scraper/poshmark-email-scraper) | Public contact emails from Poshmark |
| [Rakuten Email Scraper](https://apify.com/neuro-scraper/rakuten-email-scraper) | Public contact emails from Rakuten |
| [Shopee Email Scraper](https://apify.com/leads-scraper/shopee-email-scraper) | Public contact emails from Shopee |
| [Shopify Store Email Scraper](https://apify.com/leads-scraper/shopify-store-email-scraper) | Public contact emails from Shopify Store |
| [Taobao Email Scraper](https://apify.com/leads-scraper/taobao-email-scraper) | Public contact emails from Taobao |
| [Target Seller Email Scraper](https://apify.com/neuro-scraper/target-seller-email-scraper) | Public contact emails from Target |
| [Temu Email Scraper](https://apify.com/leads-scraper/temu-email-scraper) | Public contact emails from Temu |
| [Tmall Email Scraper](https://apify.com/leads-scraper/tmall-email-scraper) | Public contact emails from Tmall |
| [Vinted Email Scraper](https://apify.com/leads-scraper/vinted-email-scraper) | Public contact emails from Vinted |
| [Walmart Email Scraper](https://apify.com/leads-scraper/walmart-email-scraper) | Public contact emails from Walmart |
| [Wayfair Email Scraper](https://apify.com/neuro-scraper/wayfair-email-scraper) | Public contact emails from Wayfair |
| [Wish Email Scraper](https://apify.com/leads-scraper/wish-email-scraper) | Public contact emails from Wish |
| [Wix Stores Email Scraper](https://apify.com/leads-scraper/wix-stores-email-scraper) | Public contact emails from Wix Stores |
| [WooCommerce Email Scraper](https://apify.com/neuro-scraper/woocommerce-email-scraper) | Public contact emails from WooCommerce |
| [Zalando Email Scraper](https://apify.com/leads-scraper/zalando-email-scraper) | Public contact emails from Zalando |
| [AliExpress Email and Phone Number Scraper](https://apify.com/neuro-scraper/aliexpress-email-and-phone-number-scraper) | Emails and phone numbers from AliExpress |
| [Allegro Email and Phone Number Scraper](https://apify.com/neuro-scraper/allegro-email-and-phone-number-scraper) | Emails and phone numbers from Allegro |
| [Amazon Email and Phone Number Scraper](https://apify.com/leads-scraper/amazon-email-and-phone-number-scraper) | Emails and phone numbers from Amazon |

### Mercari Email Scraper FAQ

#### Does the Mercari Email Scraper need a Mercari login?

No. It never authenticates, never stores cookies and never opens Mercari in a browser. Everything comes from public Google results.

#### Does it use Mercari's API?

No. The **Mercari Email Scraper** is a Google SERP scraping tool built on the `site:` operator. It is not affiliated with or endorsed by Mercari.

#### Why do so many rows have no profile URL?

Google frequently prints only a display name or a listing title for Mercari results. In testing roughly 2 in 10 rows resolved to a `/u/{username}/` profile, so plan around the email rather than the handle.

#### Does the Mercari Email Scraper cover jp.mercari.com?

Yes. Both `mercari.com` and `jp.mercari.com` are searched in every run, and `countryCode: "JP"` plus Japanese keywords targets the Japanese secondhand market directly.

#### Do I need Apify proxy credentials?

Yes. The **Mercari Email Scraper** requires the Apify GOOGLE_SERP proxy and cannot run without it.

#### How many Mercari seller emails will one run return?

It depends on your keywords, domains and location. Mercari is a moderate-yield platform for this method, so treat `maxEmails` as a ceiling rather than a forecast.

#### What does `possiblyTruncated` mean?

Google's snippet ellipsis touched the address, so a character may be missing. Verify those rows before adding them to a campaign.

#### Is this Mercari email extractor legal to use?

It reads publicly indexed pages only. You remain the data controller for anything you collect, so apply GDPR, CCPA and local marketing rules to your own outreach.

#### Can I use it as a Mercari email finder for one specific seller?

Not reliably. It is built for discovery across many queries, not for looking up a single named account.

#### What happens if the run is interrupted, and how do I export results?

Resumable state means a migrated run picks up where it stopped. Export is straight from the Apify dataset as CSV, JSON, Excel or XML, or through the Apify API into your CRM.

#### Can I run it for other marketplaces?

Yes, the same input shape the Mercari Email Scraper uses works across the whole family. See the Related Actors table above.

#### Does the Mercari Email Scraper handle obfuscated addresses?

It normalises common patterns such as `name [at] domain [dot] com`, `(at)`, spaced addresses and the full-width `＠`, and it filters out placeholders like `test@` and `yourname@`.

### Limitations

The **Mercari Email Scraper** only finds accounts whose email is publicly visible in Google's index. Emails hidden behind login, images or contact forms are out of reach.

Google caps a single query at roughly 300 results. Query expansion exists specifically to work around that ceiling by asking the same thing in several phrasings.

`possiblyTruncated: true` means Google's snippet ellipsis may have cut the address short. Verify those rows before sending.

The Actor requires the Apify GOOGLE_SERP proxy and cannot run without Apify proxy credentials.

Free Apify plans are capped at 100 emails per run. Paid plans are uncapped.

Finally, the `username` and `profileUrl` caveat. On Mercari only about 2 in 10 rows resolved to a profile URL in testing, which is a Google indexing limitation rather than a bug in the **Mercari Email Scraper**.

Results from the Mercari Email Scraper vary with keywords, domains and location, and no volume is promised.

### Responsible use

These are publicly indexed business contact details, and you are the data controller for whatever you collect. Handle it under GDPR, CCPA and any local equivalent.

Honour opt-outs immediately, include a clear identity and unsubscribe path in every message, and keep your outreach relevant to the recipient's business.

Respect Mercari's terms of service and do not spam. Use the **Mercari Email Scraper** for legitimate B2B prospecting, partnership outreach and market research only.

### Leave a review

If the Mercari Email Scraper saved you time, please leave a star rating and a short review on
the Actor page.

Reviews are how other buyers judge whether a tool works, and they tell us which features to
build next.

If something did not work, email <neurodata.apify@gmail.com>
instead - bugs get fixed faster than they get complained about.

### Support

Questions, bug reports or a custom build? Email **neurodata.apify@gmail.com** and include your run ID.

# Actor input Schema

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

Search terms describing the Mercari accounts you want (niche, job title, industry).

## `location` (type: `string`):

Optional location phrase added to every query (e.g. "New York").

## `customDomains` (type: `array`):

Only emails ending with one of these domains are collected. With or without the leading @. Each domain is searched separately, so more domains means more results but a longer run - remove some for a faster, narrower search, or add your own (e.g. @company.com).

## `maxEmails` (type: `integer`):

Stop once this many unique emails have been collected.

## `countryCode` (type: `string`):

Two-letter country code for the search proxy (e.g. US, GB, DE). Empty for any.

## `expandQueries` (type: `boolean`):

Search each keyword x domain pair with several phrasings. Recommended - Google caps a single query at ~300 results.

## `queryModifiers` (type: `array`):

Extra words combined with each keyword when Expand queries is on. Tuned for Mercari.

## `maxPagesPerQuery` (type: `integer`):

Google rarely returns more than ~30 pages for one query.

## `maxConcurrency` (type: `integer`):

How many queries run in parallel.

## Actor input object example

```json
{
  "keywords": [
    "seller",
    "reseller"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact us",
    "wholesale",
    "customer service",
    "stockist"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Mercari Email Scraper, stored in the run's default dataset.

# 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": [
        "seller",
        "reseller"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact us",
        "wholesale",
        "customer service",
        "stockist"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neuro-scraper/mercari-email-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": [
        "seller",
        "reseller",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact us",
        "wholesale",
        "customer service",
        "stockist",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("neuro-scraper/mercari-email-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 '{
  "keywords": [
    "seller",
    "reseller"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact us",
    "wholesale",
    "customer service",
    "stockist"
  ]
}' |
apify call neuro-scraper/mercari-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neuro-scraper/mercari-email-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/0jtzhELe2P4SObUx1/builds/q9mu2gh9rsRD9Vu6l/openapi.json
