eBay Product Details Scraper With Multi-Marketplace Domains avatar

eBay Product Details Scraper With Multi-Marketplace Domains

Pricing

from $4.99 / 1,000 results

Go to Apify Store
eBay Product Details Scraper With Multi-Marketplace Domains

eBay Product Details Scraper With Multi-Marketplace Domains

eBay Product Details Scraper extracts detailed product data across multiple eBay marketplace domains, including titles, prices, descriptions, seller info, ratings, shipping, images, item specifics, availability, and URLs for e-commerce research and competitor analysis.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

eBay Product Scraper — Extract Listings, Sellers and Photos as JSON

Give it eBay item numbers or listing links and get back structured listing details, seller and feedback data, and full-size photo and video links — read from up to 17 country marketplaces in a single run. Every response is typed, normalized JSON: no HTML, no CSS selectors, no parsing step. Point the same item number at several marketplace domains at once and every row comes back tagged with the marketplace and currency it was read from, so you can line up the .com, .co.uk and .de versions of one listing side by side. After reading this, you'll be able to configure a run, read the exact output shape, and wire the dataset into a script, spreadsheet, or AI agent.

What is eBay Product Scraper?

eBay Product Scraper is an Apify Actor that reads a live eBay listing page and returns its product details, seller information, and media links as structured data — for as many of eBay's 17 supported country marketplaces as you tick. No eBay account or login is required; every field comes from the public listing page. It is callable as a standard Apify Actor run, so it is reachable from any HTTP client or agent framework that can start a run and read a dataset.

  • 📦 Scrape listing details — title, price, condition, item specifics, description
  • 🏪 Scrape seller and feedback data — store name, positive-feedback percentage, items sold
  • 🖼️ Scrape media links — photos in three sizes plus gallery video streams
  • 🌍 Repeat the same item number across up to 17 eBay country marketplaces in one run
  • ⬇️ Export as JSON or CSV — no proxy setup, no HTML parsing

What data does eBay Product Scraper collect?

Each row returned combines three kinds of data from the same listing: the listing itself, the seller behind it, and its media.

Data TypeKey FieldsJSON Field Names
Listing detailsTitle, price, currency, condition, description, item specificsproduct_title, product_price, priceCurrency, product_condition, item_description, item_specifics
Seller & marketplace dataSeller/store name, feedback rate, items sold, marketplace and countryseller_name, positive_feedback, seller_items_sold, marketplaceDomain, marketplaceCountry
Media linksPhoto links in three sizes, gallery photo count, gallery video streamsproduct_image_thumb_urls, product_image_medium_urls, product_image_full_urls, gallery_image_count, listing_video_url

Need more eBay data?

This Actor is built for listing detail lookups by item number or URL. If your workflow starts from a search term or category instead of a known item number, pair it with an eBay search scraper under the same API-Empire account to first collect item numbers, then feed those into this Actor for the full listing, seller, and media breakdown per marketplace.

How does eBay Product Scraper differ from the official eBay API?

eBay's own Buy Browse API returns similar listing data (title, price, condition, images, item specifics) through getItem, but access is gated behind a developer application, and eBay Product Scraper is a self-serve Actor run with no application review.

FeatureeBay Browse APIeBay Product Scraper
AccessRequires a registered eBay developer application and OAuth credentialsRuns on Apify with no eBay account or app registration
Production approvalRequires meeting eligibility requirements and a signed contract with eBay for production use (eBay Developers Program docs, checked 2026-07-30)No approval process — start a run from the Actor page
Default call volume5,000 calls/day per application by default, with a request process to raise it (eBay Developers Program docs, checked 2026-07-30)No Actor-side cap on item count; governed by your Apify plan's compute usage
Marketplace selectionOne marketplace per call, selected via a request headerTick any combination of 17 marketplaces per run; the same item number is read from each
Photo size variantsReturns image URLs at the sizes the API providesExpands every gallery photo into thumbnail (140px), medium (500px) and full (1600px) links
Gallery videoNot part of the standard item responseReturns video id, HLS/DASH stream links, poster frame and caption when the listing has one

The official API is the right choice if you already have an approved eBay developer account and need write access or checkout/order operations. eBay Product Scraper is the faster path when you just need read-only listing, seller and media data across several country marketplaces without going through eBay's application process.

Why do developers and teams scrape eBay?

For AI engineers and agent builders

Listing data with stable field names — product_title, product_price, item_specifics — drops directly into a RAG index or an agent's tool-call response without an HTML-parsing step. An agent tasked with "find the current price and condition of item 276582090868 on the UK and US sites" can call this Actor with both marketplace boxes ticked and get two structured rows back, each tagged with its own currency, ready to compare or hand to an LLM for a final answer.

