# eBay Scraper — Product Listings & Prices (`solidcode/ebay-com-scraper`) Actor

\[💰 $3.0 / 1K] Extract eBay listings at scale — price, price range, currency, buying format, condition, shipping cost, item location, seller name and feedback, bids and time left. Filter by 35 departments, 7 conditions, price band, auction or Buy It Now, and seller. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/solidcode/ebay-com-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## eBay Scraper — Product Listings & Prices

Pull live product listings from eBay at scale — asking price, price range, currency,
buying format, condition, shipping cost, item location, seller identity and image, on
every row. Built for resellers, pricing analysts and e-commerce teams who need to see
what an entire category is actually listed at right now, instead of clicking through
eBay's search results one page at a time.

### Why This Scraper?

- **30 fields on every listing** — item ID, canonical listing URL, title, price,
  price range, currency, buying format, condition, shipping cost, free-returns flag,
  item location, seller name and feedback, quantity sold, watchers, bids, time left and
  image URL. Every one is a typed, named column you can sort and filter on directly.
- **Item ID, listing URL, title, price, price-as-shown, currency, buying format and
  image URL on 100% of listings** — measured across 1,875 listings spanning 5
  item-location scopes and 5 product categories, not a single-category spot check.
- **18 filters, every one measured to change the result set** — 35 eBay departments,
  7 condition grades, 5 sort orders, 3 item-location scopes, minimum and maximum price,
  free shipping, free returns, fast delivery, authenticity guarantee and deals-only.
- **Auction, Buy It Now and Best Offer are three independent switches**, not one either/or dropdown — 71 of 71 auction
  listings kept the Auction label, including the 13 that also showed an offer row, and every auction row carries its
  live bid count and time remaining.
- **Pull a seller's whole catalogue with no keyword at all** — leave the query blank, name the seller, and 240 of 240
  returned rows came back from that seller. Every other filter still stacks on top of it.
- **Price and currency always travel together** — one sampled slice of 75 listings came
  back priced entirely in Colombian pesos, so every row carries its own `currency` code
  and a mixed-marketplace export never silently averages two different units.
- **Price ranges keep both ends** — a listing shown as "$23.29 to $31.99" gives you
  `price` and `priceMax` as two separate numbers, never collapsed to one or averaged.
- **Shipping cost is its own field, never folded into the price** — and `freeShipping` is a real true/false, so "ships
  free" and "shipping unknown" stay distinguishable when you compute a landed cost.
- **Condition is a closed 11-label eBay vocabulary** — Brand New, Open Box, four
  refurbished grades, For parts or not working, and the rest. Seller marketing copy turns
  up where a condition should be on 18.7% of listings — it ships separately as `subtitle`
  and never contaminates `condition`.

### Use Cases

#### Pricing & Competitive Intelligence

- Track the live asking price of a SKU across every seller offering it, with shipping
  cost kept separate so you can compare landed cost rather than headline price.
- Watch a competitor's shopfront by seller name and see their whole catalogue, pricing
  and Top Rated Plus status in one run.
- Measure how much of a category is auction versus fixed-price versus offer-accepting,
  using the three buying-format switches independently.
- Build price-band histograms from `min_price` / `max_price` sweeps over one keyword.

#### Reselling & Sourcing

- Find underpriced inventory by combining a condition grade with a maximum price and
  sorting by price plus shipping, lowest first.
- Surface ending-soon auctions with low bid counts using the Ending Soonest sort and the
  `bids` and `timeLeft` fields.
- Filter to refurbished grades — excellent, very good, good and certified — to source a
  specific quality tier rather than a generic "used" bucket.
- Restrict to United States, North America or Worldwide item locations to keep delivery
  times and import duties predictable.

#### Market Research

- Size a category by pulling thousands of active listings per search across 35 eBay
  departments and counting brands, formats and condition mix.
- Track seasonal price movement by running the same keyword on a schedule and diffing
  the price and quantity-sold columns.
- Quantify demand signals from `soldQuantity`, `watchers` and the availability note that
  eBay shows on low-stock listings.
- Compare promotion intensity across sellers using the coupon offer, multi-buy offer and
  original-price fields.

#### Brand Protection & Authenticity

- Monitor listings using your brand name outside your own authorised sellers.
- Use the authenticity-guarantee filter to separate eBay-verified sneakers, watches,
  handbags, jewelry and trading cards from unverified ones.
