eBay Scraper icon

eBay Scraper

Scrape eBay by keyword, category, seller or pasted link across 16 country storefronts. Returns id, title, condition, price, buying format, delivery,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

eBay Scraper at a glance

eBay Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes image, listing, change type (incremental mode), item id and marketplace, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.70 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Web data
Pricing
$1.70 per 1,000 results (Free plan), from $1.20 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
35 options

Scrape eBay by keyword, category, seller or pasted link across 16 country storefronts. Returns id, title, condition, price, buying format, delivery, returns, seller feedback and more, with optional item specifics and full descriptions. Incremental mode tracks changes.

What eBay Scraper can do

  • Sixteen marketplaces, each checked live. United States, United Kingdom, Germany, Australia, Canada, France, Italy, Spain, Ireland, Austria, Switzerland, Netherlands, Poland, Hong Kong, Singapore and Malaysia. Every one was fetched and confirmed to return real, id-bearing listings before it was offered as an option, and prices come back in that storefront's own currency. (The Philippines is not offered: ebay.ph redirects to the United States storefront, so listing it separately would be an option that quietly does something else.)
  • Around 45 fields per listing, including the low and high end of a variant price range, the pre-discount price and computed discount percentage, bid count and time left on auctions, the sold count, the item location, and the seller's positive-feedback percentage and score. Most of that arrives from the result page itself, so it costs nothing extra.
  • Several ways in. A category id, a whole seller's store, or pasted category, seller and item links. Filters use the marketplace's own native filters (condition, buying format, price band, delivery, returns, item location, sort order) so they narrow the result set at the source rather than throwing rows away after you have paid for them.
  • Only real listings. Category pages mix catalog product tiles and promotional carousels into the page; only the listing grid is returned.
  • Incremental mode for recurring runs. Schedule the same search daily and get only what is NEW or UPDATED by default, with the changed field names listed on every updated row; turning on Emit expired also gets you EXPIRED and, on a later run, REAPPEARED. Auction countdowns and walk bookkeeping never count as a change, so a ticking clock or a re-ordered page never bills you for a change that did not happen.
  • Resume a large pull from a previous run id without re-returning or re-charging for listings you already have.

Choose what to collect

These inputs let you configure eBay Scraper - Products, Sellers, Prices & Monitoring. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredChoose 'search' to browse a category or a seller's store with filters, or 'url' to scrape pasted links.

Choices: search, url

sellerUsernamesarrayOnly used when mode = search, ignored in url mode. One or more seller usernames, for example 'examplestore'. Each seller's store (or, when the seller has no store, their profile page) is walked newest first, which covers the whole inventory.
marketplacestringOnly used when mode = search, ignored in url mode where the marketplace is taken from each pasted link's own address. Every option here was checked live and returns real results. Prices come back in that marketplace's own currency.

Choices: com, co.uk, de, com.au, ca, fr, it, es, ie, at, ch, nl, pl, com.hk, com.sg, com.my

categoryIdstringNumeric id of the marketplace category to browse, as it appears in the marketplace's own category links (for example 177 for PC laptops). The filters below are applied by the marketplace itself, except Free returns only, which category pages do not offer. A category name is not accepted: it is ignored with a warning in the run log.
conditionarrayOptional. Keep only listings in these conditions. Selecting several returns listings in any of them. Applied by the marketplace itself, so it narrows the result count at the source.
buyingFormatstringOptional. Keep only listings sold in this format. Applied by the marketplace itself.

Choices: any, buy_it_now, auction, best_offer

minPriceintegerOptional. Keep only listings priced at or above this amount, in the selected marketplace's own currency. Applied by the marketplace itself.
Show 28 more inputs
More input fields
InputWhat it controls
maxPriceintegerOptional. Keep only listings priced at or below this amount, in the selected marketplace's own currency. Applied by the marketplace itself.
freeShippingOnlybooleanOptional. Keep only listings the marketplace flags as free delivery. Applied by the marketplace itself.
freeReturnsOnlybooleanOptional. Keep only listings that offer free returns. Applied by the marketplace itself.
returnsAcceptedOnlybooleanOptional. Keep only listings that accept returns at all, whether or not the buyer pays for them. Applied by the marketplace itself.
itemLocationstringOptional. Keep only listings held in this region, as the marketplace defines it relative to the storefront you selected. Applied by the marketplace itself.

Choices: default, marketplace_country, continent, worldwide

sortBystringThe order the marketplace returns results in. All five are the marketplace's own orderings, applied at the source. Promoted listings can still appear ahead of the requested order.

Choices: best_match, ending_soonest, newly_listed, price_shipping_lowest, price_shipping_highest, distance_nearest

sortOrderstringSame orderings under alternative names; used only when Sort by is left at its default.

Choices: timeNewlyListed, pricePlusPostageLowest, pricePlusPostageHighest, distanceNearest

