# eBay Keywords Discovery Tool (`w3crawler/ebay-keywords-discovery-tool`) Actor

Discover publicly returned eBay autocomplete suggestions from a seed keyword across supported eBay site IDs (US, UK, DE, and more) for eBay SEO research and marketplace keyword planning.

- **URL**: https://apify.com/w3crawler/ebay-keywords-discovery-tool.md
- **Developed by:** [w3crawler](https://apify.com/w3crawler) (community)
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 keyword discoveries

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

### What does eBay Keywords Discovery Tool do?

**eBay Keywords Discovery Tool** is an **eBay autocomplete API alternative** for discovering public search phrases from a seed keyword. It requests the selected eBay marketplace's public autocomplete response, keeps only suggestion text evidenced by that response, deduplicates it, and adds transparent SEO metadata such as word count, expansion type, marketplace, and public search URL.

The Actor does not sign in, use private endpoints, replay protected browser state, use mirrors, or bypass CAPTCHA, WAF, rate, device, paywall, login, or geographic controls. When eBay indicates an access boundary, the Actor stops expanding queries and writes a diagnostic row with `found: false` and `dataAvailable: false`.

### Why use eBay Keywords Discovery Tool?

Use the results for eBay SEO research, product-listing brainstorming, catalog taxonomy, content planning, and marketplace comparison. The Actor supports:

- Seed-only discovery or bounded A-Z append/prepend expansion.
- US, UK, German, French, Italian, and Spanish eBay site IDs.
- A configurable maximum of 1–1,000 unique suggestions.
- Sequential requests with short pacing, bounded retries, request timeouts, and a 1 MB streaming response cap.
- Explicit success, partial, failure, and access-boundary diagnostics.

Because it is an Apify Actor, you can schedule runs, use the API tab for programmatic access, connect the dataset to integrations, and monitor run logs. This Actor uses the public endpoint directly; it has no proxy input and does not use proxy rotation as an access-control workaround.

### What data can the Actor extract?

| Field | Type | Description |
|---|---|---|
| `recordId` | string | Stable suggestion or diagnostic identifier. |
| `keyword` | string | Public eBay autocomplete suggestion. |
| `keywordModifier` | string | Text added around the seed phrase. |
| `wordCount` | integer | Number of words in the suggestion. |
| `expansionType` | string | Base, appended-letter, prepended-letter, or diagnostic stage. |
| `marketplaceName` | string | Selected eBay marketplace. |
| `searchUrl` | string | Public eBay search URL for the suggestion. |
| `found` | boolean | Whether the row contains public keyword evidence. |
| `dataAvailable` | boolean | Whether public response data was available for the row. |
| `sourceUrl` | string | Exact public autocomplete URL used as evidence. |
| `accessStatus` | string | `success`, `blocked`, or `error`. |
| `diagnostics` | object | Bounded reason and request context when evidence is unavailable. |

### How to scrape eBay autocomplete keywords

1. Open the Actor's Input tab.
2. Enter a public seed phrase such as `wireless earbuds`.
3. Choose `seed` for one request or `letters` for bounded long-tail expansion.
4. Select the eBay site and set `maxSuggestions`.
5. Run the Actor and open the dataset in the Output tab.

Leave `userAgent` blank unless you need a fixed, identifiable request header for your own network policy. It is not an access-control bypass mechanism.

### How much does it cost?

The Actor has no separate per-result fee. Apify billing depends on the compute time and storage used by your plan. `seed` mode makes one bounded request; `letters` mode can make more sequential requests until the result limit, an access boundary, or the failure budget is reached. Keeping the result limit and expansion mode appropriate for the research task helps control compute usage.

### Input

See the Input tab for the complete configuration. `seedKeyword` is required. `maxSuggestions` defaults to 100, `mode` defaults to `letters`, and `siteId` defaults to US (`0`). `userAgent` is optional and fixed when supplied.

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. A simplified result can look like this:

```json
[
  {
    "position": 1,
    "keyword": "wireless earbuds noise cancelling",
    "keywordModifier": "noise cancelling",
    "found": true,
    "dataAvailable": true,
    "actorStatus": "success"
  },
  {
    "keyword": null,
    "found": false,
    "dataAvailable": false,
    "actorStatus": "blocked",
    "diagnostics": {
      "code": "rate_limited",
      "message": "The public eBay endpoint rate-limited the request."
    }
  }
]
```

### Tips and troubleshooting

Use `seed` mode for a quick check and `letters` mode for broader discovery. An empty result is not converted into a guessed keyword: inspect `errorCategory` and `diagnostics`. If the dataset reports `captcha`, `login_required`, `paywall`, `geofence`, `rate_limited`, `device_blocked`, `waf_blocked`, or `access_denied`, wait, review the marketplace's public availability, or stop the run. Do not attempt to bypass the boundary.

### Key-value store

The actor does not write custom key-value records. Keyword suggestion and diagnostic rows are stored in the dataset; the declared key-value store is intentionally empty.

### FAQ, disclaimer, and support

**Does this Actor scrape private eBay data?** No. It extracts only public autocomplete suggestion text and response metadata returned without authentication.

Our Actors are ethical and do not extract private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. You should not scrape personal data unless you have a legitimate reason to do so; consult your lawyers if you are unsure.

For programmatic use, see the API tab. For feedback or a reproducible problem, use the Issues tab and include the input mode, site ID, status, and diagnostic category without sharing credentials.

# Actor input Schema

## `seedKeyword` (type: `string`):

The public search phrase to expand (for example, 'wireless earbuds' or 'gaming chair').

## `maxSuggestions` (type: `integer`):

Maximum number of unique public keyword suggestions to return.

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

'letters' appends and prepends A-Z for long-tail discovery; 'seed' requests suggestions for the seed only.

## `siteId` (type: `string`):

Public eBay site ID: 0=US, 3=UK, 77=DE, 71=FR, 101=IT, or 186=ES.

## `userAgent` (type: `string`):

Optional fixed User-Agent for an identifiable public request. It is not used to bypass access controls; leave blank to use the Actor's default identity.

## Actor input object example

```json
{
  "seedKeyword": "wireless earbuds",
  "maxSuggestions": 100,
  "mode": "letters",
  "siteId": "0",
  "userAgent": ""
}
```

# Actor output Schema

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

Dataset containing public keyword suggestions and diagnostic rows.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("w3crawler/ebay-keywords-discovery-tool").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("w3crawler/ebay-keywords-discovery-tool").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 '{}' |
apify call w3crawler/ebay-keywords-discovery-tool --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,w3crawler/ebay-keywords-discovery-tool"
        }
    }
}
```

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/jYPLrmiVAinhFEVTT/builds/EsaJ9IPg4CTvRz4Bt/openapi.json
