eBay Search Results Scraper avatar

eBay Search Results Scraper

Pricing

from $1.50 / 1,000 products

Go to Apify Store
eBay Search Results Scraper

eBay Search Results Scraper

⚡ Scrape eBay search engine results, categories, or entire stores. Extract listing titles, prices, images, URLs, and more. Perfect for market research, price tracking, automation etc.

Pricing

from $1.50 / 1,000 products

Rating

5.0

(1)

Developer

Epic Scrapers

Epic Scrapers

Maintained by Community

Actor stats

1

Bookmarked

40

Total users

8

Monthly active users

4 days ago

Last modified

Share

eBay Search Results Scraper: live eBay listings from 17 marketplaces, from keywords or any eBay search URL

eBay Search Results Scraper turns eBay searches into a spreadsheet of live listings: price, shipping, condition, auction bids and end time, coupons, seller feedback, free returns and more. Paste a search URL from any of 17 eBay sites with your filters already set, or type keywords. Use it for price monitoring, product research, competitor and seller research, or sourcing.

  • 17 marketplaces, URLs included. US, UK, Germany, France, Italy, Spain, Canada, Australia, Netherlands, Austria, Switzerland, Ireland, Poland, Hong Kong, Malaysia, Philippines and Singapore. Each one was tested with a live run. A search URL from ebay.de runs on ebay.de, with its filters.
  • Never charged for a block. If eBay blocks the requests, the run fails with a clear message instead of "succeeding" with an empty dataset. You pay only for listings that are saved.
  • Only real matches. When eBay has no exact matches, it fills the page with "results matching fewer words". The actor skips those, so you don't pay for listings that don't match your search.
  • Prices in the marketplace's currency, whatever the proxy location.
  • A run summary you can check. The SUMMARY record shows, for every search, eBay's advertised total, pages read, listings saved, listings filtered and why, and why the search stopped.

Scope: This actor returns live listings that are for sale now. For completed sales and sold prices, use eBay Sold Listings API.

What can you do with eBay Search Results Scraper?

GoalHow
Monitor pricesSchedule a search and compare price, shippingPrice and couponPrice per listingId between runs.
Find auctions ending soonSet listingType: "auction" and sort: "ending_soonest", then read bidCount and auctionEndTime.
Research sellersCompare sellerName, sellerFeedbackScore, sellerFeedbackPercent and sellerIsStore across a niche.
Source products abroadRun the same search on several marketplaces; each returns its own currency.
Reuse your eBay filtersSet filters on the eBay website, copy the URL and paste it into eBay search URLs.
Keep accessories outAdd excludeKeywords such as case, charger or box only.

Quick start

  1. Click Try for free and sign in to Apify.
  2. Paste an eBay search URL into eBay search URLs, or type a keyword into Keyword queries.
  3. For a first run, set Maximum results per search to 20.
  4. Click Start. When the run finishes, open the Output tab and export the data.
{
"startUrls": [{ "url": "https://www.ebay.co.uk/sch/i.html?_nkw=nintendo+switch+oled&LH_PrefLoc=1&LH_Auction=1" }],
"maxItems": 20
}

What data can you extract?

Every row is one listing found by one search.

GroupFields
ListinglistingId, variationId, title, url, image, condition, categoryId, categoryName, location, hasVariations, sponsored, authenticityGuarantee
Priceprice, currency, priceText, originalPrice, discountText, couponPrice, couponText
ShippingshippingPrice, shippingText, deliveryText, freeReturns
FormatlistingType, buyItNowAvailable, bestOfferAvailable, bidCount, auctionEndTime, quantityRemaining, quantitySold, watchCount
SellersellerName, sellerFeedbackScore, sellerFeedbackPercent, sellerIsStore, sellerText
Productrating, reviewCount
Searchquery, site

The run also saves a SUMMARY record to the key-value store, with one entry per search: advertisedTotal (eBay's result count), pagesFetched, itemsSeen, itemsSaved, filtered (excludedKeyword, duplicate, notMatchingQuery), stoppedBecause (max_items_reached, no_more_pages, no_results, ebay_pagination_cap, blocked or charge_limit_reached) and ebayQuery, the query sent to eBay.

Track listings over time with scheduled runs

1. Save your input as a task

Open the actor, set your URLs or keywords, then click Save as a new task.

2. Schedule the task

In Apify Console, go to Schedules, click Create new, choose how often to run, and add your task. See Schedules and How to create a schedule.

Watch how to schedule an Actor:

Use caseFrequencyCron expression
Price monitoringDaily0 6 * * *
Auctions ending todayTwice a day0 8,18 * * *
New listings in a nicheEvery hour0 * * * *

3. Send the results to a spreadsheet

Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive:

4. Compare runs

Join runs on listingId. Price changes, new listings (IDs seen for the first time) and listings that disappeared (sold or ended) fall out of a simple comparison.

Input reference

FieldTypeDefaultEffect
startUrlsArrayEmptyeBay search URLs from any supported site (see below). Each must contain _nkw. The URL's site and filters are used.
queriesArray of stringsEmptyKeyword searches. Provide startUrls, queries, or both.
countryString"ebay.com"Marketplace for keyword searches.
conditionString"all"Keyword searches: "all", "new", "used", "refurbished" or "for_parts".
listingTypeString"all"Keyword searches: "all", "auction" or "buy_it_now".
sortString"best_match"Keyword searches: "best_match", "ending_soonest", "newly_listed", "price_asc" or "price_desc" (price sorts include postage).
categoryIdStringEmptyKeyword searches: eBay category ID, the number after _sacat= in a search URL.
minPrice/maxPriceNumberEmptyKeyword searches: price range in the marketplace currency.
excludeKeywordsArray of stringsEmptyAll searches. Single words are sent to eBay as minus terms (-case), and every entry is also removed from titles after the search (whole words, case- and accent-insensitive).
maxItemsInteger100Maximum listings saved per URL or keyword.
delaySecsNumber1Seconds to wait between page requests.
proxyConfigurationObjectNo proxyOptional. With Apify Proxy and no country set, each marketplace uses a proxy in its own country, and blocked requests are retried on a new IP.

Supported marketplaces and URLs

ebay.com (USD), ebay.co.uk (GBP), ebay.de (EUR), ebay.fr (EUR), ebay.it (EUR), ebay.es (EUR), ebay.ca (CAD), ebay.com.au (AUD), ebay.nl (EUR), ebay.at (EUR), ebay.ch (CHF), ebay.ie (EUR), ebay.pl (PLN), ebay.com.hk (HKD), ebay.com.my (MYR), ebay.ph (PHP) and ebay.com.sg (SGD). All 17 were tested with live searches in October 2026. URLs may start with www., m. or the bare domain, and must use HTTPS.

URL filters checked with live searches: _nkw, _sacat (category), _sop (sort), _ipg (results per page), _udlo/_udhi (price), _ssn (seller), LH_BIN, LH_Auction, LH_ItemCondition, LH_PrefLoc (item location), LH_FS (free shipping), LH_FR (free returns), LH_TitleDesc (search descriptions), LH_Sold/LH_Complete, LH_SellerType, and item-specific filters such as Brand=LEGO. Tracking parameters such as _from, _trksid and rt are dropped. Other parameters are forwarded as they are, and the log warns that they weren't verified.

Ready-to-run examples

Auctions ending soon in the UK, UK sellers only

{
"startUrls": [
{ "url": "https://www.ebay.co.uk/sch/i.html?_nkw=nintendo+switch+oled&LH_PrefLoc=1&LH_Auction=1&_sop=1" }
],
"maxItems": 50
}

Cheapest new Buy It Now offers, accessories excluded

{
"queries": ["sony wh-1000xm5"],
"country": "ebay.de",
"condition": "new",
"listingType": "buy_it_now",
"sort": "price_asc",
"excludeKeywords": ["case", "cushion", "ear pads", "cable"],
"maxItems": 100
}

Same product across four markets

{
"startUrls": [
{ "url": "https://www.ebay.com/sch/i.html?_nkw=lego+75192" },
{ "url": "https://www.ebay.co.uk/sch/i.html?_nkw=lego+75192" },
{ "url": "https://www.ebay.de/sch/i.html?_nkw=lego+75192" },
{ "url": "https://www.ebay.com.au/sch/i.html?_nkw=lego+75192" }
],
"maxItems": 50
}

Analyze the results with ChatGPT or Claude

Export the dataset as CSV and attach it to a chat. Some prompts to start with:

Best deals. "These are eBay listings for one product. Rank the 10 best offers by price + shippingPrice (use couponPrice when set), and skip sellers below 98% sellerFeedbackPercent."

Auction watchlist. "List the auctions (listingType = auction) ending in the next 24 hours by auctionEndTime, with price and bidCount."

Seller landscape. "Group listings by sellerName. Show each seller's number of listings, median price and feedback, and point out the eBay Stores."

Output

Results go to the run's default dataset. Use the views Overview, Auctions & offers or Sellers & returns, or export everything as JSON, CSV, Excel, XML or HTML.

This is a real row from a ebay.co.uk auction search URL on October 3, 2026:

{
"query": "lego star wars 75192",
"listingId": "189020346296",
"variationId": null,
"title": "LEGO Star Wars:The Mandalorian (75292) OVP, Alle Figuren,Alle Steine , Anleitung",
"url": "https://www.ebay.co.uk/itm/189020346296?_skw=lego+star+wars+75192&epid=13042987983&hash=item2c027d97b8%3Ag%3A-S4AAeSwIqBqvWFJ&LH_Auction=1",
"image": "https://i.ebayimg.com/images/g/-S4AAeSwIqBqvWFJ/s-l225.jpg",
"condition": "Pre-owned",
"price": 127.49,
"currency": "GBP",
"priceText": "£127.49",
"originalPrice": null,
"discountText": null,
"couponPrice": null,
"couponText": null,
"shippingText": "+£14.87 delivery",
"shippingPrice": 14.87,
"deliveryText": null,
"location": "from Germany",
"listingType": "auction",
"buyItNowAvailable": false,
"quantityRemaining": 1,
"quantitySold": null,
"watchCount": null,
"bidCount": 0,
"auctionEndTime": "2026-10-03T19:24:48.000Z",
"categoryId": "19006",
"categoryName": "LEGO (R) Complete Sets & Packs",
"sellerText": "pulled-porky (353) 98.4%",
"sellerName": "pulled-porky",
"sellerFeedbackScore": 353,
"sellerFeedbackPercent": 98.4,
"sellerIsStore": false,
"rating": 4.5,
"reviewCount": 6,
"sponsored": false,
"bestOfferAvailable": false,
"hasVariations": false,
"freeReturns": false,
"authenticityGuarantee": false,
"site": "ebay.co.uk"
}

Notes on fields

  • price is the price eBay shows in search results. On ebay.co.uk, ebay.fr and ebay.it this includes eBay's Buyer Protection fee for items from private sellers. For sold prices with the fee removed, use eBay Sold Listings API.
  • shippingPrice is 0 for free shipping (including cards that only say "Free delivery in 2-4 days") and null when eBay doesn't show a cost. eBay often shows "Postage not specified" for domestic UK and EU listings in search results.
  • couponPrice is the price after the coupon shown on the card. Coupons may need a code or have conditions on eBay.
  • listingType is auction or buy_it_now. Auctions with a Buy It Now option have buyItNowAvailable: true.
  • Return policies: search results only show free returns (freeReturns). Other return terms are on the item page, which this actor doesn't open.
  • categoryName is filled when the category appears in eBay's category list for the search. categoryId is filled more often.
  • Each listing is saved once per search. The same listing can appear in two different searches.
  • Missing values are null.

FAQ

Why did my run fail?

The actor fails on purpose when eBay blocks its requests (HTTP 403 or 429, rejected tokens, a login wall or an unexpected response) and nothing could be saved. The status message and log give the reason, and SUMMARY shows stoppedBecause: "blocked". Nothing was saved, so nothing was charged for results. Try again later, or enable Apify Proxy in Proxy. If some searches worked before the block, the run finishes, the status message lists the blocked searches, and you pay only for saved listings.

Why did I get no results or fewer than eBay's total?

Check SUMMARY. no_results means eBay has no exact matches; the "results matching fewer words" it showed instead were skipped (notMatchingQuery). Fewer records than advertisedTotal usually come from maxItems, excludeKeywords or duplicates, and each is counted under filtered.

Which filters work in search URLs?

See Supported marketplaces and URLs. Unverified parameters are still forwarded, and the log tells you which ones.

Do I need proxies, an eBay account or an API key?

No. The actor works without a proxy. The Proxy option is there for retries on a new IP if eBay blocks requests.

The actor collects publicly visible listing data. You are responsible for how you use it, including eBay's terms and laws such as GDPR.

Cost

This actor uses pay-per-event pricing. You pay for each listing saved to the dataset:

EventPrice per 1,000 resultsCharged when
product$1.50 to $3, by Apify planA listing is saved to the default dataset.

Apify also charges its standard tiny "Actor start" event ($0.00005) when a run starts. A run that eBay blocks saves nothing, so it costs nothing for results. Skipped listings ("fewer words" fallbacks, excluded keywords, duplicates) aren't saved or charged, and neither is the SUMMARY record. With Apify Proxy enabled, proxy traffic is billed to your account as usual. Set a maximum cost per run in the run options; the actor stops cleanly when it's reached. The Pricing tab always shows current prices.

Use through the Apify API

curl "https://api.apify.com/v2/acts/epicscrapers~ebay-search-results-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-X POST \
-H "Content-Type: application/json" \
-d '{"queries": ["iphone 15"], "country": "ebay.co.uk", "maxItems": 50}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('epicscrapers/ebay-search-results-scraper').call({
startUrls: [{ url: 'https://www.ebay.de/sch/i.html?_nkw=iphone+15&LH_BIN=1' }],
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

For a local run, save the input in storage/key_value_stores/default/INPUT.json and run apify run.

Responsible use

Use this actor only for lawful purposes. Follow eBay's terms, applicable laws and data protection rules. Don't collect or use personal data without a lawful reason.

Support

Report problems or request features in the Issues tab. Include the run ID, the input and what you expected. The SUMMARY record usually shows what happened. Don't include passwords or tokens.

This actor is not affiliated with or endorsed by eBay Inc. "eBay" is a trademark of eBay Inc.