eBay Search Scraper: Active Listings & Prices, No Login icon

Online shops · Coming soon

eBay Active Listings Search

Search live eBay listings by keyword or category. Get one row per listing with price, condition, seller, shipping and bids. It uses the official eBay Browse API with your own free key.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

itemId237128712651
titleVINTAGE WATCHES SPARES AND REPAIRS ONLY (LOT 59) 12 IN TOTAL, MANY…
price25

How it will work: 3 steps

  1. Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: iphone 13 in Search keywords. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Search active eBay listings by keyword or category on 16 eBay sites and get price, condition, seller feedback, shipping, bids and links as clean rows. The Actor calls the official eBay Browse API with your own free eBay developer keyset: no eBay account login, no browser, no proxies, no blocked pages.

  • price and currency, with the current bid and bid count for auctions;
  • condition, seller username, seller feedback percent and score;
  • buying options (Buy It Now, auction, best offer), shipping cost, delivery window;
  • item location, category, listing start and end time, product ID (ePID);
  • clean listing URL and a large image URL.

Good for

  • You want today's asking prices for a product, not what it sold for.
  • You want eBay data from the official API instead of a page scraper that breaks when eBay changes its pages.
  • You can create a free eBay developer account (5 minutes).

Not a good fit

  • Sold or completed listings. The Browse API only returns active listings. For sold prices, see Related Actors.
  • Full item descriptions, all item specifics or seller contact details.
  • Running without an eBay keyset.

How it works

  • The Actor gets an application token for your keyset (OAuth client credentials).
  • It reads how many Browse API calls your keyset has left today. If none are left, it stops before searching.
  • It runs each search page by page (up to 200 listings per call), drops listings already saved by an earlier search in the same run and writes rows to the Dataset.
  • It writes a RUN_SUMMARY record with counts, quota used, warnings and the stop reason.

Who uses it

Sellers

Check what rivals ask for the same product today.

Deal hunters

Find auctions that end soon, under your price.

Market analysts

Compare prices of one product on the US, UK and German sites.

Price

Prices will be shown after release.

Questions

Do I need an eBay key?

Yes. You make a free eBay developer account and paste your Client ID and Client Secret. Takes about 5 minutes.

Can I get sold prices?

No. The Browse API returns active listings only.

Is there a daily limit?

Yes. eBay gives each keyset 5,000 Browse API calls a day. One call returns up to 200 listings.

Does it need my eBay login?

No. It uses your API keys, not your account password.

Do I need an eBay account or a paid plan?

You need a free eBay developer account to create the keyset. You do not log in to eBay in the Actor, and eBay does not charge for Browse API calls.

Is my key safe?

The key fields are secret inputs: Apify stores them encrypted, and the Actor sends them only to eBay's token endpoint. They are not written to the log, the Dataset or the run summary.

Why is seller sometimes null?

Since September 2025 eBay hides US seller usernames from some API developers. The field is then null; feedback percent and score are still filled when eBay gives them.

Why did a search return fewer rows than maxItems?

eBay has fewer active listings for those filters, or the search hit eBay's 10,000-result cap. The run summary shows eBay's total and a moreAvailable flag for each search.

Details

Step by step on Apify
  1. Paste your Client ID and Client Secret.
  2. Keep the prefilled search (iphone 13, 10 listings) or type your own keywords.
  3. Click Start. Rows appear in the Output tab in a few seconds.
Use cases
  • Competitor prices. Search your product with condition: "new" and sort: "priceLowToHigh" to see the cheapest live offers with shipping.
  • Deal finding. Use priceMax and buyingFormat: "auction" with sort: "endingSoonest" to see auctions that end soon.
  • Category feed. Pass only categoryIds to list items in an eBay category without a keyword.
  • Cross-site comparison. Run the same keywords on EBAY_US, EBAY_GB and EBAY_DE and compare price and currency.
  • Repricing input. Schedule a daily run and send itemId, price and shippingCost to your sheet or database.
Tips for better results
  • Sort by price low to high to see the cheapest live offers.
  • Turn on the title filter so rows must contain your keywords.
  • Run the same keywords on more than one eBay site to compare prices.
