# eBay Store Scraper — A Seller's Full Storefront (`thenetaji/ebay-store-scraper`) Actor

Export what a seller lists on their eBay storefront. Paste one store link or a whole list of them and get every item they carry in one dataset — the quick way to size up a competitor. Turn on item details for price, condition and specs.

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

## Pricing

from $2.55 / 1,000 results

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/actors/running/actors-in-store.md#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 Store Scraper

The Actor reads one or more eBay storefronts and saves the items each seller lists, stamping every row with the store it came from. Enabling `enrichItemDetails` adds the full item page to every row, which is what supplies price and condition for the cards that do not carry them.

```json
{
  "store_names": [
    "https://www.ebay.com/str/adidas",
    "nike"
  ],
  "maxItems": 100,
  "enrichItemDetails": false
}
```

### Accepted input

`store_names` is required and accepts a list in which each entry is either a full storefront link of the form `https://www.ebay.com/str/<store_name>` or the bare store name; the two forms can be mixed in one run. Store names are case-sensitive as eBay records them and are passed through unchanged, so a name copied from a storefront link works and a re-cased one may not.

`maxItems` bounds the number of records saved across the whole run rather than per store, and defaults to `100`; a value of `0` disables the bound. With several stores and a low bound, the run fills from the first store before reaching the second. `enrichItemDetails` defaults to `false`.

### Result fields

Each row carries `item_id`, `url`, `title`, `image_url`, and `store_name`, and carries `price` and `currency` where the storefront page publishes them in a form that can be read directly. With `enrichItemDetails` enabled each row additionally carries `condition`, `availability`, `images`, `brand`, `mpn`, `gtin`, `model`, `breadcrumbs`, `seller`, and `item_detail`.

```json
{
  "item_id": "157967038228",
  "url": "https://www.ebay.com/itm/157967038228",
  "title": "adidas men Galaxy 7 Running Shoes",
  "image_url": "https://i.ebayimg.com/images/g/XLMAAeSwuKZqdagy/s-l300.jpg",
  "store_name": "adidas"
}
```

That is a live-verified row, and it is worth noting what is absent from it: this storefront published no price in a directly readable form, so `price` and `currency` are not present. What a storefront card carries varies between sellers, and the two price fields are independent — a row can carry `price` while `currency` is still null. This is common rather than exceptional. A run that needs a price, or a currency, on every row should enable `enrichItemDetails`, which reads each item's own page and is the dependable source for both.

### How much of a storefront is returned

A storefront request returns the seller's listing page as eBay renders it; a live run against a large seller returned 48 items. This is the page eBay serves rather than the seller's complete inventory, so a seller with thousands of listings does not return thousands of rows. Raising `maxItems` does not change that, because the bound trims what was returned rather than requesting more. Where full coverage of a seller's range matters more than convenience, browsing the categories that seller lists in with the [eBay Category Products Scraper](https://apify.com/thenetaji/ebay-category-products-scraper) reaches further.

### Stores that cannot be read

A store name that is invalid, or a storefront that has been closed, is reported by the source as an empty response rather than as a failure; the Actor records that the store was not found, saves no rows for it, and continues to the next name in the list. A request that fails outright is treated the same way. One dead store name in a list of ten therefore costs only that store's rows.

A run whose `store_names` list is empty is rejected before any request is made.

### Related Actors

The `store_name` field returned by the [eBay Product Scraper](https://apify.com/thenetaji/ebay-product-scraper) is the exact input this Actor takes, so the two chain directly: read an item of interest, then list everything else that seller carries. For a category across many sellers rather than one seller's range, use the [eBay Category Products Scraper](https://apify.com/thenetaji/ebay-category-products-scraper) together with the [eBay Category Tree Scraper](https://apify.com/thenetaji/ebay-category-tree-scraper). For eBay's current promotions, use the [eBay Deals Scraper](https://apify.com/thenetaji/ebay-deals-scraper).

# Actor input Schema

## `store_names` (type: `array`):

One or more eBay stores to list. Paste storefront links, or store names — both work.

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

Maximum number of records to save. Set 0 for no limit.

## `enrichItemDetails` (type: `boolean`):

Add the full item page to every row — condition, availability, all images, brand, MPN, GTIN, model, the category path, and the seller's store. This makes one extra request per item.

## Actor input object example

```json
{
  "store_names": [
    "adidas"
  ],
  "maxItems": 20,
  "enrichItemDetails": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

All records scraped by this run

# 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 = {
    "store_names": [
        "https://www.ebay.com/str/adidas"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("thenetaji/ebay-store-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 = {
    "store_names": ["https://www.ebay.com/str/adidas"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("thenetaji/ebay-store-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 '{
  "store_names": [
    "https://www.ebay.com/str/adidas"
  ],
  "maxItems": 20
}' |
apify call thenetaji/ebay-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,thenetaji/ebay-store-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/EEZ0VfjK8G86gsbmI/builds/xialzaH8hMYhOCXVL/openapi.json