- Spot grey-market pricing by combining an item-location scope with a price ceiling.

#### Data Enrichment & Integration

- Feed live marketplace pricing into a repricing engine or an internal BI dashboard.
- Enrich a product catalogue with real resale prices, condition mix and image URLs.
- Push results straight to Google Sheets, a warehouse or a webhook the moment a run
  finishes.

### Getting Started

#### Simplest run

```json
{
  "query": "baseball caps",
  "category": "0",
  "sort": "12",
  "search_descriptions": "",
  "buy_it_now": "",
  "auction": "",
  "accepts_offers": "",
  "condition": "",
  "min_price": "",
  "max_price": "",
  "free_shipping": "",
  "fast_delivery": "",
  "returns_accepted": "",
  "free_returns": "",
  "authenticity_guarantee": "",
  "deals_only": "",
  "item_location": "",
  "seller": "",
  "maxItems": 100
}
```

#### Paste a filtered search URL from the site

Set your filters on the site, then copy the address bar URL — every filter in it is
carried through.

```json
{
  "searchUrls": [
    "https://www.ebay.com/sch/i.html?_nkw=baseball caps&_sacat=0&_sop=12&LH_TitleDesc=&LH_BIN=&LH_Auction=&LH_BO=&LH_ItemCondition=&_udlo=&_udhi=&LH_FS=&LH_FAST=&LH_RPA=&LH_FR=&LH_AV=&LH_Savings=&LH_PrefLoc=&_ssn="
  ],
  "maxItems": 0
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchUrls` | array | — | Paste eBay search addresses here. Run your search on eBay, set any filters you like using eBay's own left-hand panel, then copy the address from your browser's address bar - it will start with "ebay.com/sch/". Everything you set on eBay is kept, and the filters below are ignored for that address. Category browse pages ("ebay.com/b/...") and seller shopfronts ("ebay.com/usr/...") are not search addresses and will not work - search for the seller's name, or set the Seller field below, instead. |
| `query` | string | `""` | Keywords to search for, for example "iphone 16 pro 256gb". eBay's own search syntax works here: put a phrase in quotes for an exact match, and put a minus in front of a word to exclude it. Leave this empty and fill in `seller` below to pull that seller's entire catalogue instead. Give every run either `query` or `seller` — the other settings narrow a search down rather than being one. Used only when Search URLs is empty. |
| `category` | string | `0` | Search inside one eBay department only. Leave on "All categories" to search everything. To use a narrower sub-category, set it on eBay itself and paste the resulting address into Search URLs above. |
| `seller` | string | `""` | Only return listings from one eBay seller, for example "detroitaxle". Works with or without keywords: leave `query` empty and this alone will pull that seller's entire catalogue, and the filters below still apply on top of it. |
| `search_descriptions` | string | `""` | By default eBay matches your keywords against listing titles only. Turn this on to match the full item description as well. It changes which listings match, and for multi-word searches it is usually the stricter of the two. |
| `buy_it_now` | string | `""` | Only return fixed-price listings you can buy immediately. |
| `auction` | string | `""` | Only return listings currently up for bidding. |
| `accepts_offers` | string | `""` | Only return listings where the seller will consider an offer below the asking price. |
| `condition` | string | `""` | Only return items in one condition. eBay words these differently in different departments - in clothing "New" reads as "New with tags", in electronics it reads "Brand New". |
| `min_price` | string | `""` | Only return listings priced at or above this amount, in the marketplace currency. Leave empty for no minimum. |
| `max_price` | string | `""` | Only return listings priced at or below this amount. Leave empty for no maximum. |
| `item_location` | string | `""` | Only return items shipping from a chosen region. Use this to avoid long international delivery times. |
| `free_shipping` | string | `""` | Only return listings that ship at no extra cost. |
| `fast_delivery` | string | `""` | Only return listings eBay expects to arrive within 2 to 4 days. |
| `returns_accepted` | string | `""` | Only return listings from sellers who accept returns. |
| `free_returns` | string | `""` | Only return listings where sending an item back costs you nothing. |
| `authenticity_guarantee` | string | `""` | Only return items eBay inspects and verifies before they reach the buyer. Available on sneakers, watches, handbags, jewelry and trading cards. |
| `deals_only` | string | `""` | Only return listings eBay has flagged as discounted. |
| `sort` | string | `12` | Order in which eBay returns the listings. |
| `maxItems` | integer | `100` | Maximum listings per search URL (0 = collect everything each search returns). A single eBay search stops serving deeper pages somewhere in the 6,300-11,000+ range depending on the query, so use several narrower searches to collect more. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `concurrency` | integer | `8` | How many requests to run in parallel. Lower this if you see failures. |
| `proxyConfiguration` | object | Apify Proxy | Proxy settings for the run. |

