# Onbuy Listings Scraper (`piotrv1001/onbuy-listings-scraper`) Actor

The OnBuy Listings Scraper extracts product listings from OnBuy.com, the UK marketplace, capturing names, prices, brands, SKUs, GTIN/EAN codes, stock availability, full category paths, descriptions, and images in GBP — ideal for price monitoring, market research, and competitor analysis.

- **URL**: https://apify.com/piotrv1001/onbuy-listings-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 3 total users, 0 monthly users, 77.4% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### 🛒 OnBuy Listings Scraper

Extract **product listings from [OnBuy](https://www.onbuy.com)**, the UK's fast-growing online marketplace with millions of products. The **OnBuy Listings Scraper** turns OnBuy product pages into clean, structured JSON — **prices, brands, full category paths, availability, GTIN/SKU codes, descriptions and images** — ready for price monitoring, market research, and competitor analysis.

Run it on the [Apify platform](https://apify.com) to get API access, scheduling, integrations (Google Sheets, Make, Zapier, webhooks), automatic retries, and proxy rotation — no servers to manage.

### ✨ Features

- 🏷️ **Rich product data** — name, price, currency, brand, SKU, GTIN/EAN, condition, stock availability, free-delivery flag, full category breadcrumb, description, and image.
- 🇬🇧 **GB locale & GBP pricing** — every product is captured in British pounds.
- 📦 **Whole-catalogue or targeted** — collect a fresh cross-category sample of the catalogue, or scrape a specific list of product URLs you provide.
- ⚙️ **Set your own limit** — control exactly how many products you collect with `maxItems`.
- ⚡ **Fast & reliable** — efficient extraction with automatic retries and graceful handling of delisted products.

### 🛠️ How to use the OnBuy Listings Scraper

1. **Set the number of products** — choose how many products to collect with the **Maximum products** field (default `50`).
2. *(Optional)* **Add product URLs** — paste specific OnBuy product page URLs to scrape only those. Leave empty to crawl across the OnBuy catalogue.
3. **Run the Actor** — click **Start** and watch structured data fill the dataset in real time.
4. **Export your data** — download the results as **JSON, CSV, Excel, or HTML**, or pull them via the Apify API.

### 📥 Input

| Field | Description |
|---|---|
| **Maximum products** (`maxItems`) | Maximum number of products to scrape. Set to `0` for no limit. Default: `50`. |
| **Product URLs** (`startUrls`) | Optional list of specific OnBuy product page URLs. Leave empty to crawl the catalogue. |
| **Proxy configuration** (`proxyConfiguration`) | Residential GB proxy, enabled by default for reliable access. Keep it on unless you have a specific reason to change it. |

Example input:

```json
{
    "maxItems": 50
}
```

### 📊 Output

Each product is stored as one record in the dataset. You can download the dataset in various formats such as **JSON, HTML, CSV, or Excel**.

```json
{
    "url": "https://www.onbuy.com/gb/p/black-large-backpack-canvas-capacity-student-school-travel-bags~p89493958/",
    "productId": "89493958",
    "name": "(Black) Large Backpack Canvas Capacity Student School Travel Bags",
    "sku": "PCKVVKD",
    "brand": "VEISHET",
    "price": 22.57,
    "currency": "GBP",
    "condition": "NewCondition",
    "availability": "InStock",
    "inStock": true,
    "freeDelivery": true,
    "category": "Clothing, Shoes & Accessories > Luggage, Bags & Travel Accessories > Bags & Backpacks > Backpacks",
    "breadcrumbs": ["Clothing, Shoes & Accessories", "Luggage, Bags & Travel Accessories", "Bags & Backpacks", "Backpacks"],
    "gtin": null,
    "image": "https://cdn.onbuy.com/product/65b88dec96d67/500-500/pckvvkd.jpg"
}
```

#### Data fields

| Field | Description |
|---|---|
| `url` | Product page URL |
| `productId` | OnBuy product ID |
| `name` | Product title |
| `sku` | OnBuy SKU |
| `brand` | Brand name |
| `price` | Current price |
| `currency` | Price currency (GBP) |
| `condition` | Item condition (e.g. NewCondition) |
| `availability` | Stock status (e.g. InStock) |
| `inStock` | Boolean in-stock flag |
| `freeDelivery` | Whether delivery is free |
| `shippingRate` | Delivery cost |
| `category` | Full category path |
| `breadcrumbs` | Category path as an array |
| `mpn` | Manufacturer part number |
| `gtin` | GTIN / EAN barcode |
| `description` | Product description (HTML) |
| `image` | Primary product image URL |

### 💰 How much does it cost to scrape OnBuy?

This Actor uses a simple **pay-per-result** model: you pay **$0.005 per product** scraped (about **$5 per 1,000 products**). There are no subscription fees and no charge for delisted products that get skipped — you only pay for products that are actually returned. The price already covers proxy and platform costs, so there is nothing extra to pay.

The [Apify Free plan](https://apify.com/pricing) includes monthly usage credits, so you can test the Actor and scrape your first products at no extra cost.

### 💡 Tips

- Start with a small **Maximum products** value to preview the data shape, then scale up.
- Leave **Product URLs** empty to collect a diverse cross-category sample of the marketplace.
- Schedule the Actor (daily/weekly) to track price and availability changes over time.
- Use the dataset's **category** field to filter products into the segments you care about after scraping.

### ❓ FAQ

**Is scraping OnBuy legal?**
This Actor collects only publicly available product information. As with any scraping, you are responsible for how you use the data and for complying with OnBuy's Terms of Service and applicable laws (including data-protection rules). It does not collect personal data.

**Why did I get fewer products than expected on a tiny limit?**
Marketplace catalogues contain some delisted items. The Actor skips those automatically (you are never charged for them) and keeps going until your target is met.

**Can I scrape specific categories or sellers?**
Provide the relevant OnBuy product URLs via **Product URLs**, or scrape broadly and filter by the `category` field in the output.

### 🆘 Support

Found a bug or need an extra field? Open an issue on the Actor's **Issues** tab — feedback and custom-data requests are welcome.

# Actor input Schema

## `startUrls` (type: `array`):

Specific OnBuy product page URLs to scrape. Leave empty to crawl the whole OnBuy catalogue and collect up to the maximum number of products set below.

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

Maximum number of products to scrape. Set to 0 for no limit.

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

Proxy settings. Residential GB proxy is required for reliable access to OnBuy and is enabled by default — keep it on unless you have a specific reason to change it.

## Actor input object example

```json
{
  "startUrls": [],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "GB"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/onbuy-listings-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 = {
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "GB",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/onbuy-listings-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 '{
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}' |
apify call piotrv1001/onbuy-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/onbuy-listings-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/EhXUJ4UMvaJFGhOxw/builds/H1zAhwS4mcVeoTzy5/openapi.json
