# eBay Business Leads Scraper (`epicscrapers/ebay-business-leads-scraper`) Actor

Find registered business sellers on eBay by keyword, category or seller and export the legal details eBay displays: company, address, email, phone, VAT ID and register number. 12 marketplaces, incl. ebay.com.

- **URL**: https://apify.com/epicscrapers/ebay-business-leads-scraper.md
- **Developed by:** [Epic Scrapers](https://apify.com/epicscrapers) (community)
- **Categories:** Lead generation, E-commerce, Automation
- **Stats:** 7 total users, 3 monthly users, 53.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 business seller saveds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

### eBay Business Leads Scraper: company, address, email, phone and VAT ID of eBay business sellers

eBay Business Leads Scraper finds registered business sellers on eBay and exports the legal seller information that eBay displays on their listings: company name, legal form, business address, email, phone, VAT ID and company register number. Search by keyword, category, eBay search URL or seller name on 12 eBay marketplaces. Use it for B2B lead generation, supplier and distributor research, competitor analysis, or brand and marketplace compliance checks.

- **Only business sellers.** Every seller is checked on an item page, and only sellers eBay shows as "Registered as a business seller" are saved. Private sellers are skipped and never charged.
- **The details eBay shows, structured.** The address is split into street, postal code, city, region and country code. VAT IDs are normalized (`DE 814035667` becomes `DE814035667`), and the legal form is read from the company name.
- **One row per seller.** A seller found in many listings or searches is saved once per marketplace.
- **12 eBay marketplaces, ebay.com included.** EU and UK law requires eBay to show business seller details. ebay.com, ebay.ca and ebay.com.au hide them, so the Actor reads each seller's details from eBay's German site, which shows them for every business seller, US companies included.
- **Filters that save money.** Keep only sellers with an email or a phone number, from certain countries, or above a feedback score. Filtered sellers aren't saved or charged.
- **A run summary you can check.** The `RUN_SUMMARY` record counts listings scanned, sellers checked, private sellers skipped, sellers filtered out and why, and missing fields.

### What can you do with eBay Business Leads Scraper?

| Goal                             | How                                                                                                         |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Build a B2B lead list in a niche | Search a product keyword or category, set **Only sellers with an email address**, export to CSV.            |
| Find distributors of a brand     | Search the brand name on several marketplaces and group the rows by `companyName` and `countryCode`.        |
| Check who is behind a seller     | Add usernames, profile URLs or store URLs to **Sellers** to get their company, address and register number. |
| Research competitors abroad      | Run one keyword on ebay.de, ebay.fr and ebay.it and compare companies, feedback and store categories.       |
| Check marketplace compliance     | Find business sellers in a category that publish no VAT ID or company register number.                      |

### Quick start

1. Click **Try for free** and sign in to Apify.
2. Pick one or more marketplaces and type a keyword into **Keywords**, such as `druckerpatronen` on ebay.de.
3. For a first run, set **Maximum business sellers** to `20`.
4. Click **Start**. When the run finishes, open the **Output** tab and export the data.

```json
{
    "marketplaces": ["ebay.de"],
    "queries": ["druckerpatronen"],
    "maxSellers": 20
}
```

### What data can you extract?

Every row is one registered business seller on one marketplace. A seller is saved once per run; across runs, deduplicate on `marketplace` + `username`.

| Group           | Fields                                                                                                                                                |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Company         | `companyName`, `legalForm`, `representatives`, `vatId`, `vatIds`, `tradeRegisterNumber`, `tradeRegisterLabel`, `registerCourt`, `additionalLegalInfo` |
| Address         | `street`, `postalCode`, `city`, `region`, `country`, `countryCode`, `addressFull`                                                                     |
| Contact         | `email`, `phone`, `fax`                                                                                                                               |
| eBay seller     | `username`, `profileUrl`, `storeName`, `storeUrl`, `businessSellerLabel`, `isBusinessSeller`, `marketplace`                                           |
| Seller activity | `feedbackScore`, `positiveFeedbackPercent`, `activeListings`, `memberSince`, `responseTime`, `topCategories`                                          |
| Store page      | `itemsSold`, `followers`, `sellerLocation` (only with **Add eBay Store page details**)                                                                |
| Source          | `foundBy`, `foundByValue`, `sampleListingId`, `sampleListingUrl`, `scrapedAt`                                                                         |

The run also saves a `RUN_SUMMARY` record to the key-value store: `listingsScanned`, `sellersFound`, `sellersChecked`, `businessSellers`, `privateSellersSkipped`, `businessSellersSaved`, `filteredOut` (`noBusinessInfo`, `country`, `minFeedbackScore`, `requireEmail`, `requirePhone`), `savedMissing` (how many saved rows have no company name, address, email, phone, VAT ID or register number), `errors`, one entry per search in `sources`, and `stopReason` (`maxSellersReached`, `allSourcesExhausted`, `tooFewMatches`, `finishedWithErrors`, `chargeLimitReached`, `blocked`, `aborted` or `invalidInput`, when the input leaves nothing to search; the log then says which value to fix). A search stops early when few of its sellers match your filters: after about 40 sellers without a match, or later when fewer than about 1 in 8 checked sellers match (`stoppedLowYield` in `sources`). The run stops on the same rule across all searches (`tooFewMatches`, after about 100 sellers without a match). The log then explains which filter dropped most sellers and what to change. Use broader keywords or looser filters to get more matches.

### What to expect

These numbers come from test runs in October 2026. Your results depend on the keyword and filters.

|                                      | EU and UK sites (ebay.de, ebay.co.uk, ...)                               | ebay.com, ebay.ca, ebay.com.au                                                                                                                     |
| ------------------------------------ | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Sellers checked per saved row        | About 1.1 (search cards already mark private sellers)                    | About 1.6 (about a third of the sellers checked are private)                                                                                       |
| Rows with company, address and phone | Nearly all                                                               | Nearly all                                                                                                                                         |
| Rows with an email                   | About 9 in 10                                                            | About 9 in 10                                                                                                                                      |
| Rows with a VAT ID                   | About 2 in 3                                                             | Rare: US sellers have no VAT ID, only UK/EU sellers show one                                                                                       |
| Rows with a register number          | UK: often (`CRN`). DE/EU: about 1 in 5                                   | Rare                                                                                                                                               |
| Where the sellers are based          | About half in the site's country, the rest mainly UK and Chinese sellers | ebay.com: about 6 in 10 in the US, the rest mainly CN, IL, JP, UK. ebay.com.au: mostly UK and Chinese sellers. Use `countries` to keep one country |
| Speed                                | 50 to 100 saved sellers in under a minute                                | 50 saved sellers in about 30 seconds                                                                                                               |

What limits a run:

- **Distinct sellers per search.** Big sellers fill many listings, so 1,000 listings (`maxListingsToScan`) usually hold 100 to 300 distinct sellers. For thousands of leads, run many keywords or categories in one run instead of raising `maxSellers` on one keyword.
- **Active listings.** eBay shows the legal block only on active listings, so sellers without one can't be looked up.
- **What sellers publish.** Values are what each seller entered. Some leave out the email or phone; `savedMissing` in `RUN_SUMMARY` counts the gaps, and `requireEmail` / `requirePhone` keep only complete rows.

### How it works

1. The Actor searches eBay with your keywords, categories or search URLs. On EU and UK sites it adds eBay's "business sellers" filter.
2. Every new seller in the results is checked once, on one of their active listings. The item page shows whether the seller is registered as a business, and for business sellers it shows their legal information. On ebay.com, ebay.ca and ebay.com.au the item page is opened on ebay.de (with English labels), because only there eBay shows the legal block.
3. Rows that pass your filters are saved until **Maximum business sellers** is reached.

eBay shows business details only on active listings, so a seller with no active listings can't be looked up.

### Input reference

| Field                            | Type             | Default        | Effect                                                                                                                                                                                                                   |
| -------------------------------- | ---------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `marketplaces`                   | Array            | `["ebay.com"]` | Marketplaces for keyword and category searches. Plain usernames in `sellers` use the first one.                                                                                                                          |
| `queries`                        | Array of strings | Empty          | Keywords. Each runs on every selected marketplace.                                                                                                                                                                       |
| `categoryIds`                    | Array of strings | Empty          | eBay category IDs (the number after `_sacat=`), searched without a keyword on every selected marketplace.                                                                                                                |
| `startUrls`                      | Array            | Empty          | eBay search URLs (`/sch/i.html?...`) or category pages (`/b/.../bn_...`). The URL's marketplace and filters are used.                                                                                                    |
| `sellers`                        | Array of strings | Empty          | Usernames, profile URLs (`/usr/name`), store URLs (`/str/name`) or search URLs with `_ssn=name`. Looked up before the searches.                                                                                          |
| `searchBusinessSellersOnly`      | Boolean          | `true`         | Adds eBay's business seller filter (`LH_SellerType=2`) to searches on EU and UK sites. Not added on ebay.com, ebay.ca and ebay.com.au, where it hides most US sellers.                                                   |
| `maxSellers`                     | Integer          | `100`          | Stop after saving this many business sellers in total.                                                                                                                                                                   |
| `maxListingsToScan`              | Integer          | `1000`         | Search results to read per keyword, category or URL.                                                                                                                                                                     |
| `countries`                      | Array of strings | Empty          | Keep only businesses whose address is in these countries (ISO codes such as `DE`, `GB`; English names such as `Germany` also work). The search then looks only at items located in each country, one search per country. |
| `minFeedbackScore`               | Integer          | `0`            | Skip sellers with a lower feedback score.                                                                                                                                                                                |
| `requireEmail`                   | Boolean          | `false`        | Save only sellers with an email address.                                                                                                                                                                                 |
| `requirePhone`                   | Boolean          | `false`        | Save only sellers with a phone number.                                                                                                                                                                                   |
| `skipSellersWithoutBusinessInfo` | Boolean          | `true`         | Skip business sellers that show no company name, address, email, phone, VAT ID or register number.                                                                                                                       |
| `includeStoreDetails`            | Boolean          | `false`        | Also open the seller's eBay Store page for `itemsSold`, `followers`, `sellerLocation` and business details printed only there. One extra request per store.                                                              |
| `includePrivateSellerCount`      | Boolean          | `true`         | Show the number of skipped private sellers in `RUN_SUMMARY` and the status message.                                                                                                                                      |

You need at least one keyword, category, URL or seller.

#### Supported marketplaces

`ebay.de`, `ebay.co.uk`, `ebay.fr`, `ebay.it`, `ebay.es`, `ebay.nl`, `ebay.at`, `ebay.ie` and `ebay.pl` show the full legal details. On `ebay.com`, `ebay.ca` and `ebay.com.au` eBay shows only the business seller flag and the VAT ID, so the Actor opens each seller's listing on ebay.de (with English labels), which shows the full legal details for every business seller. Rows still link to the marketplace you searched. URLs may start with `www.`, `m.` or the bare domain.

### Ready-to-run examples

#### US companies selling printer ink on ebay.com

```json
{
    "marketplaces": ["ebay.com"],
    "queries": ["printer ink", "toner cartridges"],
    "countries": ["US"],
    "requireEmail": true,
    "maxSellers": 200
}
```

#### German ink and toner sellers with an email address

```json
{
    "marketplaces": ["ebay.de"],
    "queries": ["druckerpatronen", "toner"],
    "requireEmail": true,
    "maxSellers": 200
}
```

#### UK companies in a category, UK addresses only

```json
{
    "marketplaces": ["ebay.co.uk"],
    "categoryIds": ["16191"],
    "countries": ["GB"],
    "minFeedbackScore": 100,
    "maxSellers": 100
}
```

#### Look up specific sellers

```json
{
    "sellers": [
        "https://www.ebay.de/str/druckertankstellezwickau",
        "https://www.ebay.co.uk/usr/inkraider",
        "cartridge-king"
    ],
    "marketplaces": ["ebay.co.uk"]
}
```

#### One niche across four EU markets

```json
{
    "marketplaces": ["ebay.de", "ebay.fr", "ebay.it", "ebay.es"],
    "queries": ["lego"],
    "maxListingsToScan": 300,
    "maxSellers": 300
}
```

### Output

Results go to the run's default dataset. Use the views **Leads**, **Legal details** or **Seller profile**, or export everything as JSON, CSV, Excel, XML or HTML.

This is a real row from an ebay.co.uk keyword search on October 3, 2026:

```json
{
    "marketplace": "ebay.co.uk",
    "username": "inkraider",
    "profileUrl": "https://www.ebay.co.uk/usr/inkraider",
    "storeName": "Inkraider Ink Cartridges",
    "storeUrl": "https://www.ebay.co.uk/str/inkraiderinkcartridges",
    "isBusinessSeller": true,
    "businessSellerLabel": "Registered as a business seller",
    "companyName": "Corporate Express (UK) Ltd",
    "legalForm": "Ltd",
    "representatives": [],
    "street": "1 Tableymere Gardens, Cheadle Hulme",
    "postalCode": "SK8 5JU",
    "city": "Cheadle",
    "region": "Greater Manchester",
    "country": "United Kingdom",
    "countryCode": "GB",
    "addressFull": "1 Tableymere Gardens, Cheadle Hulme, Cheadle, Greater Manchester, SK8 5JU, United Kingdom",
    "email": "helpdesk@inkraider.co.uk",
    "phone": null,
    "fax": null,
    "vatId": "GB217284020",
    "vatIds": ["GB217284020"],
    "tradeRegisterNumber": "08521870",
    "tradeRegisterLabel": "CRN",
    "registerCourt": null,
    "additionalLegalInfo": null,
    "feedbackScore": 30615,
    "positiveFeedbackPercent": 99.8,
    "itemsSold": null,
    "followers": null,
    "activeListings": 26000,
    "memberSince": "2021-09",
    "sellerLocation": null,
    "responseTime": "Usually responds within 24 hours",
    "topCategories": [
        "Computers/Tablets & Networking",
        "Business, Office & Industrial",
        "Cameras & Photography",
        "Home, Furniture & DIY"
    ],
    "foundBy": "query",
    "foundByValue": "printer ink",
    "sampleListingId": "226890852885",
    "sampleListingUrl": "https://www.ebay.co.uk/itm/226890852885",
    "scrapedAt": "2026-10-03T11:33:30.432Z"
}
```

#### Notes on fields

- Values are what the seller entered in eBay's legal information. The Actor doesn't add data from other sources, and missing values are `null`.
- `tradeRegisterNumber` is often `null`. UK sellers usually show a company number (`CRN`). Many German and other EU sellers don't fill the register field, and the Actor reads it from `additionalLegalInfo` only when it is printed there (for example `HRB 123456`). `registerCourt` is filled the same way.
- `legalForm` is read from the company name only (`... GmbH`, `... Ltd`). Sole traders usually have none.
- `representatives` holds the contact person eBay shows and names after labels such as "Geschäftsführer:" or "Managing Director:" in the seller's text.
- `vatId` is the first VAT ID; `vatIds` has all of them, without spaces.
- `activeListings` is rounded the way eBay shows it ("13K" becomes `13000`).
- `memberSince` is `YYYY-MM`. `responseTime` and `businessSellerLabel` are in the language of the marketplace you searched.
- `countryCode` is where the business is registered, not the marketplace. Filter with `countries`: the run then searches only items located in those countries and keeps sellers whose business address matches. A seller registered in one country who ships all items from another (for example from a Chinese warehouse) is not found by a country search.
- `topCategories` are the seller's eBay Store categories and are empty for sellers without a store.
- `sampleListingId` is the active listing whose item page provided the legal details.

### FAQ

#### Why are some sellers missing an email or phone number?

The seller decides which contact details to publish. Check `savedMissing` in `RUN_SUMMARY`, or turn on **Only sellers with an email address** or **Only sellers with a phone number** to save only complete leads.

#### Why did my run return few or no results?

Check `RUN_SUMMARY`. `privateSellersSkipped` and `filteredOut` show where sellers were dropped. Many listings come from the same seller, so 1,000 listings can mean only 100 or 200 distinct sellers; raise `maxListingsToScan` or add more keywords. Niche keywords on ebay.com often return mostly private sellers, and strict filters (`countries`, `requireEmail`, `minFeedbackScore`) drop the rest; `stopReason: "tooFewMatches"` means the run gave up on that.

#### Does ebay.com work as well as the EU sites?

Since October 2026, yes for the contact details: company, address, phone and usually email. Two differences: US sellers have no VAT ID or register number, and ebay.com results include many sellers from other countries, so add `"countries": ["US"]` for US-only leads.

#### Why did my run fail?

The run fails on purpose when eBay keeps refusing requests and nothing could be saved, so you aren't charged for an empty result. The status message and `RUN_SUMMARY` (`stopReason: "blocked"`) give the reason. Try again later.

#### Do I need proxies, an eBay account or an API key?

No. The Actor uses Apify Residential Proxy automatically and needs no eBay account. Proxy traffic and platform usage are included in the price per seller.

#### Is it legal to collect this data?

eBay publishes this information because consumer protection law requires business sellers to identify themselves. It can still contain personal data, such as a sole trader's name, address or phone number. You are responsible for having a lawful basis to process it (for example under GDPR), for respecting eBay's terms, and for following the rules on direct marketing in your country, such as consent requirements for marketing emails.

### Cost

This Actor uses pay-per-event pricing. You pay for each business seller saved to the dataset (`business-seller` event): $5 per 1,000 sellers on the free plan, down to $3.50 on Gold and above. Platform usage and proxy are included. Private sellers, filtered sellers, duplicates and the `RUN_SUMMARY` record aren't charged. Apify also charges its standard "Actor start" event (a fraction of a cent). Set a maximum cost per run in the run options; the Actor stops cleanly when it's reached. The **Pricing** tab always shows current prices.

Example: 2,000 leads cost $10 on the free plan and $7 on Gold, however many private or filtered sellers the run had to check to find them.

### Large runs and automation

- **One run, many searches.** Put all keywords, category IDs and marketplaces in one run. Sellers are deduplicated across them, and the start event is charged once.
- **Use asynchronous runs** for more than about 300 sellers. `run-sync-get-dataset-items` waits at most 5 minutes; start the run, then read the dataset when it finishes (webhook or polling).
- **Cap spending** with `maxSellers` and the run's maximum cost. The run stops cleanly at either limit and keeps what was saved.
- **Schedules and tasks.** Save an input as a task and schedule it weekly to pick up new sellers. Deduplicate on `marketplace` + `username` in your CRM, because each run starts fresh.
- **Integrations.** Send rows to Google Sheets, HubSpot, Make, Zapier or n8n with Apify integrations, or download CSV or Excel from the dataset.
- **Check runs automatically.** Read `RUN_SUMMARY.stopReason` and `savedMissing` instead of counting rows. `blocked` means eBay kept refusing requests: retry later.

### For AI agents and MCP

Minimal input (only one of `queries`, `categoryIds`, `startUrls` or `sellers` is required):

```json
{ "marketplaces": ["ebay.com"], "queries": ["printer ink"], "countries": ["US"], "maxSellers": 20 }
```

Key output fields: `companyName`, `email`, `phone`, `addressFull`, `countryCode`, `vatId`, `tradeRegisterNumber`, `username`, `storeUrl`, `feedbackScore`, `marketplace`. Missing values are `null`. The `RUN_SUMMARY` record in the default key-value store holds the counts and `stopReason`.

#### Connect through the Apify MCP server

AI assistants and agents (Claude, ChatGPT, Cursor, VS Code, n8n and other MCP clients) can call this Actor as a tool through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp). Hosted server (OAuth sign-in, or an `Authorization: Bearer YOUR_APIFY_TOKEN` header), with this Actor and the storage tools enabled:

