Cult Beauty Scraper: Product Prices & New Arrivals (UK)
Pricing
from $1.40 / 1,000 product scrapeds
Cult Beauty Scraper: Product Prices & New Arrivals (UK)
Cult Beauty scraper: category, brand, sale and new-in pages or search terms to one row per product with GBP price, RRP, discount percent, promo text, brand, variant, stock and image. For UK beauty price, markdown and new-arrival watching.
Pricing
from $1.40 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
This Cult Beauty scraper reads Cult Beauty (a UK
beauty retailer) category, brand, sale and new-in pages, or a search term, and
returns one flat row per product: the current price and the RRP in GBP, the
pounds and percent off, the promo banner (20% OFF, SAVE 40%, NEW IN,
FREE GIFT, EXCLUSIVE), brand, variant, whether it can be bought, the product
link and the photo. Run it on a schedule and diff the dataset to get a UK beauty
price and markdown watch and a new-arrival watch: which serums, brands or
sale items changed price, which products carry a gift with purchase, and what
just landed in a category.
No account, no API key, no login, no browser. One request returns 32 products.
Input
| Field | Notes |
|---|---|
startUrls | Cult Beauty pages to read in full: a category (/c/skin-care/serums/), a brand (/c/brands/anua/), the sale (/c/sale/), new arrivals (/c/whats-new/shop-all/). A landing page that links its own list of everything is read through that list: /c/skin-care/ is read as /c/skin-care/shop-all/. A search URL (/search/?q=...) is read as that search term. Give URLs, terms or both. |
searchTerms | One or more search terms, one per line (vitamin c, retinol night cream, red lipstick). Cult Beauty sends most terms it recognises to a category, ingredient or brand page, and that whole list is read; any other term is read as search results. A product found by two terms is returned once, under the first. |
maxItems | Products to read per term or page (default 100, up to 10,000). 32 per page. |
sort | popularity (default), price-asc, price-desc, name, newest: the five choices of the site's own sort menu. Use newest for a new-arrival watch. |
onlyOnSale | Return only products whose current price is below the RRP. Products that are not reduced are read, not returned and not charged. |
proxyConfiguration | Apify datacenter proxy by default. |
Example input:
{"startUrls": [{ "url": "https://www.cultbeauty.co.uk/c/skin-care/serums/" }],"searchTerms": ["vitamin c"],"maxItems": 100,"sort": "newest","onlyOnSale": false}
Output
Prices are numbers in pounds sterling; currency is the currency the page states
(GBP on every page measured).
| Field | Notes |
|---|---|
query, position | The search term or page URL that first found the product, and its place in the site's list for that source and sort (1 is first). |
product_id, url | Cult Beauty's product id (17765048; the site's "sku") and the product link. |
name, brand | As the page shows them. brand is null if the page sends none. |
price, original_price | price is the price now, the card's "Current price". original_price is the RRP the card strikes through (Cult Beauty labels it "Recommended Retail Price"). They are equal when the product is not reduced. |
on_sale, discount_amount, discount_percent | on_sale is true when price is below original_price. discount_amount is the pounds off, as the page sends it. discount_percent is worked out from the two prices (one decimal place). Both are null when the product is not on sale, never 0. |
promo, promo_code | The promotion banner on the card: 20% OFF, SAVE 40%, NEW IN, EXCLUSIVE, FREE GIFT, CULT CONSCIOUS, RECEIVE A £5 VOUCHER, BACK IN STOCK. promo_code is the voucher code the text names ("Use Code: ..."); no Cult Beauty banner measured named one, so it is null. |
variant, variant_count | The page's variant label and how many variants the product has. See the note below. |
in_stock, stock_label | True when the card has a working buy button. False with stock_label Notify Me When Available when the card shows that button instead: Cult Beauty keeps sold-out products in its lists, usually at the end (the whole last page of Face Serums was sold out). |
image_url | The product photo, original size, on static.thcdn.com. |
list_name | The list's own title in the site's tracking data (Face Serums, SALE | UP TO 30% OFF). Null on search pages. |
Example row (real values from the sale page, 2026-11-05):
{"query": "https://www.cultbeauty.co.uk/c/sale/","position": 1,"product_id": "17765048","name": "Shark Beauty CryoGlow Under-Eye Cooling & LED Anti-Ageing & Blemish Repair Mask - Pink","brand": "SHARK","url": "https://www.cultbeauty.co.uk/p/shark-beauty-cryoglow-under-eye-cooling-led-anti-ageing-blemish-repair-mask-pink/17765048/","image_url": "https://static.thcdn.com/productimg/original/17765048-1175328238562688.jpg","currency": "GBP","price": 239.99,"original_price": 299.99,"on_sale": true,"discount_amount": 60.0,"discount_percent": 20.0,"promo": "20% OFF","promo_code": null,"variant": "Blue Frost","variant_count": 4,"in_stock": true,"stock_label": null,"list_name": "SALE | UP TO 30% OFF"}
What the price fields mean
The page's own tracking data calls the RRP price and the current price value,
which reads backwards. Which is which was checked against the product cards on
2026-11-05: on every reduced product sampled the struck-through "Recommended Retail
Price" on the card equals the RRP, the "Current price" equals the current price,
and across 430 products on 15 list pages the pounds off equal the difference
between the two, with no exception.
discount_percent is worked out, the banner is quoted. promo is the banner
as the card prints it, discount_percent comes from the two prices, and the two
can differ: a product shown as SAVE 40% that goes from 14.00 to 8.00 reads 42.9.
A promo banner is not always a reduction. NEW IN, EXCLUSIVE, FREE GIFT
and CULT CONSCIOUS sit on products at full price. price is the shelf price the
card shows; filter on on_sale for reductions and on promo for gifts and
new-in tags.
Honest nulls
A field the page did not send is null, never 0 or "".
- A sold-out product can have no price. On 4 of the 25 sold-out products on
the last pages of Face Serums and of a search, the site's data sent null for
both prices although the card still printed one; the row is returned with null
priceandoriginal_pricerather than a figure the data did not carry. The other 21 sold-out products carried their prices. - No rating or review count. The ratings are filled in by the browser after the page loads and are not in the HTML, so the rows do not carry them.
variantis not the size of the row. It is the page's label for the product's default variant (a row can sayBlue Frostwhile its name has none). Read the size fromnameandurl.in_stockis about the card. True means a working buy button, false the "Notify Me When Available" button. The site does not say more (stock levels, delivery dates). Usein_stockto keep sold-out products out of a price watch.
Pricing
Pay per event:
- $0.002 per run (
actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing. - $0.0014 per product written (
product-scraped), i.e. $1.40 per 1,000 products. A row that is not written is not charged: rows filtered byonlyOnSale, and repeats of a product another term already returned, are free.
How it fetches
It reads the product list that cultbeauty.co.uk's own pages embed (an item map keyed by product id) and the product cards next to it. Measured 2026-11-05: HTTP 200 HTML from a plain connection and from an Apify datacenter address, no key or cookie needed. A refusal (403, 429, 5xx), a 200 that is not a Cult Beauty page, or a dropped connection is treated as the address being blocked, and the actor rotates to a fresh one and retries.
Things worth knowing, all measured on 2026-11-05:
- Use a page that lists products.
/c/skin-care/is a landing page of carousels (20 tiles, no pager) and is read through the list it links,/c/skin-care/shop-all/. Brand pages work the same way (/c/brands/anua/is read as/c/brands/anua/shop-all/, 69 products). A category such as/c/skin-care/serums/is a list in itself: 21 pages, 654 products at the time, all read with none repeated. - A search usually lands on a list page. Cult Beauty redirects most terms it
knows:
vitamin cto the vitamin C ingredient page,serumto Face Serums,anuato the Anua brand page,birthday giftto the gifts page. Terms it does not redirect are answered in place (red lipstick: 203 products, 7 pages). The actor reads whatever list the site lands on, all its pages, andquerystays the term you typed. A broad term can return a whole category;maxItemsbounds it. The run log says where each term was sent. - No results. A term the site cannot match (
zzzqqqxx) goes to a "no search results" page; the actor returns nothing for it and charges nothing. - The redirect drops
sort. The actor re-reads the first page from the landing list when you asked for a sort, so the order you chose is the order you get. - New arrivals.
/c/whats-new/shop-all/withsortnewestlists the latest products first; theNEW INpromo marks them. - Depth. The site lists 32 products per page and has no page-size setting. A page past the last is an empty list and the actor stops there. At most 10,000 products per term or page.
- Not offered. The site's facet filters (brand, price range, skin concern) are not wired into this actor; start from a category, ingredient or brand page that already narrows the list.