ebaySitestringSame as Marketplace, used only when Marketplace is empty. Accepts 'ebay.co.uk' or 'co.uk'.
subcategoryIdstringNumeric category id that overrides Category ID when set.
itemConditionstringQuick condition filter, used only when the Condition list is empty.

Choices: any, new, used

conditionIdintegerMarketplace condition id (1000 New, 3000 Used, 2000 Certified refurbished, 7000 For parts...). Overrides Item condition.
aspectFilterobjectItem-specific facets as an object, for example {"Brand": "Nike"}. A list of values is OR-ed.
postalCodestringOrigin for the 'Distance: nearest first' sort.
urlsarrayOnly used when mode = url, ignored in search mode. Mix freely: item pages such as /itm/123456789012 , category pages such as /b/PC-Laptops-Netbooks/177 or /sch/177/i.html , and seller pages such as /str/examplestore , /usr/examplestore or /sch/examplestore/m.html .
minSellerFeedbackPercentintegerOptional. Keep only listings from sellers with at least this positive feedback percentage. Applied to the results in both modes. A seller too new to have a score yet is kept rather than dropped.
fetchDetailsbooleanRead each listing's own item page for the full image gallery, the item specifics table, the category trail, brand, MPN, model, quantity available and sold, payment methods and the seller's full description. One extra request per listing, billed as one Item page event per listing returned. Pasted item links always read their item page, since a pasted link has no result card behind it. If the marketplace refuses some item pages, every affected listing is retried once before the run ends; a listing that still could not be read ships with its result-card fields, carries detailIncomplete: true, and is not billed the item page event.
maxReviewsPerProductintegerHow many of the seller's most recent public feedback comments to attach to each listing as reviews (reviewer, rating, date, text). Off by default (0). Only applies when item pages are read. Limited to 50, one feedback page, because the marketplace shows no more per page. The seller's feedback page is read once per seller per run, and every started block of 10 delivered comments adds one Item page event once per seller, on the first listing of that seller that is returned; later listings from the same seller carry the same comments at no extra charge.
maxItemsintegerMaximum number of listings to return across the whole run. This is the run's cap. Use 0 for unlimited.
maxPagesintegerMaximum number of result pages read per category, seller or link. 0 means no limit set by you, which is the default: the run then stops at Max listings, at the end of the results, when a page returns nothing new, or at a built-in ceiling of 100 pages per category, seller or link, whichever comes first.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large pull without returning or charging for listings already collected there. Use this after an interrupted run. For recurring monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns every matching listing as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED listings. A listing counts as UPDATED when any output field changes (price, bids, shipping, seller, title, condition, sold count and so on), and changedFields names them; scrapedAt, timeLeft, attributes, updatedAt, sourceUrl, pageNumber and searchQuery are excluded because they change on every fetch, and you can exclude more with Ignore fields. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each search, filter and lookup setup; use State key to name or deliberately share a monitoring campaign.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the mode, marketplace, category, sellers, links and filters, so different searches never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return listings that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return listings that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, so never when Max listings capped it, when Resume was used, or when a pasted link starts after page 1. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayField names that must NOT count as a change when Incremental mode compares a listing with the last run, for example soldCount or imageUrl. A plain name is ignored at any depth; use a dotted path such as shippingDetails.cost for one nested field. The fields still appear in the output and are simply left out of the comparison and out of changedFields. Changing this list never causes a one-time wave of UPDATED rows. Built in, always ignored: scrapedAt, timeLeft, attributes, updatedAt, sourceUrl, pageNumber and searchQuery.
mcpConnectorsarrayOptionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

