# eBay Search Scraper - $2/1000 Listings (`scrapeunblocker/ebay-search-scraper`) Actor

Search any of 19 regional eBay marketplaces and get listings as JSON - price, condition, seller feedback, shipping, sold counts and a direct item URL. Powered by ScrapeUnblocker.

- **URL**: https://apify.com/scrapeunblocker/ebay-search-scraper.md
- **Developed by:** [Scrapeunblocker](https://apify.com/scrapeunblocker) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 listings

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/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

## eBay Search Scraper

Scrape **eBay search listings** from any of the **19 regional marketplaces** as clean, structured JSON - with automatic pagination, full filtering, and every field you need for price monitoring and market research. No eBay developer account, OAuth app or API quota.

Powered by [ScrapeUnblocker](https://scrapeunblocker.com)'s anti-bot bypass - no proxies or CAPTCHA setup.

### What you get per listing

- **Title**, item number and a clean item **URL**
- **Price** and **currency** (parsed to a number) plus the raw price text
- **Condition** (with a normalised `conditionCode`)
- **Seller** username, feedback percentage and feedback score
- **Shipping** cost or free-delivery flag, free returns, and item location
- **Sold** count, **watchers**, **bids** and auction time left
- **Image** URL
- eBay's own total result count, and an `exactMatches` flag when eBay ran out of exact matches

### Features

- **19 marketplaces** - ebay.com, .co.uk, .de, .fr, .it, .es, .nl, .ca, .com.au and more, each in its own currency.
- **Automatic pagination** - set `max_results` and the scraper pages through eBay until it collects that many (or eBay runs out).
- **Full filtering** - condition, listing type (auction / Buy It Now), price range, free shipping, seller, category.
- **Sorting** - best match, newly listed, ending soonest, price low-to-high or high-to-low.
- **Honest results** - stops before eBay's loosely-related "no exact match" suggestions, so you never collect junk as if it matched.

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `keyword` | string | **required** | Search phrase or part number. |
| `marketplace` | string | `ebay.com` | One of 19 regional eBay sites. |
| `max_results` | integer | `100` | How many listings to collect across pages (1-2000). |
| `condition` | string | any | new / open\_box / refurbished / used / for\_parts. |
| `listing_type` | string | `all` | all / buy\_it\_now / auction. |
| `min_price` / `max_price` | integer | - | Price range in the marketplace currency. |
| `free_shipping` | boolean | `false` | Only free-delivery listings. |
| `seller` | string | - | Restrict to one seller. |
| `category` | string | - | eBay category id. |
| `sort` | string | `best_match` | Result ordering. |
| `page_size` | integer | `240` | Listings per page (60/120/240). |
| `proxy_country` | string | - | Exit-IP country (ISO-2). |

#### Example input

```json
{
  "keyword": "iphone 13",
  "marketplace": "ebay.com",
  "condition": "used",
  "max_results": 500,
  "sort": "price_asc"
}
```

### Use cases

- **Price monitoring** - track the going rate for a product or part across marketplaces over time.
- **Competitor & reseller research** - watch a seller's whole inventory, prices and sold counts.
- **Sourcing & arbitrage** - find underpriced listings, compare the same item across regions.
- **Market sizing** - pull hundreds of listings for a category to model supply and price distribution.

### Output

One dataset item per listing, plus the full listing fields above. The run's `OUTPUT` record holds the last page's metadata.

***

Built by [ScrapeUnblocker](https://scrapeunblocker.com) - anti-bot bypass API for Cloudflare, DataDome, PerimeterX, Akamai and more.

# Actor input Schema

## `keyword` (type: `string`):

What to search for - a keyword, product name or part number (e.g. 'iphone 13' or '1K0953519A').

## `marketplace` (type: `string`):

Which regional eBay site to search. Prices, currency and availability differ per marketplace.

## `max_results` (type: `integer`):

How many listings to collect across pages. The scraper pages automatically until it reaches this many (or eBay runs out).

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

Only listings in this condition. Leave blank for any.

## `listing_type` (type: `string`):

Auction, fixed-price (Buy It Now) or all.

## `min_price` (type: `integer`):

Lowest price to include, in the marketplace's currency.

## `max_price` (type: `integer`):

Highest price to include, in the marketplace's currency.

## `free_shipping` (type: `boolean`):

Only listings eBay marks as free delivery.

## `seller` (type: `string`):

Restrict to a single seller's username.

## `category` (type: `string`):

eBay category id to search inside, e.g. '131090' for vehicle parts.

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

Result ordering.

## `page_size` (type: `integer`):

Listings per page eBay returns (60, 120 or 240). Larger = fewer requests.

## `proxy_country` (type: `string`):

Exit-IP country (ISO-2). Defaults to an exit chosen for the marketplace.

## Actor input object example

```json
{
  "keyword": "iphone 13",
  "marketplace": "ebay.com",
  "max_results": 100,
  "condition": "",
  "listing_type": "all",
  "free_shipping": false,
  "sort": "best_match",
  "page_size": 240
}
```

# Actor output Schema

## `items` (type: `string`):

Collected items

# 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 = {
    "keyword": "iphone 13"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeunblocker/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 = { "keyword": "iphone 13" }

# Run the Actor and wait for it to finish
run = client.actor("scrapeunblocker/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 '{
  "keyword": "iphone 13"
}' |
apify call scrapeunblocker/ebay-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapeunblocker/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/uJbJP1p6Y6n8Yfzto/builds/8LwZbc8RNVa54OQyw/openapi.json
