# Amazon Seller Discovery Scraper (`piotrv1001/amazon-seller-discovery-scraper`) Actor

The Amazon Seller Discovery Scraper finds German marketplace sellers from product, search and seller URLs, returning business names, addresses, VAT numbers and published contacts with source ASINs \u2014 for supplier research and merchant discovery.

- **URL**: https://apify.com/piotrv1001/amazon-seller-discovery-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 seller profiles

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Amazon Seller Discovery — German Business Profiles, VAT & Contacts

Find the businesses selling products on Amazon.de. Start with German product, search, category or seller URLs and export distinct seller profiles for supplier research, merchant discovery and marketplace analysis.

### Features

- Business names and addresses, VAT and registration numbers, and phone/email where published by the seller.
- Seller discovery from the main offer and competing offers, including more than one offer page.
- One row per seller, with source ASINs and discovery URLs.
- German delivery postcode selection: the sellers shown can depend on where an order would be delivered.
- Bounded scanning and a separate `SUMMARY` report describing failed pages and collection limits.

### How it works

1. Enter one or more Amazon.de URLs.
2. Set a seller limit and, optionally, a German delivery postcode.
3. Run the Actor and export the seller dataset as JSON, CSV or Excel.
4. Read `SUMMARY` alongside the dataset when evaluating coverage.

The default example discovers sellers offering a De'Longhi descaler. It requests up to 50 sellers and inspects up to three offer pages. It may return fewer sellers because of the page limit or unavailable profiles.

```json
{
  "startUrls": [{ "url": "https://www.amazon.de/dp/B008YETL18" }],
  "maxItems": 50,
  "postalCode": "10115",
  "maxProducts": 100,
  "maxOfferPages": 3
}
```

### Inputs

| Input           | Default               | Purpose                                                                    |
| --------------- | --------------------- | -------------------------------------------------------------------------- |
| `startUrls`     | Example product above | 1–20 Amazon.de search, category, product or seller URLs                    |
| `maxItems`      | 50                    | Maximum distinct sellers discovered; incomplete profiles can reduce output |
| `postalCode`    | `10115`               | Five-digit German delivery postcode                                        |
| `maxProducts`   | 100                   | Maximum products inspected across the run                                  |
| `maxOfferPages` | 3                     | Maximum competing-offer pages per product                                  |
| `useResidentialProxy` | `true` | Route requests through German residential addresses; paid Apify proxy traffic applies. |

German residential proxy routing is enabled by default because direct requests from Apify datacenters can return pages without the required seller-discovery controls. You need access to Apify residential proxies. Set `useResidentialProxy` to `false` only when using a working direct connection. Proxy traffic is additional platform usage; the event-spending cap alone does not cap it.

Supported examples:

- Product: `https://www.amazon.de/dp/B008YETL18`
- Search: `https://www.amazon.de/s?k=kaffeemaschine`
- Seller: `https://www.amazon.de/sp?seller=A18EE9GVRFMIY1`
- Ranked category: `https://www.amazon.de/gp/bestsellers/kitchen/`

For ranked categories, collection covers the products returned on the page. It does not promise every Top 100 ranking. Search pagination is followed within the product cap and an internal maximum of 20 listing pages.

### Sample output

Illustrative record; the contact values below are placeholders, not an actual merchant.

```json
{
  "sellerId": "EXAMPLESELLER",
  "marketplace": "amazon.de",
  "sellerName": "Example Shop",
  "businessName": "Example GmbH",
  "businessType": "Unternehmen in Privatbesitz",
  "businessAddress": "Example Street 1, Berlin, 10115, DE",
  "customerServiceAddress": null,
  "vatNumber": "EXAMPLE-VAT",
  "registrationNumber": "EXAMPLE-REGISTER",
  "email": "business@example.test",
  "phone": null,
  "sellerUrl": "https://www.amazon.de/sp?seller=EXAMPLESELLER",
  "storefrontUrl": "https://www.amazon.de/s?me=EXAMPLESELLER",
  "feedbackSummary": "Source feedback summary, when available",
  "sourceAsins": ["B008YETL18"],
  "discoveredFrom": ["https://www.amazon.de/dp/B008YETL18"],
  "fieldSources": {
    "businessName": {
      "section": "detailedSellerInformation",
      "label": "Geschäftsname"
    }
  },
  "collectedAt": "2026-09-19T12:00:00.000Z"
}
```

Business names and addresses normally come from Amazon’s labeled business-info section. A leading, emphasized identity and German postal address in the seller’s About section are also supported, with that source recorded in `fieldSources`. Return-policy addresses are not substituted for business addresses.