For pricing and market analysts

Ticking several marketplaceDomains for the same itemTargets list produces one row per marketplace, each carrying its own product_price and priceCurrency. Feeding that into a spreadsheet gives a same-item, cross-market price comparison without manually opening .com, .co.uk and .de in separate tabs and converting currencies by hand.

For researchers and marketplace monitors

item_specifics, product_condition and return_policy give a consistent structured snapshot of how a category of items is listed and described across sellers, useful for studying listing practices or condition-grading language without touching any private account data — everything returned comes from the public listing page.

For developers building data products

The dataset's stable JSON keys mean a catalogue-monitoring pipeline or a browser extension backend can schedule this Actor, pull the dataset via the Apify API, and diff product_price or has_listing_video between runs without re-writing a parser every time eBay changes its page markup.

How to scrape eBay listings (step by step)

  1. Open the eBay Product Scraper page on the Apify Store and click Try for free (or Start, if you already have it saved).
  2. Paste item numbers or listing links into itemTargets — one per line. A bare item number like 276582090868 works; so does a full listing URL.
  3. Tick the country marketplaces you want each item number read from in marketplaceDomains — leave it empty to default to ebay.com only.
  4. Start the run.
  5. Open the Dataset tab when it finishes and export the results as JSON, CSV, Excel, or the other formats Apify supports.

What to do when eBay changes its structure

eBay periodically changes its listing page markup. This Actor is maintained against those changes, and the output schema — the field names and types documented below — stays stable, so an integration built against it keeps working without changes on your end.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
itemTargetsNoarrayOne entry per line. A bare eBay item number (for example 276582090868) is turned into a listing link on every marketplace you tick below. A full listing link is read from its own marketplace as-is. Repeated entries are collected once, never twice.["276582090868"]
urlsNoarrayThe original listing-URL list, kept so an existing input file keeps working unchanged. Anything added here is collected together with the targets above.["https://www.ebay.com/itm/276582090868"]
marketplaceDomainsNoarray (select, enum)Tick every eBay country site an item number should be read from. Pick several to collect the same item number across markets in a single run — each row is tagged with its marketplace and the currency that market quotes. Leave empty to use ebay.com only. Enum: ebay.com, ebay.co.uk, ebay.de, ebay.com.au, ebay.ca, ebay.fr, ebay.it, ebay.es, ebay.at, ebay.ch, ebay.ie, ebay.nl, ebay.pl, ebay.com.sg, ebay.com.hk, ebay.com.my, ebay.ph["ebay.com", "ebay.co.uk", "ebay.de"]
resolvePastedUrlsAcrossMarketplacesNoboolean, default falseOff by default: a pasted listing link is read from its own marketplace only. Turn it on to take the item number out of every pasted link and read it on the ticked marketplaces too.false
includeImageSizeVariantsNoboolean, default trueAdds a thumbnail (140px), medium (500px) and full (1600px) link for every photo in the listing gallery, plus the gallery photo count. Links only — no file is ever fetched or stored.true
includeGalleryVideoNoboolean, default trueAdds the listing's gallery video when it has one: video id, HLS and DASH stream links, poster frame and caption. Listings without a video report false, never a placeholder. Links only — no file is ever fetched or stored.true
proxyConfigurationNoobject (proxy)Leave enabled so the actor can reach every country marketplace reliably. Turning it off limits the run to a single unrouted connection.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

No input parameter is required — the schema ships a prefilled itemTargets example so a first run can start with no changes.

