# Reebelo Scraper — Refurbished Phone & Laptop Prices (`yugenox/reebelo-scraper`) Actor

Scrape Reebelo refurbished electronics in 11 countries (US, Canada, Australia, UK, EU…) by category or search: lowest price, retail price, discount, seller and stock, or every variant (storage, color, condition, battery) with its price. Optional ratings, specs and all sellers' offers. No login.

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

## Pricing

from $2.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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Reebelo Scraper: refurbished phone, laptop and tablet prices

Scrape **Reebelo**, the marketplace for refurbished and second-hand electronics, in **11 countries**: the US, Canada, Australia, New Zealand, Singapore, the UK, France, Germany, Spain, Italy and Sweden. Get every product in a category or search with its **lowest price, retail price, discount, seller and stock**, or switch to **one row per variant** and get the full price matrix: every storage × color × condition × battery option (plus SIM, carrier, RAM and processor where they apply) with its own price. Optionally add ratings, review counts, specifications and **all sellers' offers**. No login, no cookies, no Reebelo account.

### What you get

| | |
|---|---|
| **Product** | Name, brand, category, product ID and SKU, images, description, product URL |
| **Price** | The lowest price shown ("from"), the retail price of a new one, the saving in %, the buyer protection fee, the currency |
| **Seller** | The refurbisher selling at that price and how many units they have |
| **Variants** (one row per variant) | Storage, color, condition grade, battery (standard or new), SIM, carrier, RAM, processor, screen size, every other attribute, and the variant's price and URL |
| **Product details** (optional) | Rating and review count, star breakdown, price range, number of variants, the options for sale, specifications, key features, category path |
| **All sellers' offers** (optional) | Every seller's price, stock, ships-from country and postal code and delivery days for the selected variant, and which one Reebelo shows as the main offer |

### How to use it

1. Enter one or more **categories** as they appear in the Reebelo URL, e.g. `apple-iphone` (from reebelo.com/collections/apple-iphone), `samsung-phones`, `laptops`, `tablets`, `smartwatches`. A single product such as `apple-iphone-14` works too.
2. Or enter **search** words such as `iphone 13`, `galaxy s23` or `macbook air m2`.
3. Pick the **store** (country). Prices come in that store's currency.
4. Choose **one row per product** or **one row per variant**, set **Max results**, and run.

#### Input examples

Every iPhone on Reebelo US, one row per model:

```json
{
  "categories": ["apple-iphone"],
  "maxItems": 100
}
```

The full price matrix of the iPhone 15 Pro in Australia, only "Like New", 256GB:

```json
{
  "store": "au",
  "categories": ["apple-iphone-15-pro"],
  "output": "variants",
  "conditions": ["Like New"],
  "storage": ["256GB"]
}
```

Samsung Galaxy S23 models in the UK with ratings, specs and all sellers' offers:

```json
{
  "store": "uk",
  "searchQueries": ["galaxy s23"],
  "maxItems": 20
}
```

Laptops under $500 with details:

```json
{
  "categories": ["laptops"],
  "maxPrice": 500,
  "includeDetails": true,
  "maxItems": 50
}
```

You can also paste Reebelo URLs from any store into **Reebelo URLs**: collections, products, searches, or a product URL with `?skuId=…` to get every seller's offer for that exact variant.

### Output example

One row per product (with **Include product details**):

