eBay Search Results Scraper
Pricing
from $1.50 / 1,000 products
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
Maintained by CommunityActor stats
1
Bookmarked
40
Total users
8
Monthly active users
4 days ago
Last modified
Categories
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
SUMMARYrecord 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?
| Goal | How |
|---|---|
| Monitor prices | Schedule a search and compare price, shippingPrice and couponPrice per listingId between runs. |
| Find auctions ending soon | Set listingType: "auction" and sort: "ending_soonest", then read bidCount and auctionEndTime. |
| Research sellers | Compare sellerName, sellerFeedbackScore, sellerFeedbackPercent and sellerIsStore across a niche. |
| Source products abroad | Run the same search on several marketplaces; each returns its own currency. |
| Reuse your eBay filters | Set filters on the eBay website, copy the URL and paste it into eBay search URLs. |
| Keep accessories out | Add excludeKeywords such as case, charger or box only. |
Quick start
- Click Try for free and sign in to Apify.
- Paste an eBay search URL into eBay search URLs, or type a keyword into Keyword queries.
- For a first run, set Maximum results per search to
20. - 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.
| Group | Fields |
|---|---|
| Listing | listingId, variationId, title, url, image, condition, categoryId, categoryName, location, hasVariations, sponsored, authenticityGuarantee |
| Price | price, currency, priceText, originalPrice, discountText, couponPrice, couponText |
| Shipping | shippingPrice, shippingText, deliveryText, freeReturns |
| Format | listingType, buyItNowAvailable, bestOfferAvailable, bidCount, auctionEndTime, quantityRemaining, quantitySold, watchCount |
| Seller | sellerName, sellerFeedbackScore, sellerFeedbackPercent, sellerIsStore, sellerText |
| Product | rating, reviewCount |
| Search | query, 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 case | Frequency | Cron expression |
|---|---|---|
| Price monitoring | Daily | 0 6 * * * |
| Auctions ending today | Twice a day | 0 8,18 * * * |
| New listings in a niche | Every hour | 0 * * * * |
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
| Field | Type | Default | Effect |
|---|---|---|---|
startUrls | Array | Empty | eBay search URLs from any supported site (see below). Each must contain _nkw. The URL's site and filters are used. |
queries | Array of strings | Empty | Keyword searches. Provide startUrls, queries, or both. |
country | String | "ebay.com" | Marketplace for keyword searches. |
condition | String | "all" | Keyword searches: "all", "new", "used", "refurbished" or "for_parts". |
listingType | String | "all" | Keyword searches: "all", "auction" or "buy_it_now". |
sort | String | "best_match" | Keyword searches: "best_match", "ending_soonest", "newly_listed", "price_asc" or "price_desc" (price sorts include postage). |
categoryId | String | Empty | Keyword searches: eBay category ID, the number after _sacat= in a search URL. |
minPrice/maxPrice | Number | Empty | Keyword searches: price range in the marketplace currency. |
excludeKeywords | Array of strings | Empty | All 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). |
maxItems | Integer | 100 | Maximum listings saved per URL or keyword. |
delaySecs | Number | 1 | Seconds to wait between page requests. |
proxyConfiguration | Object | No proxy | Optional. 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
priceis 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.shippingPriceis0for free shipping (including cards that only say "Free delivery in 2-4 days") andnullwhen eBay doesn't show a cost. eBay often shows "Postage not specified" for domestic UK and EU listings in search results.couponPriceis the price after the coupon shown on the card. Coupons may need a code or have conditions on eBay.listingTypeisauctionorbuy_it_now. Auctions with a Buy It Now option havebuyItNowAvailable: true.- Return policies: search results only show free returns (
freeReturns). Other return terms are on the item page, which this actor doesn't open. categoryNameis filled when the category appears in eBay's category list for the search.categoryIdis 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.
Is it legal to scrape eBay?
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:
| Event | Price per 1,000 results | Charged when |
|---|---|---|
product | $1.50 to $3, by Apify plan | A 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.