# eBay Sold Listings Scraper 💰 (price comps, no key) (`tagadanar/ebay-sold-comps`) Actor

Find out what things actually sold for on eBay: sold price, date, condition, format, shipping and seller, plus the price-comps summary (count, min, max, average, median) sellers dig out of Terapeak. No API key, no subscription: one flat price per listing with platform usage included.

- **URL**: https://apify.com/tagadanar/ebay-sold-comps.md
- **Developed by:** [Tagada Data](https://apify.com/tagadanar) (community)
- **Categories:** E-commerce, Automation, AI
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 sold listings

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Sold Listings Scraper with Price Comps

Find out what things actually sell for on eBay. Give this actor a product keyword or an eBay search URL and it returns the recent sold and completed listings: sold price, sold date, condition, buying format, shipping, and the seller. On top of that, every search gets a price-comps summary row: how many sold, and the lowest, highest, average and median sold price over the period.

That summary is the number resellers, flippers and appraisers actually want, and it is the number eBay keeps behind a paid Terapeak subscription. Here you get it with a keyword and no API key.

It reads eBay's own search results over plain HTTP, so it is fast and does not drive a browser. eBay's bot checks are handled for you, and the per-listing price is the whole bill: platform usage is included.

### What you get

One record per sold listing:

| Field | Description |
| --- | --- |
| `itemId` | eBay item number |
| `title` | Listing title |
| `url` | Listing URL |
| `soldPrice`, `priceLabel`, `currency` | Numeric sold price, the label as shown (`$195.00`), and the currency |
| `soldDate`, `soldDateRaw` | Sold date as an ISO date and as eBay printed it |
| `condition` | Item condition (`Pre-Owned`, `Brand New`, ...) |
| `format`, `bids` | Buying format (Buy It Now, Best Offer, Auction) and bid count on auctions |
| `shipping`, `location` | Shipping line and item location |
| `sellerName`, `sellerFeedbackPercent`, `sellerFeedbackCount` | The seller and their feedback |
| `imageUrl` | Listing thumbnail |
| `searchTerm`, `sourceUrl`, `scrapedAt` | The search that found it, the page it came from, and the run timestamp |

And one comps summary per search (`recordType: "summary"`):

| Field | Description |
| --- | --- |
| `soldCount` | How many sold listings were found for this search |
| `avgPrice`, `medianPrice` | Average and median sold price |
| `minPrice`, `maxPrice` | Lowest and highest sold price |
| `firstSoldDate`, `lastSoldDate` | The date range the comps cover |

### Who uses it

- **Resellers and flippers** pricing inventory before they buy or list, using real sold prices instead of hopeful asking prices.
- **eBay and Amazon sellers** checking demand and price trend for a SKU before sourcing it.
- **Collectors and appraisers** valuing cards, coins, watches, sneakers and game consoles from recent comparable sales.
- **Pricing and market-research pipelines** that need sold-price data as clean JSON.

### Input examples

Comps for a single product:

```json
{
  "search": ["nintendo switch oled"],
  "maxResults": 200
}
````

Several products at once:

```json
{
  "search": ["pokemon booster box", "charizard psa 10", "rolex submariner 124060"],
  "maxResults": 500
}
```

Paste an eBay search URL (the sold filter is added for you, so a normal listings URL works too):

```json
{
  "search": ["https://www.ebay.com/sch/i.html?_nkw=air+jordan+1&_sacat=15709"],
  "maxResults": 300
}
```

### How it works

A keyword is turned into an eBay sold-and-completed search sorted by most recently ended, which is the ordering that gives the freshest comps. The actor walks the result pages, dedupes by item id, and stops a search as soon as a page returns no new sold listings or when it reaches your `maxResults`. Paste a full eBay URL when you want exact control over category, condition or price filters; the sold and completed flags are forced on either way, so you always get sold data.

### Pricing

You pay per sold listing returned, and that is the whole bill: platform usage is included in the price. The comps summary rows are free. No subscription.

| Event | Price |
| --- | --- |
| Sold listing | $2.50 per 1,000 |
| Actor start | $0.001 per run |

The tiny start fee covers runs that return nothing; on any normal search it is noise next to the per-listing price.

### FAQ

**Where does the sold data come from?** eBay's own sold and completed search, the same results you see when you tick "Sold items" in the eBay filter sidebar. eBay keeps sold history visible for roughly the last 90 days.

**Do I need a proxy or an eBay API key?** No key and no proxy setup. eBay's bot checks are handled internally, and platform usage is included in the price, so nothing extra appears on your bill.

**Can I get comps for another eBay country?** Yes. Paste that site's search URL (for example an ebay.co.uk search). Prices come back in that site's currency, captured in the `currency` field.

**What is the price comps summary?** For each search, the actor rolls up every sold listing it found into one row with the count and the min, max, average and median sold price, plus the date range. It is the quick answer to "what does this actually sell for", without exporting to a spreadsheet.

**How far back does it go?** As far as eBay's sold search shows, which is about 90 days. Sort is most-recently-ended, so you get the freshest sales first and can cap the volume with `maxResults`.

***

### Something missing?

If you need an extra field, another eBay market, or a different output, open an issue on this Actor and describe it. I read every request and small additions usually ship within days. More ecommerce and lead generation Actors are on [my profile](https://apify.com/tagadanar).

*eBay sold listings, eBay sold prices, eBay price comps, what did it sell for, eBay completed listings scraper, Terapeak alternative, eBay sold items API, resale price research, eBay market research, sold price history.*

# Actor input Schema

## `search` (type: `array`):

One search per entry. Use a product keyword (e.g. <code>nintendo switch oled</code>, <code>pokemon booster box</code>) or paste any eBay search URL. The sold + completed filter is added automatically, so a normal eBay listings URL works too. Each search returns its sold items plus one price-comps summary row.

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

Total sold listings to return across all searches. eBay shows the most recent completed sales first, so a few hundred is usually enough for a solid price comp.

## Actor input object example

```json
{
  "search": [
    "nintendo switch oled"
  ],
  "maxResults": 40
}
```

# Actor output Schema

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

One item per sold listing, plus one summary row per search, in the default dataset.

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

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "eBay Sold Listings Scraper 💰 (price comps, no key)",
        "description": "Find out what things actually sold for on eBay: sold price, date, condition, format, shipping and seller, plus the price-comps summary (count, min, max, average, median) sellers dig out of Terapeak. No API key, no subscription: one flat price per listing with platform usage included.",
        "version": "0.1",
        "x-build-id": "CP8K3OfrXfHfidodQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/tagadanar~ebay-sold-comps/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-tagadanar-ebay-sold-comps",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/tagadanar~ebay-sold-comps/runs": {
            "post": {
                "operationId": "runs-sync-tagadanar-ebay-sold-comps",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/tagadanar~ebay-sold-comps/run-sync": {
            "post": {
                "operationId": "run-sync-tagadanar-ebay-sold-comps",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "search"
                ],
                "properties": {
                    "search": {
                        "title": "Products or eBay URLs",
                        "minItems": 1,
                        "type": "array",
                        "description": "One search per entry. Use a product keyword (e.g. <code>nintendo switch oled</code>, <code>pokemon booster box</code>) or paste any eBay search URL. The sold + completed filter is added automatically, so a normal eBay listings URL works too. Each search returns its sold items plus one price-comps summary row.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max sold listings",
                        "minimum": 1,
                        "maximum": 20000,
                        "type": "integer",
                        "description": "Total sold listings to return across all searches. eBay shows the most recent completed sales first, so a few hundred is usually enough for a solid price comp.",
                        "default": 200
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
