# eBay Sold Listings Search Scraper (`good-apis/ebay-sold-search`) Actor

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

## Pricing

$2.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/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 Sold Listings Search Scraper

Find out **what things actually sell for on eBay**. Give it a search term and this scraper returns
eBay's **sold / completed listings** — the real final price of each item, plus when it sold, its
condition, the buying format, the seller, and a link to the listing.

Perfect for **price research, resale comps, market value tracking, and inventory pricing**: instead of
guessing, see the last dozens (or hundreds) of real sales for any product.

### What you get

For every sold item:

| Field | Description |
|-------|-------------|
| `title` | Listing title |
| `price` + `currency` | The price the item **sold for** |
| `best_offer_accepted` | `true` when the seller accepted a lower Best Offer (eBay hides the exact accepted amount; the listed price is shown) |
| `sold_date` | Date it sold (ISO `YYYY-MM-DD`) + the original label |
| `condition` | Brand New, Open Box, Pre-Owned, Refurbished, Parts Only, … |
| `item_specifics` | Brand / model / storage / etc. parsed from the listing |
| `buying_format` | Buy It Now, auction, or Best Offer |
| `shipping` | Shipping cost / free shipping |
| `location` | Where the item shipped from |
| `seller` + `seller_feedback_pct` + `seller_feedback_count` | Seller handle and feedback |
| `url` + `item_id` + `epid` | Link to the item, eBay item id, and eBay product id |
| `image` | Thumbnail image URL |

### Input

```json
{
  "query": "iphone 15",
  "max_results": 60,
  "sort": "recent",
  "condition": "all"
}
```

- **query** — what to search for (required).
- **max\_results** — how many sold items to return (default 60, up to 1200). One item = one result.
- **sort** — `recent` (most recently sold, default), `best_match`, or `price_high`.
- **condition** — `all` (default), `new`, or `used`.

### Pricing

Pay per result — you are billed only for the sold items actually returned. No subscription.

### Notes

- Searches the US eBay marketplace (`ebay.com`).
- "Sold" means the item completed as a sale (eBay's Sold + Completed filter).
- A very niche query may return fewer than `max_results` items — that is the real number of recent
  sales, not an error.

# Actor input Schema

## `query` (type: `string`):

What to search for on eBay (US). Returns items that have SOLD, with the price each one actually sold for. Examples: 'iphone 15', 'pokemon card psa 10', 'vintage rolex submariner'.

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

How many sold items to return (default 60, up to 1200). Each sold item is one output row and is billed as one result.

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

Order the sold items by: most recently sold first, eBay Best Match, or highest price first.

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

Only return items in this condition: all conditions, brand new, or used/pre-owned.

## Actor input object example

```json
{
  "query": "iphone 15",
  "max_results": 60,
  "sort": "recent",
  "condition": "all"
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped items 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 = {
    "query": "iphone 15",
    "max_results": 60,
    "sort": "recent",
    "condition": "all"
};

// Run the Actor and wait for it to finish
const run = await client.actor("good-apis/ebay-sold-search").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 = {
    "query": "iphone 15",
    "max_results": 60,
    "sort": "recent",
    "condition": "all",
}

# Run the Actor and wait for it to finish
run = client.actor("good-apis/ebay-sold-search").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 '{
  "query": "iphone 15",
  "max_results": 60,
  "sort": "recent",
  "condition": "all"
}' |
apify call good-apis/ebay-sold-search --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/FEia5uOqHGIdKbIkL/builds/I7RBMEFXgaHMbaeB1/openapi.json
