SoldComps

Changelog

What's new in SoldComps.

Accurate bestOfferAccepted detection (includeCompleteListing)

  • AddedNew query parameter includeCompleteListing (default true) on all scrape endpoints. It adds LH_Complete=1 to the eBay search, which is the only way eBay renders the explicit "Best offer accepted" text (and locale equivalents) on items where an offer was actually accepted. Without it, eBay shows identical "or Best Offer" text for both accepted-offer and offer-available listings, so bestOfferAccepted was false for nearly all items.
  • ChangedbestOfferAccepted is now accurate by default — existing integrations get the improvement automatically with no code change. It does not change which listings are returned: results remain sold-only (LH_Sold=1 takes precedence). Pass includeCompleteListing=false to restore the previous behavior.

itemLocation field on all search results

  • AddedEvery item in the scrape response now includes itemLocation: the seller's country as shown on the eBay search results page. Localized per site language (e.g., "United States" on ebay.com, "Großbritannien" on ebay.de, "Regno Unito" on ebay.it). null on ebay.co.uk (which does not display location) and on any listing where eBay omits the field. No extra requests — the data was already on the page.

More reliable searches on eBay's updated results layout

  • FixedeBay has been rolling out a new search-results page layout to a portion of traffic. Requests that hit it previously failed with a block error; they now parse correctly and return the full set of sold listings.

Sign in with GitHub

  • AddedSign up and log in with GitHub, alongside Google and email/password. Existing accounts link automatically by verified email.

Listing signals — buying format and bid count

  • AddedbuyingFormat field on each listing: 'auction', 'buy_it_now', or null. Lets you separate auction results from fixed-price sales without parsing the title.
  • AddedbidCount field: number of bids on auction listings. null for fixed-price and Best Offer listings.
  • AddedBoth fields are returned on all eBay sites and supported on EN, DE, FR, IT, and ES locales.

Category-only search — browse eBay categories without a keyword

  • AddedNew GET /v1/scrape/category endpoint: pass a categoryId and get sold listings for the entire category, no keyword required. Useful for tracking hardware, collectibles, or any niche where you want everything sold in a category rather than a specific search term.
  • AddedSupports all the same filters as /v1/scrape — ebaySite, page, count, daysToScrape, sortOrder, minPrice, maxPrice, itemLocation, itemCondition, and sellerType on EU sites.

Full-resolution thumbnail URLs

  • AddedfullResThumbnailUrl field on each listing — same image as thumbnailUrl but at 1600px instead of 500px. Derived automatically; no extra requests.

Max Mode — async auto-paginating sweep

  • AddedNew POST /v1/scrape/max endpoint: submit a keyword once, get back all pages automatically. No more client-side loops, retry logic, or quota math.
  • AddedThree result delivery modes: poll GET /v1/scrape/max/results/:jobId for inline JSON, download a signed CSV URL, or receive an email with the CSV attached.
  • AddedQuota is charged per successfully scraped page (same rate as /v1/scrape), so a 50-page sweep costs 50 requests. Failed pages don't count.
  • AddedDELETE /v1/scrape/max/:jobId cancels a running sweep between pages.

Fewer transient failures on /v1/scrape

  • FixedA class of intermittent upstream errors that previously surfaced as a 500 response are now retried internally and return results normally.

Thumbnail URLs, seller type filter, and EU seller labels

  • AddedthumbnailUrl field on each listing — direct link to the eBay CDN image at 500px. Swap the suffix (s-l500 → s-l1600) for full resolution.
  • AddedsellerType field (private | business | null) on EU listings (ebay.de, ebay.fr, ebay.it, ebay.es). Always null on non-EU sites where eBay doesn't surface this.
  • AddedOptional sellerType filter on /v1/scrape for EU sites — pass sellerType=private or sellerType=business to narrow results.

Pricing v2 — more requests at the same price

  • ChangedMonthly request limits increased across all paid plans at no extra cost. Starter: 500 → 2,000. Growth: 2,000 → 10,000. Scale: 5,000 → 50,000.
  • ChangedFree tier increased from 50 to 100 requests per month.
  • AddedNew high-volume self-serve tiers: 100K ($129/mo), 150K ($179/mo), 250K ($299/mo).

Item condition and condition ID on every listing

  • Addedcondition field: the localized condition label exactly as eBay shows it (e.g. 'Pre-Owned', 'Neu', 'Occasion'). Useful for filtering and display without post-processing.
  • AddedconditionId field: eBay's numeric condition code (1000 = New, 3000 = Used/Pre-Owned, 7000 = For Parts, etc.) derived from the label. null for unknown or unlisted labels.

Fix: stray non-local prices on international eBay sites

  • FixedRequests to non-US eBay sites (ebay.de, ebay.co.uk, ebay.ca, etc.) occasionally returned listings priced in the wrong currency. Results are now verified after parsing and automatically retried when wrong-currency prices are detected.

ePID field — catalog product ID on eligible listings

  • Addedepid field on each listing: eBay's catalog product ID when the listing is matched to a specific product (e.g. iPhone 15 Pro 256GB). null when the seller hasn't matched their listing to a catalog entry.
  • AddedUseful for grouping sold prices by exact product variant rather than relying on keyword matching alone.