# eBay Sold Listings Scraper: Real Sold Prices and Dates

> eBay sold listings scraper: real sold price, sale date, shipping, condition and bids by keyword on 8 eBay sites. Uses your eBay session or API key.

URL: https://cliqtomedia.com/actors/ebay-sold-listings/

Category: E-commerce & prices · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/ebay-sold-listings?fpr=cliqto

Search eBay sold and completed listings by keyword. You see what items really sold for, and when. eBay shows this only to signed-in users. So you use your own session or API key.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `iphone 13` in Search queries. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Get **eBay sold and completed listings** by keyword: the real sold price, sale date, shipping, condition, bids, listing type, photo and item link, from 8 eBay sites. eBay shows sold results only to signed-in users, so you choose the access: **your own eBay session** (cookies from your browser) or **your own key from a sold-data API**.



### Good for

- Resellers and flippers: check what an item really sold for before you buy or list it.
- Price research and appraisal: collect recent sold prices for a model, with condition and date.
- Market analysts: compare auction and Buy It Now prices, or watch how prices change week by week with a schedule.

### Not a good fit

- Only sold and completed listings. For active listings use eBay search or another Actor.
- eBay shows mostly the last 90 days of sales; a few older sales can appear. You cannot ask for older periods.
- With your eBay session, the seller name is not shown on eBay's sold result cards, so `seller` is `null`. Paid shipping is often not shown either; then `shipping` is `null` (it is `0` for free shipping). Some API sources return them.
- We tested your eBay session live on ebay.com, and API keys live on ebay.com, ebay.co.uk and ebay.de. The other sites use the same page format but were not tested live with a session.
- For an accepted best offer, eBay hides the real amount. The row shows the listed price and `priceType` = `best_offer_listed`.
- The field names are this Actor's own. They are not the same as other eBay sold Actors, so check your integration after you switch.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.005 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Sold listing saved | $0.0036 (from $0.00225 on paid Apify plans) | One sold eBay listing saved to the dataset. |
| eBay results page read | $0.02 | One page of eBay sold search results (up to 240 listings) read with your eBay session, even when your filters keep none of them. Blocked or failed requests are not charged. |
| API results page read | $0.005 | One page of sold results read from the API service of your own key, even when your filters keep none of them. Failed requests are not charged. |

- One sold listing: about $0.0086.
- 1,000 sold listings: about $3.60.
- Every day 100 sold listings, for 30 days: about $10.95 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/ebay-sold-listings?fpr=cliqto

## Questions

### Do I need an eBay account?

Yes, or a key from a sold-data API. eBay shows sold results only to signed-in users.

### How far back does the data go?

Mostly the last 90 days. You cannot ask for older periods.

### Why is seller or shipping empty?

eBay hides them on sold cards. Some API sources return them.

### What about accepted best offers?

eBay hides the real amount. The row shows the listed price and marks it.

### How fresh and complete is the data?

