# eBay Business Seller Leads — Emails, VAT & Company Numbers (`programmx/ebay-business-leads`) Actor

Verified business-seller contacts from eBay's EU/UK marketplaces — company name, email, phone, VAT number, company registration number and registered address. One row per seller, $0.02 each.

- **URL**: https://apify.com/programmx/ebay-business-leads.md
- **Developed by:** [Yasir Azeem](https://apify.com/programmx) (community)
- **Categories:** Lead generation, E-commerce
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 unique business seller with emails

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

- **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

## eBay Business Leads — Verified Seller Emails, VAT & Company Numbers

Build B2B lead lists from eBay's business sellers: **company name, email, phone, registered address, VAT number and company registration number**, deduplicated to **one row per seller**. Covers **eBay.co.uk, eBay.de, eBay.fr, eBay.it, eBay.es** and other EU/UK marketplaces. Use it for supplier sourcing, B2B outreach, or a weekly feed of new business sellers entering your niche. No login or eBay account needed.

**This is lead data, not scraped guesses.** Every record comes from the trader disclosure that professional sellers are *legally required* to publish under the EU Digital Services Act. The company number and VAT ID mean you can verify the business in a public register before you contact it — something no contact database can offer, because they infer their contacts rather than reading a legal filing.

### What this eBay seller scraper extracts

For every unique business seller it finds, you get one row with:

- **Business name** — the legal/registered company name
- **Email** and **phone** — the published business contact details
- **Registered address** — street, city, postcode, country
- **VAT ID** and **trade/company registration number** (e.g. German *Handelsregister* number) where shown
- **Store name** and **seller ID** (the eBay username)
- **Feedback score** and **feedback percentage**
- **Seller profile URL** and a **sample listing URL** the data was read from
- **Source domain**, **first-seen date**, and **scraped-at** timestamp

Fields that a seller has not published come back as `null` — never silently dropped — so you can filter on completeness yourself.

### eBay business seller data eBay must publish

Under the EU **Digital Services Act (DSA)** and the **General Product Safety Regulation (GPSR)**, marketplaces must display the trader/contact information of professional (business) sellers on their listings so buyers can see who they are transacting with. This scraper reads exactly that **publicly displayed, legally-mandated disclosure** — the seller's own business-contact block, shown on every listing. Private (non-business) sellers have no such block and are skipped.

This tool does not access any login-gated or account data, and it makes no claim about how you may use the results — that is yours to determine. It is not legal advice.

### One row per unique seller (deduplicated)

Existing eBay scrapers return a row per *listing* and, at most, a seller name and feedback score. This actor is different: it groups listings by seller and returns **one row per unique business seller**, so a store with 500 listings becomes a single lead — not 500 duplicates. You are billed per unique seller, never per listing.

### Filter to the sellers you actually want

Two filters decide what you receive and pay for:

- **Only sellers with an email** (on by default) — no email, no charge. You pay for leads you can contact.
- **Seller countries** — a marketplace is not a country. A typical eBay.co.uk search returns roughly **half overseas exporters**, because the trader disclosure is required regardless of where the trader is registered. Set `GB`, `DE`, `FR`… to keep only sellers registered where you want to do business. Anything filtered out is discarded and never billed.

### Supported eBay domains (Germany, UK, EU)

`ebay.co.uk` · `ebay.de` · `ebay.fr` · `ebay.it` · `ebay.es` · `ebay.ie` · `ebay.at` · `ebay.nl` · `ebay.pl`. The trader block is an EU/UK legal requirement, so those are the domains offered; `ebay.com` (US) carries no such disclosure and is deliberately not supported.

### Monitor mode: new eBay business sellers every week

Set **Run mode** to *Monitor*, save the configuration as a task, and schedule it (daily or weekly). Each run compares against everything seen before and returns **only business sellers that are new since the last run**, stamped with a `firstSeenAt` date. It bills only the new rows — cheap per run, and it turns a one-off scrape into a recurring lead feed.

> **Recipe:** *New business sellers in {your niche} on eBay.co.uk, every Monday* — enter your keywords, set Monitor mode, schedule weekly.

### eBay seller leads for lead generation

Common uses:

- **B2B outreach / lead generation** — build targeted lists of business sellers with real email and phone.
- **Supplier & wholesale sourcing** — find and contact trade sellers in a product category.
- **Market & competitor research** — map who is selling in a niche across EU/UK marketplaces.

### How to use

1. **Enter your keywords** — what the sellers you want are selling (`car parts`, `vintage watches`, `pet supplies`). One keyword per niche. This is the main input: you describe the market, and you get the business sellers in it.
2. **Pick a domain** — `ebay.co.uk` by default. Every keyword is searched on every domain you select, so start with one.
3. **Set your limits** — **Max unique sellers** caps both the results and the bill. Leave **Only return sellers with an email address** on so you pay only for contactable leads.
4. **Run** — the actor searches with eBay's business-seller filter applied, deduplicates to unique sellers, and reads the trader block for each. It starts on fast datacenter proxies and escalates to residential only for listings that hit eBay's bot protection.
5. **Output** — download the dataset as JSON, CSV, or Excel, or pull it via the API.
6. **Schedule (optional)** — save as a task with Monitor mode for a recurring feed of new sellers.

**Advanced targeting:** instead of keywords, apply any filters you like on eBay itself — category, condition, price range, item location — and paste the resulting search or category URL into **startUrls**. The actor inherits every filter in the URL, so you are never limited to what this input form exposes.

### Pricing: $0.02 per verified business lead

**$20 per 1,000 unique business sellers with a verified email** ($0.02 each), pay-per-event. You are charged once per unique seller — never per listing scraped, never per page, and never for private sellers, duplicates, or sellers filtered out by your settings. Free actor starts.

Sellers whose trader block publishes no email address are billed at the lower **$8 per 1,000** rate, and only if you switch off *Only return sellers with an email address* — by default they are discarded and cost you nothing.

#### What 2¢ a lead compares to

| Source | Cost per contact | Includes VAT + company number + registered address? |
|---|---|---|
| **This actor** | **$0.02** | **Yes** |
| Credit-based B2B databases (Apollo, Lusha) | $0.10 – $0.37 | No |
| Enterprise providers (ZoomInfo) | $1.50+ | No |
| Collecting it by hand | ~2 min per seller — **33 hours per 1,000** | Yes, eventually |

A 1,000-lead list costs $20 and takes minutes. The same list built by hand is roughly a working week. And unlike a contact database, every record here carries a registration number you can check against a public company register before you spend a call on it.

### Output example

```json
{
  "sellerId": "muster-handel-gmbh",
  "storeName": "Muster Handel",
  "businessName": "Muster Handel GmbH",
  "email": "kontakt@muster-handel.de",
  "phone": "+49 30 12345678",
  "addressLine": "Musterstraße 12",
  "city": "Berlin",
  "postcode": "10115",
  "country": "Deutschland",
  "vatId": "DE123456789",
  "tradeRegister": "HRB 123456 B",
  "isBusinessSeller": true,
  "feedbackScore": 5321,
  "feedbackPercent": 99.6,
  "itemsForSale": 412,
  "sellerProfileUrl": "https://www.ebay.de/usr/muster-handel-gmbh",
  "sampleListingUrl": "https://www.ebay.de/itm/267741044940",
  "sourceDomain": "ebay.de",
  "firstSeenAt": "2026-07-31T09:12:44.000Z",
  "scrapedAt": "2026-07-31T09:12:44.000Z"
}
```

### FAQ

#### How do I find eBay business sellers' contact details?

Run this actor on the eBay domains and categories you care about. It reads the trader/business-seller information block that professional sellers must publish under the DSA/GPSR, and returns it as structured rows — business name, email, phone, VAT and address — one per unique seller.

#### Does this get the seller's email and phone?

Yes, when the seller has published them in their business-seller information (which EU/UK business sellers are required to do). Missing fields are returned as `null`.

#### Can I export eBay sellers from Germany or the UK?

Yes. Select `ebay.co.uk`, `ebay.de`, or any supported EU domain, and give the keywords for your niche. Each keyword is searched on each domain you select.

#### What if a seller hasn't published an email?

By default those sellers are dropped and you are not billed for them — you only pay for leads you can actually contact. Turn off **Only return sellers with an email address** if you also want sellers who published only a phone number, VAT ID, or postal address.

#### Can I use eBay's own search filters?

Yes. Apply category, condition, price, or location filters on eBay, then paste the resulting search/category URL into **startUrls** — every filter in the URL is respected.

#### How is this different from an eBay product scraper?

Product scrapers return listings and a seller name. This actor returns the **business seller's contact record**, deduplicated to one row per seller — it is a lead-data tool, not a product-data tool.

#### Is the data legal to collect?

It reads only the seller's own, publicly displayed, legally-mandated business-contact disclosure — no login, no account data, no private-seller data. How you use the results is your responsibility; this is not legal advice.

#### How do I get only new sellers each week?

Use **Monitor mode**, save the configuration as a task, and schedule it. Each run returns only business sellers not seen in previous runs.

***

*ProgrammX · programmx.com · hello@programmx.com*

# Actor input Schema

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

What the sellers you want are selling — e.g. 'car parts', 'vintage watches', 'pet supplies'. Each keyword is searched on each selected domain with eBay's business-seller filter applied, then the legally-mandated trader block (name, email, phone, VAT, address) is pulled from each seller. One keyword per niche you want to prospect.

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

Optional alternative to keywords. Apply any filters you like on eBay itself (category, condition, price, item location), then paste the resulting URL here — the actor inherits every filter in the URL. Tip: add \&LH\_SellerType=2 to restrict the search to business sellers.

## `domains` (type: `array`):

Which marketplaces to search. Every keyword is searched on every domain you pick, so two domains cost roughly twice as much as one — start with one. Only EU/UK domains are offered: the trader block is an EU/UK legal requirement and ebay.com (US) does not carry it.

## `sellerCountries` (type: `array`):

ISO country codes, e.g. GB, DE, FR. Leave empty for sellers anywhere. Worth setting: a large share of business sellers on a European marketplace are registered overseas (a typical ebay.co.uk search returns roughly half Chinese exporters), so 'UK marketplace' does not mean 'UK company'. This filters on the seller's own registered country from their trader block. Sellers outside your list are discarded and never billed.

## `requireEmail` (type: `boolean`):

On (recommended): sellers whose trader block publishes no email address are discarded and never billed — you only pay for contactable leads. Turn off to also receive sellers where only a phone number, VAT ID or postal address was published.

## `mode` (type: `string`):

Monitor mode returns only business sellers this saved task has not seen before. Save the task and schedule it (daily/weekly) to get a recurring feed of newly-discovered sellers in your niche.

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

Hard cap on unique business sellers returned — and the only thing you are billed for. Billing is per unique seller, never per listing or per page. Start small to check the data quality for your niche, then raise it.

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

Apify Proxy is used by default and is required — eBay's bot protection blocks unproxied traffic. Leave this as-is unless you have a specific reason to change it.

## Actor input object example

```json
{
  "keywords": [
    "car parts"
  ],
  "startUrls": [],
  "domains": [
    "ebay.co.uk"
  ],
  "sellerCountries": [],
  "requireEmail": true,
  "mode": "full",
  "maxSellers": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `leads` (type: `string`):

One row per unique business seller: company name, email, phone, registered address, VAT number and company registration number. Deduplicated — a seller with 500 listings appears once. Fields the seller did not publish are null, never guessed.

## `leadsCsv` (type: `string`):

The same rows as CSV, ready to import into a CRM or outreach tool.

# 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": [
        "car parts"
    ],
    "startUrls": [],
    "domains": [
        "ebay.co.uk"
    ],
    "sellerCountries": [],
    "maxSellers": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("programmx/ebay-business-leads").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": ["car parts"],
    "startUrls": [],
    "domains": ["ebay.co.uk"],
    "sellerCountries": [],
    "maxSellers": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("programmx/ebay-business-leads").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "car parts"
  ],
  "startUrls": [],
  "domains": [
    "ebay.co.uk"
  ],
  "sellerCountries": [],
  "maxSellers": 20
}' |
apify call programmx/ebay-business-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=programmx/ebay-business-leads",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/kuGxUcpgmsU0AsxSM/builds/yvIWbwlzbhQPYTedJ/openapi.json
