# Rakuten Email Scraper (`neuro-scraper/rakuten-email-scraper`) Actor

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

- **URL**: https://apify.com/neuro-scraper/rakuten-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

### Rakuten Email Scraper — shop and seller contacts from Rakuten Ichiba and rakuten.com

The **Rakuten Email Scraper** builds a dataset of publicly indexed contact emails belonging to Rakuten shops and sellers on `rakuten.co.jp` and `rakuten.com`.
You give it keywords and email domains; it returns emails, shop names, handles, Rakuten shop URLs and the snippet each address came from.

Rakuten Ichiba is unusual among large marketplaces: every shop keeps a company-information page, and many publish a real inquiry address on it.
That habit is what makes this Rakuten seller contact tool work as well as it does.

Marketplace addresses of this kind are business mailboxes — 問い合わせ, customer service, wholesale enquiries — published so buyers and trade partners can write in.
Those are the contacts the Rakuten Email Scraper is built to surface, and the reason its default modifiers are commercial rather than social.

#### What the Rakuten Email Scraper does and does not do

The Rakuten Email Scraper composes Google queries with the `site:` operator against both Rakuten domains, fetches the result pages, and extracts emails from the titles and snippets.
Each unique address is deduplicated and pushed into an Apify dataset the moment it is found.

The Rakuten Email Scraper does **not** log into Rakuten, use the Rakuten RMS or Ichiba API, or open the marketplace in a browser.
No JavaScript rendering, no authentication, no cookies — only what Google has already indexed publicly.

It is an independent tool, not affiliated with, supported by or endorsed by Rakuten.

#### Who uses this Rakuten shop email extractor

Importers and wholesale buyers run the Rakuten Email Scraper to find Japanese shops already trading in a category they want to supply or source from.
Dropshippers and resellers use it to reach the merchants behind products they intend to list elsewhere.

Brand-protection and distribution teams collect Rakuten seller emails before an authorisation check or a grey-market enquiry.
Marketplace agencies and cross-border logistics vendors build prospect lists of Rakuten shops that may need help selling outside Japan.

