# eBay Scraper (`automly/ebay-scraper`) Actor

eBay Scraper: Scrape eBay search results and item pages on 8 eBay sites: price, shipping, condition, seller feedback, quantity sold, watchers, images and item specifics, plus monthly sales estimates. Export to CSV, JSON or Excel, schedule runs or use the API.

- **URL**: https://apify.com/automly/ebay-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** E-commerce
- **Features:** Limited permissions
- **Stats:** 6 total users, 3 monthly users, 98.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## eBay Scraper - Listings, Prices, Shipping & Sellers

### What is eBay Scraper?

**eBay Scraper** is a tool that lets you **scrape eBay listings**: title, price, shipping cost, total price, condition, auction or Buy It Now, seller name and feedback, items sold, watchers, images and item specifics. Type a search or paste item links, click **Start**, and download the results as Excel, CSV or JSON.

- 🌍 **8 eBay marketplaces:** eBay.com, .co.uk, .de, .fr, .it, .es, .ca and .com.au
- 📊 **Price summary per search:** min, max, average, median and percentiles for every query
- 🔎 **eBay's own filters:** price range, condition, auction or Buy It Now, and sort order
- 🔓 **No login:** no eBay account or API key needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers up to about 1,000 listings

### What can eBay Scraper do?

- Scrape **eBay search results** for any keyword
- Scrape **eBay product details** from item links: item specifics, gallery images, description
- Track **eBay prices** and shipping costs across sellers and countries
- Compare **new, used and refurbished** eBay listings for the same product
- Find **eBay auction listings** and their bid counts, or Buy It Now offers only
- See **how many units an eBay listing has sold** and how many people watch it
- Get an **eBay price summary** for each search, ready for pricing research
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from eBay listings?

| | | |
|---|---|---|
| 🏷️ Title and subtitle | 💲 Price and currency | 🚚 Shipping cost and total price |
| 📦 Condition | 🔨 Auction or Buy It Now, bid count | 👤 Seller name |
| ⭐ Seller feedback % and score | 📈 Items sold | 👀 Watchers |
| 🖼️ Main image and gallery | 📋 Item specifics | 📍 Item location |
| 🔢 Search rank and page | 📣 Sponsored flag | 🕒 Time collected |

### How to scrape eBay listings

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **eBay Scraper**.
3. Type one or more **Search queries** (for example `iphone 15 pro`), or paste eBay item links into **Item URLs**.
4. Pick the **Marketplace**, add any filters, and click **Start**.
5. Download your eBay data as Excel, CSV, JSON or HTML from the **Output** tab.

### How much does it cost to scrape eBay listings?

You pay **$5.00 per 1,000 listings**, plus a start fee of **$0.004 per run** at the default settings. The Apify platform usage of the run is paid separately, on top of the listing price.

Example: 1,000 listings cost $5.00, plus the $0.004 start fee and the run's platform usage. **Maximum results per query** keeps a run's cost under control, and you can also set a maximum cost per run.

Every Apify account gets **$5 of free usage each month**, enough for up to about 1,000 listings. See the **Pricing** tab for details.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Search queries** | Keywords to search on eBay, one per line |
| **Item URLs** | Links to single eBay listings (`/itm/...`) |
| **Mode** | **Active listings** searches eBay; **Item detail** scrapes only the item links you give |
| **Marketplace** | Which eBay site to search: `ebay.com`, `ebay.co.uk`, `ebay.de`, `ebay.fr`, `ebay.it`, `ebay.es`, `ebay.ca` or `ebay.com.au` |
| **Maximum results per query** | Up to 1,000 listings per search (default 100) |
| **Maximum pages per query** | Up to 20 result pages per search (default 5) |
| **Minimum price / Maximum price** | Only listings in this price range, in the marketplace currency |
| **Condition** | Any, new, used, refurbished or for parts |
| **Listing type** | All, auctions only, or Buy It Now only |
| **Sort** | Best match, lowest price, highest price, newly listed or ending soonest |
| **Enrich search rows with item details** | Also opens each listing for item specifics, all images and the listing date |
| **Include sales estimates** | Adds an estimated monthly sales figure where eBay shows enough data (see FAQ) |
| **Speed** | Higher is faster. The default works for most runs |

