# Joybuy Scraper - Prices & Reviews, 6 EU Marketplaces (`clearpath/joybuy-scraper`) Actor

Extract Joybuy product prices, specifications, images, delivery and customer reviews from all six European marketplaces. 68 fields per product, prices in GBP and EUR. Search by keyword, browse a whole category, or paste search and store page links. Export to JSON, CSV or Excel.

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

## Pricing

from $3.29 / 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.
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

## Joybuy Scraper | Product, Price & Review Data from JD.com's European Marketplace (2026)

<blockquote style="border-left:6px solid #E1251B;background:#FFF0EE;padding:18px 22px;margin:12px 0">
<span style="font-size:20px;font-weight:700;color:#1C1917">1,000 products with full specs in under 60 seconds, the most complete Joybuy scraper on Apify.</span>
</blockquote>

<a href="https://console.apify.com/actors/9K7ejaAYnpuwNl2sr/input"><img src="https://api.apify.com/v2/key-value-stores/21hatybJqakfiJoxJ/records/joybuy-scraper-hero.png" alt="Joybuy scraper output: product title, price and list price in GBP, brand, category path, delivery promise, specifications and customer reviews as structured JSON" style="max-width:100%"></a>

<table>
<tr>
<td colspan="4" style="padding:10px 14px;background:#006D77;border:none;border-radius:4px 4px 0 0">
<span style="color:#FAFAF9;font-size:14px;font-weight:700;letter-spacing:0.5px">Clearpath Marketplace Scrapers</span>
<span style="color:#E0F2F1;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Product, price and review data from the marketplaces that matter</span>
</td>
</tr>
<tr>
<td style="padding:12px 16px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;background:#C9E8E6;border-right:none;border-top:none;vertical-align:top;width:25%">
<a href="https://apify.com/clearpath/joybuy-scraper" style="color:#006D77;text-decoration:none;font-weight:700;font-size:14px">Joybuy</a><br>
<span style="color:#006D77;font-size:12px;font-weight:600">&#10148; You are here</span>
</td>
<td style="padding:12px 16px;border:1px solid #E7E5E4;background:#E0F2F1;border-right:none;border-top:none;vertical-align:top;width:25%">
<img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-P5fALt8vY7xXgJh56-cIPO73yOhI-shein-product-scraper-logo.jpg" alt="Shein product scraper logo" width="24" height="24" style="vertical-align:middle"> &nbsp;<a href="https://apify.com/clearpath/shein-product-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:14px">Shein</a><br>
<span style="color:#78716C;font-size:12px">Prices, sizes, variants</span>
</td>
<td style="padding:12px 16px;border:1px solid #E7E5E4;background:#E0F2F1;border-right:none;border-top:none;vertical-align:top;width:25%">
<img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-nICdYs6CuDgCI6CuV-Ky7S3pYrzp-shopy-by-shopify-scraper-logo.jpg" alt="Shopify product search scraper logo" width="24" height="24" style="vertical-align:middle"> &nbsp;<a href="https://apify.com/clearpath/shop-by-shopify-product-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:14px">Shopify Search</a><br>
<span style="color:#78716C;font-size:12px">Any keyword, all stores</span>
</td>
<td style="padding:12px 16px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;background:#E0F2F1;border-top:none;vertical-align:top;width:25%">
<img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-R9SL2PPdhdhLQwdck-tbaq4J8sxX-shopy-by-shopify-scraper-logo.jpg" alt="Shopify store leads scraper logo" width="24" height="24" style="vertical-align:middle"> &nbsp;<a href="https://apify.com/clearpath/shopify-store-leads" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:14px">Shopify Leads</a><br>
<span style="color:#78716C;font-size:12px">Emails and phones</span>
</td>
</tr>
</table>

#### Copy to your AI assistant

```
clearpath/joybuy-scraper on Apify. Scrapes Joybuy, JD.com's European marketplace, in six countries: products, prices, specs and reviews. Call ApifyClient("TOKEN").actor("clearpath/joybuy-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Provide keyword, category or startUrls; links win over keyword, keyword wins over category. Full spec: GET https://api.apify.com/v2/acts/clearpath~joybuy-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations
```

### Key Features

- **75 fields per product**: prices, claimable coupons, specifications, all images, category path, delivery promise, variants, seller, bestseller rank, weight and dimensions.
- **Six marketplaces, one input**: United Kingdom, Germany, France, Netherlands, Belgium and Luxembourg, each with its own catalogue, prices and currency.
- **Three ways in**: a search keyword, a whole category, or pasted search and store page links.
- **Customer reviews**: text, rating, date, photos, helpful votes and verified-purchase status, up to 1,000 per product.

