Export active eBay listings from keyword searches and public search or category URLs. Get normalized prices, shipping, landed cost, seller signals, auction data, images, and optional product details across eight marketplaces.
Use the dataset for price monitoring, product sourcing, resale research, assortment analysis, seller tracking, and auction alerts. No eBay account or developer API key is required.
Who is it for?
- Marketplace sellers and resellers comparing prices, shipping, and competition
- Retail and brand teams monitoring listings, discounts, and seller activity
- Sourcing teams finding inventory across countries and conditions
- Researchers and agencies building repeatable marketplace datasets
- Auction buyers tracking newly listed and ending-soon inventory
Example input
{
"searchQueries": ["wireless headphones"],
"marketplace": "US",
"maxItemsPerQuery": 20,
"maxPagesPerQuery": 2,
"sort": "newly_listed",
"listingType": "all",
"includeDetails": false
}
Example output
{
"itemId": "127946512448",
"title": "Sony WH-1000XM5 Wireless Noise Canceling Headphones - Black",
"url": "https://www.ebay.com/itm/127946512448",
"query": "wireless headphones",
"rank": 1,
"page": 1,
"marketplace": "US",
"price": 225,
"currency": "USD",
"shippingCost": 27.4,
"totalPrice": 252.4,
"condition": "Open Box",
"listingType": "best_offer",
"bestOffer": true,
"sellerUsername": "authorizedsales",
"sellerFeedbackPercent": 99.1,
"imageUrl": "https://i.ebayimg.com/images/g/example/s-l1600.jpg",
"detailStatus": "not_requested",
"scrapedAt": "2026-07-10T12:00:00.000Z"
}
What data can you export?
Each row represents one unique active listing.
- Identity and context: item ID, title, canonical URL, source URL, query, rank, result page, marketplace, and scrape time
- Pricing: numeric and displayed price, currency, original price, discount, coupon, shipping cost, shipping text, and normalized total price
- Listing signals: condition, auction/Buy It Now/Best Offer flags, bids, watchers, sold count, time left, and sponsored status
- Seller and fulfillment: seller username, feedback percentage/count, item location, ships-from value, return policy, free returns, and free shipping
- Media: main image and full image URL list
- Optional details: description, item specifics, brand, model, MPN, UPC, EAN, category path, quantity, full gallery, and enrichment status
Fields that eBay does not expose for a listing are returned as null; values are not invented.
Input settings
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries |
string[] | example query | Keywords to search |
startUrls |
URL[] | empty | Public eBay search or category pages |
marketplace |
enum | US |
US, UK, DE, FR, IT, ES, CA, or AU |
maxItemsPerQuery |
integer | 20 |
Unique listings saved per query or URL |
maxPagesPerQuery |
integer | 2 |
Result pages visited per source, maximum 20 |
sort |
enum | best_match |
Best match, newly listed, ending soonest, price low, or price high |
listingType |
enum | all |
All, auction, Buy It Now, or Best Offer |
conditions |
string[] | empty | Condition shortcuts or numeric eBay condition IDs |
minPrice / maxPrice |
number | unset | Price range in marketplace currency |
freeShippingOnly |
boolean | false |
Limit keyword searches to free shipping |
includeDetails |
boolean | false |
Visit item pages for product specifics and identifiers |
maxRequestRetries |
integer | 2 |
New-session retries for blocked pages |
proxyConfiguration |
object | residential | Apify Proxy configuration |
Provide at least one search query or start URL. When both are supplied, the Actor processes both. A start URL determines its marketplace from the eBay domain; marketplace applies to keyword searches.
Tips for reliable runs
- Start with 20 listings and increase the limit after checking the dataset.
- Use keyword mode when you want consistent filters across marketplaces.
- Use start URLs to preserve complex filters selected on eBay.
- Keep detail enrichment off for fast price monitoring; enable it only when identifiers or item specifics are needed.
- For recurring monitoring, schedule the Actor and export results to your database or webhook workflow.
- Keep the default proxy configuration unless you have a tested alternative.
- When multiple queries or URLs are supplied, one exhausted source does not discard rows from the others. Inspect
RUN_SUMMARYfor partial runs and per-source errors.
Limits and important behavior
- Only public active search/category and item pages are supported. Account, order, message, and private pages are rejected.
- Sold/completed-listing history is outside this Actor's active-marketplace scope.
- eBay may localize shipping and availability according to the request region.
- Some cards do not expose seller, return, watcher, coupon, or shipping details; those fields are
null. - Detail pages can be more restrictive than search pages. A detail failure does not remove the base listing; inspect
detailStatusanddetailError. - Results can change between pages while auctions and new listings are updated. Item-ID deduplication prevents duplicate dataset rows.
- Respect eBay's terms, robots policies, applicable law, and personal-data obligations.
API usage
curl -X POST \
"https://api.apify.com/v2/acts/fetch_cat~ebay-marketplace-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQueries": ["wireless headphones"],
"marketplace": "US",
"maxItemsPerQuery": 20
}'
JavaScript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/ebay-marketplace-scraper').call({
searchQueries: ['wireless headphones'],
marketplace: 'US',
maxItemsPerQuery: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
client = ApifyClient(token="YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/ebay-marketplace-scraper").call(run_input={
"searchQueries": ["wireless headphones"],
"marketplace": "US",
"maxItemsPerQuery": 20,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
Use with AI agents through MCP
Connect the Actor to Claude, Cursor, or another MCP client with:
https://mcp.apify.com/?tools=fetch_cat/ebay-marketplace-scraper
Example Claude CLI setup:
claude mcp add apify-ebay "https://mcp.apify.com/?tools=fetch_cat/ebay-marketplace-scraper"
Or add a JSON MCP server configuration:
{
"mcpServers": {
"apify-ebay": {
"url": "https://mcp.apify.com/?tools=fetch_cat/ebay-marketplace-scraper"
}
}
}
Agents can then run product searches and work with the resulting structured dataset.
Support
If a run fails or a field is missing, open an issue on the Actor page and include:
- The run ID and complete input JSON (remove any secrets)
- A short description of the expected output
- A sample of the actual output or error message
- One reproducible public URL or search query
- The marketplace and whether detail enrichment was enabled
Do not include account credentials, private order data, or other sensitive information.