eBay Product Details Scraper With Multi-Marketplace Domains
Pricing
from $4.99 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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 Type | Key Fields | JSON Field Names |
|---|---|---|
| Listing details | Title, price, currency, condition, description, item specifics | product_title, product_price, priceCurrency, product_condition, item_description, item_specifics |
| Seller & marketplace data | Seller/store name, feedback rate, items sold, marketplace and country | seller_name, positive_feedback, seller_items_sold, marketplaceDomain, marketplaceCountry |
| Media links | Photo links in three sizes, gallery photo count, gallery video streams | product_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.
| Feature | eBay Browse API | eBay Product Scraper |
|---|---|---|
| Access | Requires a registered eBay developer application and OAuth credentials | Runs on Apify with no eBay account or app registration |
| Production approval | Requires 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 volume | 5,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 selection | One marketplace per call, selected via a request header | Tick any combination of 17 marketplaces per run; the same item number is read from each |
| Photo size variants | Returns image URLs at the sizes the API provides | Expands every gallery photo into thumbnail (140px), medium (500px) and full (1600px) links |
| Gallery video | Not part of the standard item response | Returns 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)
- Open the eBay Product Scraper page on the Apify Store and click Try for free (or Start, if you already have it saved).
- Paste item numbers or listing links into
itemTargets— one per line. A bare item number like276582090868works; so does a full listing URL. - Tick the country marketplaces you want each item number read from in
marketplaceDomains— leave it empty to default toebay.comonly. - Start the run.
- 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
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
itemTargets | No | array | One 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"] |
urls | No | array | The 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"] |
marketplaceDomains | No | array (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"] |
resolvePastedUrlsAcrossMarketplaces | No | boolean, default false | Off 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 |
includeImageSizeVariants | No | boolean, default true | Adds 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 |
includeGalleryVideo | No | boolean, default true | Adds 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 |
proxyConfiguration | No | object (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?
| Feature | eBay Product Scraper | Generic alternative |
|---|---|---|
| Output format | Typed JSON with stable field names, no HTML | Often raw HTML or inconsistent field naming |
| Marketplace coverage per run | Up to 17 country domains for the same item number in one run | Typically one domain per run |
| Photo size variants | Thumbnail, medium and full-size link generated per photo | Usually a single image URL per photo |
| Gallery video | HLS/DASH stream links and poster frame when present | Not commonly exposed |
| Input flexibility | Accepts bare item numbers or full URLs, mixed in the same list | Usually 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 ApifyClientclient = 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.
Is it legal to scrape eBay?
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.