Connection settings - the default works for most runs.

Search example:

```json
{
  "searchQueries": ["vintage mechanical watch"],
  "marketplace": "ebay.com",
  "maxResultsPerQuery": 100,
  "condition": "used",
  "sortBy": "price-lowest"
}
```

Item links example:

```json
{
  "mode": "detail",
  "itemUrls": ["https://www.ebay.com/itm/335889480295"]
}
```

New Buy It Now listings on eBay UK, with item specifics:

```json
{
  "searchQueries": ["nintendo switch oled"],
  "marketplace": "ebay.co.uk",
  "condition": "new",
  "listingType": "buy-it-now",
  "scrapeItemDetails": true
}
```

### ⬆️ Output

One row per listing. A real row from a search for `iphone 15 pro`:

```json
{
  "itemId": "326397464123",
  "url": "https://www.ebay.com/itm/326397464123",
  "title": "Apple iPhone 13 Pro (Excellent Condition) - (Unlocked, AT&T, Verizon, T-Mobile)",
  "subtitle": "Pre-Owned",
  "status": "active",
  "searchRank": 2,
  "price": 449.99,
  "currency": "USD",
  "shippingPrice": 9.99,
  "totalPrice": 459.98,
  "condition": "Pre-Owned",
  "listingType": "buy-it-now",
  "sellerUsername": "cocosprinkles",
  "sellerFeedbackPercent": 99.8,
  "sellerFeedbackScore": 41500,
  "quantitySold": 6,
  "sponsored": true,
  "imageUrl": "https://i.ebayimg.com/images/g/tokAAeSwY6BpjObA/s-l500.jpg",
  "location": "Located in United States",
  "query": "iphone 15 pro",
  "marketplace": "ebay.com",
  "scrapedAt": "2026-09-30T08:53:54+00:00"
}
```

A field is empty (`null`) when eBay does not show that detail for the listing. You can export the data as JSON, CSV, Excel, XML or HTML, or read it with the Apify API.

Each run also saves a **price summary** for every search in the run's **Storage** tab: number of listings, lowest, highest, average and median price, the 10th to 90th percentiles, and the mix of conditions. These are asking prices of active listings at the time of the run, not sold prices.

### How can I use eBay data?

- **Pricing research:** see what a product sells for new, used and refurbished before you list your own
- **Competitor tracking:** follow other sellers' prices, shipping and sold counts on a schedule
- **Product research:** spot listings that sell many units or draw many watchers
- **Reselling and arbitrage:** compare the same item across eight eBay countries
- **Market reports:** feed price summaries into a spreadsheet or dashboard

### Run it on a schedule or from your code

Use Apify [Schedules](https://docs.apify.com/platform/schedules) to run the same search every day and watch prices change. To call the actor from your own code, use the Apify client:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("automly/ebay-scraper").call(run_input={
    "searchQueries": ["nintendo switch oled"],
    "maxResultsPerQuery": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["totalPrice"])
