How to Scrape eBay Product Listings Across 8 Marketplaces

A practical guide to pulling active eBay listings by keyword or URL using the NanoScrape eBay Product Scraper. Each result includes price, condition, listing type, bids, shipping cost, sold count, watcher count, and 15 more fields. The actor runs HTTP-only with 128 MB of RAM, supports all 8 major eBay regional sites, and costs about $3 per 1,000 listings.

JSON output from the NanoScrape eBay Product Scraper showing price, condition, listing type, bids count, shipping cost, sold count, and watcher count fields
Sample result: one JSON object per listing, 20-plus fields, ready to load into a spreadsheet or database.
Difficulty: Beginner
Time: 5 minutes
Cost: ~$3 per 1,000 listings (free $5 credit covers ~1,600)
Marketplaces: 8 eBay regional sites
Open the eBay Scraper on Apify Jump to pricing ↓

In this tutorial

  1. What you get
  2. Prerequisites
  3. Step 1: Open the actor and sign up
  4. Step 2: Set your search queries
  5. Step 3: Apply filters
  6. Step 4: Run and download results
  7. Supported marketplaces
  8. Automate with the API
  9. Compare with sold prices
  10. What it costs
  11. FAQ

What you get

Each run returns one JSON object per eBay listing. The object includes 20-plus fields drawn directly from the listing card:

All monetary values use the currency of the marketplace you target. originalPrice and discountPercent appear only when eBay shows a struck-through price on the card.

{
  "itemId": "256184730291",
  "title": "Apple iPhone 15 Pro 256GB Natural Titanium Unlocked Excellent",
  "url": "https://www.ebay.com/itm/256184730291",
  "marketplace": "ebay.com",
  "price": 749.99,
  "currency": "USD",
  "originalPrice": 849.99,
  "discountPercent": 12,
  "condition": "Refurbished",
  "listingType": "buy_it_now",
  "bidsCount": null,
  "timeLeft": null,
  "bestOfferAvailable": true,
  "shippingCost": 0.0,
  "freeShipping": true,
  "itemLocation": "Austin, Texas, US",
  "soldCount": 38,
  "watcherCount": 204,
  "isSponsored": false,
  "imageUrl": "https://i.ebayimg.com/images/g/abc123/s-l500.jpg",
  "searchQuery": "iphone 15 pro",
  "scrapedAt": "2026-06-13T08:14:22Z"
}

Prerequisites

STEP 1

Open the actor and sign up

  1. Open the NanoScrape eBay Product Scraper on Apify.
  2. Click Try for free. Sign up with Google or email. The free tier includes $5 of monthly credit, enough to test without entering a payment method.
  3. Once signed in, click Try for free again on the actor page. The Apify Console opens with the input form pre-loaded and ready to configure.
Apify Console showing the eBay Product Scraper input form with Search Queries, Marketplace, and Max Results fields ready to fill in
The input form opens automatically when you click Try for free.
Tip: the free $5 monthly credit is enough for about 1,600 listings. You only pay if you go over.
STEP 2

Set your search queries

The actor accepts two types of input. Use searchQueries for keyword searches, or startUrls for direct eBay search and category page URLs. At least one of the two is required.

Keyword search

Paste one or more search terms into the Search Queries field, one per line. The actor runs all queries in the same run and labels each result with the query that produced it via the searchQuery field.

{
  "searchQueries": [
    "iphone 15 pro",
    "iphone 15 pro max"
  ],
  "marketplace": "ebay.com",
  "maxResults": 100
}

URL search

If you already have a filtered eBay search URL from a manual search on ebay.com, paste it into Start URLs. This reproduces the exact sorting, condition, and filter combination you see in the browser.

Tip: set maxResults to cap the total results across all queries. The default is 100. eBay typically returns fewer than 500 results per search term regardless of how high you set this.
STEP 3

Apply filters

All filters are optional. They apply server-side, so you only pay for listings that match. You can combine any number of filters in the same run.

Example: find Buy It Now refurbished iPhones under $800 with free shipping, sorted by lowest price first:

{
  "searchQueries": ["iphone 15 pro"],
  "marketplace": "ebay.com",
  "maxResults": 50,
  "listingType": "buy_it_now",
  "condition": ["refurbished"],
  "sortBy": "price_low",
  "maxPrice": 800,
  "freeShippingOnly": true
}
Apify Console input form for the eBay Product Scraper with condition set to refurbished, listing type to buy it now, sort by price low, and max price set to 800
Combining condition, listing type, and price filters to narrow results before the run starts.
STEP 4

