# eBay Product Scraper: Prices, Items, Sellers & Specs (`datablow/ebay-product-scraper`) Actor

Scrape eBay product and search data at scale — titles, prices, item IDs, shipping costs, seller ratings, condition, specs, high-res images, bids, and more. Supports 8 global regions with keyword search and direct URLs.

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

## Pricing

from $3.00 / 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.

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 Product Scraper Actor

A production-grade, high-performance **eBay Scraper Actor** built for the Apify platform. Extract structured product data, pricing, original list prices, discounts, seller ratings, shipping fees, delivery estimates, categories, specifications, high-resolution images, and auction information across 8 international eBay marketplaces.

***

### 🌟 Key Features

- 🌍 **Multi-Marketplace Support**: Scrape eBay US, UK, Germany, Canada, Australia, France, Italy, and Spain.
- ⚡ **Dual Scraping Modes**:
  - **Fast Search Mode** (`scrapeProductDetails: false`): Rapidly parses listing cards directly from search result pages for maximum speed and minimal compute unit consumption.
  - **Deep Product Mode** (`scrapeProductDetails: true`): Opens individual `/itm/...` product pages to extract complete item specifics (specs table), full image galleries, breadcrumbs, return policies, and detailed seller profiles.
- 🏷️ **Comprehensive Data Extraction**:
  - **Pricing & Discounts**: Current price, original price, discount percentage/amount, currency code.
  - **Product Classification**: Category breadcrumb hierarchy, primary category, brand, model, MPN, UPC, country of origin.
  - **Social Proof & Status**: Top-Rated seller status, sponsored/promoted flag, watcher count, items sold.
  - **Logistics**: Shipping cost, estimated delivery window, seller location, return window.
  - **Media**: Low-res thumbnails automatically upgraded to high-resolution (`s-l1600`) images, full carousel galleries.
- 🛡️ **Akamai & Bot Protection Bypass**: Optimized browser headers, fingerprinting, and automatic residential proxy integration on Apify Cloud.
- 🔍 **Rich Filtering & Sorting**:
  - Filter by Condition: *Brand New, Used / Pre-Owned, Refurbished*.
  - Filter by Format: *Buy It Now, Auction*.
  - Sort By: *Best Match, Lowest Price + Shipping, Highest Price, Newly Listed, Ending Soonest*.
- 🧹 **Clean Data**: Strips badge spam (*"Opens in a new window or tab"*, *"derosnopS"*, *"New Listing"*) and tracking telemetry from item URLs.

***

### 📥 Input Configuration

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `searchTerms` | Array | `["vintage leather jacket"]` | Keywords to search on eBay. |
| `startUrls` | Array | `[]` | Direct eBay URLs (search listing URLs or individual `/itm/...` pages). |
| `region` | String | `"US"` | Target marketplace: `US`, `UK`, `DE`, `CA`, `AU`, `FR`, `IT`, `ES`. |
| `sortBy` | String | `"bestMatch"` | `bestMatch`, `lowestPrice`, `highestPrice`, `newlyListed`, `endingSoonest`. |
| `condition` | String | `"all"` | `all`, `new`, `used`, `refurbished`. |
| `listingType` | String | `"all"` | `all`, `buyItNow`, `auction`. |
| `maxItems` | Integer | `20` | Total maximum products to scrape across queries. |
| `maxPagesPerQuery` | Integer | `5` | Maximum search pagination pages per keyword. |
| `scrapeProductDetails` | Boolean | `false` | When true, fetches complete item specs, high-res gallery, and return policy. |
| `proxyConfiguration` | Object | `{}` | Apify Proxy configuration. Residential proxies recommended. |

#### Example Input (`INPUT.json`)

```json
{
  "searchTerms": ["mechanical keyboard", "rtx 4090"],
  "region": "US",
  "sortBy": "lowestPrice",
  "condition": "all",
  "listingType": "buyItNow",
  "maxItems": 25,
  "maxPagesPerQuery": 3,
  "scrapeProductDetails": true
}
```

***

### 📤 Output Data Format

The Actor pushes items to the default Apify Dataset. You can export results to **JSON**, **CSV**, **Excel**, or consume them via Apify API.

#### Sample Output Record (Deep Product Mode)

```json
{
  "title": "Kraken Pro 60% Cotton Candy Keyboard",
  "subtitle": "Compact 60% RGB Mechanical Gaming Keyboard",
  "itemId": "117192284853",
  "price": 46.00,
  "rawPrice": "US $46.00",
  "originalPrice": 59.99,
  "discount": "23% off",
  "currency": "USD",
  "shippingCost": "Free Shipping",
  "estimatedDelivery": "Estimated between Tue, Oct 13 and Tue, Oct 27",
  "condition": "Used",
  "brand": "Kraken",
  "model": "Kraken Pro 60",
  "countryOfOrigin": "United States",
  "primaryCategory": "Keyboards & Keypads",
  "breadcrumbs": [
    "Electronics",
    "Computers/Tablets & Networking",
    "Keyboards, Mice & Pointers",
    "Keyboards & Keypads"
  ],
  "sellerName": "laurenkoller",
  "sellerPositiveRate": "100%",
  "sellerFeedbackScore": "158",
  "sellerStoreUrl": "https://www.ebay.com/sch/laurenkoller/m.html",
  "isTopRated": false,
  "isSponsored": false,
  "watchersCount": "11",
  "itemLocation": "United States",
  "listingType": "Buy It Now or Best Offer",
  "bidsCount": null,
  "url": "https://www.ebay.com/itm/117192284853",
  "thumbnail": "https://i.ebayimg.com/images/g/9mMAAeSwjiVqA70K/s-l500.webp",
  "highResImage": "https://i.ebayimg.com/images/g/9mMAAeSwjiVqA70K/s-l1600.webp",
  "description": "Barely used cotton candy kraken keyboard. Comes with box no cord no issues.",
  "shippingDetails": "US $90.97 eBay International Shipping with tracking",
  "returnPolicy": "30 days returns. Buyer pays for return shipping.",
  "itemSpecifics": {
    "Brand": "Kraken",
    "Type": "Mechanical",
    "Color": "Cotton Candy",
    "Keyboard Layout": "QWERTY (Standard)",
    "Model": "Kraken Pro 60",
    "Connectivity": "Wired, USB"
  },
  "galleryImages": [
    "https://i.ebayimg.com/images/g/9mMAAeSwjiVqA70K/s-l1600.webp",
    "https://i.ebayimg.com/images/g/dL4AAeSwNylqA71E/s-l1600.webp"
  ],
  "scrapedAt": "2026-09-12T06:40:21.002Z"
}
```

***

### 🚀 Running on Apify

1. Deploy the Actor using the Apify CLI:
   ```bash
   apify push
   ```
2. Or run remotely via Apify Console or API:
   ```bash
   curl --request POST "https://api.apify.com/v2/acts/datablow~ebay-product-scraper/runs?token=<YOUR_TOKEN>"
   ```

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords to search on eBay (e.g. \['mechanical keyboard', 'rtx 4090']).

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

Direct eBay URLs to scrape — supports both search listing URLs and item detail pages (/itm/...).

## `region` (type: `string`):

Select the target eBay regional marketplace.

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

Sort order for search results.

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

Filter by item condition.

## `listingType` (type: `string`):

Filter by listing type.

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

Maximum number of total items to scrape across all queries.

## `maxPagesPerQuery` (type: `integer`):

Limit how many search result pages to paginate through per keyword.

## `scrapeProductDetails` (type: `boolean`):

If enabled, opens each product page to extract full specifications, image gallery, return policy, and detailed seller info. If disabled, extracts listings directly from search for maximum speed.

## `proxyConfiguration` (type: `object`):

Configure proxies to use. For eBay, Residential proxies are strongly recommended to avoid bot detection.

## Actor input object example

```json
{
  "searchTerms": [
    "vintage leather jacket"
  ],
  "region": "US",
  "sortBy": "bestMatch",
  "condition": "all",
  "listingType": "all",
  "maxItems": 20,
  "maxPagesPerQuery": 5,
  "scrapeProductDetails": true
}
```

# Actor output Schema

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

Default dataset containing the scraped eBay products, specifications, and seller details.

# 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 = {
    "searchTerms": [
        "vintage leather jacket"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datablow/ebay-product-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 = { "searchTerms": ["vintage leather jacket"] }

# Run the Actor and wait for it to finish
run = client.actor("datablow/ebay-product-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 '{
  "searchTerms": [
    "vintage leather jacket"
  ]
}' |
apify call datablow/ebay-product-scraper --silent --output-dataset

```

## MCP server setup

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