imageUrlImage (image)
titleListing
changeTypeChange type (incremental mode) (text)
itemIdItem ID
marketplaceMarketplace
conditionCondition
brandBrand
pricePrice
priceMaxPrice (high end of range)
originalPriceWas
discountPercentDiscount %
currencyCurrency
Show 60 more fields
listingTypeBuying format
bidCountBids
timeLeftTime left
shippingCostDelivery cost
freeShippingFree delivery (boolean)
itemLocationItem location
freeReturnsFree returns (boolean)
soldCountSold
sellerNameSeller
sellerFeedbackPercentSeller positive %
sellerFeedbackCountSeller feedback score
badgesBadges (array)
categoryPathCategory path (array)
quantityAvailableQuantity available
quantitySoldQuantity sold
descriptionDescription
detailIncompleteDetails incomplete (boolean)
urlURL (link)
searchQuerySearch keyword
scrapedAtScraped at (date)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
conditionIdconditionId
categoryIdcategoryId
categorycategory
breadcrumbsbreadcrumbs (array)
keywordkeyword
itemNumberitemNumber
buyingFormatbuyingFormat
bidsbids
thumbnailUrlthumbnailUrl
fullResThumbnailUrlfullResThumbnailUrl
sellerUsernamesellerUsername
sellerFeedbackScoresellerFeedbackScore
sellerPositivePercentsellerPositivePercent
shippingPriceshippingPrice
shippingCurrencyshippingCurrency
shippingTypeshippingType
totalPricetotalPrice
itemSpecificsitemSpecifics
productDetailsproductDetails
descriptionIframeSrcdescriptionIframeSrc
sellerDescriptionTextsellerDescriptionText
updatedAtupdatedAt (date)
imagesPhotos
mpnMPN
gtinGTIN
modelmodel
colorcolor
paymentMethodsPayment methods
shippingDetailsShipping
returnPolicyReturns
listedAtListed at
sellerUrlSeller link (link)
reviews.reviewerBuyer
reviews.ratingRating
reviews.dateDate
reviews.textComment
reviews.itemTitlePurchased item

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "itemId": "000000000001",
  "url": "https://www.ebay.com/itm/000000000001",
  "title": "Sample Listing Title",
  "subtitle": "Sample seller strapline",
  "condition": "Used",
  "conditionId": "3000",
  "brand": "Sample Brand",
  "marketplace": "com",
  "marketplaceDomain": "www.ebay.com",
  "price": 100,
  "priceMax": 150,
  "priceText": "$100.00 to $150.00",
  "currency": "USD",
  "originalPrice": 125,
  "discountPercent": 20,
  "listingType": "buy_it_now",
  "bidCount": null,
  "timeLeft": null,
  "shippingCost": null,
  "shippingText": "Free delivery",
  "freeShipping": true,
  "itemLocation": "United States",
  "returnsText": "Free returns",
  "freeReturns": true,
  "soldCount": 42,
  "sellerName": "examplestore",
  "sellerUrl": "https://www.ebay.com/usr/examplestore",
  "sellerFeedbackPercent": 98.5,
  "sellerFeedbackCount": 1234,
  "badges": [
    "Sample Badge"
  ],
  "imageUrl": "https://i.ebayimg.com/images/g/000000000000/s-l500.webp",
  "attributes": [
    "Buy It Now",
    "Free delivery",
    "Located in United States",
    "Free returns",
    "42 sold"
  ],
  "images": [
    "https://i.ebayimg.com/images/g/000000000000/s-l1600.jpg"
  ],
  "itemSpecifics": {
    "Processor": "Sample Processor",
    "SSD Capacity": "1 TB",
    "Seller Notes": "Sample seller notes."
  },
  "categoryPath": [
    "Electronics",
    "Computers",
    "Laptops"
  ],
  "description": "Full seller description text appears here when Read item pages is on.",
  "sellerNotes": "Sample seller notes.",
  "mpn": "SAMPLE-MPN",
  "model": "Sample Model",
  "color": "Black",
  "gtin": null,
  "listPrice": 125,
  "availability": "In Stock",
  "quantityAvailable": 5,
  "quantitySold": 42,
  "paymentMethods": [
    "PayPal",
    "Visa"
  ],
  "shippingDetails": "Shipping: Sample shipping line",
  "returnPolicy": "Returns: 30 day returns accepted",
  "listedAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "searchQuery": null,
  "sourceUrl": "https://www.ebay.com/b/177?_ipg=240&_pgn=1",
  "pageNumber": 1,
  "scrapedAt": "2026-01-01T00:00:00Z",
  "changeType": "NEW",
  "changedFields": [],
  "firstSeenAt": "2026-01-01T00:00:00Z",
  "lastSeenAt": "2026-01-01T00:00:00Z"
}

Ways to use this data

  • Resellers and arbitrage sellers: track prices, discounts and sold counts across marketplaces to spot underpriced inventory worth flipping.
  • Price monitoring tools: feed a comparison site or a price-tracking bot with live listings converted to each storefront's own currency.
  • Sourcing and catalog research: pull a whole seller's store with item specifics and full descriptions before deciding what to list elsewhere.
  • Listing and brand monitoring: watch a category or a seller for new and changed listings on a recurring schedule.
  • Market and demand research: track sold counts and auction activity in a category over time with Incremental mode.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does eBay Scraper return?

The documented output for eBay Scraper includes image, listing, change type (incremental mode), item id, marketplace, condition, brand and price. Availability of each field depends on the source page and the selected mode.

How much does eBay Scraper cost?

It costs $1.70 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns new and updated listings; with Emit expired on, a complete scan also returns expired listings, and a listing that later comes back is returned as reappeared. Unchanged listings are suppressed and not billed by default.

Can I search by keyword?

No. eBay currently refuses its search result pages to automated visitors on every storefront, whatever the connection, so keyword search was removed from the input form. Browse a category id or a seller instead, or paste category, seller and item links. Older saved tasks that still send keywords get one attempt and a plain message, and nothing is charged for them.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with eBay Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.