### How to Scrape Joybuy Product Data

#### Basic: search by keyword

```json
{
    "keyword": "coffee machine",
    "country": "GB",
    "maxItems": 100
}
```

#### Browse a whole category

```json
{
    "category": "Small Home Appliances",
    "country": "DE",
    "maxItems": 500
}
```

A keyword returns at most about 1,000 products, because Joybuy trims its own result set. Category browsing is not trimmed, so it is the way to collect a whole shelf.

#### Add customer reviews

```json
{
    "keyword": "espresso machine",
    "country": "NL",
    "maxItems": 50,
    "fetchReviews": true,
    "maxReviewsPerItem": 50
}
```

#### Follow pasted links

```json
{
    "startUrls": [
        { "url": "https://m.joybuy.co.uk/s?k=kettle" },
        { "url": "https://m.joybuy.de/store/100002101" }
    ],
    "maxItems": 200
}
```

The link's website decides the marketplace, so a `joybuy.de` link is scraped as Germany whatever the Marketplace setting says. Filters already in the link are applied.

### How to Run the Joybuy Scraper in 4 Steps

1. Open the **Joybuy Scraper** and pick a **Marketplace**: United Kingdom, Germany, France, Netherlands, Belgium or Luxembourg.
2. Type a **Search keyword**, or choose a **Category** to collect a whole shelf instead.
3. Set **Max products**, and turn on **Customer reviews** if you want the review text as well.
4. Click **Start**, then download the results as JSON, CSV or Excel from the run's Storage tab.

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `keyword` | string | *none* | What to search for. |
| `category` | string | *none* | Browse a whole category by name. Not trimmed, unlike a keyword. |
| `startUrls` | array | *none* | Joybuy search or store page links, up to 100 per run. |
| `country` | string | `GB` | `GB`, `DE`, `FR`, `NL`, `BE` or `LU`. |
| `language` | string | *marketplace default* | `en_GB`, `de_DE`, `fr_FR` or `nl_NL`. English works on every marketplace. |
| `maxItems` | integer | `100` | How many products to collect. `0` collects everything available. |
| `enrichWithDetails` | boolean | `true` | Adds the full product page: specifications, all images, category path, delivery, variants, seller. |
| `fetchReviews` | boolean | `false` | Attaches customer reviews to every product. |
| `maxReviewsPerItem` | integer | `10` | Reviews per product, up to `1000`. |
| `minPrice` / `maxPrice` | integer | *none* | Price band in the marketplace's own currency. |
| `brand` | string | *none* | Only products from this brand. |
| `attributeFilters` | array | *none* | Filter on the options Joybuy offers, for example `Intel Core i7`. |
| `inStockOnly` | boolean | `false` | Skip products that cannot be shipped now. |
| `bestsellersOnly` | boolean | `false` | Keep only products carrying the bestseller badge. |
| `lightningOffersOnly` | boolean | `false` | Keep only products in a lightning offer. |
| `fastDeliveryOnly` | boolean | `false` | Keep only products with a fast delivery promise. |
| `minRating` | string | `0` | `0`, `3` or `4` stars and up. |
| `sortResultsBy` | string | `relevance` | `relevance`, `price_asc` or `price_desc`. |

Sorting by price shows a much smaller slice of the catalogue, between 18% and 42% of it in our measurements, because only part of the catalogue can be ordered that way. Relevance is the only setting that sees everything, and the run tells you what sorting cost you.

Precedence, when more than one is filled in: links win over a keyword, and a keyword wins over a category.

### What Data Can You Extract from Joybuy?

Every product row includes:

- **Identity and pricing**: product id, parent product id, link, title, brand, model, price, price before discount, discount, currency, member price, instalment terms.
- **Claimable coupons**: what comes off, the minimum spend to get it, when it starts and expires, and who it applies to.
- **Availability**: stock state, delivery promise, shipping cost, delivery and collection options, purchase limits, the country it ships from.
- **Content**: all images, full specification sheet, rich description, category path, variants, related products, energy labels.
- **Commercial signals**: bestseller badge and rank, lightning offers, fast delivery, units sold, running promotions with start and end times, marketplace seller.
- **Ratings and reviews**: average rating, rating spread, how many ratings exist, and the review text itself with author, date, photos, helpful votes and verified-purchase status.

#### Output Example