```json
{
  "type": "product",
  "store": "us",
  "currency": "USD",
  "name": "iPhone 14",
  "brand": "Apple",
  "category": "Smartphones",
  "categoryPath": ["Electronics", "Mobiles", "Smartphones"],
  "productSlug": "apple-iphone-14",
  "price": 280.99,
  "compareAtPrice": 799,
  "discountPercent": 65,
  "buyerProtectionFee": 3.99,
  "seller": "RECOM",
  "stock": 21,
  "priceMin": 280.99,
  "priceMax": 473.48,
  "variantCount": 45,
  "rating": 4.8,
  "reviewCount": 508,
  "options": {
    "Storage": ["128GB", "256GB", "512GB"],
    "Color": ["Blue", "Starlight", "Midnight", "Yellow", "Purple", "Red"],
    "Condition": ["Good", "Very Good", "Like New"],
    "Battery Health": ["Standard Battery", "New Battery"]
  },
  "specifications": { "Chipset": "Apple A15 Bionic (5 nm)", "Display Size": "6.1 inches, 90.2 cm2 (~86.0% screen-to-body ratio)" },
  "offers": [
    { "seller": "Breed", "isBuyBox": false, "price": 276.32, "stock": 300, "shipsFromCountry": "US", "deliveryMinDays": 1, "deliveryMaxDays": 4 },
    { "seller": "RECOM", "isBuyBox": true, "price": 280.99, "stock": 21, "shipsFromCountry": "US", "deliveryMinDays": 4, "deliveryMaxDays": 5 }
  ],
  "url": "https://reebelo.com/collections/apple-iphone-14",
  "detailsFetched": true,
  "scrapedAt": "2026-10-01T22:40:00.000Z"
}
```

One row per variant:

```json
{
  "type": "variant",
  "store": "ca",
  "currency": "CAD",
  "name": "iPhone 14",
  "title": "iPhone 14 - 128GB - Midnight - Like New - Standard Battery - eSIM - Unlocked",
  "skuId": "sku-mq8eocyywTwPFv0Z1I7bXsL",
  "storage": "128GB",
  "color": "Midnight",
  "condition": "Like New",
  "batteryHealth": "Standard Battery",
  "simSlot": "eSIM",
  "carrier": "Unlocked",
  "price": 468.9,
  "rating": 4.8,
  "url": "https://reebelo.ca/collections/apple-iphone-14?skuId=sku-mq8eocyywTwPFv0Z1I7bXsL"
}
```

Every row has the same columns; a value that doesn't apply (or wasn't read) is `null`.

### Use cases

- **Refurbished price monitoring**: track the price of every iPhone, Galaxy or MacBook variant by condition and storage, daily, in several countries.
- **Trade-in and resale pricing**: set buy-back and resale prices from what refurbishers actually charge.
- **Competitor intelligence for refurbishers**: see who holds the main offer, at what price and with how much stock.
- **Market research**: compare refurbished prices with new retail prices and between countries.
- **Deal alerts**: schedule a run and alert when a model drops below a price.

### FAQ

**Do I need a Reebelo account, cookies or a login?** No. The scraper reads the same public pages any visitor sees. It never logs in and needs nothing from you except a category, a search or a URL.

**Which countries work?** All 11 Reebelo stores: US (reebelo.com), Canada, Australia, New Zealand, Singapore, UK, France, Germany, Spain, Italy and Sweden. Pick one with **Store**, or paste URLs from several stores in one run.

**What is the difference between a product row and a variant row?** A product row is one model (e.g. iPhone 14) with its lowest price. A variant row is one exact configuration (e.g. iPhone 14, 128GB, Midnight, Like New, new battery) with its price. One product usually has 20 to 100 variants.

**Why is the cheapest seller sometimes cheaper than the price?** Reebelo shows one "main" offer per variant, chosen by price and by seller quality. The `price` is that offer, as on the website; `offers` lists every seller, and `isBuyBox` marks the main one.

**How do I get all sellers for one exact variant?** Paste that variant's URL (it ends in `?skuId=…`; every variant row has it) into **Reebelo URLs**.

**How fast is it?** A category page holds 28 products, so 1,000 products take about a minute and a half. Product details and variant rows open one page per product (one to two pages per second).

**Which proxy should I use?** Keep the default (Apify Proxy, datacenter). It comes with every Apify plan, including the free one. If Reebelo refuses datacenter IPs for a while, the run switches to residential proxies when your account has them.

