Sephora France Product Scraper
Pricing
from $5.00 / 1,000 dataset items
Sephora France Product Scraper
Scrape Sephora France (sephora.fr): products by category, brand, or keyword with full pagination. Get TTC & HT prices, discounts, ratings, stock, images, and size/shade variants — structured for price monitoring and market research. France-specialised and reliable. Pay only for results.
Pricing
from $5.00 / 1,000 dataset items
Rating
0.0
(0)
Developer
axly
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Extract the Sephora France (www.sephora.fr) catalogue at scale — products
from any category, brand, or keyword, with full pagination and
optional per‑product detail (long description, exact rating, and size/shade
variants with per‑SKU price and stock).
Unlike generic multi‑country Sephora tools, this actor is built for the French market: it returns France‑specific pricing — both TTC (tax included) and HT (tax excluded) — plus discounts, the French category taxonomy, and variant‑level stock, through a reliable web extraction path.
Who it's for
- Beauty brands & market‑intelligence teams — track your own and competitors' assortment, price positioning, discounts, and ratings across Sephora FR.
- Resellers, arbitrage & price‑comparison sites — monitor TTC/HT prices,
price drops (
old_price,discount_pct), and stock at the variant level. - E‑commerce & data teams / developers — a stable JSON schema, incremental runs, webhooks, and MCP/AI integration you can build on.
- Researchers & analysts — structured French beauty‑market and pricing data.
What you get (output fields)
| Field | Description |
|---|---|
product_id | Master product id (e.g. P1000211448). |
variant_pid | Default purchasable variant id (numeric). |
name | Product name. |
brand | Brand / trademark. |
price | Current price, tax included (TTC), EUR. |
old_price | Previous / crossed‑out price (TTC). |
price_excl_tax | Price excluding tax (HT). |
discount | Discount amount reported by the storefront. |
discount_pct | Discount % computed from old_price vs price. |
currency | Currency code (EUR). |
in_stock | Availability flag. |
category_path | Breadcrumb category path. |
range / nature / section / target | Sephora product taxonomy fields. |
rating | Average rating (0–5) — exact in detail mode. |
review_count | Number of customer reviews. |
sku | SKU (detail mode). |
description | Long product description (detail mode). |
variants | Size/shade variants: variant_pid, label, selected, and (with includeVariants) price & in_stock. |
image | Primary image URL. |
url | Product page URL. |
input_type / source | Which input produced the row (category/brand/search/pid). |
scraped_at | ISO‑8601 scrape timestamp. |
Use cases
- Competitive price & promo monitoring — schedule daily category runs and diff
price/discount_pct/in_stockto catch price drops and promotions. - Assortment & availability tracking — enable
scrapeDetail+includeVariantsto follow each shade/size SKU's price and stock. - Brand catalogue export — pull a full brand's line‑up via
brandUrlsfor merchandising, MAP monitoring, or catalogue enrichment. - Market research — build a France beauty dataset (brands, ranges, ratings, HT/TTC pricing) for analysis.
Input parameters
| Field | Type | Default | Notes |
|---|---|---|---|
categoryUrls | array | [] | Category slugs (shop/maquillage-c302) or full listing URLs. Auto‑paginated. |
brandUrls | array | [] | Brand slugs (guerlain-guerl) or /marques/de-a-a-z/… URLs. Auto‑paginated. |
searchTerms | array | [] | Keyword autocomplete lookups (top matches; no pagination/detail). |
productPids | array | [] | Numeric variant PIDs for direct full detail (advanced). |
scrapeDetail | boolean | false | Enrich each listed product with its detail page. |
includeVariants | boolean | false | With scrapeDetail, price every size/shade variant. |
includeOutOfStock | boolean | true | Skip out‑of‑stock products when off. |
maxItems | integer | 500 | Global cap across all inputs. |
maxItemsPerInput | integer | 0 | Per category/brand cap (0 = unlimited). |
proxyConfiguration | object | Apify Residential FR | Required — a French IP is mandatory (see below). |
At least one of categoryUrls, brandUrls, searchTerms, or productPids is
required.
Example input
{"categoryUrls": ["shop/maquillage-c302", "shop/maquillage/teint/fonds-de-teint-c353"],"brandUrls": ["guerlain-guerl"],"scrapeDetail": true,"includeVariants": false,"maxItems": 300,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "FR"}}
Example output row
{"product_id": "P1000211448","variant_pid": "787448","name": "B12 Base Thinner - Sérum nacré vitaminé","brand": "onesize","price": 37.0,"old_price": 37.0,"price_excl_tax": 30.83,"discount": 0.0,"discount_pct": null,"currency": "EUR","in_stock": true,"category_path": "summer vibes/sélection été par catégorie/maquillage","rating": 4.3,"review_count": 3,"url": "https://www.sephora.fr/p/…-P1000211448.html","input_type": "category","source": "shop/maquillage-c302","scraped_at": "2026-08-03T12:00:00Z"}
Proxy requirement
Sephora FR is protected by Akamai with a hard French geo‑block — any non‑French
IP is denied. This actor therefore requires a French residential proxy. The
default proxyConfiguration uses Apify Residential proxies with country FR; keep
it enabled.
Scheduling & webhooks
Use Schedules to run the actor on a cadence (e.g. daily price checks) and
Webhooks to trigger your systems on run completion (ACTOR.RUN.SUCCEEDED) —
push new data straight into your database, sheet, or pipeline. Results are
available as JSON, CSV, Excel, or via the Dataset API.
Use from AI assistants (MCP)
This actor works with the Apify MCP server, so AI assistants (Claude, ChatGPT, Cursor, and other MCP clients) can run it and read its dataset as a tool. Point your MCP client at Apify and call the actor with the same input shown above to pull live Sephora FR data into your assistant.
FAQ
Which locale/currency is covered? The French storefront www.sephora.fr only —
locale fr_FR, prices in EUR (TTC and HT).
Why is a French proxy mandatory? Akamai blocks non‑French IPs at the edge; a French residential IP is required for every request. The default proxy setting handles this.
Can I fetch a product by its URL? Detail requires a numeric variant_pid
(from variant_pid in listing rows). Master product URLs are challenge‑protected
and can't be fetched directly — browse the category/brand instead, then optionally
pass productPids.
How fresh is the data? Every run fetches live data at run time.
Do search terms return everything? searchTerms uses Sephora's autocomplete —
fast, but only the top matches per term. For complete coverage use categoryUrls
or brandUrls, which paginate the full grid.
Is it reliable? The client auto‑rotates French residential exits and retries on transient blocks; per‑product failures are skipped and logged so a run keeps going.
Is scraping this data legal? The actor collects publicly available catalogue data. You are responsible for using the output in compliance with applicable laws, Sephora's terms, and data‑protection rules.