# Cult Beauty Product Scraper (`mrdoe/cultbeauty-scraper`) Actor

Searches Cult Beauty and returns product title, price, rating, review count, image, and whether each item is a Cult Beauty exclusive - anonymously, no login required.

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

## Pricing

from $48.00 / 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?

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

![Cult Beauty Product Scraper hero](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/cultbeauty-scraper--hero.png)

## Cult Beauty Product Scraper (Apify Actor)

### What does Cult Beauty Product Scraper do?

Cult Beauty Product Scraper searches [Cult Beauty](https://www.cultbeauty.com/) -
a leading UK multi-brand beauty retailer known for stocking hard-to-find and
exclusive skincare, makeup, and haircare brands - for any keyword and returns
each matching product's title, price, star rating, review count, image, and
whether it's flagged as a Cult Beauty exclusive. No login or API key needed.

Try it with the default search ("serum") and see real results in seconds.
Run it on a schedule via Apify's Scheduler to track price and range changes
over time, or call it from your own app through the Apify API.

### Why use Cult Beauty Product Scraper?

- **Price and range monitoring.** Track prices, ratings, and exclusivity
  across Cult Beauty's skincare, makeup, haircare, and fragrance catalogue.
- **Exclusive-launch tracking.** Spot which products are flagged as
  Cult Beauty exclusives before they appear elsewhere.
- **Competitor research.** Compare Cult Beauty's pricing and customer
  ratings against other beauty retailers.
- **No manual searching.** Give it a list of keywords and get every match
  back as structured data in one run.

### How to use Cult Beauty Product Scraper

![Cult Beauty Product Scraper step-by-step: input, search, output](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/cultbeauty-scraper--how-it-works.png)

1. Click **Try for free** (or **Run** if you've already added it).
2. Set one or more **Search queries** - keywords you'd type into
   Cult Beauty's own search box.
3. Optionally raise **Max results** above the default of 20.
4. Click **Start** and open the **Output** tab once it finishes.

### Input

![Cult Beauty Product Scraper input options](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/cultbeauty-scraper--input.png)

| Field | Type | Default | Notes |
|---|---|---|---|
| `searchQueries` | array | `["serum"]` | Keywords to search for. |
| `maxItems` | integer | `20` | Max products returned in total across all queries. |
| `proxyConfiguration` | object | Apify proxy | Optional, recommended for larger runs. |

### Output

![Cult Beauty Product Scraper dataset output](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/cultbeauty-scraper--output.png)

One dataset row per product:

```json
{
    "articleId": "17991991",
    "title": "BYOMA Longevit-8 Peptide Serum 40ml",
    "url": "https://www.cultbeauty.com/p/byoma-longevit-8-peptide-serum-40ml/17991991/",
    "image": "https://www.cultbeauty.com/images?url=https://static.thcdn.com/productimg/original/17991991-1075360869595892.jpg",
    "price": 25.29,
    "currency": "EUR",
    "rating": 4.8,
    "reviewCount": 5,
    "exclusiveToCultBeauty": true,
    "searchQuery": "serum",
    "scrapedAt": "2026-10-25T12:00:00.000Z"
}
```

You can download the result in various formats such as JSON, HTML, CSV, or
Excel.

#### Data fields

![Cult Beauty Product Scraper output field map](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/cultbeauty-scraper--fields.png)

| Field | Description |
|---|---|
| `articleId` | Cult Beauty's internal product code. |
| `title` | Product title, as listed on Cult Beauty. |
| `price`, `currency` | Current price and its currency, as shown on the results page. |
| `rating`, `reviewCount` | Average star rating (out of 5) and number of reviews, when the product has any. |
| `exclusiveToCultBeauty` | `true` when the listing carries Cult Beauty's own "exclusive" badge. |
| `image`, `url` | Product image and link to the Cult Beauty product page. |
| `searchQuery` | Which of your input keywords matched this product. |

### Pricing

Each run charges a small start fee plus one charge per product returned -
you pay for the result, not for how the search was performed.

### Tips and disclaimers

This Actor reads Cult Beauty's own publicly available search results - it
does not require an account or bypass any access controls. Prices, ratings,
and exclusivity flags change frequently; treat results as a snapshot at the
time of the run. For support or a custom version of this Actor, use the
Issues tab.

# Actor input Schema

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

Keywords to search for on Cult Beauty, e.g. "serum", "moisturiser", "exclusive".

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

Maximum number of products to return in total across all search queries. Default 20, so a default run stays small and cheap - raise it yourself for more.

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

Optional. Recommended for larger runs to reduce the chance of rate-limiting.

## Actor input object example

```json
{
  "searchQueries": [
    "serum"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "searchQueries": [
        "serum"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/cultbeauty-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 = { "searchQueries": ["serum"] }

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/cultbeauty-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 '{
  "searchQueries": [
    "serum"
  ]
}' |
apify call mrdoe/cultbeauty-scraper --silent --output-dataset

```

## MCP server setup

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