Missing optional fields are `null`. The business identity and address must be present for a profile to be returned. Contacts come from Amazon's seller information; this Actor does not search other websites for missing contacts. Seller businesses may be located outside Germany.

`sourceAsins` and `discoveredFrom` contain evidence observed within this run's limits, not an exhaustive catalog of everything a merchant sells. Direct seller inputs can have no source ASINs.

### Proposed pricing

This GitHub version prepares the following pay-per-event model. **Pricing is not configured on Apify yet.** Check the Store Pricing tab when the Actor is published.

| Event                   | Proposed price | Charged for                                                                                    |
| ----------------------- | -------------: | ---------------------------------------------------------------------------------------------- |
| Product inspected       |         $0.002 | A product whose offer page was successfully collected; includes the requested offer-page depth |
| Seller business profile |         $0.005 | One distinct, successfully returned business profile                                           |

A run inspecting 10 products and returning 50 sellers would have $0.27 in proposed event charges. Platform usage or other charges depend on the eventual Store configuration. Direct seller lookups do not incur product-inspection events. A successfully inspected product may produce no new seller, and its inspection event still applies. Failed offer retrievals and incomplete business profiles are not charged as successful events.

Use `maxProducts`, `maxOfferPages`, `maxItems` and Apify's run spending limit to bound the job. This is not an unlimited-search service.

### Coverage and limitations

- Germany / Amazon.de only. Other Amazon marketplaces are rejected.
- Offers depend on delivery location, availability and selected product variants.
- Only observed seller offers are collected. A limit, unavailable page or repeated offer page can leave additional sellers undiscovered.
- Amazon retail's known German seller identity is excluded. Marketplace seller identities are preserved independently of fulfillment provider.
- Reviews are not extracted. The feedback summary is source text rather than normalized review-period metrics.
- A partial result is possible. `SUMMARY` records the affected URLs and reason; a run with only failed discovery and no usable output fails clearly.
- Restart state prevents ordinary repeated work. As with separate storage and billing operations, a crash precisely between writing a row and persisting its checkpoint can require reconciliation; exactly-once billing across such crashes is not promised.

### Related Amazon scrapers

- [Amazon Storefront Scraper](https://apify.com/piotrv1001/amazon-storefront-scraper) — Collect the product listings in a seller's storefront, including ASINs, prices, and ratings.
- [Amazon Bestsellers Scraper](https://apify.com/piotrv1001/amazon-bestsellers-scraper) — Collect ranked products from Best Sellers, New Releases, Most Wished For, and Most Gifted charts.
- [Amazon Today's Deals Scraper](https://apify.com/piotrv1001/amazon-todays-deals-scraper) — Find discounted products and collect deal prices, savings, and optional changes between runs.

For a discovery workflow, collect Amazon.de product URLs with the Bestsellers or Today's Deals scraper, use them as inputs here, then pass the returned storefront URLs to the Storefront scraper.

### Support

For a bug report, include the input URLs, postcode and run ID, plus the expected missing field or coverage. Do not include account passwords or session credentials.

For local setup and release notes, see [Development](docs/DEVELOPMENT.md). This repository is prepared for a later Apify release; its creation does not publish the Actor.

# Actor input Schema

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

German product, seller, search or category URLs. Only amazon.de is supported.

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

Stop after discovering this many distinct sellers. Unavailable profiles can reduce the number returned.

## `postalCode` (type: `string`):

Offers depend on delivery location. Use a five-digit German postcode.

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

Caps discovery work across all inputs. Each successfully inspected product is a billable event.

## `maxOfferPages` (type: `integer`):

Limits seller discovery depth. SUMMARY reports when additional sellers may exist.

## `useResidentialProxy` (type: `boolean`):

Recommended for runs on Apify: direct datacenter requests can receive incomplete Amazon pages. Uses paid Apify residential proxy traffic routed through Germany. Disable only if your direct connection works.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.amazon.de/dp/B008YETL18"
    }
  ],
  "maxItems": 50,
  "postalCode": "10115",
  "maxProducts": 100,
  "maxOfferPages": 3,
  "useResidentialProxy": true
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.amazon.de/dp/B008YETL18"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/amazon-seller-discovery-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 = { "startUrls": [{ "url": "https://www.amazon.de/dp/B008YETL18" }] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/amazon-seller-discovery-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 '{
  "startUrls": [
    {
      "url": "https://www.amazon.de/dp/B008YETL18"
    }
  ]
}' |
apify call piotrv1001/amazon-seller-discovery-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/amazon-seller-discovery-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/Zj0B2d7M0smZN9cLJ/builds/FVIBSIaTEiHSq9CqO/openapi.json
