Ebay Product Listing Scraper avatar

Ebay Product Listing Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Ebay Product Listing Scraper

Ebay Product Listing Scraper

Extract product data from eBay listings using the eBay Product Listing Scraper. Collect product titles, prices, seller names, ratings, images, and listing URLs automatically. Ideal for market research, price monitoring, and competitor analysis.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

eBay Product Listing Scraper — Prices, Conditions & Images

Extract structured product listing data from any eBay search results or category page — title, price, condition, images, shipping cost, item location, buying format, and return policy — returned as clean JSON with no HTML parsing required. Point it at one or many eBay search URLs and every listing card on those pages comes back as a normalized dataset row. Run it directly on Apify to get started.

What is eBay Product Listing Scraper?

eBay Product Listing Scraper is an Apify Actor that turns eBay search, category, and saved-search pages into structured product data — one row per listing card, deduplicated by eBay's own item ID. It requires no eBay account, no eBay Developer API key, and no login: it reads the same public search results any visitor sees. It's built for developers, price-monitoring teams, dropshippers, and AI engineers who need eBay listing data as typed JSON instead of scraped HTML.

What eBay product listing data is publicly available to scrape?

eBay's search and category pages expose full listing details — title, price, condition, images, and buying terms — to any visitor without logging in. What is not shown on a search results card, such as sold/historical price data or a seller's private contact details, stays behind eBay's own gated surfaces.

Data CategoryPublicly Available (no login)Restricted
Listing title & condition
Current price & "was" price
Product images
Shipping cost & item location
Buying format (Buy It Now / Auction / Best Offer)
Returns policy
Item ID / listing URL
Sold-item price historyeBay's Marketplace Insights API — restricted, business-approval-only access as of 2026-08-15
Seller identity / store detailsnot extracted by this actor — requires opening the individual seller page

eBay Product Listing Scraper only returns publicly visible data — what any visitor sees on the search or category page. Nothing behind a login wall.

What data can I extract with eBay Product Listing Scraper?

The actor returns one JSON object per listing card, covering identity/descriptive fields and pricing/metadata fields.

Field NameDescription
product_titleListing title
conditionCondition text as shown on the card (e.g. "New", "Pre-Owned")
image_urlMain product image URL, upgraded to eBay's maximum CDN resolution (s-l1600)
product_urlNormalized item URL, e.g. https://www.ebay.com/itm/<itemId>
input_urlThe search/category/listing URL this row came from
itemLocationItem location text, when shown on the card (e.g. "Located in United States")
buyingFormatBuying format text (e.g. "Buy It Now", "Auction", "or Best Offer")
returnsAcceptedReturn policy text, when shown on the card
card_attributeFull array of the raw extra-info strings shown on the card, before classification
priceCurrent listing price, as displayed (e.g. "$64.99")
original_priceStruck-through "was" price, if the card shows one
shippingCostShipping/delivery cost text, when shown on the card
itemIdNumeric eBay item ID, parsed from the listing URL
scrapedAtISO 8601 UTC timestamp of when the row was collected

📌 Listing identity & descriptive fields

product_title, condition, image_url, product_url, input_url, itemLocation, buyingFormat, returnsAccepted, card_attribute

💰 Pricing & metadata fields

price, original_price, shippingCost, itemId, scrapedAt

🤖 Add-on: Need additional eBay data?

This actor covers search and category result cards. If your workflow also needs Amazon or Shopify product data for cross-platform price comparison, pair it with ../amazon-search-scraper, ../amazon-product-details-scraper, or ../Shopify-Products-Scraper from the same account.

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

eBay does publish an official API — the Browse API, part of the eBay Developers Program — which lets registered applications search live item summaries programmatically. As of 2026-08-15, eBay's own documentation caps a new application at roughly 5,000 Browse API calls per day by default, with higher limits available only after submitting an "Application Growth Check" request. Sold-item price history sits behind a separate Marketplace Insights API that eBay's own docs describe as a limited-release, business-approval-only surface not currently open to new users.

FeatureeBay Browse APIeBay Product Listing Scraper
Access requirementeBay Developer account, app registration, OAuth application tokenNo account, no API key — paste a URL
Default daily call cap~5,000 calls/day per app (developer.ebay.com, checked 2026-08-15)No eBay-imposed call cap — governed by your Apify plan
Approval processApp registration + review, growth request for higher limitsNone — runs immediately on Apify
Sold-item price historyMarketplace Insights API — restricted, not open to new applicants (2026-08-15)Not returned — this actor covers active search/category listings only
Output shapeRaw API JSON per eBay's schemaNormalized dataset row, ready for CSV/JSON export

