Cult Beauty Scraper: Product Prices & New Arrivals (UK) avatar

Cult Beauty Scraper: Product Prices & New Arrivals (UK)

Pricing

from $1.40 / 1,000 product scrapeds

Go to Apify Store
Cult Beauty Scraper: Product Prices & New Arrivals (UK)

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

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

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

FieldNotes
startUrlsCult 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.
searchTermsOne 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.
maxItemsProducts to read per term or page (default 100, up to 10,000). 32 per page.
sortpopularity (default), price-asc, price-desc, name, newest: the five choices of the site's own sort menu. Use newest for a new-arrival watch.
onlyOnSaleReturn only products whose current price is below the RRP. Products that are not reduced are read, not returned and not charged.
proxyConfigurationApify 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).

FieldNotes
query, positionThe 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, urlCult Beauty's product id (17765048; the site's "sku") and the product link.
name, brandAs the page shows them. brand is null if the page sends none.
price, original_priceprice 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_percenton_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_codeThe 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_countThe page's variant label and how many variants the product has. See the note below.
in_stock, stock_labelTrue 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_urlThe product photo, original size, on static.thcdn.com.
list_nameThe 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 price and original_price rather 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.
  • variant is not the size of the row. It is the page's label for the product's default variant (a row can say Blue Frost while its name has none). Read the size from name and url.
  • in_stock is 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). Use in_stock to 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 by onlyOnSale, 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 c to the vitamin C ingredient page, serum to Face Serums, anua to the Anua brand page, birthday gift to 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, and query stays the term you typed. A broad term can return a whole category; maxItems bounds 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/ with sort newest lists the latest products first; the NEW IN promo 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.