Run and download results

Click Save and Run at the bottom of the input form. Runs typically finish in under a minute for 100 results. A progress log appears on the right side of the Console.

Apify Console Dataset tab showing eBay scraper results in a table with columns for title, price, condition, listing type, and seller item location
Results appear in the Dataset tab as soon as the run completes.

Open the Dataset tab to see results in a table. Click Export at the top right to download:

Pagination is automatic: eBay search pages show about 50 listings each. The actor fetches as many pages as needed to reach your maxResults cap. You do not need to handle pagination yourself.

Supported marketplaces

Pass the marketplace field with any of the following values. One run targets one marketplace. To compare prices across regions, run the actor once per marketplace and merge the datasets.

Prices and currency codes always come from the target marketplace. ebay.de returns EUR; ebay.com.au returns AUD.

Automate with the API

Call the actor from your own code or pipeline using the Apify REST API. Replace YOUR_TOKEN with the Personal API token found in Apify Console › Settings › Integrations.

curl -sS -X POST \
  'https://api.apify.com/v2/acts/santamaria-automations~ebay-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "searchQueries": ["macbook air m2"],
    "marketplace": "ebay.com",
    "maxResults": 50,
    "condition": ["used", "refurbished"],
    "sortBy": "price_low"
  }'

The run-sync-get-dataset-items endpoint starts the actor, waits for it to finish, and returns the full dataset in one HTTP response. For large runs, use the async endpoint and poll for completion.

Use with AI agents via MCP

Connect the actor to any MCP-compatible AI client (Claude Desktop, Claude.ai, Cursor, VS Code, LangChain) using the Apify MCP server URL:

https://mcp.apify.com?tools=santamaria-automations/ebay-scraper

Once connected, prompt your agent: "Use ebay-scraper to find the 20 cheapest refurbished iPhone 15 Pro listings on ebay.com under $800. Return results as a table with price, condition, and link." Clients that support dynamic tool discovery (Claude.ai, VS Code) receive the full input schema automatically.

Compare with sold prices

Active listings show what sellers are asking. Completed listings show what buyers actually paid. The NanoScrape eBay Sold Listings Scraper scrapes completed eBay sales for real transaction prices and includes built-in price analytics: average, median, and a recommended resale price.

A common workflow: run this actor to pull active listings, then run the Sold Listings Scraper on the same search term to see the spread between ask and transaction prices. Listings where the asking price is close to the recent sold median are priced to move. Listings significantly above the sold median are overpriced for the current market.

What it costs

Pricing has been in effect since 2026-06-17. Only listings that successfully return data are charged. You pay nothing for pages that fail to load.

Start small: set maxResults to 10 on your first run to test your query and filter settings for less than a cent before scaling up.

FAQ

Do I need a paid Apify plan?

No. Every Apify account gets $5 of free usage credit each month. At about $3 per 1,000 listings, the free tier covers roughly 1,600 results per month before you need to add a payment method.

Can I scrape multiple search terms in one run?

Yes. Pass an array to searchQueries: for example ["macbook air m2", "macbook pro m3"]. All queries run in the same actor run and each result is labelled with the query that produced it via the searchQuery field.

Can I scrape a specific eBay category or search URL?

Yes. Use the startUrls field instead of searchQueries and paste any eBay search or category page URL, including URLs with filters you applied manually in the browser.

What is the difference between this actor and the eBay Sold Listings Scraper?

This actor scrapes active listings (current asking prices). The eBay Sold Listings Scraper scrapes completed sales (real transaction prices, plus average, median, and recommended price analytics). Run both on the same search term to compare asking prices against what buyers actually paid.

Does the actor work on all 8 eBay regional sites?

Yes. Set the marketplace field to any of: ebay.com, ebay.co.uk, ebay.de, ebay.fr, ebay.it, ebay.es, ebay.ca, ebay.com.au. One run targets one marketplace. To compare prices across regions, run the actor once per marketplace and merge the datasets.

Is scraping eBay legal?

Scraping publicly available data is generally permitted in most jurisdictions. The hiQ Labs v. LinkedIn ruling in the US established that scraping public data does not violate the Computer Fraud and Abuse Act. eBay's Terms of Service restrict automated access, so use the data for personal research, price monitoring, and analytics rather than republishing eBay listings in bulk. Consult a lawyer for specific compliance questions.

Related resources

Open the eBay Scraper on Apify See pricing above ↑