Teams working the whole Japanese market often pair marketplaces: the [Mercari Email Scraper](https://apify.com/neuro-scraper/mercari-email-scraper) reaches a very different, peer-to-peer seller population in the same country.

### Key features of the Rakuten Email Scraper

Everything in this table is behaviour the Rakuten Email Scraper genuinely implements.

| Feature | What it means in practice |
|---|---|
| Dual-domain `site:` scoping | Queries are locked to `rakuten.com` and `rakuten.co.jp`, covering the US and Japanese properties |
| Query expansion | Each keyword × domain pair runs as a base query, a quoted query, an `intitle:` query, plus one variant per query modifier |
| Domain-filtered extraction | Only emails on the domains you list are kept, so you control the shape of the output |
| Global deduplication | An address appears once per run no matter how many queries or pages surfaced it |
| Obfuscation handling | Reads `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Discards placeholders such as `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` does 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 result block |
| Structural parsing | Locates the `<h3>` title and the smallest surrounding block instead of trusting Google's CSS class names |
| Whole-page fallback | A Google layout change degrades to "emails without account details", not "no emails" |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried rather than counted as empty |
| Retries with backoff | Up to 3 attempts per page, exponential backoff, a fresh proxy session per request |
| End-of-run requeue | Blocked or failed queries get one more pass before the run finishes |
| Resumable state | Progress lives in the key-value store keyed by an input hash, saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Async concurrency | An `asyncio` worker pool with a shared stop signal once `maxEmails` is reached |
| Run summary | Pages fetched, blocked pages, retries and emails per page are all logged |

### How the Rakuten Email Scraper works

Six steps, start to finish.

1. The Rakuten Email Scraper reads your input: keywords, location, email domains and limits.
2. It composes Google queries with the `site:` operator, for example `site:rakuten.co.jp shop wholesale "@gmail.com"`.
3. It fetches the result pages through the Apify **GOOGLE\_SERP** proxy using async `aiohttp`.
4. It parses each result block structurally, finding the `<h3>` title and the tightest block around it.
5. It extracts emails from that block text with a domain-filtered regex.
6. It deduplicates globally and pushes each lead into the dataset immediately.

#### Japanese keywords and `countryCode` are real levers here

The Rakuten Email Scraper searches an index that is overwhelmingly Japanese-language on the `rakuten.co.jp` side.
English keywords such as `shop` and `seller` do match, because shop pages are full of Latin-script handles and English labels, but they see only part of the picture.

Japanese terms open the rest. `ショップ`, `店舗`, `問い合わせ`, `卸売` and `販売店` reach company-information pages that English words never touch.
Add them to `keywords` or to `queryModifiers` and the same run covers far more of Rakuten Ichiba.

Set `countryCode` to `JP` when you want Google's Japanese index, or `US` when you are after `rakuten.com` merchants instead.
Pair it with a `location` phrase such as `Osaka` or `Fukuoka` for a regional slice of the Rakuten seller list.

#### Beating Google's per-query ceiling

Google returns roughly 300 results for any single query, however many Rakuten shops actually match.
Rakuten Ichiba hosts far more merchants than that, so one query can never see the whole marketplace.

Query expansion is the answer.
The Rakuten Email Scraper turns each keyword into several phrasings and pairs it with each modifier, so a swarm of narrow queries covers ground a single broad query cannot.

### Input settings for the Rakuten Email Scraper

Nine fields drive the Rakuten Email Scraper. Only `keywords` is required; every other field ships with a working default.

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["shop", "seller"]` | Search terms describing the Rakuten accounts you want (niche, job title, industry) |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com","@yahoo.com"]` | Only emails on these domains are collected; the leading `@` is optional |
| `maxEmails` | integer 1–10000 | `20` | Stop once this many unique emails have been collected |
| `countryCode` | string | `""` | Two-letter country code for the search proxy (US, GB, DE...) |
| `expandQueries` | boolean | `true` | Search each keyword × domain pair in several phrasings |
| `queryModifiers` | array | `["email","contact","wholesale","customer service","inquiries"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1–50 | `30` | Page cap per query |
| `maxConcurrency` | integer 1–20 | `5` | How many queries run in parallel |

#### Example input for a Rakuten shop email run

```json
{
  "keywords": ["shop", "seller", "ショップ", "販売店"],
  "location": "Osaka",
  "customDomains": ["@gmail.com", "@yahoo.co.jp"],
  "maxEmails": 300,
  "countryCode": "JP",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "wholesale", "customer service", "inquiries"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Note `@yahoo.co.jp` in `customDomains`.
It is one of the most common free-mail domains among Japanese small businesses, and leaving it out costs a Rakuten Email Scraper run a large share of its potential yield.

Start a new keyword set at `maxEmails` of 20–50.
A short probe tells you whether the niche is well indexed before you spend compute on a long run.

### Output fields from the Rakuten Email Scraper

Every dataset item the Rakuten Email Scraper writes carries all fourteen fields. The keys are always present; some values are conditional.

| 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 (shop handle or display name) |
| `fullName` | Display name parsed from a profile-style title; empty for listing-style results |
| `username` | URL-safe handle when the platform exposes one; otherwise `null` |
| `profileUrl` | Canonical shop URL when a handle is known; otherwise empty |
| `url` | Direct platform link when exposed, else the profile URL |
| `description` | Bio or snippet text, cleaned of labels and engagement counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain (e.g. `@gmail.com`) |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email — verify before sending |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example output rows

```json
[
  {
    "network": "Rakuten",
    "keyword": "shop",
    "query": "site:rakuten.co.jp shop contact \"@gmail.com\"",
    "title": "midori-kitchen | 楽天市場 | ショップ情報",
    "accountName": "midori-kitchen",
    "fullName": "みどりキッチン",
    "username": "midori-kitchen",
    "profileUrl": "https://www.rakuten.co.jp/midori-kitchen/",
    "url": "https://www.rakuten.co.jp/midori-kitchen/",
    "description": "キッチン用品・調理器具の専門店。お問い合わせ: midori.kitchen.shop@gmail.com",
    "email": "midori.kitchen.shop@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2025-06-14T02:18:36Z"
  },
  {
    "network": "Rakuten",
    "keyword": "seller",
    "query": "site:rakuten.com seller wholesale \"@gmail.com\"",
    "title": "Harborline Supply — Seller profile | Rakuten",
    "accountName": "harborline-supply",
    "fullName": "Harborline Supply",
    "username": "harborline-supply",
    "profileUrl": "https://www.rakuten.co.jp/harborline-supply/",
    "url": "https://www.rakuten.co.jp/harborline-supply/",
    "description": "Outdoor and camping gear. Wholesale and trade enquiries: harborline.trade@gmail.com",
    "email": "harborline.trade@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2025-06-14T02:25:11Z"
  }
]
```

Export what the Rakuten Email Scraper collects as CSV, JSON, Excel or XML, or read it through the Apify API straight into your CRM.

### Use cases for the Rakuten Email Scraper

Rakuten is a merchant marketplace, so these use cases sit in sourcing, trade and marketplace operations rather than consumer prospecting.

| Use case | How the Rakuten Email Scraper helps |
|---|---|
| Wholesale and import sourcing | Find Rakuten shops already trading in your category and reach their published enquiry address |
| Japan market entry | Build a Rakuten seller contact list before approaching distributors or partners |
| Dropshipping supplier outreach | Contact merchants behind products you plan to resell elsewhere |
| Brand protection | Collect Rakuten shop emails before an authorisation or grey-market enquiry |
| Marketplace agency prospecting | Prospect Rakuten merchants who may need ads, listing or cross-border help |
| Logistics and payments sales | Reach shops that ship internationally from Japan |
| Category and competitor research | Sample a Rakuten niche by keyword to see how crowded it is and who is in it |
| CRM enrichment | Match scraped Rakuten shop emails against merchants you already track |

#### Worked example: sourcing Japanese kitchenware suppliers

Set `keywords` to `["shop", "販売店", "卸売"]` and `countryCode` to `JP`.
Leave `expandQueries` on so each keyword also runs with `email`, `contact`, `wholesale`, `customer service` and `inquiries`.

Put `["@gmail.com", "@yahoo.co.jp"]` in `customDomains` to catch owner-run shops on both common free-mail providers.
Add a branded domain instead when you want larger, established merchants.

Probe at `maxEmails: 30`, review what the Rakuten Email Scraper returned, then rerun at your real target.
The second run reuses the same expansion plan, so the cost of the probe is small.

### Tips for getting more from the Rakuten Email Scraper

Category keywords beat generic ones.
"アウトドア" or "コーヒー豆" is worth far more to the Rakuten Email Scraper than "shop".

Mix scripts deliberately.
A keyword list that combines Latin-script handles with kanji and katakana terms gets noticeably wider coverage than either alone.

Treat `customDomains` as a segmentation lever.
Free-mail domains skew towards small and owner-run Rakuten shops; branded domains skew towards established merchants.

Do not raise `maxConcurrency` for its own sake.
More parallel queries will not make the Rakuten Email Scraper find emails that are absent from the index — it only spends proxy budget faster.

Schedule the Rakuten Email Scraper monthly on a stable input.
Shop pages get reindexed continuously, so repeat runs keep a Rakuten seller email list current.

If your sourcing covers more of Asia, run the [Coupang Email Scraper](https://apify.com/neuro-scraper/coupang-email-scraper) and the [Taobao Email Scraper](https://apify.com/leads-scraper/taobao-email-scraper) with equivalent keywords to extend the same motion into Korea and China.

#### Responsible use, GDPR and marketplace terms

The Rakuten Email Scraper only collects addresses that are already public in Google's index, and most of them are business or customer-service mailboxes published for trade enquiries.
That does not make every use lawful by default.

GDPR, Japan's APPI, CAN-SPAM and equivalent local rules still govern how you store, contact and profile the people behind those addresses.
Rakuten's own terms of service govern how you may interact with merchants on the platform.

Keep outreach relevant and commercial, honour opt-outs immediately, and do not use marketplace contact data for consumer spam.
Compliance is your responsibility, not the Actor's.

### Limitations of the Rakuten Email Scraper

Stated plainly, because they affect what you should expect.

- **Publicly indexed emails only.** If a shop's address is not in Google's index, the Rakuten Email Scraper cannot find it. Contact forms, in-platform messaging and images are invisible to it.
- **Google's ~300-result cap.** A single query tops out at roughly 300 results, which is exactly why query expansion exists.
- **`possiblyTruncated`.** When Google's snippet ellipsis touched the email, this flag is `true` and the address may be incomplete. Verify before sending.
- **`username` and `profileUrl` are conditional.** They are only populated when Google's result exposes a usable handle. Some rows will carry `accountName` and `fullName` with an empty `username` and `profileUrl`. That is a Google limitation, not a bug.
- **Apify GOOGLE\_SERP proxy required.** The Rakuten Email Scraper cannot run without Apify proxy credentials.
- **Free-plan cap.** Free Apify plans stop at 100 emails per run; paid plans are uncapped.
- **No guaranteed volume.** Results vary with keywords, domains, country and location, and no volume is guaranteed.

In our own measured testing, a Rakuten Email Scraper run resolved 8 of 9 targeted results into usable rows with shop identity attached.
That is a strong hit rate for a marketplace, but it describes that test, not your keywords.

### Related Actors

The Rakuten Email Scraper shares its engine with the rest of this E-commerce & Marketplaces family; only the platform configuration differs.

| Actor | What it collects |
|---|---|
| [Rakuten Email and Phone Number Scraper](https://apify.com/neuro-scraper/rakuten-email-and-phone-number-scraper) | Emails and phone numbers from Rakuten |
| [Rakuten Phone Number Scraper](https://apify.com/neuro-scraper/rakuten-phone-number-scraper) | Public phone numbers from Rakuten |
| [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 |
| [Mercari Email Scraper](https://apify.com/neuro-scraper/mercari-email-scraper) | Public contact emails from Mercari |
| [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 |
| [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 |

### FAQ about the Rakuten Email Scraper

#### Does the Rakuten Email Scraper use the Rakuten API?

No. It does not use any Rakuten API, does not log in, and does not open the Rakuten website. Every field comes from publicly indexed Google search results.

#### Is this Actor affiliated with or endorsed by Rakuten?

No. It is an independent tool built on public Google results, and it is not officially supported by, affiliated with or endorsed by Rakuten.

#### Which domains does the Rakuten Email Scraper search?

Two: `rakuten.com` and `rakuten.co.jp`. Every query is scoped with Google's `site:` operator.

#### Do I need Japanese keywords?

Not strictly, but they help a great deal. Terms like `ショップ`, `販売店`, `問い合わせ` and `卸売` reach company-information pages that English keywords never match.

#### Whose emails does the Rakuten Email Scraper actually find?

Mostly business mailboxes — shop inquiry addresses, customer service and wholesale contacts — that merchants publish so buyers and trade partners can reach them.

#### Why does the Rakuten Email Scraper leave `username` and `profileUrl` empty on some rows?

Those fields fill only when Google's result exposes a usable handle. When Google prints only a display name you still get `accountName` and `fullName`. This is a Google limitation, not a bug.

#### What does `possiblyTruncated: true` mean?

Google's snippet ellipsis touched the email, so the address may be cut off. Treat those rows as leads to verify rather than addresses to mail.

#### How many emails can one Rakuten Email Scraper run return?

Free Apify plans stop at 100 emails per run. Paid plans are uncapped and bounded by `maxEmails`, which accepts 1 to 10000.

#### Do I need a proxy?

Yes. The Rakuten Email Scraper requires the Apify GOOGLE\_SERP proxy and cannot run without Apify proxy credentials.

#### Should I add `@yahoo.co.jp` to `customDomains`?

Yes, if you are targeting Japan. It is one of the most common free-mail domains among Japanese small businesses and the defaults do not include it.

#### Why did I get fewer emails than `maxEmails`?

Google caps a single query at roughly 300 results, and only some shops publish an email that Google indexes. Widening `keywords` and `customDomains` usually helps more than raising `maxPagesPerQuery`.

#### Can a run be resumed after a migration?

Yes. Progress is stored in the key-value store keyed by a hash of your input, and saved on Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events.

#### Is this data compliant to use?

The Rakuten Email Scraper only collects addresses already public in Google's index. How you store and use them — GDPR, APPI, CAN-SPAM, local marketing rules and Rakuten's own terms — remains your responsibility.

### Leave a review

If the Rakuten 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, feature requests or a custom build? Email **neurodata.apify@gmail.com**.

# Actor input Schema

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

Search terms describing the Rakuten 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 Rakuten.

## `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": [
    "shop",
    "seller"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "wholesale",
    "customer service",
    "inquiries"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Rakuten 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": [
        "shop",
        "seller"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "wholesale",
        "customer service",
        "inquiries"
    ]
};

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

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

```

## MCP server setup

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