{
"itemTargets": ["276582090868"],
"urls": [],
"marketplaceDomains": ["ebay.com", "ebay.co.uk", "ebay.de"],
"resolvePastedUrlsAcrossMarketplaces": false,
"includeImageSizeVariants": true,
"includeGalleryVideo": true,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Common pitfall: pasting a full listing URL and expecting it to be read from every ticked marketplace — by default a pasted URL is only read from its own marketplace. Turn on resolvePastedUrlsAcrossMarketplaces if you want the item number inside that link resolved against every marketplace you ticked too.

⬆️ Output

Results are written to the Actor's dataset, one row per requested item number/marketplace pair, exportable as JSON, CSV, Excel, XML, RSS, or HTML directly from the Apify Console. Only successful listing rows are charged under the row_result event — rows for an invalid input value, an item not published on the requested marketplace, or an unreachable listing are still written to the dataset for visibility, but pushed without the charged event. Filter them out with errorReason == null (or success == true) if you only want billable, successful rows.

Scraped listing

{
"success": true,
"source_url": "https://www.ebay.com/itm/276582090868",
"marketplaceDomain": "ebay.com",
"marketplaceCountry": "United States",
"item_number": "276582090868",
"resolvedFromItemNumber": true,
"inputValue": "276582090868",
"product_title": "Apple iPhone 13 128GB Midnight Unlocked Smartphone",
"product_price": "$389.99",
"priceCurrency": "USD",
"product_condition": "Used",
"seller_name": "tech-outlet-deals",
"positive_feedback": "98.7% positive",
"seller_items_sold": "12.4K",
"shipping_info": "$4.99 USPS Ground Advantage; Located in: Columbus, OH, United States",
"delivery_info": "Estimated between Wed, Aug 5 and Sat, Aug 8",
"return_policy": "30 days returns. Buyer pays for return shipping.",
"item_specifics": {
"Brand": "Apple",
"Model": "iPhone 13",
"Storage Capacity": "128 GB",
"Color": "Midnight",
"Network": "Unlocked"
},
"item_description": "Fully tested and functional. Minor cosmetic wear on the frame...",
"detail_url": "https://www.ebay.com/itm/276582090868",
"gallery_image_count": 8,
"product_image": [
"https://i.ebayimg.com/images/g/abcAAOSw.../s-l1600.jpg"
],
"gallery_image_urls": [
"https://i.ebayimg.com/images/g/abcAAOSw.../s-l1600.jpg"
],
"product_image_variants": [
{
"thumbnail": "https://i.ebayimg.com/images/g/abcAAOSw.../s-l140.jpg",
"medium": "https://i.ebayimg.com/images/g/abcAAOSw.../s-l500.jpg",
"full": "https://i.ebayimg.com/images/g/abcAAOSw.../s-l1600.jpg",
"source": "https://i.ebayimg.com/images/g/abcAAOSw.../s-l1600.jpg"
}
],
"primary_image_thumbnail": "https://i.ebayimg.com/images/g/abcAAOSw.../s-l140.jpg",
"primary_image_medium": "https://i.ebayimg.com/images/g/abcAAOSw.../s-l500.jpg",
"primary_image_full": "https://i.ebayimg.com/images/g/abcAAOSw.../s-l1600.jpg",
"product_image_thumb_urls": ["https://i.ebayimg.com/images/g/abcAAOSw.../s-l140.jpg"],
"product_image_medium_urls": ["https://i.ebayimg.com/images/g/abcAAOSw.../s-l500.jpg"],
"product_image_full_urls": ["https://i.ebayimg.com/images/g/abcAAOSw.../s-l1600.jpg"],
"has_listing_video": true,
"listing_video_count": 1,
"listing_videos": [
{
"videoId": "v123456789",
"hlsPlaylistUrl": "https://videocontent.ebaystatic.com/.../master.m3u8",
"dashPlaylistUrl": "https://videocontent.ebaystatic.com/.../manifest.mpd",
"posterImageUrl": "https://i.ebayimg.com/images/g/abcAAOSw.../s-l1600.jpg",
"caption": "Video 1 of 1"
}
],
"listing_video_url": "https://videocontent.ebaystatic.com/.../master.m3u8",
"listing_video_poster": "https://i.ebayimg.com/images/g/abcAAOSw.../s-l1600.jpg",
"proxyMode": "residential",
"errorReason": null,
"scrapedAt": "2026-07-30T12:00:00.000000Z"
}

Fields with no match on the source page (for example positive_feedback on a listing with no visible feedback score, or product_condition when eBay shows no condition text) come back null rather than an invented value. primary_image_thumbnail, primary_image_medium and primary_image_full are null for photos hosted outside eBay's resizable image host, since those genuinely exist in only one size.

How does eBay Product Scraper compare to other eBay scrapers?

FeatureeBay Product ScraperGeneric alternative
Output formatTyped JSON with stable field names, no HTMLOften raw HTML or inconsistent field naming
Marketplace coverage per runUp to 17 country domains for the same item number in one runTypically one domain per run
Photo size variantsThumbnail, medium and full-size link generated per photoUsually a single image URL per photo
Gallery videoHLS/DASH stream links and poster frame when presentNot commonly exposed
Input flexibilityAccepts bare item numbers or full URLs, mixed in the same listUsually URL-only input

If you're building an AI agent or RAG pipeline, the output format row is the decision-maker — parsing HTML inside an agent loop is a reliability failure mode, not a feature.

How many results can you scrape with eBay Product Scraper?

There is no hard cap coded into the Actor on the number of item numbers or marketplace combinations you can queue in one run — itemTargets, urls and marketplaceDomains accept as many entries as you add, and each unique (item number, marketplace) pair becomes one dataset row. In practice, run length scales with how many targets you queue and your Apify plan's available compute, since each listing is fetched and parsed in sequence. Duplicate (item number, marketplace) pairs are collected once and reported as skipped rather than fetched twice.

Integrate eBay Product Scraper and automate your workflow

eBay Product Scraper works with any language or tool that can send an HTTP request.

REST API integration

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("<store-username>/ebay-product-details-scraper-with-multi-marketplace-domains").call(
run_input={
"itemTargets": ["276582090868"],
"marketplaceDomains": ["ebay.com", "ebay.co.uk"],
"includeImageSizeVariants": True,
"includeGalleryVideo": True,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["marketplaceDomain"], item["product_title"], item["product_price"])

Works in Python, Node.js, Go, Ruby, cURL.

Automation platforms (n8n, Make, LangChain)

In n8n, use the Apify node's "Run Actor and get dataset" operation, passing the same input JSON shown above. In Make, the Apify > Run Actor module accepts the run input as a JSON map and can pass the resulting dataset items to a downstream module such as Google Sheets. In LangChain, wrap the Apify Python client call above as a custom Tool so an agent can request listing data for a given item number and marketplace on demand.

Yes — eBay Product Scraper reads and returns only publicly accessible listing pages; nothing behind a login is collected. This Actor returns product and business data (listing prices, conditions, descriptions, seller store names) rather than personal data about private individuals, so the relevant framework is eBay's Terms of Service and database-rights law, not GDPR/CCPA, which govern personal data. Scraping public listing pages is generally permitted, but reuse of the collected data — republishing eBay's own listing photos or text at scale, for instance — can still run into eBay's Terms of Service or database-rights restrictions depending on your jurisdiction and use case. Consult legal counsel for commercial use cases involving bulk data collection or redistribution.

Frequently asked questions

Does eBay Product Scraper work without an eBay account?

Yes. No eBay account, login, or API credentials are needed — every field is read from the public listing page.

How often is the scraped data updated?

Every run fetches the listing page live at request time; nothing is served from a cache. Prices, condition text, and feedback figures reflect whatever the marketplace shows at the moment the run executes.

What happens if an item number isn't listed on a marketplace I selected?

The row still appears in the dataset with success: false and errorReason: "not_found_on_marketplace" — the Actor detects eBay's own "item not found" response for that domain rather than returning an empty or guessed row. These rows are not charged.

Can I scrape private or restricted eBay listings?

No. Only listings publicly visible on the eBay marketplace pages are returned. Listings that have ended, been removed, or are otherwise not published on a given marketplace come back as an unsuccessful row rather than fabricated data.

Does eBay Product Scraper work for AI agent workflows and LLM pipelines?

Yes — it is callable as a standard Apify Actor run through the Apify API or apify_client, so any agent framework that can start a run and read a dataset can use it as a tool. Every response is typed JSON with stable field names, ready to pass into an LLM context window or a vector store without a parsing step.

How does eBay Product Scraper handle eBay's anti-bot defenses?

The Actor establishes and reuses one connection per marketplace through Apify Proxy (residential by default), escalating the connection route only when a request fails, and retries against a fresh route rather than giving up on the first blocked response. It distinguishes eBay's short-lived connection-challenge response from a genuine "item not found" page so a temporary block is retried instead of being reported as a missing listing.

How does eBay Product Scraper compare to other eBay scrapers?

See the comparison table above — the concrete, checkable differences are multi-marketplace coverage per run, three-size photo links, and gallery video stream links, none of which are common in a single-domain, URL-only scraper.

Does eBay Product Scraper return data in a format LLMs can use directly?

Yes. Typed, normalized JSON with stable field names — no HTML, no selectors, no parsing. Pass it directly into an LLM context window, index it into a vector store, or route it through an agent tool call.

Can I use eBay Product Scraper without managing proxies?

Yes — Apify Proxy is built in and configured by default (residential group). You can turn proxy usage off in proxyConfiguration, but that limits the run to a single unrouted connection, which is more likely to be blocked across several marketplaces.

What happens when eBay changes its structure or blocks the scraper?

The Actor is maintained against eBay's markup and anti-bot changes, and the output schema stays stable — field names and types don't change on your end when the underlying page layout does.

Your feedback

Found a bug, or a field that's missing from the output? We want to know. Open an issue through the Actor's page on the Apify Store or contact API-Empire support through the Console — reports like this are how the extraction logic stays current as eBay's listing pages change.