eBay Sold Listings Search
Pricing
from $4.00 / 1,000 results
eBay Sold Listings Search
Get confirmed eBay sold prices — not asking prices. Search by keyword across 8 marketplaces, filter by date range, and export clean structured data for comps, resale pricing, and market research.
Pricing
from $4.00 / 1,000 results
Rating
4.1
(11)
Developer
Caffein Dev
Maintained by CommunityActor stats
38
Bookmarked
1.8K
Total users
402
Monthly active users
8.8 days
Issues response
18 days ago
Last modified
Categories
Share
eBay Sold Listings API (Real Sold Items Only)
Fetch real sold listings from eBay — actual completed sales with final prices. This Actor returns sold items only, not active listings and not completed-but-unsold items.
Built for price analysis, resale tools, market research, and pricing intelligence.
🔎 What This API Provides
This Apify Actor extracts eBay sold listings and returns structured, machine-readable data for each sale:
- Final sold price
- Currency
- Sale end date
- Listing title
- Item URL
- Item ID
✅ Every result represents an item that actually sold ❌ No active listings ❌ No unsold “completed” listings ❌ No estimated or AI-generated prices
⚙️ Input
{"keywords": ["rtx 4080", "rtx 4090"],"categoryId": "58058", // Computers/Tablets & Networking"subcategoryId": "", // optional, overrides categoryId when set"daysToScrape": 30,"count": 100,"ebaySite": "ebay.com","sortOrder": "endedRecently","minPrice": 100,"maxPrice": 500,"itemLocation": "default","itemCondition": "any"}
| Field | Type | Default | Description |
|---|---|---|---|
keywords | string[] | required | 1–6 search terms. Each runs as a separate search with the same filters. Results are tagged with keyword for easy filtering. |
keyword | string | — | Deprecated. Use keywords array instead. Accepted for backward compatibility. |
search | string | — | Deprecated. Alias for keyword. Use keywords array instead. Accepted for backward compatibility with callers that send search. Backslash-escaped quotes (\") in the value are unescaped before the search runs. |
daysToScrape | number | 30 | Days back to scrape (1–90) |
count | number | 100 | Max results per keyword |
categoryId | string | "0" | Main category filter. Use "0" for All Categories. |
subcategoryId | string | "" | Optional subcategory filter. If set, overrides categoryId (maps to _sacat). Displayed as Category -> Subcategory in the input UI. |
ebaySite | string | ebay.com | eBay marketplace (see supported sites) |
sortOrder | string | endedRecently | endedRecently · timeNewlyListed · pricePlusPostageLowest · pricePlusPostageHighest · distanceNearest |
minPrice | number | — | Minimum sold price filter |
maxPrice | number | — | Maximum sold price filter |
itemLocation | string | default | default · domestic · worldwide |
itemCondition | string | any | any · new · used |
Supported eBay Sites
ebay.com · ebay.co.uk · ebay.de · ebay.fr · ebay.it · ebay.es · ebay.ca · ebay.com.au
📤 Output
{"itemId": "306671421088","url": "https://www.ebay.com/itm/306671421088","title": "Apple iPhone 13 Pro Max - 128GB - Unlocked - Cracked Back","condition": "Pre-Owned","conditionId": 3000,"endedAt": "2025-12-22T05:00:00.000Z","soldPrice": "215","soldCurrency": "USD","listingType": "buy_it_now","isBestOfferAccepted": false,"shippingPrice": "6.20","shippingCurrency": "USD","shippingType": "paid","totalPrice": "221.20","thumbnailUrl": "https://i.ebayimg.com/thumbs/images/g/abc123/s-l500.jpg","sellerUsername": "example_seller","sellerPositivePercent": 99.2,"sellerFeedbackScore": 1842,"sellerType": null,"scrapedAt": "2026-01-19T21:53:17.613Z"}
| Field | Description |
|---|---|
itemId | eBay item ID |
url | Full listing URL |
title | Listing title |
condition | Localized eBay condition label as shown on the search card (e.g. "Pre-Owned" on ebay.com, "Gebraucht" on ebay.de, "Neuf" on ebay.fr, "Nuovo" on ebay.it, "Usado" on ebay.es). null when eBay didn't display one. This is the authoritative field — what the buyer actually saw. |
conditionId | Best-effort numeric eBay condition ID resolved from condition via a static lookup table. null when condition is null or the label isn't in the lookup table (eBay can introduce new or locale-specific labels at any time — always check condition first). Common IDs: 1000 New · 1500 Open box / New Other · 1750 New with defects · 2000–2030 Refurbished tiers (Certified / Excellent / Very Good / Good) · 2500 Seller Refurbished · 2750 Like New · 3000 Used / Pre-Owned · 7000 For parts. Full reference |
categoryId | Category id used for the search (_sacat) |
category | Selected category label from the search page dropdown |
endedAt | Sale completion timestamp (ISO 8601) |
soldPrice | Final transaction price. Note: when isBestOfferAccepted is true, this is the asking price — the actual accepted offer is not disclosed by eBay. |
soldCurrency | Currency code (e.g. USD, GBP) |
listingType | How the item sold: "best_offer_accepted" · "buy_it_now" · "auction" · null (undetermined) |
isBestOfferAccepted | true if sold via an accepted Best Offer. soldPrice is the asking price, not the actual transaction price. |
shippingPrice | Shipping cost (null if not disclosed) |
shippingCurrency | Currency of shipping price |
shippingType | free · paid · pickup · unknown |
totalPrice | soldPrice + shippingPrice when currencies match, otherwise equals soldPrice |
thumbnailUrl | 500px product image URL from i.ebayimg.com. null when only a promo or logo image is available on the search card. |
sellerUsername | Seller username (best-effort) |
sellerPositivePercent | Positive feedback % (best-effort) |
sellerFeedbackScore | Feedback count (best-effort) |
sellerType | "private" or "business" on EU sites (ebay.de, .fr, .it, .es). null on non-EU sites or when the label is unrecognised. |
scrapedAt | Scrape timestamp (ISO 8601) |
👥 Who This API Is For
- Developers building pricing APIs or resale tools
- Data analysts and researchers
- Professional resellers and flippers
- SaaS founders validating secondary market prices
📞 Support & Feedback
For issues, questions, or feature requests, please contact the Actor author via Apify.
Category IDs & Subcategory IDs
Pass a category ID as categoryId (main categories) or subcategoryId (subcategories) in your input. When subcategoryId is set it overrides categoryId — the output always reflects the effective category used.
🔍 Browse & search all category IDs and subcategory IDs →