# Amazon & eBay Autocomplete Keywords - Pay Only for Results (`myceworks/marketplace-autocomplete`) Actor

Search-box autocomplete suggestions from Amazon and eBay in many countries for listing and SEO keyword ideas. Optional A-Z expansion, hard time limit per keyword, and you are not charged when a marketplace returns nothing or blocks.

- **URL**: https://apify.com/myceworks/marketplace-autocomplete.md
- **Developed by:** [Gyuni](https://apify.com/myceworks) (community)
- **Categories:** E-commerce, SEO tools, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 suggestion results

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

## Amazon & eBay Autocomplete Keywords - Pay Only for Results

Type your seed keywords into the search boxes of Amazon and eBay in many countries and collect what the marketplaces suggest. Useful for listing titles, product research and SEO keyword ideas.

- Amazon and eBay search-box suggestions, per country
- Suggestion order is kept (`position`), and each suggestion records which query produced it (`seed`)
- eBay suggestions include a category when eBay returns one
- Optional A-Z expansion: also query "<keyword> a" to "<keyword> z" for many more ideas

### Supported marketplaces

Amazon: `amazon.com`, `amazon.co.uk`, `amazon.de`, `amazon.fr`, `amazon.it`, `amazon.es`, `amazon.ca`, `amazon.co.jp`, `amazon.com.au`, `amazon.com.mx`

eBay: `ebay.com`, `ebay.co.uk`, `ebay.de`, `ebay.fr`, `ebay.it`, `ebay.es`, `ebay.ca`, `ebay.com.au`

Not supported: **Etsy** (its suggestion endpoint is protected by bot detection, and this Actor does not bypass protections) and `amazon.in` (its suggestion service did not respond when tested).

Use keywords in the language of the marketplace (for example German keywords for `amazon.de`). Some eBay sites (FR, IT, ES) return little for English words.

### How it behaves

| | This Actor |
|---|---|
| Method | Plain requests to the public autocomplete endpoints. No browser, no proxy, no cookies. |
| Time limit | Every keyword x marketplace has a hard limit (default 60 s). The run never loops. |
| Retries | One retry on HTTP 429 or 5xx, then the result is marked `blocked` or `failed`. |
| Blocks | If a marketplace blocks 2 results in a row, the rest of that marketplace is marked `blocked` for this run, without more requests. |
| Billing | One event per keyword x marketplace result **that contains suggestions**. `empty`, `blocked` and `failed` results are listed with `charged: false`. |
| Run timeout | The run stops 60 s before its timeout and tells you how far it got. |

### Input

```json
{
  "keywords": ["phone case", "yoga mat"],
  "marketplaces": ["amazon.com", "ebay.com", "amazon.de"],
  "expandAlphabet": false,
  "maxSecondsPerKeyword": 60
}
```

- `keywords` (required): seed keywords.
- `marketplaces`: default `["amazon.com"]`.
- `expandAlphabet`: default `false`. When `true`, each result uses 27 requests (about 30 s with the built-in delay).
- `maxSecondsPerKeyword`: default 60.

### Output (one item per keyword x marketplace)

| Field | Meaning |
|---|---|
| `keyword`, `marketplace`, `country` | What was fetched |
| `suggestions` | `[{term, position, seed, category?}]`, de-duplicated |
| `count` | Number of suggestions |
| `status` | `ok` · `empty` · `blocked` · `failed` |
| `error` | Why a result is blocked, failed or cut short |
| `fetchedAt` | UTC timestamp |
| `charged` | Whether this result was billed |

### Pricing

Pricing: see the Pricing tab. Billing event: `suggestion-result`, one per result with at least one suggestion. The run stops when your spending limit is reached.

### Limits

- Suggestions are what the marketplace shows for a typed prefix. They are not search volumes.
- The suggestion endpoints are unofficial and can change or block without notice. Blocked results are reported, not retried in a loop.
- Results depend on the location of the server making the request.

### Terms

This Actor reads public autocomplete suggestions only. You are responsible for complying with the terms of the marketplaces you query and with applicable law.

Not affiliated with, endorsed or sponsored by Amazon.com, Inc. or eBay Inc. "Amazon" and "eBay" are trademarks of their owners, used here only to describe the data source.

# Actor input Schema

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

Seed keywords to type into the marketplace search box. One result per keyword x marketplace.

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

Supported: amazon.ca, amazon.co.jp, amazon.co.uk, amazon.com, amazon.com.au, amazon.com.mx, amazon.de, amazon.es, amazon.fr, amazon.it, ebay.ca, ebay.co.uk, ebay.com, ebay.com.au, ebay.de, ebay.es, ebay.fr, ebay.it. Etsy is not supported.

## `expandAlphabet` (type: `boolean`):

Also query '<keyword> a' to '<keyword> z' (27 requests per keyword and marketplace) to collect more ideas.

## `maxSecondsPerKeyword` (type: `integer`):

Hard limit for one keyword x marketplace, including retries. When reached, suggestions collected so far are returned.

## Actor input object example

```json
{
  "keywords": [
    "phone case",
    "yoga mat"
  ],
  "marketplaces": [
    "amazon.com",
    "ebay.com"
  ],
  "expandAlphabet": false,
  "maxSecondsPerKeyword": 60
}
```

# Actor output Schema

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

No description

## `results` (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 = {
    "keywords": [
        "phone case",
        "yoga mat"
    ],
    "marketplaces": [
        "amazon.com",
        "ebay.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("myceworks/marketplace-autocomplete").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": [
        "phone case",
        "yoga mat",
    ],
    "marketplaces": [
        "amazon.com",
        "ebay.com",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("myceworks/marketplace-autocomplete").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 '{
  "keywords": [
    "phone case",
    "yoga mat"
  ],
  "marketplaces": [
    "amazon.com",
    "ebay.com"
  ]
}' |
apify call myceworks/marketplace-autocomplete --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,myceworks/marketplace-autocomplete"
        }
    }
}
```

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/xPJkk3JXbfmTUxGSw/builds/0fdHKqsUnGuAIEx8p/openapi.json
