eBay Product Scraper avatar

eBay Product Scraper

Pricing

from $0.97 / 1,000 product scrapeds

Go to Apify Store
eBay Product Scraper

eBay Product Scraper

eBay product dataset from search queries or listing URLs, including prices, condition, seller fields, and optional product-page details.

Pricing

from $0.97 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

eBay Product Scraper creates a structured dataset of listings collected from eBay marketplaces. Each dataset item represents one listing and can include identifiers, title, price, currency, condition, buying format, shipping, location, seller feedback, watchers, and bid count, plus optional item-page description, images, and item specifics. Query the source with search, category, or item URLs in startUrls, or with searchQueries when startUrls is empty. Control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.

Dataset at a glance

PropertyValue
SourceeBay marketplaces (ebay.com and regional eBay sites)
Record unitOne eBay listing
Input methodsSearch, category, or item URLs (startUrls); searchQueries when startUrls is empty
Main identifiersitemId, url
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML, HTML (Apify dataset exports)
Update modelFresh records per Actor run
Pricing$1.00 per 1,000 listings; +$1.50 per 1,000 when includeProductDetails is enabled; $0.00005 start charge per run

Coverage and available records

The Actor collects listings from public eBay pages using one of two entry points:

  • URL-based: Pass eBay search URLs, category or browse URLs, or individual item URLs in startUrls (for example https://www.ebay.com/sch/i.html?_nkw=bike, https://www.ebay.com/b/Cars-Trucks/6001/bn_1865117, or https://www.ebay.com/itm/125459703651). When startUrls is set, constructed search filters are ignored. Start URLs keep the host from the URL.
  • Search-based: Set searchQueries (for example bike) only when startUrls is empty. Marketplace, category, buying format, condition, sort, location, price range, and sold-listing filters apply to constructed searches.

Record types and limits:

  • Listing-level records are always collected: itemId, title, URL, price, currency, condition, buying format, shipping, item location, image, watchers, bid count, seller, seller feedback, sponsored flag, marketplace, and source metadata.
  • Item-page fields are conditional: description, images, item specifics, seller, and shipping from the item page are returned only when includeProductDetails is enabled.
  • Sold listings are conditional: set soldListings to true to collect completed or sold results instead of active listings. This applies to constructed searches only.
  • Result cap: maxItems limits listings collected across all URLs and queries (0 means unlimited, the default; the console prefill is 10).

Constructed searches use EBAY_US by default or another EBAY_* marketplace from the input reference.

Known exclusions: login-only eBay content; historical snapshots; constructed search filters when startUrls is set.

Data dictionary

Field names below match dataset record JSON properties exactly. Fields marked conditional appear only when includeProductDetails is enabled.

Listing-level fields

FieldTypeNullableDescriptionExample
itemIdstringNoeBay item identifier; recommended deduplication key125459703651
titlestringNoListing titleChopper Lowrider beach Stretch cruiser bike Coaster Brakes Big Fat Bicycle
urlstringNoListing URL; secondary deduplication keyhttps://www.ebay.com/itm/125459703651
pricenumberYesNumeric asking or sale price664.99
currencystringYesISO currency code for priceUSD
formattedPricestringYesPrice as displayed on eBay$664.99
conditionstringYesCondition text from the listingBrand New
buyingFormatstringYesBuying format as shown (for example Buy It Now)Buy It Now
shippingstringYesShipping snippet from the listing cardShipping not specified
itemLocationstringYesItem location as shown on the listingUnited States
imageUrlstringYesPrimary listing image URLhttps://i.ebayimg.com/images/g/dIoAAOSwwihi9Ule/s-l500.webp
watchersnumberYesWatcher count when eBay shows it98
bidCountnumberYesAuction bid count when eBay shows itnull
sellerstringYesSeller usernamereignbike
sellerFeedbackPercentnumberYesSeller positive-feedback percent99.8
sellerFeedbackCountnumberYesSeller feedback count2100
isSponsoredbooleanNoWhether the listing is a sponsored resultfalse
marketplacestringNoeBay marketplace code for the recordEBAY_US
sourceTypestringYesHow the listing was reached (for example search)search
sourceQuerystringYesSearch term that produced the recordbike

Item-page fields (conditional — includeProductDetails)

When includeProductDetails is enabled, the same listing record can also include description, images, item specifics, seller, and shipping from the item page. These groups are omitted or sparse when the toggle is off or when eBay does not publish the value.

Example dataset record

Real listing-level record produced with the test input below (searchQueries: ["bike"], marketplace: "EBAY_US"). Item-page description, images, and item specifics are not present because this example is the listing card.

{
"itemId": "125459703651",
"title": "Chopper Lowrider beach Stretch cruiser bike Coaster Brakes Big Fat Bicycle",
"url": "https://www.ebay.com/itm/125459703651",
"price": 664.99,
"currency": "USD",
"formattedPrice": "$664.99",
"condition": "Brand New",
"buyingFormat": "Buy It Now",
"shipping": "Shipping not specified",
"itemLocation": "United States",
"imageUrl": "https://i.ebayimg.com/images/g/dIoAAOSwwihi9Ule/s-l500.webp",
"watchers": 98,
"bidCount": null,
"seller": "reignbike",
"sellerFeedbackPercent": 99.8,
"sellerFeedbackCount": 2100,
"isSponsored": false,
"marketplace": "EBAY_US",
"sourceType": "search",
"sourceQuery": "bike"
}

The record above was produced with this input:

{
"searchQueries": ["bike"],
"marketplace": "EBAY_US",
"category": "0",
"maxItems": 5,
"includeProductDetails": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
startUrlsarray (requestListSources)No*eBay search, category/browse, or item URLsURL-based entry point. When set, constructed search filters are ignored
searchQueriesarray (string)No*Free-text terms (for example bike)Used only when startUrls is empty
marketplacestringNoEBAY_USEBAY_US, EBAY_UK, EBAY_DE, EBAY_AU, EBAY_CA, EBAY_FR, EBAY_IT, EBAY_ES, EBAY_AT, EBAY_CH, EBAY_IE, EBAY_NL, EBAY_BE, EBAY_PL, EBAY_SG, EBAY_HKeBay site for constructed searches. Start URLs keep the host from the URL
categorystringNo0Actor category enum; 0 is All CategorieseBay category ID for constructed searches. Ignored when startUrls is set
buyingFormatstringNoallall, buy_it_now, auction, best_offerBuying-format filter for constructed searches
conditionstringNoanyany, new, open_box, certified_refurbished, seller_refurbished, used, for_partsCondition filter for constructed searches
sortBystringNobest_matchbest_match, ending_soonest, newly_listed, price_shipping_lowest, price_shipping_highest, nearestSort order for constructed searches
itemLocationstringNodefaultdefault, domestic, worldwide, localItem-location preference. local uses zipCode and distance
zipCodestringNoPostal code (for example 10001, SW1A 1AA)Postal code for nearby / local searches
distanceintegerNo>= 0 (miles)Search radius around zipCode when itemLocation is local
minPricenumberNo>= 0Exclude listings below this price on constructed searches
maxPricenumberNo>= 0Exclude listings above this price on constructed searches
soldListingsbooleanNofalsetrue / falseCollect completed/sold listings instead of active ones (constructed searches only)
maxItemsintegerNo00 or any positive integerMaximum listings to collect; 0 = unlimited (console prefill 10)
includeProductDetailsbooleanNofalsetrue / falseAdd item-page description, images, item specifics, seller, and shipping (charged as product-details)
detailConcurrencyintegerNo8115Parallel item-page fetches when includeProductDetails is enabled
proxyConfigurationobjectNoApify proxy, RESIDENTIAL groupApify proxy groups or custom proxiesResidential proxies are recommended

* Provide either startUrls or searchQueries. searchQueries is used only when startUrls is empty.

Minimal request:

{ "searchQueries": ["bike"], "marketplace": "EBAY_US" }

Advanced request (constructed search with filters and item-page fields):

{
"searchQueries": ["bike"],
"marketplace": "EBAY_US",
"category": "177831",
"buyingFormat": "buy_it_now",
"condition": "new",
"sortBy": "price_shipping_lowest",
"itemLocation": "domestic",
"minPrice": 100,
"maxPrice": 800,
"soldListings": false,
"maxItems": 50,
"includeProductDetails": true,
"detailConcurrency": 8,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Retrieve the data through the API

The Actor runs on the Apify platform. There is no separate eBay API and no server to host.

  1. Start the Actor with a JSON input (console or API).
  2. Wait for the run to finish, or use a synchronous endpoint if you want the response inline.
  3. Retrieve items from the run's default dataset.
  4. Paginate or export the dataset.

Python example:

from apify_client import ApifyClient
client = ApifyClient("YOUR-APIFY-TOKEN")
run_input = {
"searchQueries": ["bike"],
"marketplace": "EBAY_US",
"maxItems": 10,
"includeProductDetails": False,
}
run = client.actor("datascrapers/ebay-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["itemId"], item["title"], item["price"])

Apify generates ready-to-run Python, JavaScript, and cURL examples on the Actor's API tab. Do not put a real API token in shared code or URLs.

Data quality and record handling

  • Conditional fields: description, images, item specifics, and richer seller or shipping values are present only when includeProductDetails is enabled. Listings alone return a leaner record.
  • Source values: prices, condition, buying format, and seller feedback are read from eBay as shown at run time. Unreadable fields are returned as null rather than fabricated.
  • Deduplication: each run appends fresh records. Deduplicate across runs on itemId, or on url when itemId is missing.
  • Filter scope: marketplace, category, buying format, condition, sort, location, price range, and soldListings apply only to constructed searches. When startUrls is set, those filters are ignored.
  • Charges: dataset-item is billed for each listing written to the dataset. product-details is billed only when includeProductDetails is enabled for that listing.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL / SupabaseDataset API poll or webhook consumerStore listing prices and sellers alongside catalog records
Google SheetsApify Google Sheets integrationShare price or sold-comp shortlists
S3 / cloud storageScheduled export via Apify scheduler + integrationArchival of marketplace snapshots
Custom warehouseDataset API paginationLoad large listing datasets in batches

Pricing and cost examples

The Actor uses pay-per-event pricing:

EventTriggerRate
startActor run starts$0.00005
dataset-itemEach listing written to the dataset$0.001 ($1.00 per 1,000)
product-detailsEach listing opened with includeProductDetails$0.0015 ($1.50 per 1,000)

Example costs (start charge excluded; add $0.00005 per run):

RecordsConfigurationEstimated base cost
1,000Listing only$1.00
10,000Listing only$10.00
1,000Listing + product details$2.50
10,000Listing + product details$25.00

Compute units consumed by the run are billed by your Apify plan. Estimates depend on the verified pricing model and the options selected for the run.

Limitations and responsible data use

  • The Actor collects publicly accessible data from eBay pages only.
  • Field availability depends on what eBay renders at run time; some values can be null or missing, and site changes can alter fields.
  • The Actor does not provide historical snapshots unless you store them yourself.
  • Constructed search filters are ignored when startUrls is set.
  • Residential proxies are recommended; coverage may degrade without them.
  • You are responsible for compliance with eBay's terms of service, applicable privacy law, and any contractual obligations before using the data.

Dataset questions

What does one dataset item represent?

One eBay listing. Item-page description, images, and item specifics are added to the same record when includeProductDetails is enabled, so an enriched listing still produces a single dataset item.

Which field should I use as a unique identifier?

itemId is the stable eBay item identifier and is the recommended deduplication key. Use url as the secondary key when itemId is missing.

Are fields nullable or conditional?

Yes. Watchers, bid count, shipping, and seller feedback are nullable when eBay does not show them. Description, images, and item specifics exist only when includeProductDetails is enabled.

Can I retrieve the records as CSV or JSON?

Yes. The dataset can be exported as JSON, CSV, Excel, XML, or HTML from the Apify Console, and queried through the Dataset API.

What happens when I set startUrls?

The Actor uses those search, category, or item URLs as the source. searchQueries is not used, and constructed search filters (marketplace, category, buyingFormat, condition, sortBy, itemLocation, zipCode, distance, minPrice, maxPrice, soldListings) are ignored. The URL host is kept as provided.

Does the Actor return historical data?

No. Each run captures the state of the pages at run time. To track price or listing changes, schedule repeated runs and store the outputs yourself. Deduplicate later on itemId or url.

What counts as a billable result?

A start charge of $0.00005 applies once per run. Every listing written to the dataset charges dataset-item at $1.00 per 1,000. Enabling includeProductDetails adds product-details at $1.50 per 1,000 for each enriched listing.

  • Amazon Search Scraper — Amazon search-result products that can be compared with eBay listings by title or identifier for cross-marketplace pricing.
  • Etsy Scraper — Handmade and vintage product listings for the same catalog or category research as eBay crafts and collectibles.
  • Gumtree Scraper — UK classified listings that sit alongside eBay UK (EBAY_UK) for local marketplace coverage.
  • Flipkart Product Scraper — Flipkart product records for retail assortment and price comparison outside eBay.
  • Target.com Product Scraper — Target.com product records for US retail pricing next to eBay US (EBAY_US) listings.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.