# eBay Scraper - Prices, Sellers & Sold Counts (`santhej/ebay-search-scraper`) Actor

Scrape eBay listings by keyword. Extract prices, shipping, condition, seller feedback, sold counts and ratings across 20+ marketplaces. JSON/CSV.

- **URL**: https://apify.com/santhej/ebay-search-scraper.md
- **Developed by:** [Santhej Kallada](https://apify.com/santhej) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 3 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per event

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 Scraper — Prices, Sellers & Sold Counts

Scrape eBay search results at scale without an API key, developer account or proxy setup. Give this eBay scraper a keyword and it returns every listing as a clean row: title, item ID, price, shipping, total price, condition, seller feedback, sold count, product rating, location and sponsored flag.

Built for price monitoring, competitor research and reselling arbitrage across **20+ eBay marketplaces** — ebay.com, ebay.co.uk, ebay.de, ebay.com.au and the rest.

**$1.80 per 1,000 items.** One flat rate on every Apify plan, including free.

### Features

- **Scrape eBay search results by keyword** — pass one keyword or fifty
- **Extract eBay prices and shipping costs** — plus a derived total price
- **Get eBay seller feedback scores** — username, positive percentage and feedback count
- **Find eBay sold counts** — how many units a listing has already moved
- **Extract eBay product ratings** — star rating and number of product ratings
- **Scrape eBay item condition** — Brand New, Used, Open Box, Refurbished, For Parts
- **Filter eBay listings by price range** — minimum and maximum
- **Scrape Buy It Now listings only** — exclude auctions
- **Exclude sponsored eBay listings** — promoted placements identified and optionally dropped
- **Scrape eBay across 20+ international marketplaces** — UK, Germany, Australia, Canada and more
- **Export eBay data to JSON, CSV or Excel** — or pull it straight from the API

### What you get

Every row includes:

| Field | Description |
|---|---|
| `itemId` | eBay's item number — a stable key for tracking a listing over time |
| `title` | Full listing title |
| `url` | Clean canonical `ebay.com/itm/…` link |
| `price` | Current price as a number |
| `priceDisplay` | Price as eBay shows it |
| `shipping` / `shippingCost` | Delivery text and cost as a number |
| `freeShipping` | Boolean |
| `totalPrice` | Price plus shipping, pre-computed |
| `condition` | Brand New, Used, Open Box, Refurbished, … |
| `seller` | Seller username |
| `sellerFeedbackPercent` | Positive feedback percentage |
| `sellerFeedbackCount` | Total feedback count, expanded from eBay's compact form (131.1K → 131100) |
| `soldCount` | Units sold, where eBay displays it |
| `rating` / `ratingCount` | Product star rating and number of ratings |
| `isAuction` / `bidCount` / `timeLeft` | Auction state |
| `buyItNow` / `bestOffer` | Purchase options |
| `returnsAccepted` | Whether returns are offered |
| `location` | Where the item ships from |
| `image` | Thumbnail URL |
| `isSponsored` | Whether the placement was promoted |
| `rank` | Position in the search results |

Plus `searchQuery`, `sourcePage` and `scrapedAt` on every row.

### Use cases

**Competitor price monitoring.** Track what rival sellers charge for the same product and how their prices move. `totalPrice` includes shipping, so comparisons are like-for-like rather than distorted by shipping games.

**Reselling and arbitrage.** `soldCount` plus price tells you what actually moves and at what level. Filter to Buy It Now, sort by price, and find underpriced inventory.

**Market and demand research.** Pull hundreds of listings for a category and analyse the price distribution, condition mix and which sellers dominate.

**Seller intelligence.** `seller`, `sellerFeedbackPercent` and `sellerFeedbackCount` let you identify high-volume sellers in a niche and see how the top performers price.

**Sourcing and dropshipping.** Compare eBay pricing against other marketplaces to find margin.

### Input

```json
{
  "queries": ["cordless drill", "impact driver"],
  "maxItems": 500,
  "sort": "16",
  "minPrice": 20,
  "maxPrice": 300,
  "buyItNowOnly": true,
  "excludeSponsored": false,
  "site": "ebay.co.uk"
}
```

| Option | Description |
|---|---|
| `queries` | Search keywords, one or more (up to 50 per run) |
| `maxItems` | Unique items per keyword — applies **per keyword**, so two keywords at 500 returns up to 1,000 |
| `sort` | `12` best match, `15` newly listed, `16` price + shipping lowest, `10` ending soonest |
| `minPrice` / `maxPrice` | Price band filter |
| `buyItNowOnly` | Exclude auctions |
| `excludeSponsored` | Drop promoted listings |
| `site` | Marketplace, e.g. `ebay.co.uk`, `ebay.de`. Defaults to `ebay.com` |
| `pageConcurrency` | Pages fetched in parallel per keyword — raise it for large runs |

### Output example

```json
{
  "itemId": "365749807558",
  "title": "Milwaukee 2904-20 M18 FUEL 1/2\" Hammer Drill/Driver (Tool only)",
  "url": "https://www.ebay.com/itm/365749807558",
  "price": 139.99,
  "totalPrice": 139.99,
  "freeShipping": true,
  "condition": "Brand New",
  "seller": "sunshinetooldepo",
  "sellerFeedbackPercent": 99.9,
  "sellerFeedbackCount": "131100",
  "soldCount": 7791,
  "rating": 5,
  "ratingCount": 105,
  "returnsAccepted": true,
  "location": "United States",
  "isSponsored": false,
  "rank": 1
}
```

### Speed

This scraper fetches result pages **in parallel** and requests eBay's largest page size, so bulk runs finish quickly: a measured run returned **1,052 unique items in 35 seconds**, roughly 30 items per second. Raise `pageConcurrency` for larger jobs.

### Pricing

| Event | Price |
|---|---|
| Item returned | **$0.0018** ($1.80 per 1,000) |
| Zero-result keyword | $0.002 |
| Actor start | $0.0005 |

Flat across every Apify plan — no tier gating, no subscription, no minimum.

### FAQ

**Do I need an eBay API key or developer account?**
No. Nothing to register, no keys, no OAuth.

**Are duplicates billed?**
No. eBay repeats listings across pages; results are deduplicated on `itemId` and you are only charged for unique items.

**What happens if eBay blocks a page?**
Blocked pages are detected, skipped and **never billed**. The run reports `blocked_pages` in its summary.

**How many results can I get per keyword?**
Practically, several thousand. eBay's own pagination degrades on very deep pages, so splitting a broad keyword into narrower ones returns more total coverage than pushing `maxItems` very high.

**Can I scrape non-US eBay sites?**
Yes — set `site` to any eBay domain such as `ebay.co.uk`, `ebay.de`, `ebay.com.au`.

**Can I tell sponsored listings apart?**
Yes. `isSponsored` is derived from eBay's own promotion data, and `excludeSponsored` filters them out entirely.

**Can I run this on a schedule?**
Yes — use Apify's scheduler, or trigger it via API from your own pipeline.

### Support

Open an issue on the Actor's Issues tab and I'll take a look.

# Actor input Schema

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

What to search on eBay. One per line. Up to 50 per run.

## `maxItems` (type: `integer`):

Unique items to collect for EACH keyword.

## `sort` (type: `string`):

eBay sort code.

## `minPrice` (type: `integer`):

Only items at or above this price.

## `maxPrice` (type: `integer`):

Only items at or below this price.

## `buyItNowOnly` (type: `boolean`):

Exclude auctions.

## `excludeSponsored` (type: `boolean`):

Drop promoted listings from results.

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

e.g. ebay.co.uk, ebay.de. Defaults to ebay.com.

## `country` (type: `string`):

Two-letter code controlling currency/marketplace. Defaults to 'us'.

## `concurrency` (type: `integer`):

Keywords processed at once.

## `pageConcurrency` (type: `integer`):

Pages fetched in parallel within one keyword. Higher is much faster.

## Actor input object example

```json
{
  "queries": [
    "cordless drill"
  ],
  "maxItems": 100,
  "sort": "12",
  "buyItNowOnly": false,
  "excludeSponsored": false,
  "country": "us",
  "concurrency": 3,
  "pageConcurrency": 8
}
```

# Actor output Schema

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

All scraped eBay items.

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

Destinations, listing counts and pages fetched.

# 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": [
        "cordless drill"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("santhej/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 = { "queries": ["cordless drill"] }

# Run the Actor and wait for it to finish
run = client.actor("santhej/ebay-search-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": [
    "cordless drill"
  ]
}' |
apify call santhej/ebay-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,santhej/ebay-search-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/FHkXOT7yaiKJepxcb/builds/pyJxbJugamdqdwlYr/openapi.json
