# eBay Search Scraper (`curious_coder/ebay-search-scraper`) Actor

Search eBay for any keyword and export listings with price, condition, shipping, seller and more.

- **URL**: https://apify.com/curious\_coder/ebay-search-scraper.md
- **Developed by:** [Curious Coder](https://apify.com/curious_coder) (community)
- **Categories:** E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 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/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 Search Scraper

Search **eBay** for any keyword and get the listings as clean, structured data — title, price and currency, condition, buying format, shipping cost, seller and feedback, item location, sold and watcher counts, plus direct item and image links.

Perfect for price monitoring, competitor research, market and pricing analysis, reselling and dropshipping research, or feeding eBay listings into your own app, dashboard or spreadsheet.

***

### What you can do

- 🔎 Search **any keyword** across eBay and collect every matching listing
- 🌍 Choose your **eBay marketplace** — US, UK, Germany, Australia, Canada and more
- 💸 Get **prices, currency, shipping cost** and any discounted "was" price
- 🏷️ See the **condition** (new, used, refurbished, open box, for parts)
- 🔨 Tell **auctions from Buy It Now**, with bid counts and time left for auctions
- 👤 Capture the **seller name, feedback score and rating count**
- 📦 Get **sold counts, watchers, item location** and best-offer availability
- 🎛️ Filter by **condition, price range, buying format and free shipping**
- ↕️ **Sort** by best match, price, newest, or ending soonest
- 📄 Collect **as many pages of results as you need**

***

### Input

The only thing you need is what to search for.

| Field | Description | Example |
|-------|-------------|---------|
| **Search terms** | One or more keywords to search for | `["nintendo switch"]` |
| **eBay site** | Which marketplace to search | `United States (ebay.com)` |
| **Maximum results per search term** | How many listings to collect per term (empty = all) | `120` |
| **Sort order** | Best match, ending soonest, newly listed, price low/high | `Best match` |
| **Condition** | Any, New, Open box, Refurbished, Used, For parts | `Any` |
| **Buying format** | Any, Auction, Buy It Now | `Any` |
| **Minimum / Maximum price** | Price range filter | `50` / `300` |
| **Free shipping only** | Only listings with free shipping | `false` |

> 💡 **Tip:** You can also paste full eBay search links into the **eBay search links** field — the actor reads the keyword and any filters straight from the link and collects every page.

> 🛣️ **Coming soon:** a sold / completed listings mode (final sale price and date) is planned for a future update.

#### Example input

```json
{
  "searchQueries": ["nintendo switch", "steam deck"],
  "site": "ebay.com",
  "maxResults": 120,
  "sortBy": "best_match",
  "condition": "used",
  "priceMin": 50,
  "priceMax": 300
}
```

***

### Output

Each result is one eBay listing.

```json
{
  "searchQuery": "nintendo switch",
  "site": "ebay.com",
  "page": 1,
  "itemId": "336670045117",
  "title": "Nintendo Switch Lite 32GB Handheld Console Gray (Excellent Used)",
  "itemUrl": "https://www.ebay.com/itm/336670045117",
  "imageUrl": "https://i.ebayimg.com/images/g/G58AAeSwtqBqSAOa/s-l500.webp",
  "condition": "Pre-Owned",
  "isNewListing": false,
  "price": 144.99,
  "priceMax": null,
  "currency": "USD",
  "originalPrice": 164.99,
  "buyingFormat": "BUY_IT_NOW",
  "bestOfferAvailable": false,
  "bids": null,
  "timeLeft": null,
  "shippingCost": 11.99,
  "shippingText": "+$11.99 delivery",
  "freeReturns": false,
  "soldCount": null,
  "watchers": 54,
  "location": "United States",
  "sellerName": "cocosprinkles",
  "sellerFeedbackPercent": 99.9,
  "sellerFeedbackCount": 40100,
  "scrapedAt": "2026-08-04T17:58:14.745Z"
}
```

For listings that show a price range (multi-variation items), `price` holds the low end and `priceMax` the high end. For auctions, `buyingFormat` is `AUCTION` and `bids` and `timeLeft` are filled in.

You can export the results as **JSON, CSV, Excel, HTML or XML** from the **Storage** tab, or pull them through the Apify API.

***

### Notes

- Prices, availability and time left are provided by eBay and change constantly. Always confirm the final price and details on eBay before buying.
- Sold, watcher and seller-feedback figures are shown exactly as eBay displays them at the time of scraping.
- This actor is not affiliated with or endorsed by eBay.

***

### FAQ

**Can I search more than one keyword at once?**
Yes. Add several terms to **Search terms** and each is searched and paginated separately.

**Can I search a specific eBay country site?**
Yes. Pick the marketplace under **eBay site** (US, UK, Germany, Australia, Canada, France, Italy, Spain and more), or paste a search link from that country's eBay.

**Can I monitor prices automatically?**
Yes. Use Apify **Schedules** to run the actor on a recurring basis, and combine it with integrations (email, Slack, webhooks) to get alerts when prices change.

**Do I need to configure anything else?**
No. Just enter what you want to search for and run it.

# Actor input Schema

## `searchQueries` (type: `array`):

One or more things to search for on eBay, e.g. <b>nintendo switch</b> or <b>vintage rolex</b>. Each term is searched separately.

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

Alternatively, paste full eBay search links (the page you land on after searching). The actor reads the keyword and filters from each link and paginates it.

## `site` (type: `string`):

Which eBay marketplace to search.

## `maxResults` (type: `integer`):

How many listings to collect for each search term. Leave empty to collect all available results.

## `sortBy` (type: `string`):

How eBay should order the results.

## `condition` (type: `string`):

Filter by item condition.

## `buyingFormat` (type: `string`):

Filter by how the item is sold.

## `priceMin` (type: `integer`):

Only include listings at or above this price (in the site's currency).

## `priceMax` (type: `integer`):

Only include listings at or below this price (in the site's currency).

## `freeShippingOnly` (type: `boolean`):

Only include listings that offer free shipping.

## Actor input object example

```json
{
  "searchQueries": [
    "nintendo switch",
    "lego star wars"
  ],
  "site": "ebay.com",
  "maxResults": 120,
  "sortBy": "best_match",
  "condition": "any",
  "buyingFormat": "any",
  "freeShippingOnly": false
}
```

# Actor output Schema

## `listings` (type: `string`):

One item per eBay listing, including title, price and currency, condition, buying format (auction / Buy It Now), shipping cost, seller name and feedback, item URL, image URL, item id, location and sold/watcher counts.

# 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 = {
    "searchQueries": [
        "nintendo switch"
    ],
    "maxResults": 120
};

// Run the Actor and wait for it to finish
const run = await client.actor("curious_coder/ebay-search-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 = {
    "searchQueries": ["nintendo switch"],
    "maxResults": 120,
}

# Run the Actor and wait for it to finish
run = client.actor("curious_coder/ebay-search-scraper").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 '{
  "searchQueries": [
    "nintendo switch"
  ],
  "maxResults": 120
}' |
apify call curious_coder/ebay-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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