Use the official Browse API if you're building a production eBay integration and can clear the approval process. Use this actor when you need listing data from a URL immediately, without registering an eBay Developer application.

How to use eBay Product Listing Scraper

Run it directly on Apify — no separate signup or API key beyond your Apify account.

  1. Open the Actor's page in Apify Console and click Try for free / Start.
  2. Provide the required urls input — one or more eBay search, category, or saved-search page URLs.
  3. Optionally set proxyConfiguration if you need a specific proxy setup; the default leaves connection handling to the actor.
  4. Start the run.
  5. Download results from the Dataset tab as JSON, CSV, Excel, or connect it to your pipeline via the Apify API.

How to scale to bulk product listing extraction

urls is an array — add as many eBay search/category URLs as you need and they are all processed in a single run. Listings are deduplicated by itemId across the whole run, so a listing appearing on two different input pages (e.g. two overlapping search filters) is only saved once.

What can you do with eBay product listing data?

  • 📊 Price monitoring analysts track price and original_price across repeated runs on the same search URL to spot markdowns and undercut competitors.
  • 📦 Dropshipping sourcers filter on condition and shippingCost to shortlist listings worth reselling before contacting a supplier.
  • 🏢 Market researchers pull product_title, buyingFormat, and itemLocation in bulk to map category composition and regional supply.
  • 🤖 AI engineers feed product_title, condition, and card_attribute into an LLM or RAG pipeline as structured context for product-matching or price-comparison agents.
  • 🔍 Lead/inventory discovery teams collect itemId and product_url in bulk from category pages to seed a downstream detail-page crawl.

How does eBay Product Listing Scraper handle rate limits and blocking?

The actor treats an HTTP 200 response as unproven — eBay can return a content-less shell page to an untrusted connection, so every fetch is validated by checking that real listing-card markup (s-card) is actually present before accepting the page. If you supply your own proxyConfiguration with useApifyProxy: true, that connection is used directly and retried up to 3 times with exponential backoff. If you leave the default, the actor escalates automatically: it tries with no proxy first, then an Apify datacenter proxy, then falls back to an Apify residential proxy retried up to 3 times. Once a working proxy is found it's kept "sticky" for later URLs in the same run and dropped only if it starts failing. If a page still can't be fetched after all attempts, that single URL is logged as failed and skipped — the run continues with the remaining URLs rather than stopping. The actor does not solve CAPTCHAs.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
urlsYesarrayPaste one or more eBay search or category URLs. Example: search results for "Nike shoes", a category page, or saved searches.["https://www.ebay.com/sch/260010/i.html?_nkw=shoe&Brand=Nike"]
proxyConfigurationNoobjectOptional. Leave default (no proxy) for most runs — the actor manages the connection automatically. Set your own proxy here if you want full control over it.{ "useApifyProxy": false }

Example input

{
"urls": [
"https://www.ebay.com/sch/260010/i.html?_nkw=shoe&Brand=Nike"
],
"proxyConfiguration": {
"useApifyProxy": false
}
}

⬆️ Output

Each run pushes one typed, normalized JSON row per listing card found — the schema is identical across runs regardless of which eBay pages changed. Export as JSON, CSV, Excel, or XML from the Dataset tab, or pull it via the Apify API.

Example output

{
"product_title": "Nike Air Max 90 Men's Running Shoes",
"condition": "Pre-Owned",
"price": "$64.99",
"image_url": "https://i.ebayimg.com/images/g/abc123/s-l1600.jpg",
"original_price": "$89.99",
"card_attribute": ["Buy It Now", "+$8.50 delivery", "Located in United States", "30 days returns"],
"product_url": "https://www.ebay.com/itm/123456789012",
"input_url": "https://www.ebay.com/sch/260010/i.html?_nkw=shoe&Brand=Nike",
"itemId": "123456789012",
"scrapedAt": "2026-08-12T10:15:00.000000+00:00",
"shippingCost": "+$8.50 delivery",
"itemLocation": "Located in United States",
"buyingFormat": "Buy It Now",
"returnsAccepted": "30 days returns"
}

How does it work?

Each input URL is fetched over an aiohttp session, with connection handling — no proxy, then datacenter proxy, then residential proxy — escalating automatically until a genuine listing page is returned, as described above. The HTML is parsed with BeautifulSoup, locating each s-card listing element on the page and pulling its title, price, condition, image, and attribute-row text. Unlabeled attribute strings (shipping, location, buying format, returns) are classified into their own fields by keyword matching rather than left as one blob. Only what the search page itself displays publicly is extracted — nothing requires a login or an eBay account. Because the actor reads eBay's rendered markup and normalizes it into a fixed field set, the output schema stays the same even when eBay's page layout changes.