```json
{
  "skuId": "10412600",
  "url": "https://m.joybuy.co.uk/dp/10412600",
  "title": "DAEWOO Denver Retro Kettle - 1.5 L, Rapid Boil, Buttermilk (Cream) - SDA2745GE",
  "price": 28.99,
  "listPrice": 49.99,
  "unitPrice": null,
  "memberPrice": null,
  "memberPriceNote": null,
  "priceNote": null,
  "listPriceNote": null,
  "depositNote": null,
  "currency": "GBP",
  "marketplace": "GB",
  "marketplaceName": "United Kingdom",
  "language": "en_GB",
  "image": "https://images1.joy-sourcing.com/da/jfsintlpro-000-product/t1/4294967296/1245184/61098710680666/1112725/68d118c9Ec4a420b4/42b10752b5083d5e.jpg",
  "images": [
    "https://images1.joy-sourcing.com/da/jfsintlpro-000-product/t1/4294967296/1245184/61098710680666/1112725/68d118c9Ec4a420b4/42b10752b5083d5e.jpg",
    "https://images1.joy-sourcing.com/da/jfsintlpro-000-product/t1/4294967296/1966080/61098710680670/1903312/68d118cbE9a51202e/42b10752b5083d5e.jpg",
    "https://images1.joy-sourcing.com/da/jfsintlpro-000-product/t1/4294967296/2949120/61098710680671/2022311/68d118cbE4920fbc7/42b10752b5083d5e.jpg",
    "https://images1.joy-sourcing.com/da/jfsintlpro-000-product/t1/4294967296/3276800/10161596180644/534057/68d118c8E257a46b6/42b10752b5083d5e.jpg",
    "https://images1.joy-sourcing.com/da/jfsintlpro-000-product/t1/4294967296/7405568/10161596180646/2074507/68d118caE6f2342f9/42b10752b5083d5e.jpg",
    "https://images1.joy-sourcing.com/da/jfsintlpro-000-product/t1/4294967296/6815744/6109836080684/991401/68d118c7Ef76adce6/42b10752b5083d5e.jpg"
  ],
  "rating": 5.0,
  "salesText": "100+ sold",
  "expectedDelivery": null,
  "inStock": true,
  "promotions": [
    {
      "label": "42% off",
      "tagCode": 1,
      "type": 2,
      "promotionType": 1,
      "endTime": null
    },
    {
      "label": "Free item (s)",
      "tagCode": 41,
      "type": 1,
      "promotionType": 10,
      "endTime": null
    },
    {
      "label": "100+ sold",
      "tagCode": 15,
      "type": 4,
      "promotionType": null,
      "endTime": null
    },
    {
      "label": "Get it by today",
      "tagCode": 16,
      "type": 1,
      "promotionType": 3,
      "endTime": null
    },
    {
      "label": null,
      "tagCode": 72,
      "type": null,
      "promotionType": null,
      "endTime": null
    },
    {
      "label": "DAEWOO",
      "tagCode": 40,
      "type": 7,
      "promotionType": null,
      "endTime": null
    }
  ],
  "isBestseller": false,
  "isLightningDeal": false,
  "hasFastDelivery": true,
  "isDiscounted": true,
  "rankInSearch": null,
  "brand": "DAEWOO",
  "model": null,
  "warranty": null,
  "weightKg": 1.2,
  "finalPrice": 28.99,
  "discountText": "42% off",
  "discountAmount": 21.0,
  "discountPercent": 42.0,
  "couponText": null,
  "coupons": [
    {
      "title": "£10 Off Over £69",
      "description": "Only available for selected products.",
      "scope": "For items sold by Joybuy.",
      "discount": 10.0,
      "minSpend": 69.0,
      "startTime": "14 Aug 2026, 00:00:00",
      "endTime": "31 Aug 2026, 23:59:59",
      "startTimestamp": 1786662000000,
      "endTimestamp": 1788217199000,
      "activityId": "375624",
      "bestSaving": false,
      "howToGet": "Claim"
    },
    {
      "title": "£30 Off Over £199",
      "description": "Only available for selected products.",
      "scope": "For items sold by Joybuy.",
      "discount": 30.0,
      "minSpend": 199.0,
      "startTime": "14 Aug 2026, 00:00:00",
      "endTime": "31 Aug 2026, 23:59:59",
      "startTimestamp": 1786662000000,
      "endTimestamp": 1788217199000,
      "activityId": "375625",
      "bestSaving": false,
      "howToGet": "Claim"
    }
  ],
  "loyaltyPoints": null,
  "installmentText": null,
  "categories": [
    {
      "name": "Home Appliances",
      "id": "199"
    },
    {
      "name": "Small Kitchen Appliances",
      "id": "275"
    },
    {
      "name": "Kettles Hot Water Dispensers",
      "id": "280"
    },
    {
      "name": "Kettles",
      "id": "8509"
    }
  ],
  "breadcrumb": "Home Appliances > Small Kitchen Appliances > Kettles Hot Water Dispensers > Kettles",
  "bestsellerRank": null,
  "deliveryPromise": "Delivery by Today order before 11:00",
  "shippingText": "Estimated shipping fee +£3.99",
  "deliveryOptions": [
    {
      "method": "Delivery",
      "time": "Delivery by Today order before 11:00",
      "price": "+£3.99"
    }
  ],
  "fulfillment": {
    "businessModel": "1",
    "shipmentOnly": false,
    "pickupOnly": false,
    "shipmentAvailable": true,
    "pickupAvailable": false,
    "subscription": false,
    "earnsPoints": true
  },
  "shipsFrom": "GB",
  "promotionDetails": [
    {
      "id": "80006101980",
      "type": "1",
      "startTime": "18 Aug 2026, 08:37:27",
      "endTime": "24 Aug 2026, 23:59:59",
      "startTimestamp": 1787038647000,
      "endTimestamp": 1787612399000,
      "price": 28.99,
      "quantityLimited": false
    },
    {
      "id": "80006064034",
      "type": "4",
      "startTime": null,
      "endTime": null,
      "startTimestamp": null,
      "endTimestamp": null,
      "price": 28.99,
      "quantityLimited": null
    }
  ],
  "guarantees": [
    {
      "title": "30 Days Free Returns",
      "content": "At Joybuy, we want you to love your purchase as much as we do. That’s why we offer a 30-day free return policy. If you’re not completely satisfied, simply return your item for a full refund.\n\nHow It Works:\n1.Return your item within 30 days of delivery.\n2.Enjoy free return shipping  we’ve got you covered!\n3.Receive your refund.\n\nShop with peace of mind and discover why Joybuy is your trusted shopping destination. Your satisfaction is our priority!"
    },
    {
      "title": "24/7 Customer Support",
      "content": "Experience unparalleled support with our 24/7 online customer service! Whether you have questions, need assistance, or require immediate solutions, our dedicated team is always ready to help. No matter the time or day, we're just a click away, ensuring you receive the support you need when you need it most.\n\n Join us now and experience the Joybuy difference!"
    },
    {
      "title": "1 Year Manufacturer's Warranty",
      "content": "Manufacturer Warranty Included:\nThis product comes with a One Year Manufacturer's Warranty covering hardware defects and technical failures. Shop with confidence knowing your purchase is covered by the brand’s official service network."
    }
  ],
  "variants": [
    {
      "name": "Color/Colour",
      "options": [
        {
          "label": "cream",
          "skuIds": [
            "10412600"
          ],
          "stockState": 33
        },
        {
          "label": "Blue",
          "skuIds": [
            "10412624"
          ],
          "stockState": 33
        },
        {
          "label": "Grey",
          "skuIds": [
            "10412626"
          ],
          "stockState": 33
        }
      ]
    }
  ],
  "series": [
    {
      "name": "Cascade 4-Slice Toasters",
      "id": "484988",
      "skuIds": [
        "10412017",
        "10412620",
        "10412123"
      ]
    },
    {
      "name": "Cascade 2-Slice Toasters",
      "id": "485030",
      "skuIds": [
        "10412576",
        "10412035",
        "10412684"
      ]
    },
    {
      "name": "Denver Kettles",
      "id": "485026",
      "skuIds": [
        "10412624",
        "10412600",
        "10412626"
      ]
    },
    {
      "name": "Denver Toasters",
      "id": "483357",
      "skuIds": [
        "10412097",
        "10412612",
        "10412606"
      ]
    },
    {
      "name": "Sienna Toasters",
      "id": "483425",
      "skuIds": [
        "10412598",
        "10412041",
        "10412618"
      ]
    },
    {
      "name": "Sienna Kettles",
      "id": "483443",
      "skuIds": [
        "10412077",
        "10412111",
        "10412560"
      ]
    }
  ],
  "seller": null,
  "venderId": "100227",
  "spuId": "485026",
  "shareLink": "https://m.joybuy.com/dp/10412600?siteCode=UK-Site",
  "specifications": [
    {
      "name": "Material",
      "value": "Stainless Steel",
      "group": null
    },
    {
      "name": "Lid Type",
      "value": "Removable",
      "group": null
    },
    {
      "name": "Capacity",
      "value": "1.5 L",
      "group": null
    },
    {
      "name": "Power Source",
      "value": "Corded Electric",
      "group": null
    },
    {
      "name": "Display Type",
      "value": "NoDisplay",
      "group": null
    },
    {
      "name": "Features",
      "value": "Water Level Indicator,Boil Dry Protection,Automatic Shut-Off",
      "group": null
    },
    {
      "name": "Brand",
      "value": "DAEWOO",
      "group": "Specifications"
    }
  ],
  "descriptionHtml": "<p><strong>Product Highlight</strong></p><ul><li><p>Stylish retro design in Buttermilk (Cream) finish, complementing the Denver toaster series.</p></li><li><p>1.5L capacity and rapid boil technology for quick preparation of multiple hot drinks.</p></li><li><p>Features a 360° swivel cordless base for easy left- or right-handed use.</p></li><li><p>Concealed stainless-steel heating element for energy efficiency and easier cleaning.</p></li><li><p>Includes auto shut-off and boil-dry protection for safe, worry-free operation.</p></li></ul><p><strong><br/></strong></p><p><strong>Specifications</strong></p><table><thead><tr><th>Specification</th><th>Description</th></tr></thead><tbody><tr><td>Model Number</td><td>SDA2745GE</td></tr><tr><td>Capacity</td><td>1.5 Litres</td></tr><tr><td>Power</td><td>Rapid Boil Technology</td></tr><tr><td>Base</td><td>360° Cordless Swivel Base</td></tr><tr><td>Safety Features</td><td>Auto Shut-Off, Boil-Dry Protection</td></tr><tr><td>Heating Element</td><td>Concealed Stainless Steel</td></tr><tr><td>Colour/Finish</td><td>Buttermilk (Cream) Retro</td></tr><tr><td>Dimensions (H x W x D)</td><td>26.5 x 23.5 x 23.5 cm</td></tr></tbody></table><p><strong><br/></strong></p><p><strong>Model Number</strong><br/>SDA2745GE</p><p><strong><br/></strong></p><p><strong>Usage Instruction</strong></p><ul><li><p>Fill the kettle with water, ensuring not to exceed the maximum level indicated.</p></li><li><p>Place the kettle securely on its 360° cordless base. Press the switch to start boiling.</p></li><li><p>The kettle will switch off automatically when boiling is complete. Lift it from the base to pour.</p></li><li><p>Wipe the exterior with a damp cloth. Do not immerse the kettle, lid, or base in water.</p></li></ul><p><strong><br/></strong></p><p><strong>Safety Warning</strong></p><ul><li><p>Do not open the lid while the water is boiling or the kettle is hot.</p></li><li><p>Use only with the provided base. Do not immerse the kettle, lid, or base in water.</p></li><li><p>This appliance is for boiling water only. Do not use it to heat other liquids or food.</p></li></ul><p><strong><br/></strong></p><p><strong>Child Safety Instructions</strong></p><ul><li><p>This appliance is not a toy. Keep it and its cord out of reach of children.</p></li><li><p>The exterior gets hot during use. Supervise children to prevent them from touching the kettle.</p></li></ul><p><strong><br/></strong></p><p><strong>Country of Origin</strong><br/>Made in China</p>",
  "importantInfo": null,
  "brandStory": null,
  "energyLabels": [],
  "stockState": 33,
  "purchaseLimit": null,
  "dimensions": {
    "lengthMm": 220,
    "widthMm": 190,
    "heightMm": 240,
    "weightKg": 1.2
  },
  "salesVolumeText": "100+",
  "ratingCountText": "4",
  "commentCount": 4,
  "goodRate": "100%",
  "ratingBreakdown": {
    "commentCount": 4,
    "goodCount": 4,
    "generalCount": 0,
    "poorCount": 0,
    "goodRate": 1.0,
    "goodRateShow": 100,
    "averageScore": 5,
    "score1Count": 0,
    "score2Count": 0,
    "score3Count": 0,
    "score4Count": 0,
    "score5Count": 4
  },
  "reviewTags": [],
  "reviewTabs": [
    {
      "id": 1,
      "name": "All",
      "count": 4
    },
    {
      "id": 2,
      "name": "Latest",
      "count": 4
    },
    {
      "id": 3,
      "name": "Local market",
      "count": 3
    }
  ],
  "foldedReviewCount": 0,
  "reviewsCaptured": 2,
  "reviews": [
    {
      "reviewId": "20597711",
      "author": "suewood33",
      "authorId": "xWEKHhAlw1HWo1qPSdxD4SxyV3vtagqUgg1VVH5EuRo=",
      "authorImage": "https://images5.joy-sourcing.com/da/jfsintlpro-000-userfeedback/t1/4294967296/4325376/1016145511482/2034/677c9232E3a2c1aef/5c82b57031009d7e.jpg",
      "date": "2025-11-27",
      "star": 5,
      "content": "As describes and very well packaged \n, arrived next day as stated. Really pleased with this company.",
      "images": [],
      "videos": [],
      "usefulCount": 0,
      "replyCount": 0,
      "replies": [],
      "verifiedPurchase": true,
      "anonymous": false,
      "source": null,
      "globalBuyerText": null,
      "translatable": false,
      "earnedPoints": null
    },
    {
      "reviewId": "22265189",
      "author": "hayley\n",
      "authorId": "YDQ2eDAeJEIToUirb+mvROZxnz6KOnFDE6QoFb4cNsk=",
      "authorImage": "https://images5.joy-sourcing.com/da/jfsintlpro-000-userfeedback/t1/4294967296/4325376/1016145511482/2034/677c9232E3a2c1aef/5c82b57031009d7e.jpg",
      "date": "2026-06-22",
      "star": 5,
      "content": "Speedy. Slightly noisy. Overall good.",
      "images": [],
      "videos": [],
      "usefulCount": 0,
      "replyCount": 0,
      "replies": [],
      "verifiedPurchase": true,
      "anonymous": false,
      "source": null,
      "globalBuyerText": null,
      "translatable": false,
      "earnedPoints": null
    }
  ],
  "detailScraped": true,
  "reviewsScraped": true
}
```

