eBay Sold Listings Search avatar

eBay Sold Listings Search

Pricing

from $4.00 / 1,000 results

Go to Apify Store
eBay Sold Listings Search

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

3.9

(12)

Developer

Caffein Dev

Caffein Dev

Maintained by Community

Actor stats

40

Bookmarked

2K

Total users

409

Monthly active users

6.8 days

Issues response

4 hours ago

Last modified

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"
}
FieldTypeDefaultDescription
keywordsstring[]required1–6 search terms. Each runs as a separate search with the same filters. Results are tagged with keyword for easy filtering.
keywordstringDeprecated. Use keywords array instead. Accepted for backward compatibility.
searchstringDeprecated. 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.
daysToScrapenumber30Days back to scrape (1–90)
countnumber100Max results per keyword
categoryIdstring"0"Main category filter. Use "0" for All Categories.
subcategoryIdstring""Optional subcategory filter. If set, overrides categoryId (maps to _sacat). Displayed as Category -> Subcategory in the input UI.
ebaySitestringebay.comeBay marketplace (see supported sites)
sortOrderstringendedRecentlyendedRecently · timeNewlyListed · pricePlusPostageLowest · pricePlusPostageHighest · distanceNearest
minPricenumberMinimum sold price filter
maxPricenumberMaximum sold price filter
itemLocationstringdefaultdefault · domestic · worldwide
itemConditionstringanyany · new · used
includeCompletedListingsbooleantrueInclude eBay's Completed Listings filter. Enables accurate Best Offer Accepted detection (listingType, isBestOfferAccepted). Set to false for strictly sold-only results — BOA items will show as buy_it_now. See Completed Listings & Best Offer Accepted Detection.

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,
"buyingFormat": "buyItNow",
"bidCount": null,
"shippingPrice": "6.20",
"shippingCurrency": "USD",
"shippingType": "paid",
"totalPrice": "221.20",
"thumbnailUrl": "https://i.ebayimg.com/thumbs/images/g/abc123/s-l500.jpg",
"fullResThumbnailUrl": "https://i.ebayimg.com/images/g/abc123/s-l1600.jpg",
"sellerUsername": "example_seller",
"sellerPositivePercent": 99.2,
"sellerFeedbackScore": 1842,
"sellerType": null,
"scrapedAt": "2026-01-19T21:53:17.613Z"
}
FieldDescription
itemIdeBay item ID
urlFull listing URL
titleListing title
conditionLocalized 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.
conditionIdBest-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 · 20002030 Refurbished tiers (Certified / Excellent / Very Good / Good) · 2500 Seller Refurbished · 2750 Like New · 3000 Used / Pre-Owned · 7000 For parts. Full reference
categoryIdCategory id used for the search (_sacat)
categorySelected category label from the search page dropdown
endedAtSale completion timestamp (ISO 8601)
soldPriceFinal transaction price. Note: when isBestOfferAccepted is true, this is the asking price — the actual accepted offer is not disclosed by eBay.
soldCurrencyCurrency code (e.g. USD, GBP)
listingTypeHow the item sold: "best_offer_accepted" · "buy_it_now" · "auction" · null (undetermined)
isBestOfferAcceptedtrue if sold via an accepted Best Offer. soldPrice is the asking price, not the actual transaction price.
buyingFormatRicher buying-format enum: "auction" (bids only) · "buyItNow" (fixed price or best-offer) · "auctionWithBIN" (auction with a Buy It Now option) · null (undetermined)
bidCountNumber of bids received. null for fixed-price listings or when not shown.
shippingPriceShipping cost (null if not disclosed)
shippingCurrencyCurrency of shipping price
shippingTypefree · paid · pickup · unknown
totalPricesoldPrice + shippingPrice when currencies match, otherwise equals soldPrice
thumbnailUrl500px product image URL from i.ebayimg.com. null when only a promo or logo image is available on the search card.
fullResThumbnailUrlHigh-res (1600px) product image URL, derived from thumbnailUrl. null when no product image is available. Best-effort — may 404 for listings where eBay only hosts a low-res image.
sellerUsernameSeller username (best-effort)
sellerPositivePercentPositive feedback % (best-effort)
sellerFeedbackScoreFeedback 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.
scrapedAtScrape timestamp (ISO 8601)

🏷️ Completed Listings & Best Offer Accepted Detection

The includeCompletedListings input (default true) controls whether eBay's Completed Listings filter (LH_Complete=1) is sent alongside the always-present Sold filter (LH_Sold=1).

All results are genuinely sold items regardless of this setting — the LH_Sold=1 filter is always applied, so the actor never returns active or completed-but-unsold listings. This flag does not affect the sold/unsold guarantee; it only affects how accurately the actor can classify how an item sold.

Why the flag exists — an eBay HTML limitation

This is a limitation of eBay's own HTML, not a choice the actor makes. eBay only renders the signals needed to identify a Best Offer Accepted sale when the Completed Listings filter is active:

Signal on the search cardincludeCompletedListings: true (LH_Complete=1)includeCompletedListings: false (LH_Complete=0)
Best-offer text"Best offer accepted""or Best Offer" (or nothing)
Price CSS classstrikethroughbold
BOA detectable?✅ Yes❌ No

When LH_Complete=0, eBay strips the "Best offer accepted" text and the strikethrough price styling from the cards. Without those signals, a Best Offer Accepted sale is indistinguishable in the HTML from an ordinary Buy It Now sale — the actor cannot accurately detect Best Offer Accepted status for each listing.

What this means for the output

  • includeCompletedListings: true (default): Best Offer Accepted sales are detected. listingType can be "best_offer_accepted" and isBestOfferAccepted can be true. (Note: even here, eBay does not disclose the actual accepted offer amount — soldPrice reflects the asking price for BOA items.)
  • includeCompletedListings: false: BOA sales are reported as listingType: "buy_it_now" with isBestOfferAccepted: false. You still get every sold item and its sold price — you just lose the ability to know whether a given sale went through as an accepted Best Offer.

Set includeCompletedListings: false only if you want the search filter to match eBay's plain "Sold" view and don't rely on Best Offer Accepted classification.


👥 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 →