### Output

Every listing is one dataset row. The examples below are real captured listings; only
the seller handle has been replaced with a placeholder.

```json
{
  "itemId": "236069583529",
  "url": "https://www.ebay.com/itm/236069583529",
  "title": "TOZO O2 True Open Ear Wireless Earbuds Lightweight Comfort Headphones",
  "condition": "Certified - Refurbished",
  "subtitle": "Certified - Refurbished",
  "buyingFormat": "Buy It Now",
  "newlyListed": null,
  "price": 23.29,
  "priceMax": 31.99,
  "priceDisplay": "$23.29",
  "currency": "USD",
  "originalPrice": 35.99,
  "shippingCost": null,
  "freeShipping": true,
  "freeReturns": true,
  "couponOffer": null,
  "multiBuyOffer": null,
  "itemLocation": "United States",
  "distanceMiles": null,
  "sellerName": "example_seller",
  "sellerFeedbackPercent": 100.0,
  "sellerFeedbackScore": "1.3K",
  "imageUrl": "https://i.ebayimg.com/images/g/4pUAAOSwhX1oCafJ/s-l500.jpg",
  "soldQuantity": 190,
  "watchers": null,
  "topRatedSeller": true,
  "ebayProgram": "eBay Refurbished",
  "availabilityNote": null,
  "bids": null,
  "timeLeft": null
}
```

An auction listing carries the same 30 fields. These are the ones that read differently:

```json
{
  "itemId": "287495230984",
  "title": "Antique Wollensak Optical Co Junior Foldable Camera with Case 6\" by 4.5\"",
  "buyingFormat": "Auction",
  "price": 60.0,
  "priceDisplay": "$60.00",
  "bids": 0,
  "timeLeft": "4d 6h",
  "shippingCost": 12.99,
  "freeShipping": false,
  "condition": null
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `itemId` | string | Item ID |
| `url` | string | Listing URL |
| `title` | string | Title |
| `condition` | string | Condition |
| `subtitle` | string | Listing subtitle (as shown) |
| `buyingFormat` | string | Buying format |
| `newlyListed` | boolean | Newly listed |

#### Price & Value & Location

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Price |
| `priceMax` | number | Price (high end of range) |
| `priceDisplay` | string | Price (as shown) |
| `currency` | string | Currency |
| `originalPrice` | number | Original price (seller's) |
| `shippingCost` | number | Shipping cost |
| `freeShipping` | boolean | Free shipping |
| `freeReturns` | boolean | Free returns |
| `couponOffer` | string | Coupon offer (as shown) |
| `multiBuyOffer` | string | Multi-buy offer (as shown) |
| `itemLocation` | string | Item location |
| `distanceMiles` | number | Distance (miles) |

#### Contacts & Media

| Field | Type | Description |
|-------|------|-------------|
| `sellerName` | string | Seller |
| `sellerFeedbackPercent` | number | Seller positive feedback (%) |
| `sellerFeedbackScore` | string | Seller feedback score (as shown) |
| `imageUrl` | string | Image URL |

#### Details & Timestamps

| Field | Type | Description |
|-------|------|-------------|
| `soldQuantity` | number | Quantity sold |
| `watchers` | number | Watchers |
| `topRatedSeller` | boolean | Top Rated Plus seller |
| `ebayProgram` | string | eBay programme |
| `availabilityNote` | string | Availability note |
| `bids` | number | Bids |
| `timeLeft` | string | Time left |

### Tips for Best Results

- **One search has a floor and a ceiling of its own.** Full walks measured between about
  6,300 and 11,000+ listings before eBay stops serving deeper pages, and where a given
  query lands inside that range depends on the query. To collect a whole category, split
  it into several narrower searches — by department, price band or condition — and run
  them in the same job rather than pushing one broad search deeper.
- **Leave `query` empty and fill in `seller` to get a seller's entire catalogue.** Every
  other filter still applies on top, so seller plus a price band or a single department
  is a clean way to slice a large shopfront. A run needs either a keyword or a seller —
  filters alone are refinements and cannot carry a search by themselves.
- **eBay's own search syntax works inside `query`.** Wrap a phrase in quotes for an exact
  match, and put a minus in front of a word to exclude it — `"nikon f3" -body` is a valid
  query and behaves exactly as it does on the site.
- **`search_descriptions` gives you a different result set, not a bigger one.** Measured
  on a four-word query it moved the match count from 659 down to 536, because every
  keyword then has to appear in the title *or* the description. Use it to change what
  matches, not to widen a search.
- **`item_location` set to Worldwide returns more than the default, not fewer.** eBay's
  default quietly prefers items that can reach you; switching to Worldwide lifted the
  same query from 659 to 670 matches.
- **Narrow filter combinations cost more per row than broad ones.** A condition grade
  plus Buy It Now on a niche keyword may only have ~50 genuine matches, and the run still
  works through full-size result pages looking for them. Set `maxItems` near what you
  realistically expect rather than leaving a large ceiling on a narrow search.
- **Active listings only.** eBay puts sold and completed listings behind a sign-in wall,
  so this actor covers what is currently for sale. Everything returned is a live listing
  you or your buyers could act on today.

### Pricing

**From $3.00 per 1,000 results.**

| Results | Price |
|---------|-------|
| 100 | $0.30 |
| 1,000 | $3.00 |
| 10,000 | $30.00 |
| 100,000 | $300.00 |

Those are the rates on Gold and above. Higher-volume plans pay less per result:

| Your Apify plan | Price |
|-----------------|-------|
| No discount | $3.60 |
| Bronze | $3.40 |
| Silver | $3.20 |
| **Gold and above** | **$3.00** |

Per 1,000 results.

A "result" is any listing row in the output dataset. When you run several searches at once, a listing matching more than one of them is de-duplicated before it reaches the dataset, so you are never charged twice for the same listing. Platform fees (compute, storage) are additional and depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

**This is an unofficial scraper. It is not affiliated with, endorsed by, or connected to Ebay.com or its operators in any way.** All trademarks belong to their respective owners.

This actor is intended for legitimate market research and analytics. You are responsible for complying with applicable laws and with Ebay.com's Terms of Service.

Results may include personal data such as contact details. Treat them accordingly: do
not use them for spam, harassment, or any unlawful purpose, and follow applicable
privacy rules when storing or processing them.

# Actor input Schema

## `searchUrls` (type: `array`):

Paste eBay search addresses here. Run your search on eBay, set any filters you like using eBay's own left-hand panel, then copy the address from your browser's address bar - it will start with "ebay.com/sch/". Everything you set on eBay is kept, and the filters below are ignored for that address. Category browse pages ("ebay.com/b/...") and seller shopfronts ("ebay.com/usr/...") are not search addresses and will not work - search for the seller's name, or set the Seller field below, instead.

## `query` (type: `string`):

Keywords to search for, for example "iphone 16 pro 256gb". eBay's own search syntax works here: put a phrase in quotes for an exact match, and put a minus in front of a word to exclude it. Leave this empty and fill in Seller username below to pull that seller's entire catalogue instead. Used only when Search URLs is empty.

## `category` (type: `string`):

Search inside one eBay department only. Leave on "All categories" to search everything. To use a narrower sub-category, set it on eBay itself and paste the resulting address into Search URLs above.

## `seller` (type: `string`):

Only return listings from one eBay seller, for example "detroitaxle". Works with or without keywords: leave Search keywords empty and this alone will pull that seller's entire catalogue, and the filters below still apply on top of it.

## `search_descriptions` (type: `string`):

By default eBay matches your keywords against listing titles only. Turn this on to match the full item description as well. It changes which listings match, and for multi-word searches it is usually the stricter of the two.

## `buy_it_now` (type: `string`):

Only return fixed-price listings you can buy immediately.

## `auction` (type: `string`):

Only return listings currently up for bidding.

## `accepts_offers` (type: `string`):

Only return listings where the seller will consider an offer below the asking price.

## `condition` (type: `string`):

Only return items in one condition. eBay words these differently in different departments - in clothing "New" reads as "New with tags", in electronics it reads "Brand New".

## `min_price` (type: `string`):

Only return listings priced at or above this amount, in the marketplace currency. Leave empty for no minimum.

## `max_price` (type: `string`):

Only return listings priced at or below this amount. Leave empty for no maximum.

## `item_location` (type: `string`):

Only return items shipping from a chosen region. Use this to avoid long international delivery times.

## `free_shipping` (type: `string`):

Only return listings that ship at no extra cost.

## `fast_delivery` (type: `string`):

Only return listings eBay expects to arrive within 2 to 4 days.

## `returns_accepted` (type: `string`):

Only return listings from sellers who accept returns.

## `free_returns` (type: `string`):

Only return listings where sending an item back costs you nothing.

## `authenticity_guarantee` (type: `string`):

Only return items eBay inspects and verifies before they reach the buyer. Available on sneakers, watches, handbags, jewelry and trading cards.

## `deals_only` (type: `string`):

Only return listings eBay has flagged as discounted.

## `sort` (type: `string`):

Order in which eBay returns the listings.

## `maxItems` (type: `integer`):

Maximum listings per search URL (0 = collect everything each search returns). A single eBay search stops serving deeper pages somewhere in the 6,300-11,000+ range depending on the query, so use several narrower searches to collect more.

## `concurrency` (type: `integer`):

How many requests to run in parallel. Lower this if you see failures.

## `proxyConfiguration` (type: `object`):

Proxy settings for the run.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.ebay.com/sch/i.html?_nkw=baseball caps&_sacat=0&_sop=12&LH_TitleDesc=&LH_BIN=&LH_Auction=&LH_BO=&LH_ItemCondition=&_udlo=&_udhi=&LH_FS=&LH_FAST=&LH_RPA=&LH_FR=&LH_AV=&LH_Savings=&LH_PrefLoc=&_ssn="
  ],
  "query": "baseball caps",
  "category": "0",
  "seller": "",
  "search_descriptions": "",
  "buy_it_now": "",
  "auction": "",
  "accepts_offers": "",
  "condition": "",
  "min_price": "",
  "max_price": "",
  "item_location": "",
  "free_shipping": "",
  "fast_delivery": "",
  "returns_accepted": "",
  "free_returns": "",
  "authenticity_guarantee": "",
  "deals_only": "",
  "sort": "12",
  "maxItems": 100,
  "concurrency": 8,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `core` (type: `string`):

Core Fields for each listing.

## `financial` (type: `string`):

Price & Value for each listing.

## `location` (type: `string`):

Location for each listing.

## `contact` (type: `string`):

Contacts for each listing.

## `media` (type: `string`):

Media for each listing.

## `meta` (type: `string`):

Details & Timestamps for each listing.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchUrls": [
        "https://www.ebay.com/sch/i.html?_nkw=baseball caps&_sacat=0&_sop=12&LH_TitleDesc=&LH_BIN=&LH_Auction=&LH_BO=&LH_ItemCondition=&_udlo=&_udhi=&LH_FS=&LH_FAST=&LH_RPA=&LH_FR=&LH_AV=&LH_Savings=&LH_PrefLoc=&_ssn="
    ],
    "query": "baseball caps"
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/ebay-com-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchUrls": ["https://www.ebay.com/sch/i.html?_nkw=baseball caps&_sacat=0&_sop=12&LH_TitleDesc=&LH_BIN=&LH_Auction=&LH_BO=&LH_ItemCondition=&_udlo=&_udhi=&LH_FS=&LH_FAST=&LH_RPA=&LH_FR=&LH_AV=&LH_Savings=&LH_PrefLoc=&_ssn="],
    "query": "baseball caps",
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/ebay-com-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrls": [
    "https://www.ebay.com/sch/i.html?_nkw=baseball caps&_sacat=0&_sop=12&LH_TitleDesc=&LH_BIN=&LH_Auction=&LH_BO=&LH_ItemCondition=&_udlo=&_udhi=&LH_FS=&LH_FAST=&LH_RPA=&LH_FR=&LH_AV=&LH_Savings=&LH_PrefLoc=&_ssn="
  ],
  "query": "baseball caps"
}' |
apify call solidcode/ebay-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,solidcode/ebay-com-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bjytcncqRKIMy32wc/builds/mJs7WHhPb4Cpu7WaG/openapi.json