Limits and good to know
  • 10,000 listings per search. eBay's Browse API serves only the first 10,000 results of one search (and a few listings repeat on neighbouring pages, so expect about 9,500 unique). For more, split the search by category, price range or more specific keywords
  • Up to 100 searches per run (50 keywords × 10 categories at most)
  • Daily quota of your keyset: 5,000 calls; each call is up to 200 listings. eBay can raise it through its Application Growth Check
  • Speed: calls are sequential to save your quota. About 3–4 seconds per 200 listings: 1,000 listings in about 15 seconds, 5 searches × 10,000 in about 13 minutes (measured). The default run timeout is 30 minutes; the Actor stops 15 seconds before it, keeps saved rows and ends Succeeded with PARTIAL / TIME_LIMIT. If the timeout is so short that nothing was saved yet, the run fails with the same reason
  • Active listings only. No sold listings, no full descriptions, no seller contacts
  • eBay's terms forbid using this data for average selling prices or aggregated seller data; the Actor does not compute them

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "status": "ok",
  "itemId": "237128712651",
  "title": "VINTAGE WATCHES SPARES AND REPAIRS ONLY (LOT 59) 12 IN TOTAL, MANY MORE TO LIST",
  "price": 25,
  "currency": "GBP",
  "priceType": "current_bid",
  "currentBid": 25,
  "bidCount": 6,
  "condition": "Pre-owned - Fair",
  "seller": "example_seller",
  "sellerFeedbackPercent": 100,
  "sellerFeedbackScore": 3326,
  "buyingOptions": ["AUCTION"],
  "shippingCost": 6.2,
  "shippingCostType": "FIXED",
  "location": "NN16***, GB",
  "categoryId": "31387",
  "categoryName": "Wristwatches",
  "listedAt": "2026-10-17T10:47:23.000Z",
  "endsAt": "2026-10-22T10:47:23.000Z",
  "url": "https://www.ebay.co.uk/itm/237128712651",
  "image": "https://i.ebayimg.com/images/g/9MAAAeSwojpq00~m/s-l1200.jpg",
  "marketplace": "EBAY_GB",
  "query": "vintage watch",
  "position": 2,
  "fetchedAt": "2026-10-22T10:46:39.419Z"
}
Data fields (40)
FieldTypeMeaning
statusstringok = an active listing (paid result); no_results = this search found no active listings (small empty-result fee); api_key_required = free notice when the Client ID or Client Secret is missing.
itemIdstringeBay item number, as in ebay.com/itm/<itemId>.
browseItemIdstringBrowse API item id (v1|<item number>|<variation>), for eBay getItem calls.
titlestringListing title.
pricenumberBuy It Now price, or the current bid of an auction that has no Buy It Now price (see priceType).
currencystringCurrency of price, e.g. USD, GBP or EUR.
priceTypestringfixed = Buy It Now price; current_bid = highest bid so far.
currentBidnumberAuctions only: current highest bid.
bidCountintegerAuctions only: number of bids.
originalPricenumberPrice before the seller's markdown, when eBay shows a discount.
discountPercentnumberSeller's markdown in percent, when eBay shows a discount.
conditionstringCondition as eBay shows it on that site, e.g. New, Used, Good - Refurbished, Gebraucht.
conditionIdstringeBay condition id: 1000 New, 1500 Open box, 2010–2030 Refurbished, 3000 Used, 7000 For parts.
sellerstringSeller username.
sellerFeedbackPercentnumberSeller positive feedback, 0–100.
sellerFeedbackScoreintegerSeller feedback score.
buyingOptionsarrayFIXED_PRICE (Buy It Now), AUCTION, BEST_OFFER, CLASSIFIED_AD.
shippingCostnumberCheapest shipping cost eBay quotes for the delivery place; 0 = free shipping; null when eBay gives no amount (calculated at checkout or pickup only).
shippingCostTypestringFIXED or CALCULATED.
deliveryFromstringEarliest estimated delivery date (UTC, ISO 8601).
deliveryTostringLatest estimated delivery date (UTC, ISO 8601).
locationstringItem location as eBay shows it in search: masked postal code and country, e.g. 922**, US.
locationCountrystringTwo-letter country code of the item location.
categoryIdstringeBay leaf category id of the listing.
categoryNamestringCategory name, e.g. Cell Phones & Smartphones.
listedAtstringWhen the listing was created (UTC, ISO 8601).
endsAtstringWhen the auction or timed listing ends (UTC, ISO 8601); null for Good 'Til Cancelled listings.
topRatedBuyingExperiencebooleaneBay Top Rated Plus listing.
priorityListingbooleanPromoted (sponsored) listing.
epidstringeBay catalogue product id, when the listing is matched to a product.
itemGroupTypestringSELLER_DEFINED_VARIATIONS when the listing has variations such as sizes or colours.
urlstringListing page on eBay, without search tracking parameters.
imagestringMain listing picture (large size).
marketplacestringeBay site searched, e.g. EBAY_US or EBAY_DE.
querystringSearch keywords that found this row.
categoryFilterstringCategory id the search was limited to, from categoryIds.
positioninteger1-based position in this search's results (in the sort order you chose).
sourcestringAlways ebay-browse-api: the official eBay Browse API.
fetchedAtstringWhen this row was fetched (UTC, ISO 8601).
messagestringWhy a row is no_results or a key notice; null for listings.
Input settings (15)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
eBay App ID (Client ID)clientIdstring
eBay Cert ID (Client Secret)clientSecretstring
Search keywordsqueriesarray["iphone 13"]
Category IDscategoryIdsarray
eBay sitemarketplacestring"EBAY_US"
Max listings per searchmaxItemsinteger10
Sort bysortstring"bestMatch"
Every keyword in the titletitleMustMatchbooleanfalse
Min pricepriceMininteger
Max pricepriceMaxinteger
Conditionconditionstring"any"
Buying formatbuyingFormatstring"all"
Item located initemLocationCountrystring
Ship to countrydeliveryCountrystring
Ship to postal codedeliveryPostalCodestring

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure