~/ecommerce/sephora-scraper

Sephora Scraper (Mondial)

Acteur Apify qui extrait les données produits complètes de Sephora — variantes, prix, images, ingrédients et avis — depuis 21 boutiques aux États-Unis, au Canada, sur 9 marchés de l’UE et 10 marchés Asie-Pacifique, dans un schéma normalisé unique.

beauté >99% de réussite PythonCrawleecurl_cffi États-UnisCanadaFranceItalieAllemagneEspagnePologneRépublique tchèqueGrèceRoumaniePortugalNouvelle-ZélandeAustralieSingapourMalaisieThaïlandeIndonésiePhilippinesHong KongTaïwanBrunei
proooxy/sephora-scraper — specs
catégorieecommerce / beauté
langagePython
stackPython, Crawlee, curl_cffi
marchésÉtats-Unis, Canada, France, Italie, Allemagne, Espagne, Pologne, République tchèque, Grèce, Roumanie, Portugal, Nouvelle-Zélande, Australie, Singapour, Malaisie, Thaïlande, Indonésie, Philippines, Hong Kong, Taïwan, Brunei
réussite>99%
sortieJSON propre, prêt pour le RAG

fonctionnalités clés

21 boutiques dans un seul acteur — États-Unis, Canada, 9 marchés UE et 10 marchés APAC couverts par un seul SKU

Marché détecté automatiquement — collez n’importe quelle URL sephora.* et le dispatcher la route vers le bon module

Runs multi-marchés mixtes — des URLs US + EU + SEA dans une seule liste startUrls, diffusées vers un dataset unique balisé avec `market`

Tarification correcte par locale — NZD, EUR, USD, AUD et 17 autres devises renvoyées par la couche de localisation propre à Sephora

Schéma normalisé — chaque marché produit la même structure `source / brand / title / options / variants / medias / stats`

Isolation des sessions par marché — l’état d’authentification ne peut pas se contaminer entre régions

Disjoncteur global — 50 échecs consécutifs interrompent le run pour éviter de gaspiller du calcul sur une cible hors service

cas d’usage

  • Intelligence tarifaire pan-régionale sur les marchés beauté US, UE et APAC
  • Suivi de la disponibilité produit et de l’assortiment entre marchés
  • Analyse concurrentielle pour les marques se lançant sur de nouvelles régions Sephora
  • Comparaisons d’ingrédients entre formulations régionales
  • Suivi des avis et notes — y compris les signaux de wishlist SEA et les résumés de sentiment IA US
  • Audits de tarification fidélité / membership par marché

paramètres d’entrée

ParamètreTypeRequisDescription
startUrlsarrayrequisURLs de produits ou de catégories depuis n’importe quelle boutique sephora.*. Le marché est détecté automatiquement à partir du nom d’hôte.
marketstringoptionnelSurcharge de marché optionnelle (us, eu-fr, eu-it, eu-de, eu-es, eu-pl, eu-cz, eu-gr, eu-ro, eu-pt, sea-nz, sea-au, sea-sg, sea-my, sea-th, sea-id, sea-ph, sea-hk, sea-tw, sea-bn).
localestringoptionnelLocale BCP 47 optionnelle (ex. fr-FR, en-NZ) — remplace le marché par défaut.
categoryIdsarrayoptionnelUE uniquement. ID de catégorie SFCC comme C479 — alternative au collage d’URLs de catégorie.
proxyobjectoptionnelConfiguration du proxy Apify. Résidentiel fortement recommandé ; épinglez apifyProxyCountry sur le marché cible.
maxConcurrencynumberoptionnelRequêtes concurrentes. Par défaut 5. US : 2-5. EU : 3. SEA : 8-16.
maxRequestsPerCrawlnumberoptionnelPlafond global strict tous marchés confondus. 0 = illimité.

Marchés supportés

RégionID de marchéPaysDeviseNom d’hôte
AmériquesusÉtats-UnisUSDsephora.com
AmériquesusCanadaCADsephora.ca
UEeu-frFranceEURsephora.fr
UEeu-itItalieEURsephora.it
UEeu-deAllemagneEURsephora.de
UEeu-esEspagneEURsephora.es
UEeu-plPolognePLNsephora.pl
UEeu-czRépublique tchèqueCZKsephora.cz
UEeu-grGrèceEURsephora.gr
UEeu-roRoumanieRONsephora.ro
UEeu-ptPortugalEURsephora.pt
APACsea-nzNouvelle-ZélandeNZDsephora.nz
APACsea-auAustralieAUDsephora.com.au
APACsea-sgSingapourSGDsephora.sg
APACsea-myMalaisieMYRsephora.com.my
APACsea-thThaïlandeTHBsephora.co.th
APACsea-idIndonésieIDRsephora.co.id
APACsea-phPhilippinesPHPsephora.ph
APACsea-hkHong KongHKDsephora.hk
APACsea-twTaïwanTWDsephora.tw
APACsea-bnBruneiBNDsephora.bn

Exemple de sortie

 1{
 2  "market": "sea-nz",
 3  "source": {
 4    "id": 58792,
 5    "canonicalUrl": "https://www.sephora.nz/products/rare-beauty-true-to-myself-natural-matte-longwear-foundation",
 6    "retailer": "SEPHORA",
 7    "currency": "NZD"
 8  },
 9  "brand": "Rare Beauty",
10  "title": "True To Myself Natural Matte Longwear Foundation",
11  "description": "<p>A self-priming and self-setting foundation...</p>",
12  "ingredients": "Aqua/Water, Cyclopentasiloxane, Glycerin...",
13  "currentSku": "770225",
14  "categories": ["makeup/face/foundation"],
15  "options": [
16    { "name": "shade", "id": "66488", "values": [{"value": "1 Fair Neutral", "orderable": true}] }
17  ],
18  "variants": [
19    {
20      "id": "276343",
21      "sku": "770225",
22      "price": { "current": 77.0, "original": 77.0, "stockStatus": "IN_STOCK" },
23      "options": [{"name": "shade", "value": "1 Fair Neutral"}],
24      "highlights": ["NEW", "Only at Sephora"],
25      "wishlisted": null
26    }
27  ],
28  "medias": [{ "url": "https://www.sephora.nz/.../foundation-shade.jpg", "type": "image" }],
29  "stats": { "reviewCount": 971, "rating": 4.8, "lovesCount": null }
30}

Astuces

  • Épinglez le pays du proxy sur le marché cible. Une sortie résidentielle dans un pays non concordant est la principale source de 403 provenant de la couche Akamai de Sephora. Définissez apifyProxyCountry sur le code ISO de la boutique (US, FR, NZ, etc.).
  • Testez d’abord en mode smoke-test. Définissez maxRequestsPerCrawl=10 avant votre premier run de production sur un nouveau marché.
  • Ajustez la concurrence par région. US : 2-5. EU : 3. SEA : 8-16. Chaque marché dispose de son propre sémaphore dans les runs mixtes.

faq

Quelles boutiques Sephora ce scraper supporte-t-il ?
21 boutiques : US (sephora.com), Canada (sephora.ca), 9 marchés UE (FR, IT, DE, ES, PL, CZ, GR, RO, PT), et 10 marchés APAC (NZ, AU, SG, MY, TH, ID, PH, HK, TW, BN). Le marché est détecté automatiquement à partir du nom d’hôte — aucun changement d’input nécessaire pour mixer les marchés.
Puis-je scraper plusieurs marchés en un seul run ?
Oui. Mixez des URLs sephora.com, sephora.fr et sephora.nz dans une seule liste startUrls. Le dispatcher les regroupe par marché, exécute chaque module en parallèle avec l’authentification adaptée au marché, et balise chaque élément du dataset avec un champ `market`.
Comment le scraper gère-t-il la protection anti-bot ?
Il utilise des proxies résidentiels pour tous les marchés, et curl_cffi pour un fingerprinting TLS de niveau navigateur sur le trafic EU et SEA afin de contourner Akamai. Le trafic US utilise le HttpCrawler de Crawlee avec un pool de sessions qui tourne sur 403/429.
Mes configurations de run US v1.x existantes continueront-elles de fonctionner ?
Oui. Les inputs antérieurs à 2.0 — startUrls, maxConcurrency, proxy, maxRequestsPerCrawl — se comportent à l’identique. Le seul changement en sortie est une nouvelle clé `market` sur chaque élément, un changement additif sans impact.
Pourquoi certains champs sont-ils null dans les données SEA ?
L’API de Sephora SEA n’expose pas de compteur `lovesCount`, donc les éléments APAC ont `stats.lovesCount = null`. Chaque variante possède à la place un champ booléen `wishlisted`. Inversement, `sentiments` (résumés d’avis générés par IA) et `source.crawlUrl` sont réservés aux US.
Ai-je besoin de tokens API ou de comptes séparés par marché ?
Non. Votre token API Apify existant fonctionne sans changement. L’acteur gère les tokens invité par marché en interne — aucun identifiant requis pour EU/SEA, et US fonctionne avec les proxies résidentiels Apify standard.

similaires dans ~/ecommerce

Exécutez Sephora Scraper (Mondial), ou obtenez un projet sur mesure

Commencez à extraire sur Apify en quelques minutes, ou engagez-moi pour construire un scraper sur mesure et un pipeline RAG adaptés exactement à votre source et à votre schéma.

exécuter sur Apify obtenir des données sur mesure