# eBay Sold Listings Scraper - Sold Prices & Sales Comps (`convertfleetdotonline/ebay-sold-listings-search`) Actor

Search eBay sold & completed listings and extract real, confirmed sale prices instead of asking prices. Works on 8 eBay marketplaces, supports sold-date range, condition, price and buying-format filters. Export title, sold price, sold date, seller, shipping and more as JSON/CSV/Excel.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 Search

Get **real, confirmed eBay sale prices** — not asking prices. This actor searches eBay's sold & completed listings by keyword, filters them by sold-date range, and returns clean, structured records you can export as JSON, CSV, or Excel.

Active listings tell you what sellers *hope* to get. Sold listings tell you what buyers *actually paid* — which is what matters for pricing comps, resale margin checks, and market research.

### What you get for every sold item

| Field | Example |
| --- | --- |
| `title` | `Apple iPhone 13 128GB Blue Unlocked` |
| `price` / `priceValue` / `currency` | `$383.99` / `383.99` / `USD` |
| `soldDate` / `soldDateText` | `2026-07-20` / `Sold Jul 20, 2026` |
| `condition` | `Open Box` |
| `subtitle` | `Open Box · Apple iPhone 13 · 128 GB · Unlocked` |
| `buyingFormat` / `bids` / `bestOffer` | `BUY_IT_NOW` / `null` / `false` |
| `shipping` / `shippingValue` / `freeShipping` | `+$44.66 delivery` / `44.66` / `false` |
| `itemLocation` | `United States` |
| `sellerName` / `sellerFeedbackPercent` / `sellerFeedbackCount` | `webtradeinllc` / `99.9` / `5400` |
| `badges` | `["eBay Refurbished"]` |
| `url` / `imageUrl` / `itemId` | canonical item link, main photo, listing ID |
| `keyword` / `marketplace` / `page` / `totalResults` | search context for every row |

Prices and sold dates are shown by eBay in each site's local format (`EUR 335,68`, `Verkauft 20. Jul 2026`, `Vendu le 20 juil. 2026`…). The actor normalizes all of them into numeric `priceValue`, ISO-4217 `currency`, and ISO `soldDate` so your spreadsheet formulas work on every marketplace.

### 8 supported marketplaces

ebay.com (US) · ebay.co.uk (UK) · ebay.de (Germany) · ebay.fr (France) · ebay.it (Italy) · ebay.es (Spain) · ebay.ca (Canada) · ebay.com.au (Australia)

### How to use it

1. Enter one or more **keywords**, exactly as you would type them into the eBay search box.
2. Pick a **marketplace** (default: ebay.com).
3. Optionally set a **sold-date range**, **condition**, **price range**, **buying format**, or an eBay **category ID**.
4. Run the actor and export the dataset in the format you need.

#### Example input

```json
{
    "keywords": ["iphone 13 128gb", "iphone 13 pro 256gb"],
    "marketplace": "ebay.com",
    "maxItemsPerKeyword": 200,
    "soldFrom": "2026-06-01",
    "soldTo": "2026-06-30",
    "condition": "used",
    "sortBy": "endedRecently"
}
````

This returns up to 200 used-condition sales per keyword that closed in June 2026, newest first.

### Date-range filtering

eBay's own search has no "sold between" filter, so the actor does it for you: it reads the sold date off every result and keeps only listings inside your `soldFrom`–`soldTo` window. Keep the default sort (**Most recently sold first**) and the actor stops paginating as soon as it reaches sales older than `soldFrom`, which keeps runs fast and cheap.

### Common use cases

- **Pricing comps** — see the actual closing prices of items like yours before you list.
- **Resale / arbitrage margin checks** — compare supplier prices against real eBay outcomes, including shipping.
- **Market research** — track how sale prices for a product move week over week, or differ between the US, UK, and EU markets.
- **Inventory valuation** — bulk-value a collection using confirmed sales rather than wishful asking prices.

### Tips

- One row of output = one sold listing; run several keywords in one run to build a comparison table in a single dataset.
- `totalResults` on each row tells you the overall size of the sold market eBay reports for that keyword.
- Auction sales include the number of `bids`; `bestOffer: true` means the listing accepted Best Offers, so the displayed price may be the pre-negotiation listing price — eBay does not disclose accepted offer amounts.
- If the log shows repeated bot-challenge messages, switch the proxy configuration to residential proxies and re-run.

### FAQ

**How far back do sold listings go?** eBay keeps roughly the last 90 days of sold listings in search. Date ranges older than that will return few or no results.

**Does it work without proxies?** The actor retries with several browser fingerprints and rotates proxy sessions automatically, which is usually enough with the default Apify proxy. Residential proxies are the fallback for stubborn blocks.

**Is scraping sold listings legal?** The actor only collects data that eBay displays publicly to any visitor. It collects no personal data beyond public seller usernames. Make sure your own use of the data complies with the laws and terms that apply to you.

# Actor input Schema

## `keywords` (type: `array`):

One search query per line, exactly as you would type it into the eBay search box (e.g. <code>iphone 13 128gb unlocked</code>). Each keyword is searched separately.

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

Which eBay site to search. Prices and sold dates are shown in that site's currency and locale; the actor normalizes them into <code>priceValue</code>, <code>currency</code>, and ISO <code>soldDate</code>.

## `maxItemsPerKeyword` (type: `integer`):

Maximum number of sold listings to return for each keyword.

## `soldFrom` (type: `string`):

Only keep items sold on or after this date (YYYY-MM-DD). Leave empty for no lower bound. Tip: keep the default sort (<b>Most recently sold</b>) so the actor can stop paginating early once it reaches older sales.

## `soldTo` (type: `string`):

Only keep items sold on or before this date (YYYY-MM-DD). Leave empty for no upper bound.

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

Order in which eBay returns sold listings. <b>Most recently sold</b> is recommended, especially with date filters.

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

Only include items in this condition.

## `buyingFormat` (type: `string`):

Only include items sold through this format.

## `minPrice` (type: `integer`):

Minimum sold price, in the marketplace currency (whole units, e.g. 50).

## `maxPrice` (type: `integer`):

Maximum sold price, in the marketplace currency (whole units, e.g. 500).

## `categoryId` (type: `integer`):

Optional numeric eBay category ID to restrict the search (the <code>\_sacat</code> URL parameter, e.g. <code>9355</code> for Cell Phones & Smartphones).

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

Proxies used for eBay requests. Apify automatic proxies work in most cases; if you see persistent bot challenges in the log, switch to residential proxies.

## Actor input object example

```json
{
  "keywords": [
    "iphone 13 128gb"
  ],
  "marketplace": "ebay.com",
  "maxItemsPerKeyword": 100,
  "sortBy": "endedRecently",
  "condition": "any",
  "buyingFormat": "any",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "keywords": [
        "iphone 13 128gb"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("convertfleetdotonline/ebay-sold-listings-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 = {
    "keywords": ["iphone 13 128gb"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("convertfleetdotonline/ebay-sold-listings-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 '{
  "keywords": [
    "iphone 13 128gb"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call convertfleetdotonline/ebay-sold-listings-search --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "eBay Sold Listings Scraper - Sold Prices & Sales Comps",
        "description": "Search eBay sold & completed listings and extract real, confirmed sale prices instead of asking prices. Works on 8 eBay marketplaces, supports sold-date range, condition, price and buying-format filters. Export title, sold price, sold date, seller, shipping and more as JSON/CSV/Excel.",
        "version": "0.1",
        "x-build-id": "eBtesSHvl8v9bQAc3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/convertfleetdotonline~ebay-sold-listings-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-convertfleetdotonline-ebay-sold-listings-search",
                "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/convertfleetdotonline~ebay-sold-listings-search/runs": {
            "post": {
                "operationId": "runs-sync-convertfleetdotonline-ebay-sold-listings-search",
                "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/convertfleetdotonline~ebay-sold-listings-search/run-sync": {
            "post": {
                "operationId": "run-sync-convertfleetdotonline-ebay-sold-listings-search",
                "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": [
                    "keywords"
                ],
                "properties": {
                    "keywords": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "One search query per line, exactly as you would type it into the eBay search box (e.g. <code>iphone 13 128gb unlocked</code>). Each keyword is searched separately.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "marketplace": {
                        "title": "Marketplace",
                        "enum": [
                            "ebay.com",
                            "ebay.co.uk",
                            "ebay.de",
                            "ebay.fr",
                            "ebay.it",
                            "ebay.es",
                            "ebay.ca",
                            "ebay.com.au"
                        ],
                        "type": "string",
                        "description": "Which eBay site to search. Prices and sold dates are shown in that site's currency and locale; the actor normalizes them into <code>priceValue</code>, <code>currency</code>, and ISO <code>soldDate</code>.",
                        "default": "ebay.com"
                    },
                    "maxItemsPerKeyword": {
                        "title": "Max results per keyword",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of sold listings to return for each keyword.",
                        "default": 100
                    },
                    "soldFrom": {
                        "title": "Sold after (from date)",
                        "type": "string",
                        "description": "Only keep items sold on or after this date (YYYY-MM-DD). Leave empty for no lower bound. Tip: keep the default sort (<b>Most recently sold</b>) so the actor can stop paginating early once it reaches older sales."
                    },
                    "soldTo": {
                        "title": "Sold before (to date)",
                        "type": "string",
                        "description": "Only keep items sold on or before this date (YYYY-MM-DD). Leave empty for no upper bound."
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "endedRecently",
                            "bestMatch",
                            "priceLowest",
                            "priceHighest"
                        ],
                        "type": "string",
                        "description": "Order in which eBay returns sold listings. <b>Most recently sold</b> is recommended, especially with date filters.",
                        "default": "endedRecently"
                    },
                    "condition": {
                        "title": "Item condition",
                        "enum": [
                            "any",
                            "new",
                            "openBox",
                            "refurbished",
                            "used",
                            "forParts"
                        ],
                        "type": "string",
                        "description": "Only include items in this condition.",
                        "default": "any"
                    },
                    "buyingFormat": {
                        "title": "Buying format",
                        "enum": [
                            "any",
                            "auction",
                            "buyItNow",
                            "bestOffer"
                        ],
                        "type": "string",
                        "description": "Only include items sold through this format.",
                        "default": "any"
                    },
                    "minPrice": {
                        "title": "Min price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum sold price, in the marketplace currency (whole units, e.g. 50)."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum sold price, in the marketplace currency (whole units, e.g. 500)."
                    },
                    "categoryId": {
                        "title": "eBay category ID",
                        "type": "integer",
                        "description": "Optional numeric eBay category ID to restrict the search (the <code>_sacat</code> URL parameter, e.g. <code>9355</code> for Cell Phones & Smartphones)."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxies used for eBay requests. Apify automatic proxies work in most cases; if you see persistent bot challenges in the log, switch to residential proxies.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