`commentCount` is every rating the product has, including the star-only ones. `reviewsCaptured` is how many carry text and could be listed. They are different numbers by design, so both are in the row.

### Advanced Usage

Ready-made configurations for competitor price monitoring, catalogue export, review mining and cross-market price comparison.

#### Track a competitor's brand across two markets

```json
{
    "keyword": "espresso machine",
    "brand": "DeLonghi",
    "country": "DE",
    "maxItems": 200,
    "enrichWithDetails": true
}
```

#### Export a whole shelf

```json
{
    "category": "Coffee Machines",
    "country": "GB",
    "maxItems": 0,
    "enrichWithDetails": true
}
```

#### Mine reviews for product research

```json
{
    "keyword": "air fryer",
    "country": "NL",
    "maxItems": 25,
    "fetchReviews": true,
    "maxReviewsPerItem": 1000
}
```

#### Find the deals only

```json
{
    "category": "Electronics",
    "country": "FR",
    "lightningOffersOnly": true,
    "minRating": "4",
    "maxItems": 300
}
```

### Pricing: Pay Per Event

**$3.99 per 1,000 products.** Product details are the same again, and reviews are billed per review.

| Event | Per 1,000 |
|-------|-----------|
| Product | $3.99 |
| Product details | $3.99 |
| Customer review | $2.49 |