Integrations

eBay Product Listing Scraper runs on the Apify platform, so it works with anything that can call the Apify API or trigger an Apify run.

Calling eBay Product Listing Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run_input = {
"urls": ["https://www.ebay.com/sch/260010/i.html?_nkw=shoe&Brand=Nike"],
}
run = client.actor("ebay-product-listing-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request to the Apify API.

No-code tools (n8n, Make, LangChain)

In n8n, use the HTTP Request node pointed at https://api.apify.com/v2/acts/ebay-product-listing-scraper/run-sync-get-dataset-items?token=<TOKEN> with your urls payload as the JSON body. In Make, the Apify app's "Run an Actor" module accepts the same input and can feed the returned items into any downstream module. In LangChain, wrap the same Apify API call as a custom tool so an agent can request eBay listing data mid-chain.

Scraping publicly available product listing data is generally legal in most jurisdictions — eBay Product Listing Scraper returns only what any visitor sees on eBay's public search and category pages, no login or account bypass involved. This actor collects product and pricing data, not personal data about identifiable individuals — eBay's GDPR/CCPA personal-data regime does not attach to listing records like title, price, or condition. What does apply is eBay's own terms of service (which govern how you may use their site) and, depending on your jurisdiction, database-rights protections over compiled catalogue data. Consult legal counsel if your use case involves bulk storage or redistribution of scraped data.

Frequently asked questions

What eBay product listing fields does eBay Product Listing Scraper return?

It returns product_title, price, condition, image_url, and product_url as its core fields, plus nine more covering shipping, location, buying format, returns, and item IDs — see the full field table above.

Does eBay Product Listing Scraper require an eBay account or login?

No. It reads eBay's own public search and category pages exactly as any visitor sees them — no eBay account, no eBay Developer API key, and no login credentials are needed anywhere in the actor's code.

How many listings can I extract in one run?

There's no fixed cap in the actor's own code — every listing card found on every URL you supply is extracted, capped only by how many URLs you add to urls and your Apify plan's usage limits.

What happens if a listing is removed or a search page returns no results?

If eBay's page has no matching listing cards, the run simply produces zero rows for that URL and continues to the next one — no error is raised. If a page fails to load after all connection retries, that single URL is logged as failed and skipped; the run does not stop.

Can I scrape multiple eBay listing pages at once?

Yes. urls accepts an array — add as many eBay search, category, or saved-search URLs as you need and they're all processed within the same run, with results deduplicated by itemId across the whole run.

Does eBay Product Listing Scraper work with Claude, ChatGPT, and other AI agent tools?

It's callable as a standard HTTP endpoint via the Apify API, so any agent framework that can make an HTTP request — including custom Claude or ChatGPT tool integrations — can trigger a run and read back the dataset.

How does eBay Product Listing Scraper compare to other eBay scrapers?

This actor splits unlabeled card attributes into structured fields — shippingCost, itemLocation, buyingFormat, returnsAccepted — instead of returning one raw text blob, and it upgrades every image URL to eBay's maximum CDN resolution automatically. It also validates that a fetched page actually contains listing markup before accepting it, rather than trusting an HTTP 200 status alone.

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

Yes. Output is typed, normalized JSON with consistent field names across runs — no HTML parsing or CSS selectors needed. Pass it directly to an LLM prompt, index it into a vector store, or feed it to an agent tool.

What happens when eBay changes its layout or anti-bot system?

The actor is maintained and its output schema is designed to stay stable across eBay layout changes, since fields are extracted by parsing labeled card elements rather than fixed positions. No specific update turnaround is published or guaranteed.

Can I use eBay Product Listing Scraper without managing proxies or browser infrastructure?

Yes. By default the actor handles connection escalation (no proxy → datacenter → residential) and retries automatically; you don't need to configure or manage any proxy yourself unless you want to.

Which eBay product listing fields work best for AI training data and RAG indexing?

For RAG, index product_title and card_attribute — the highest-information text fields. For structured training data, price, condition, itemId, and scrapedAt return as consistently typed strings across every record, making them reliable for tabular pipelines.

Scraper NameWhat it extracts
../amazon-search-scraperAmazon search-result product listings
../amazon-product-details-scraperFull Amazon product detail-page data
../Amazon-Price-TrackerAmazon product prices over repeated runs
../Shopify-Products-ScraperProduct catalogue data from Shopify stores
../Shopify-Store-ScraperFull storefront data from Shopify stores

💬 Your feedback

Found a bug or missing a field? Let us know through the Actor's Issues tab on Apify Console or via the Apify Console support chat — reports like this directly shape what gets fixed and added next.