**What does a run cost?** You pay per product row (or per variant row), per category or search read, a small fee per run, and per product page opened (for product details, keyword searches and variant rows — one page per product, also when your filters then leave its rows out). See the Pricing tab. Rows left out by your filters are never charged as rows.

**Is it legal to scrape Reebelo?** This Actor only collects publicly available data: product listings that anyone can see on Reebelo without an account, such as product names, prices, conditions, seller names and specifications. Collecting publicly available data is generally legal, but you're responsible for how you use it. The sellers are refurbishing businesses; the scraper does not collect customer reviews or reviewer names, only the rating summary. You must follow privacy laws such as GDPR, PIPEDA and CCPA, as well as Reebelo's terms. If you're unsure, check with a lawyer. More on this: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Does it access any private data?** No. Everything comes from pages Reebelo shows to any visitor without logging in. It never uses a login, never touches accounts, carts or orders, and follows the site's robots.txt.

This Actor is not affiliated with, endorsed by or sponsored by Reebelo. Reebelo is a trademark of its owner, used here only to describe the website the data comes from.

# Actor input Schema

## `categories` (type: `array`):

Reebelo collections, written as in the Reebelo URL (reebelo.com/collections/<name>), e.g. "apple-iphone", "samsung-phones", "smartphones", "laptops", "tablets", "smartwatches", "gaming-consoles/05m6w341v3c5". A single product works too, e.g. "apple-iphone-14".

## `searchQueries` (type: `array`):

Words to search for, e.g. "iphone 13", "galaxy s23", "macbook air m2". Every product whose name contains all the words is included, with its full details (each product page is opened).

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

Collection, product or search URLs from any Reebelo store. A product URL with ?skuId=… gives all sellers' offers for that exact variant.

## `store` (type: `string`):

Which Reebelo store the categories and searches use. Prices are in that store's currency. Pasted URLs keep their own store.

## `output` (type: `string`):

Product: one row per model with its lowest price, retail price, seller and stock. Variant: one row per storage × color × condition × battery (and SIM, carrier, RAM, CPU…) with its price — the full price matrix; every product page is opened (charged as product details).

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

Maximum number of rows (products or variants) for the whole run, shared fairly between your categories and searches. 0 = everything.

## `includeDetails` (type: `boolean`):

Also open each product's page for its rating and review count, price range, every variant with its price, the options (storage, colors, conditions…), specifications, key features and all sellers' offers. Adds one page per product.

## `minPrice` (type: `integer`):

Only products (or variants) at or above this price, in the store's currency.

## `maxPrice` (type: `integer`):

Only products (or variants) at or below this price, in the store's currency.

## `brands` (type: `array`):

Only these brands, e.g. "Apple", "Samsung", "Google". Empty = all.

## `conditions` (type: `array`):

Only variants in these conditions, written as Reebelo shows them, e.g. "Good", "Very Good", "Like New", "Excellent", "Premium". Applies when one row per variant is selected.

## `storage` (type: `array`):

Only variants with this storage, e.g. "128GB", "256GB", "1TB". Applies when one row per variant is selected.

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

Apify Proxy (datacenter) is the default and comes with every Apify plan. If Reebelo refuses datacenter IPs for a while, the run switches to residential proxies when your account has them.

## Actor input object example

```json
{
  "categories": [
    "apple-iphone"
  ],
  "store": "us",
  "output": "products",
  "maxItems": 20,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped products or variants.

## `run` (type: `string`):

Status and statistics for this run.

## `report` (type: `string`):

RUN_REPORT: how the run ended, counts, requests and proxy use.

# 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 = {
    "categories": [
        "apple-iphone"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/reebelo-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 = {
    "categories": ["apple-iphone"],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("yugenox/reebelo-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 '{
  "categories": [
    "apple-iphone"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yugenox/reebelo-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yugenox/reebelo-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/fJsV5VUo8eeSmOJCe/builds/glZBGaV16JT4CjJW6/openapi.json