### Scheduling and Integrations

Price monitoring works best on a schedule. Daily is enough for most catalogues; hourly is worth it only for lightning offers, which turn over fast.

Results go straight to Google Sheets, Make, Zapier, or your own endpoint through Apify's integrations, and every run can fire a webhook when it finishes.

https://www.youtube.com/watch?v=1jI7WcVQmwM

### FAQ

**What is Joybuy?**
Joybuy is JD.com's European marketplace, launched in 2026 across the United Kingdom, Germany, France, the Netherlands, Belgium and Luxembourg. It sells technology, appliances, beauty, home goods and groceries, including brand stores from L'Oreal, Braun, DeLonghi, BRITA and Bodum. JD.com (京东, Jingdong) is one of China's largest retailers, and Joybuy is the storefront it runs in Europe.

**Which Joybuy marketplaces does this cover?**
All six: the United Kingdom, Germany, France, the Netherlands, Belgium and Luxembourg. Each has its own catalogue and prices. Belgium and Luxembourg are served the Dutch catalogue with their own delivery address, so expect the same products at the same prices as the Netherlands.

**Can I get prices in both GBP and EUR?**
Yes. The marketplace decides the currency, and every price in a row carries the `currency` it is quoted in. Run the same keyword against `GB` and `DE` to compare a product across currencies.