```

### Scrape more e-commerce data

| Actor | What it gets |
|---|---|
| [Amazon Scraper - Product Prices, BSR & Sales Estimates](https://apify.com/automly/amazon-products-scraper---fast-efficient-with-sales-data) | Amazon products with Best Sellers Rank and monthly sales estimates in 20 stores |
| [Walmart Scraper - Products, Prices, Stock & Reviews](https://apify.com/automly/walmart-scraper) | Walmart products, prices, stock, variants, sellers and reviews |
| [Target Scraper - Target.com Products, Prices & Stock](https://apify.com/automly/target-com-scraper) | Target.com products: prices, availability, ratings and specs |
| [Facebook Marketplace Scraper - Listings, Prices & Cars](https://apify.com/automly/facebook-marketplace-scraper) | Facebook Marketplace listings by keyword, category and city |
| [Shopify Scraper - Products, Prices, Variants & Stock](https://apify.com/automly/shopify-products-scraper) | Any public Shopify store's product catalog |

### ❓FAQ

#### How much does it cost to scrape eBay?

$5.00 per 1,000 listings, plus a $0.004 start fee per run and the run's platform usage. See [How much does it cost to scrape eBay listings?](#how-much-does-it-cost-to-scrape-ebay-listings) above.

#### Can I scrape sold or completed listings?

No. eBay shows sold and completed listings only to signed-in users, and eBay Scraper works logged out. You get active listings. The **Items sold** field shows how many units an active listing has sold so far.

#### How are the sales estimates calculated?

When eBay shows how many units a listing has sold and when it was listed, the sold count is divided by the listing's age to give a monthly average, marked with low confidence. It is a lifetime average, not recent sales. When eBay does not show enough data, or the listing is an auction or a single item, the estimate is left empty and marked `insufficient_data`. Turn **Include sales estimates** off if you don't need these fields.

#### Why is the price in a different currency than the marketplace?

eBay sometimes shows prices in the shopper's local currency. The `currency` field always says which currency a price is in, and the price summary uses only listings in the main currency of each search.

#### How many listings can I get?

Up to 1,000 per search query, across up to 20 result pages. Add more queries or narrower filters (price range, condition) to collect more.

#### Can I get item specifics and all images?

Yes. Turn on **Enrich search rows with item details** for search results, or use **Item detail** mode with item links. Rows then add item specifics, gallery images and the listing date.

#### Do I need an eBay account?

No. eBay Scraper collects public listings without logging in. You don't need an eBay account or eBay API key, only a free Apify account.

#### Can I connect eBay Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape eBay?

eBay Scraper only collects public listing data that anyone can see without an account. Scraped data can still include personal data, such as seller usernames, which may be protected by laws such as GDPR. Only collect what you need, have a legitimate reason for it, and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

eBay Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by eBay.

#### Something isn't working?

Tell us on the **Issues** tab with the search or link you used, and we'll look into it.

### ⭐ Your feedback

Have an idea or found a problem? Tell us in the **Issues** tab. If eBay Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

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

Keywords to search on the selected eBay marketplace.

## `itemUrls` (type: `array`):

Direct public eBay /itm/ URLs to scrape or enrich.

## `mode` (type: `string`):

Search active listings, or scrape only the item URLs you supply.

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

Regional eBay marketplace used for search, currency, and localization.

## `maxResultsPerQuery` (type: `integer`):

Strict maximum number of unique rows emitted for each query.

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

Maximum eBay result pages visited for each query and status.

## `minPrice` (type: `number`):

Optional minimum listing price in the selected marketplace currency.

## `maxPrice` (type: `number`):

Optional maximum listing price in the selected marketplace currency.

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

Optional eBay condition filter applied to search URLs.

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

Filter results to auctions or Buy It Now listings when requested.

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

Sort order requested from eBay for each search page.

## `scrapeItemDetails` (type: `boolean`):

Visit each result page for JSON-LD, item specifics, gallery images, explicit listing date, and other visible details.

## `includeSalesEstimates` (type: `boolean`):

Add standalone estimates with method, provenance, confidence, and model version. Defaults to a transparent lifetime average only when cumulative sold and explicit listing age are available.

## `maxConcurrency` (type: `integer`):

Higher is faster. The default works for most runs.

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

Proxy settings. The default works for most runs. If results come back empty, try a different proxy option.

## Actor input object example

```json
{
  "searchQueries": [
    "iphone 15 pro"
  ],
  "itemUrls": [],
  "mode": "active",
  "marketplace": "ebay.com",
  "maxResultsPerQuery": 20,
  "maxPagesPerQuery": 5,
  "condition": "any",
  "listingType": "all",
  "sortBy": "best-match",
  "scrapeItemDetails": false,
  "includeSalesEstimates": true,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All active-listing and item-detail rows produced by this run.

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

Sortable overview of the highest-value listing fields.

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

OUTPUT record with per-query counts, asking-price analytics, explicit failures, and applied limits.

# 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": [
        "iphone 15 pro"
    ],
    "maxResultsPerQuery": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/ebay-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": ["iphone 15 pro"],
    "maxResultsPerQuery": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automly/ebay-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 '{
  "searchQueries": [
    "iphone 15 pro"
  ],
  "maxResultsPerQuery": 20
}' |
apify call automly/ebay-scraper --silent --output-dataset

```

## MCP server setup

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