```
https://mcp.apify.com?tools=epicscrapers/ebay-business-leads-scraper,storage
```

Claude Code:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=epicscrapers/ebay-business-leads-scraper,storage" \
  --header "Authorization: Bearer YOUR_APIFY_TOKEN"
```

Claude Desktop, Cursor and other clients with a JSON config (runs the server locally):

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": ["-y", "@apify/actors-mcp-server", "--tools", "epicscrapers/ebay-business-leads-scraper,storage"],
            "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
        }
    }
}
```

The Actor shows up as the tool `epicscrapers-slash-ebay-business-leads-scraper`, with this page's input schema as its parameters.

#### What to ask

- "Find 50 US companies selling printer ink on ebay.com with an email address. Give me company, email, phone and city."
- "Who is behind the eBay seller inkraider? Company, address and company number."
- "List German toner sellers on ebay.de that publish no VAT ID."

#### Notes for agent builders

- Keep `maxSellers` small (10 to 50) when answering a question; each saved row is charged.
- Pass `countries` when the user wants businesses from one country; marketplaces include foreign sellers.
- Use `sellers` (usernames or `/usr/` and `/str/` URLs) to look up known sellers instead of searching.
- An empty result with `stopReason: "tooFewMatches"` means the filters matched almost nothing: loosen them or change the keyword rather than retrying.