Rows come live from eBay (or the API) at run time, mostly newest sales first (eBay's own sort). eBay keeps mostly 90 days of sales and shows at most about 2000 results per search; use narrower words or filters for more.

### Why do I see other models (for example iPhone 12) for "iphone 13"?

eBay's own search also returns related items. Turn on `strictTitleMatch` to keep only titles with every word.

## Data fields

- `itemId` (string): eBay item number (the digits in the /itm/ link).
- `title` (string): Listing title.
- `url` (string): Item page on the chosen eBay site.
- `soldPrice` (number): Sale price in `currency`, without shipping. For a variation listing it is the lowest price of the range; for an accepted best offer it is the listed price (eBay hides the accepted amount).
- `soldPriceMax` (number): Highest price when eBay shows a price range for a multi-variation listing; otherwise null.
- `priceType` (string): sold = the price paid; range = variation listing (soldPrice..soldPriceMax); best_offer_listed = a best offer was accepted below this listed price.
- `currency` (string): ISO currency code, e.g. USD, GBP, EUR.
- `shipping` (number): Shipping cost shown with the sale; 0 for free shipping; null when not shown.
- `totalPrice` (number): soldPrice + shipping when both are known.
- `soldAt` (string): Sale (end) date, YYYY-MM-DD. eBay shows the date, not the time.
- `condition` (string): Condition label as on eBay, e.g. Pre-Owned, Brand New.
- `bids` (integer): Number of bids for auctions; null when not an auction or unknown.
- `listingType` (string): auction, buy_it_now or best_offer.
- `bestOfferAccepted` (boolean): True when eBay marks the sale "Best offer accepted".
- `seller` (string): Seller username when the data source returns it.
- `sellerFeedbackScore` (integer): Seller feedback count when the data source returns it.
- `sellerPositivePercent` (number): Seller positive feedback percent when the data source returns it.
- `location` (string): Item location as shown, e.g. "United States".
- `image` (string): Main photo URL.
- `epid` (string): eBay catalog product id when the listing is linked to one.
- `site` (string): eBay site searched, e.g. com, co.uk, de.
- `query` (string): Search query that found the listing.
- `source` (string): Data source used: ebayCookies, soldcomps, compsniper, esl, trawl or openwebninja.
- `fetchedAt` (string): When the Actor saved the row (ISO 8601).

## Input settings

- `queries` (array, required): Keywords as you would type them on eBay. One search per line, up to 20.
- `site` (string): Which eBay marketplace to search. trawl covers only ebay.com and ebay.co.uk.
- `maxItems` (integer): Stop each query after this many saved listings. Each saved listing is one paid result.
- `soldWithinDays` (integer): Keep only sales from the last N days (eBay shows about 90 days of sales). Empty = everything eBay shows.
- `condition` (string): Filter by item condition.
- `minPrice` (number): Lowest sale price, in the site currency.
- `maxPrice` (number): Highest sale price, in the site currency.
- `buyingFormat` (string): Only auctions or only fixed-price sales.
- `strictTitleMatch` (boolean): eBay also returns loosely related items (e.g. cases for an iPhone search). Turn on to keep only titles that contain every word of the query.
- `dataSource` (string): Where the sold data comes from.
- `ebayCookies` (string): For "My eBay session": export cookies with the Cookie-Editor extension while signed in to the chosen eBay site (Export → JSON) and paste them here. Stored encrypted; the Actor deletes its copy of the input at start and never logs them.
- `userAgent` (string): For "My eBay session": the User-Agent of the same browser. In Chrome open chrome://version and copy the "User agent" line.
- `apiKey` (string): For an API data source: your own key from that service. You pay the service directly; the Actor checks the remaining quota first and never asks for more than is left.

## Step by step on Apify

1. Open the Input tab. The search `iphone 13`, the site `ebay.com (US)` and Max sold listings per query = 20 are already filled in.
2. Keep Data source = My eBay session. Paste your eBay cookies and your browser User-Agent (see the guide). Or pick an API service and paste your API key.
3. Click Start.
4. Open the Output tab. You see the Sold listings table with title, sold price, date, condition and type.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Price check before buying or listing | `queries`: one model, `maxItems`: 50 | sold listings | `soldPrice`, `condition`, `soldAt` | median price in a spreadsheet |
| Auction vs fixed price | `buyingFormat`: `auction` or `buy_it_now` | sold listings | `listingType`, `bids`, `soldPrice` | compare two runs |
| Weekly price tracking | `soldWithinDays`: 7, a schedule | sold listings of the last week | `soldAt`, `soldPrice`, `itemId` | Google Sheets or a webhook |
| Clean list for one exact model | `strictTitleMatch`: true, `minPrice` | only matching titles | `title`, `soldPrice`, `epid` | your pricing tool via API |

## Tips

- Use exact model words. eBay can mix in similar models.
- Look at the median price, not one sale. It is a better guide.
- Set a maximum cost per run. The tool stops and keeps what it saved.

## Limits



- Max cost per run: set it in the run options. The Actor stops before a page or row it cannot pay for, keeps what it saved and ends Succeeded with status `PARTIAL`.
- Failed run: you pay only the start and the pages that were really read before the stop.
- Limits we tested: up to 4000 rows in one run (about 7 minutes) and 20 searches in one run. eBay usually gives about 2000 sold rows per search (9 pages). A run stops reading at 30 minutes and saves a summary.
- Speed: about 240 rows in 5 seconds; 1000 rows in about 30 seconds (1 GB memory). Each new search waits 6–12 seconds.

## Sample result

```json
{
  "itemId": "920040007475",
  "title": "Apple iPhone 13 - 128 GB - Blue (Unlocked)",
  "url": "https://www.ebay.com/itm/920040007475",
  "soldPrice": 230,
  "soldPriceMax": null,
  "priceType": "sold",
  "currency": "USD",
  "shipping": 0,
  "totalPrice": 230,
  "soldAt": "2026-10-14",
  "condition": "Pre-Owned",
  "bids": null,
  "listingType": "buy_it_now",
  "bestOfferAccepted": false,
  "seller": null,
  "sellerFeedbackScore": null,
  "sellerPositivePercent": null,
  "location": "United States",
  "image": "https://i.ebayimg.com/images/g/cokAAeSwholqz9qG/s-l1600.webp",
  "epid": "22049282568",
  "site": "com",
  "query": "iphone 13",
  "source": "ebayCookies",
  "fetchedAt": "2026-10-15T01:11:41.395Z"
}
```

## Use it from code

Actor ID: `cliqtomedia/ebay-sold-listings`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/ebay-sold-listings").call(run_input={
    "queries": [
        "iphone 13"
    ],
    "site": "com"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~ebay-sold-listings/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["iphone 13"], "site": "com"}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/ebay-sold-listings")
result = tool.invoke({"run_input": {"queries": ["iphone 13"], "site": "com"}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Use cases with this tool

- [Track prices in shops and marketplaces](https://cliqtomedia.com/actors/use-cases/price-monitoring/): Track prices and offers in shops and marketplaces. See changes before your customers do.

## Similar tools

- [Historical Exchange Rates & Currency Converter](https://cliqtomedia.com/actors/historical-fx-rates-converter/)
- [AliExpress Scraper: Products, Prices & Reviews, No Login](https://cliqtomedia.com/actors/aliexpress-scraper/)
- [Coles, Woolworths & Aldi Price Scraper - No Login](https://cliqtomedia.com/actors/au-supermarket-prices/)
- [Idealo Price Scraper: All Shop Offers, 6 Countries, No Login](https://cliqtomedia.com/actors/idealo-price-scraper/)
- [Naver Shopping Scraper: Korea Products & Prices](https://cliqtomedia.com/actors/naver-shopping-scraper/)
- [Trendyol Scraper: Products, Prices & Reviews (No login)](https://cliqtomedia.com/actors/trendyol-scraper/)