**How many products can I get from one keyword?**
About 1,000. Joybuy trims its own answer for a keyword however many products actually match, and the run tells you the number it trimmed to. Use a category to collect more: category browsing is not trimmed, and shelves of 2,400 products are normal.

**Can I collect Joybuy customer reviews?**
Yes, up to 1,000 per product, which is Joybuy's own ceiling. Turn on Customer reviews and set Reviews per product. Reviews come with the text, rating, date, photos, helpful votes and whether the purchase was verified.

**Does it work with Joybuy search and store page links?**
Yes. Paste search pages (`/s?k=...`) or store pages (`/store/...`) and the filters in the link are applied. Individual product page links are handled separately by the Joybuy Product Detail Scraper.

**Does Joybuy have an API?**
Joybuy publishes no public product API, so there is nothing to request access to or rate-limit against. This Actor is the way to get its catalogue as structured data: same fields a shopper sees on the page, delivered as JSON, CSV or Excel.

**How do I export the data?**
JSON, CSV, Excel, XML or HTML from the run's Storage tab, or through the Apify API. JSON keeps the nested fields such as reviews, specifications and variants intact; CSV flattens them.

**How much does a run cost?**
$3.99 per 1,000 products, doubled if product details are on, plus $2.49 per 1,000 reviews if you collect them. A 100-product run with details is under a dollar.