### Use through the Apify API

```bash
curl "https://api.apify.com/v2/acts/epicscrapers~ebay-business-leads-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"marketplaces": ["ebay.de"], "queries": ["toner"], "maxSellers": 50}'
```

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('epicscrapers/ebay-business-leads-scraper').call({
    marketplaces: ['ebay.de', 'ebay.at'],
    queries: ['druckerpatronen'],
    requireEmail: true,
    maxSellers: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

For a local run, save the input in `storage/key_value_stores/default/INPUT.json` and run `apify run`.

### Responsible use

Use this Actor only for lawful purposes. Follow eBay's terms, applicable laws and data protection rules. Don't send unsolicited marketing where the law requires consent, and don't use the data to harass sellers.

### Support

Report problems or request features in the **Issues** tab. Include the run ID, the input and what you expected. The `RUN_SUMMARY` record usually shows what happened. Don't include passwords or tokens.

This Actor is not affiliated with or endorsed by eBay Inc. "eBay" is a trademark of eBay Inc.

# Actor input Schema

## `marketplaces` (type: `array`):

Select the eBay sites for keyword and category searches. Seller usernames without a URL use the first selected site. Every site returns company names, addresses, email addresses, phone numbers, and VAT IDs when the seller provides them.

## `queries` (type: `array`):

Enter search terms. The Actor searches each selected site for each term. It checks sellers from the search results until a limit is reached.

## `categoryIds` (type: `array`):

Enter eBay category IDs to search without keywords. For example, use 16191 for ink cartridges on ebay.de. Find the ID after \_sacat= in an eBay search URL. The Actor searches each category on each selected site.

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

Enter eBay search URLs (/sch/i.html?*nkw=...) or category URLs (/b/.../bn*...) from a supported site. You can include filters in the URLs. Each URL sets the search site. The selected sites do not change it.

## `sellers` (type: `array`):

Enter seller usernames, profile URLs (/usr/name), store URLs (/str/name), or search URLs with \_ssn=name. Each URL sets the eBay site. Usernames without a URL use the first selected site. The Actor checks these sellers before it starts the other searches.

## `searchBusinessSellersOnly` (type: `boolean`):

Add the eBay business seller filter (LH_SellerType=2) to searches on EU and UK sites that do not already specify a seller type filter. This reduces private seller results. On ebay.com, ebay.ca, and ebay.com.au the filter is never added, because it hides most US sellers there. Private sellers are still skipped and never saved.

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

Set the maximum number of business seller results to save. The run stops when it reaches this limit. Each seller on each eBay site is a separate result.

## `maxListingsToScan` (type: `integer`):

Set the maximum number of listings to read for each search. This limit applies separately to each keyword, category, or URL search on each site. A seller can have more than one listing.

## `countries` (type: `array`):

Save only sellers with a business address in these countries. Enter two-letter ISO country codes, such as DE, AT, or GB (English names such as Germany also work). The Actor then searches only items located in each country, so most sellers it checks match. Leave this field empty to remove the country filter.

## `minFeedbackScore` (type: `integer`):

Set the minimum eBay feedback score. Do not save sellers with a lower score.

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

Save only business sellers with an email address shown by eBay.

## `requirePhone` (type: `boolean`):

Save only business sellers with a phone number shown by eBay.

## `skipSellersWithoutBusinessInfo` (type: `boolean`):

Do not save business sellers if eBay shows none of these details: company name, address, email address, phone number, VAT ID, or register number.

## `includeStoreDetails` (type: `boolean`):

Read the seller's eBay Store web page. Add the number of items sold, followers, seller location, and business details shown only on that page. This adds one request per store and increases run time. This option is off by default.

## `includePrivateSellerCount` (type: `boolean`):

Show the number of private sellers that the Actor did not process in the run summary and status message.

## Actor input object example

```json
{
  "marketplaces": [
    "ebay.com"
  ],
  "queries": [
    "office supplies"
  ],
  "searchBusinessSellersOnly": true,
  "maxSellers": 100,
  "maxListingsToScan": 1000,
  "minFeedbackScore": 0,
  "requireEmail": false,
  "requirePhone": false,
  "skipSellersWithoutBusinessInfo": true,
  "includeStoreDetails": false,
  "includePrivateSellerCount": true
}
```

# Actor output Schema

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

One row per registered business seller.

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

Listings scanned, sellers checked, private sellers skipped, rows filtered out and why, missing fields, errors and why the run stopped.

# 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 = {
    "queries": [
        "office supplies"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("epicscrapers/ebay-business-leads-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 = { "queries": ["office supplies"] }

# Run the Actor and wait for it to finish
run = client.actor("epicscrapers/ebay-business-leads-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 '{
  "queries": [
    "office supplies"
  ]
}' |
apify call epicscrapers/ebay-business-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,epicscrapers/ebay-business-leads-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/7vk0AHffClBFzjEPT/builds/eaZ1i0jOqmmgGHDC6/openapi.json
