# Amazon EU · Impressum Seller Emails (`corent1robert/amazon-fr-impressum-sellers`) Actor

Unique Amazon Europe sellers (.fr .de .it .es .nl .uk…). Impressum email, phone, VAT — SIREN when FR VAT is published. Paste any EU storefront URL — country auto-detected. Mix countries in one run. One seller per row. No login.

- **URL**: https://apify.com/corent1robert/amazon-fr-impressum-sellers.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Categories:** Lead generation, E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.45 / 1,000 unique amazon.fr sellers

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?

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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Amazon EU · Seller Impressum Contacts

Export **unique third-party sellers** from Amazon Europe — Impressum email, phone, VAT, and French SIREN when a FR VAT is published. Paste any supported storefront URL; **country is detected automatically**. Mix `.de` + `.fr` + `.it` in one run.

**No Amazon login. No API key. No Seller Central.**

### Supported marketplaces

| Host | Code | Typical Impressum language |
|------|------|----------------------------|
| [amazon.de](https://www.amazon.de) | `DE` | German (Firmenname, USt-IdNr.) |
| [amazon.fr](https://www.amazon.fr) | `FR` | French (+ SIREN from FR VAT) |
| [amazon.it](https://www.amazon.it) | `IT` | Italian (Partita IVA) |
| [amazon.es](https://www.amazon.es) | `ES` | Spanish |
| [amazon.nl](https://www.amazon.nl) | `NL` | Dutch (BTW) |
| [amazon.pl](https://www.amazon.pl) | `PL` | Polish |
| [amazon.se](https://www.amazon.se) | `SE` | Swedish |
| [amazon.com.be](https://www.amazon.com.be) | `BE` | FR / NL |
| [amazon.at](https://www.amazon.at) | `AT` | German |
| [amazon.co.uk](https://www.amazon.co.uk) | `UK` | English |
| [amazon.ie](https://www.amazon.ie) | `IE` | English |

**Not covered:** amazon.com (US) and other non-listed hosts.

### Who is this for?

| You are… | Typical goal | Suggested setup |
|---|---|---|
| Compliance / GPSR ops | Contact + VAT across EU storefronts | Search URL · **Require VAT** · **Compliance** view |
| Brand protection (DACH / EU) | Who sells your ASINs on .de / .fr / … | Product `/dp/` · **Other offers = Yes** |
| Wholesale / BD | Outreach list in a niche | Keyword search · **Outreach** view |
| Agency / research | Multi-country seller table | Mix `.de` + `.fr` URLs · Max products 20–50 |
| Data / ops | Refresh known merchants | Seller `/sp?seller=` URLs |

**What you get by default:** `marketplace`, `sellerId`, store + legal name, email, phone, VAT, trade-register number when published, source ASINs. **`siren`** fills only when a **French** VAT is on the Impressum. Sellers with no usable public contact are skipped (no charge).

### How to use

1. Open this Actor in Apify Console.
2. Paste one or more **Amazon Europe** URLs (search, category, `/dp/…`, or `/sp?seller=…`). Keep the sample **.de + .fr** pair for a first try, or replace with your niche.
3. Leave **Max products = 10** and **Max unique sellers = 20**.
4. Keep **Other offers** on to collect every merchant on a product (not only the buy box).
5. Leave **Proxy** on Residential with **country empty** (auto-matched per URL).
6. Click **Start**. Export JSON / CSV / Excel — views: **Overview**, **Compliance / GPSR**, **Outreach**.

**Max products / Max sellers = 0** → no Actor-side ceiling (Free plan still stops at **20** sellers / run).

### Ready-made examples (published tasks)

Open any example on the Store — input is prefilled:

| Example | Best for |
|---------|----------|
| [Bluetooth headphone sellers (amazon.de)](https://apify.com/corent1robert/amazon-fr-impressum-sellers/examples/bluetooth-headphones-sellers-de) | Niche search on **amazon.de** |
| [Bluetooth headphone sellers (amazon.fr)](https://apify.com/corent1robert/amazon-fr-impressum-sellers/examples/bluetooth-headphones-sellers-fr) | Niche search on **amazon.fr** |
| [Who sells this ASIN](https://apify.com/corent1robert/amazon-fr-impressum-sellers/examples/product-asin-other-offers-fr) | One ASIN → every third-party offer |
| [VAT + SIREN compliance](https://apify.com/corent1robert/amazon-fr-impressum-sellers/examples/compliance-vat-siren-sellers-fr) | GPSR-style export (require VAT) |
| [Refresh known seller Impressum](https://apify.com/corent1robert/amazon-fr-impressum-sellers/examples/seller-impressum-refresh-fr) | Paste `/sp?seller=` URLs |

### What it extracts

| Category | Fields |
|----------|--------|
| Marketplace | `marketplace` (`DE`, `FR`, `IT`, …) |
| Identity | `sellerId`, `sellerUrl`, `sellerName`, `businessName`, `businessType` |
| Contacts | `email`, `phoneNumber` |
| Legal | `vatNumber`, `siren` (FR VAT only), `registrationNumber`, `businessAddress` |
| Provenance | `sourceAsins`, `sourceUrls`, `hasImpressum`, `isAmazonRetail` |

Not extracted: Seller Central private data, guessed emails, GPSR **manufacturer** blocks on product pages, LinkedIn.

### How much does it cost to scrape Amazon EU sellers?

**Two bills:**

1. **Pay-per-event** — per **unique seller** row (not per product / offer).
2. **Your Apify usage** — Residential proxy (~$13/GB, country auto per URL) + browser compute (default **4096 MB**).

| | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Per unique seller (PPE) | $0.0035 | $0.00315 | $0.0028 | $0.00245 | $0.0021 | $0.00175 |
| 25 sellers (PPE only) | **$0.09** | $0.08 | $0.07 | $0.06 | $0.05 | $0.04 |
| 1,000 sellers (PPE only) | **$3.50** | $3.15 | $2.80 | $2.45 | $2.10 | $1.75 |
| 5,000 sellers (PPE only) | **$17.50** | $15.75 | $14.00 | $12.25 | $10.50 | $8.75 |

Totals are **PPE only**. Add residential + compute on your invoice. Free plan: **20 sellers / run** to test.

**Store benchmark (FREE / 1k):** [memo23](https://apify.com/memo23/amazon-sellers-scraper) ~$4 · [junglee](https://apify.com/junglee/amazon-seller-scraper) $5 · powerai ~$5 (+ usage). We undercut on PPE with **EU multi-market + FR SIREN** when published; proxy stays on your account.

### Is it legal to scrape Amazon seller Impressum?

This Actor only accesses data Amazon makes **publicly available** on seller information / Impressum pages. Ensure your use complies with GDPR and relevant regulations.

### Is scraping Amazon EU sellers free?

Amazon does not charge for viewing public seller pages. You still pay Apify PPE **and** Residential + compute. There is no reliable free high-volume path around Amazon’s anti-bot.

### Input

| Field | Default | Notes |
|---|---|---|
| `startUrls` | sample **.de + .fr** searches | Any supported EU host; mix OK |
| `maxProducts` | 10 | All markets combined. **0** = no ceiling |
| `maxSellers` | 20 | Unique `marketplace` + id. Free: 15 / run |
| `openAod` | yes | Open “other sellers” |
| `skipAmazonRetail` | yes | Drop Amazon retail entities |
| `requireEmail` / `requireVat` | no | Optional filters |
| `proxyConfiguration` | Residential, **no fixed country** | Country follows each URL |
| `verboseLogs` | false | Debug |

API-only: `includeEmpty` (`yes` exports empty contacts — still charged).

```json
{
  "startUrls": [
    { "url": "https://www.amazon.de/s?k=bluetooth+kopfhörer" },
    { "url": "https://www.amazon.fr/s?k=casque+bluetooth" }
  ],
  "maxProducts": 10,
  "maxSellers": 20,
  "openAod": "yes"
}
```

### Output

```json
{
  "marketplace": "DE",
  "sellerId": "A1EXAMPLEDE01",
  "sellerUrl": "https://www.amazon.de/sp?seller=A1EXAMPLEDE01",
  "sellerName": "Beispiel Store",
  "businessName": "Beispiel GmbH",
  "vatNumber": "DE123456789",
  "siren": null,
  "email": "kontakt@beispiel.de",
  "phoneNumber": "+49 30 123456",
  "hasImpressum": true,
  "isAmazonRetail": false,
  "sourceAsins": ["B0EXAMPLE01"],
  "sourceUrls": ["https://www.amazon.de/dp/B0EXAMPLE01"]
}
```

French VAT example (same schema — `siren` filled):

```json
{
  "marketplace": "FR",
  "sellerId": "AQWXG1XFFSOF7",
  "sellerUrl": "https://www.amazon.fr/sp?seller=AQWXG1XFFSOF7",
  "businessName": "Bayersberg Ltd",
  "vatNumber": "FR67920158961",
  "siren": "920158961",
  "email": "bayersberg@web.de",
  "hasImpressum": true
}
```

### How it works

1. Detect marketplace from each URL host; warm with matching Residential country.
2. Collect ASINs from listings (Max products).
3. Open each product; optionally load **other offers**.
4. Deduplicate by `marketplace` + `sellerId`; open public Impressum pages.
5. Parse contacts in FR / DE / IT / ES / NL / … labels; write one row per unique seller.

### Tips

- **.de** Impressum fill is often strong for DACH outreach / compliance.
- Mix countries in one run — each host gets its own residential session.
- Prefer listing URLs for niche breadth; product URLs for ASIN coverage; seller URLs to refresh known IDs.
- Empty `email` + filled `vatNumber` is normal; use **Require email** for outreach-only.

### Limitations

- Browser + residential required (heavier than HTTP-only Actors).
- Not every seller publishes a full Impressum.
- Address snippets are often truncated on Amazon’s public block.
- GPSR **manufacturer** on product pages is out of scope.
- `siren` only from **French** VAT.
- Technical Actor name remains `amazon-fr-impressum-sellers` (URL slug) — product is **Amazon EU**.

### Also available

**[Apple App Store Developer Contacts](https://apify.com/corent1robert/apple-app-store-developer-contacts)** — unique iOS publishers with websites.

**[WordPress.org Plugin Author Contacts](https://apify.com/corent1robert/wordpress-plugin-author-contacts)** — unique plugin authors with public emails ($2 / 1k).

**[HubSpot Marketplace App Partners](https://apify.com/corent1robert/hubspot-marketplace-app-partners)** — HubSpot app partners with named BD contacts ($2 / 1k).

### Local development

```bash
cd amazon-fr-impressum-sellers
npm install
npm test
apify run --input-file=./input.smoke.json
```

Prefer `apify run` over `npm start`. Spikes: `npm run spike` · `npm run spike:e2e`.

### Support

Contact <corentin@outreacher.fr> for a custom scraper or tailored automation.

# Actor input Schema

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

Search, bestsellers, category, product (`/dp/…`) or seller (`/sp?seller=…`) links. Supported hosts: amazon.fr · amazon.de · amazon.it · amazon.es · amazon.nl · amazon.pl · amazon.se · amazon.com.be · amazon.at · amazon.co.uk · amazon.ie. You can mix several countries in the same run.

## `maxProducts` (type: `integer`):

How many product pages to open from listings (all marketplaces combined). Default **10**. **0** = no product ceiling (still limited by Max sellers).

## `maxSellers` (type: `integer`):

Global cap of unique seller rows (`marketplace` + sellerId). Default **20**. **0** = no ceiling (usage limits still apply).

## `openAod` (type: `string`):

**Yes (default):** open “other sellers” on each product to find more merchant IDs. **No:** buy-box / on-page sellers only (faster).

## `skipAmazonRetail` (type: `string`):

**Yes (default):** drop Amazon EU / retail entities. **No:** keep them if they appear.

## `requireEmail` (type: `string`):

**No (default):** keep sellers even without a public email. **Yes:** only rows with an Impressum email.

## `requireVat` (type: `string`):

**No (default):** keep sellers without VAT. **Yes:** only rows with a published VAT (any EU). French VAT also fills `siren` when the format matches.

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

Residential recommended. Leave **country empty** — the Actor picks FR / DE / IT / … from each URL. Override only if support asks you to.

## `verboseLogs` (type: `boolean`):

Extra debug lines in the run log (for support).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.amazon.de/s?k=bluetooth+kopfhörer"
    },
    {
      "url": "https://www.amazon.fr/s?k=casque+bluetooth"
    }
  ],
  "maxProducts": 10,
  "maxSellers": 20,
  "openAod": "yes",
  "skipAmazonRetail": "yes",
  "requireEmail": "no",
  "requireVat": "no",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "verboseLogs": false
}
```

# Actor output Schema

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

Marketplace, business name, email, VAT / SIREN and seller page

## `compliance` (type: `string`):

VAT, SIREN, trade register and address fields

## `outreach` (type: `string`):

Email-first CRM export with source ASINs

## `dataset` (type: `string`):

All seller rows

## `output` (type: `string`):

Sellers scraped, products scanned, filters

## `runLog` (type: `string`):

Live progress

# 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 = {
    "startUrls": [
        {
            "url": "https://www.amazon.de/s?k=bluetooth+kopfhörer"
        },
        {
            "url": "https://www.amazon.fr/s?k=casque+bluetooth"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/amazon-fr-impressum-sellers").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 = { "startUrls": [
        { "url": "https://www.amazon.de/s?k=bluetooth+kopfhörer" },
        { "url": "https://www.amazon.fr/s?k=casque+bluetooth" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/amazon-fr-impressum-sellers").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 '{
  "startUrls": [
    {
      "url": "https://www.amazon.de/s?k=bluetooth+kopfhörer"
    },
    {
      "url": "https://www.amazon.fr/s?k=casque+bluetooth"
    }
  ]
}' |
apify call corent1robert/amazon-fr-impressum-sellers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/amazon-fr-impressum-sellers"
        }
    }
}

```

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/iZwJpDOX8KaWRDo9L/builds/erXWHaYJQfAszjdcR/openapi.json