**Is it legal to scrape Joybuy data?**
The Actor collects publicly visible product listings, nothing behind a login. Reviews carry the display name the reviewer chose to publish, which is personal data, so handle them under GDPR and the UK GDPR. You are responsible for Joybuy's terms of use and for the data protection law that applies to you.

**How fresh is the data?**
Live. Every run reads the marketplace as it is at that moment, including current prices, stock and delivery promises.

**Why did a sorted run return fewer products?**
Only part of Joybuy's catalogue carries the price that sorting uses, so a price-sorted search sees a smaller slice of it. The run logs how much smaller. Sort by relevance when you want everything.

**Can I get one specific product by link?**
Not with this Actor. Product page links are the job of the Joybuy Product Detail Scraper; this one is built for search, categories and stores.

### More scrapers from our friends at Zen Studio

Sister scrapers for product, price and seller data.

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-ghXSMZcW3GxsCrkiR-5hnvsKv4Yt-1688-wholesale-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **1688 阿里巴巴**
  - [1688 Wholesale Scraper](https://apify.com/zen-studio/1688-wholesale-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-PsAKYWM55HG4AHXjK-ItywU7Bp0s-taobao-search-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Taobao 淘宝**
  - [Taobao Product Scraper](https://apify.com/zen-studio/taobao-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-uZy6tbKLKnSVtT4BN-emXnT123uR-jd-com-scraper-logo-square.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **JD.com 京东**
  - [JD.com Scraper](https://apify.com/zen-studio/jd-com-search-scraper)

**More from Clearpath**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-9K7ejaAYnpuwNl2sr-0xGZJDXdTD-joybuy-scraper-logo.webp" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Joybuy**
  - [Joybuy Product Detail Scraper](https://apify.com/clearpath/joybuy-product-detail-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-P5fALt8vY7xXgJh56-cIPO73yOhI-shein-product-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **SHEIN**
  - [Shein Product Scraper](https://apify.com/clearpath/shein-product-scraper)
  - [SHEIN Seller & Manufacturer Leads](https://apify.com/clearpath/shein-seller-leads)
  - [SHEIN Trends Scraper](https://apify.com/clearpath/shein-trends-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-R9SL2PPdhdhLQwdck-tbaq4J8sxX-shopy-by-shopify-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Shopify**
  - [Shopify Product Search](https://apify.com/clearpath/shop-by-shopify-product-scraper)
  - [Shopify Store Leads](https://apify.com/clearpath/shopify-store-leads)

### Support

- **Bugs**: Issues tab
- **Features**: Email or issues
- **Email**: max@mapa.slmail.me

### Legal Compliance

Extracts publicly available data. Users must comply with Joybuy terms and data protection regulations (GDPR, UK GDPR, CCPA).

***

*Product, price, specification and review data from Joybuy's six European marketplaces.*

# Actor input Schema

## `keyword` (type: `string`):

Enter what you would type into the Joybuy search box.<br><br>Joybuy trims its own answer for a keyword, so a single keyword returns roughly <b>1,000 products</b> however many exist. To collect a whole shelf, use <b>Category</b> below instead.

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

Browse a whole category instead of searching.<br><br>Category browsing is <b>not trimmed</b>, so it is the way to collect more than about 1,000 products. Pick a suggestion or type any category name, including deeper ones such as <code>Laptops</code> or <code>Coffee Machines</code>. Category names are matched to whatever the chosen marketplace calls that shelf.

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

Paste Joybuy <b>search</b> pages (<code>/s?k=...</code>) or <b>store</b> pages (<code>/store/...</code>). Filters already in the link are applied.<br><br>The link's website decides the marketplace and overrides <b>Marketplace</b> below, so a <code>joybuy.de</code> link is scraped as Germany.<br><br>Up to <b>100</b> links per run.<br><br>Individual product page links are handled by the <b>Joybuy Product Detail Scraper</b>.

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

How many products to collect. The run stops earlier when the search itself runs out of products.<br><br>Set <code>0</code> to collect everything available.

## `country` (type: `string`):

Which Joybuy marketplace to scrape. It decides the products, the prices and the currency.<br><br>Belgium and Luxembourg are served the Dutch catalogue, with their own delivery address.

## `language` (type: `string`):

Optional. Leave empty for the marketplace's own language. English works on every marketplace, so you can read German prices in English.

## `enrichWithDetails` (type: `boolean`):

Adds the full product page to every row: specifications, all images, category path, delivery promise, shipping cost, guarantees, variants, seller, bestseller rank, weight and dimensions.<br><br>Turn it off for faster, cheaper rows with just the search listing fields.

## `fetchReviews` (type: `boolean`):

Attaches customer reviews to every product: text, rating, date, photos, helpful votes and whether the purchase was verified.<br><br>Reviews are billed per review, and a quarter of products have none while a few have thousands, so the cost of a run with reviews depends on the products it finds. <b>Reviews per product</b> is the dial.

## `maxReviewsPerItem` (type: `integer`):

The cap per product when <b>Customer reviews</b> is on.<br><br>Half of all products have fewer than 13 reviews, so <code>10</code> is a cheap, representative default. <code>1000</code> collects everything Joybuy makes available, which is its own ceiling per product.

## `sortResultsBy` (type: `string`):

Joybuy can only order part of its catalogue by price, so a sorted search sees <b>far fewer products</b> - between 18% and 42% of them in our measurements. Relevance is the only setting that sees everything, and the run tells you how much sorting cost you.

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

Lowest price to include, in the marketplace's own currency. Leave empty for no limit.

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

Highest price to include, in the marketplace's own currency. Leave empty for no limit.

## `brand` (type: `string`):

Only products from this brand, for example <code>Acer</code>. The brand is matched against the brands Joybuy offers for your search, so a brand it does not stock for that search returns nothing rather than something else.

## `attributeFilters` (type: `array`):

Filter on the options Joybuy offers for your search, for example <code>Intel Core i7</code> or <code>16 GB</code>.<br><br>Options of the same kind widen the results, options of different kinds narrow them, exactly like the filters on the website. Anything unavailable for your search is reported in the run log.

## `inStockOnly` (type: `boolean`):

Skip products Joybuy cannot ship right now.

## `bestsellersOnly` (type: `boolean`):

Keep only products carrying Joybuy's bestseller badge. This narrows the products you receive, not the products the run reads through, so pair it with a higher <b>Max products</b>.

## `lightningOffersOnly` (type: `boolean`):

Keep only products in a lightning offer. Narrows the products you receive rather than the search.

## `fastDeliveryOnly` (type: `boolean`):

Keep only products with a fast delivery promise. Narrows the products you receive rather than the search.

## `minRating` (type: `string`):

Keep only products rated at least this well. Products with no rating yet are dropped.

## Actor input object example

```json
{
  "keyword": "coffee machine",
  "maxItems": 100,
  "country": "GB",
  "enrichWithDetails": true,
  "fetchReviews": false,
  "maxReviewsPerItem": 10,
  "sortResultsBy": "relevance",
  "inStockOnly": false,
  "bestsellersOnly": false,
  "lightningOffersOnly": false,
  "fastDeliveryOnly": false,
  "minRating": "0"
}
```

# Actor output Schema

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

All products collected 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 = {
    "keyword": "coffee machine",
    "maxItems": 100,
    "maxReviewsPerItem": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/joybuy-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 = {
    "keyword": "coffee machine",
    "maxItems": 100,
    "maxReviewsPerItem": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/joybuy-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 '{
  "keyword": "coffee machine",
  "maxItems": 100,
  "maxReviewsPerItem": 10
}' |
apify call clearpath/joybuy-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpath/joybuy-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/9K7ejaAYnpuwNl2sr/builds/lJXgRH8q792argpdR/openapi.json
