~/ecommerce/sephora-scraper

Sephora Scraper (Global)

Ator Apify que extrai dados completos de produtos da Sephora — variantes, preços, imagens, ingredientes e reviews — de 21 lojas nos EUA, Canadá, 9 mercados da UE e 10 mercados da Ásia-Pacífico, em um único esquema normalizado.

beleza >99% de sucesso PythonCrawleecurl_cffi Estados UnidosCanadáFrançaItáliaAlemanhaEspanhaPolôniaRepública TchecaGréciaRomêniaPortugalNova ZelândiaAustráliaSingapuraMalásiaTailândiaIndonésiaFilipinasHong KongTaiwanBrunei
proooxy/sephora-scraper — especificações
categoriaecommerce / beleza
linguagemPython
stackPython, Crawlee, curl_cffi
mercadosEstados Unidos, Canadá, França, Itália, Alemanha, Espanha, Polônia, República Tcheca, Grécia, Romênia, Portugal, Nova Zelândia, Austrália, Singapura, Malásia, Tailândia, Indonésia, Filipinas, Hong Kong, Taiwan, Brunei
sucesso>99%
saídaJSON limpo e pronto para RAG

principais recursos

21 lojas em um único ator — EUA, Canadá, 9 mercados da UE e 10 mercados APAC cobertos por um único SKU

Mercado detectado automaticamente — cole qualquer URL sephora.* e o dispatcher a encaminha para o módulo correto

Execuções multi-mercado combinadas — URLs de EUA + UE + SEA em uma única lista startUrls, transmitidas para um único dataset marcado com `market`

Precificação correta por locale — NZD, EUR, USD, AUD e outras 17 moedas retornadas pela própria camada de localização da Sephora

Esquema normalizado — todo mercado emite a mesma estrutura `source / brand / title / options / variants / medias / stats`

Isolamento de sessão por mercado — o estado de autenticação não pode se contaminar entre regiões

Circuit breaker global — 50 falhas consecutivas abortam a execução para evitar gastar computação em um alvo fora do ar

casos de uso

  • Inteligência de preços pan-regional entre os mercados de beleza dos EUA, UE e APAC
  • Monitoramento de disponibilidade e sortimento de produtos entre mercados
  • Análise competitiva para marcas lançando em novas regiões da Sephora
  • Comparações de ingredientes entre formulações regionais
  • Rastreamento de reviews e avaliações — incluindo sinais de wishlist do SEA e resumos de sentimento por IA dos EUA
  • Auditorias de precificação de fidelidade/membership por mercado

parâmetros de entrada

ParâmetroTipoObrigatórioDescrição
startUrlsarrayobrigatórioURLs de produto ou categoria de qualquer loja sephora.*. O mercado é detectado automaticamente pelo hostname.
marketstringopcionalSubstituição opcional de mercado (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).
localestringopcionalLocale BCP 47 opcional (ex.: fr-FR, en-NZ) — substitui o padrão do mercado.
categoryIdsarrayopcionalSomente UE. IDs de categoria SFCC como C479 — alternativa a colar URLs de categoria.
proxyobjectopcionalConfiguração de proxy do Apify. Residencial fortemente recomendado; fixe apifyProxyCountry no mercado-alvo.
maxConcurrencynumberopcionalRequisições simultâneas. Padrão 5. EUA: 2-5. UE: 3. SEA: 8-16.
maxRequestsPerCrawlnumberopcionalLimite rígido global entre todos os mercados. 0 = ilimitado.

Mercados suportados

RegiãoID do MercadoPaísMoedaHostname
AméricasusEstados UnidosUSDsephora.com
AméricasusCanadáCADsephora.ca
UEeu-frFrançaEURsephora.fr
UEeu-itItáliaEURsephora.it
UEeu-deAlemanhaEURsephora.de
UEeu-esEspanhaEURsephora.es
UEeu-plPolôniaPLNsephora.pl
UEeu-czRepública TchecaCZKsephora.cz
UEeu-grGréciaEURsephora.gr
UEeu-roRomêniaRONsephora.ro
UEeu-ptPortugalEURsephora.pt
APACsea-nzNova ZelândiaNZDsephora.nz
APACsea-auAustráliaAUDsephora.com.au
APACsea-sgSingapuraSGDsephora.sg
APACsea-myMalásiaMYRsephora.com.my
APACsea-thTailândiaTHBsephora.co.th
APACsea-idIndonésiaIDRsephora.co.id
APACsea-phFilipinasPHPsephora.ph
APACsea-hkHong KongHKDsephora.hk
APACsea-twTaiwanTWDsephora.tw
APACsea-bnBruneiBNDsephora.bn

Exemplo de Saída

 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}

Dicas

  • Fixe o país do proxy no mercado-alvo. Uma saída residencial em um país incompatível é a maior fonte isolada de 403s vindos da camada Akamai da Sephora. Defina apifyProxyCountry para o código ISO da loja (US, FR, NZ, etc.).
  • Faça um smoke test primeiro. Defina maxRequestsPerCrawl=10 antes da sua primeira execução de produção em um novo mercado.
  • Ajuste a concorrência por região. EUA: 2-5. UE: 3. SEA: 8-16. Cada mercado recebe seu próprio semáforo em execuções mistas.

faq

Quais lojas da Sephora esse scraper suporta?
21 lojas: EUA (sephora.com), Canadá (sephora.ca), 9 mercados da UE (FR, IT, DE, ES, PL, CZ, GR, RO, PT) e 10 mercados APAC (NZ, AU, SG, MY, TH, ID, PH, HK, TW, BN). O mercado é detectado automaticamente pelo hostname — nenhuma mudança de input é necessária ao misturar mercados.
Posso raspar múltiplos mercados em uma única execução?
Sim. Misture URLs de sephora.com, sephora.fr e sephora.nz em uma única lista startUrls. O dispatcher as agrupa por mercado, executa cada módulo simultaneamente com a autenticação apropriada para cada mercado, e marca cada item do dataset com um campo `market`.
Como o scraper lida com proteção anti-bot?
Ele usa proxies residenciais para todos os mercados e curl_cffi para fingerprinting de TLS no nível de navegador no tráfego de UE e SEA, para superar o Akamai. O tráfego dos EUA usa o HttpCrawler do Crawlee, com um pool de sessões que faz rotação em 403/429.
Minhas configurações de execução v1.x dos EUA existentes vão continuar funcionando?
Sim. Os inputs pré-2.0 — startUrls, maxConcurrency, proxy, maxRequestsPerCrawl — se comportam de forma idêntica. A única mudança na saída é uma nova chave `market` em cada item, uma mudança aditiva e não destrutiva.
Por que alguns campos estão nulos nos dados do SEA?
A API da Sephora SEA não expõe um contador `lovesCount`, então os itens APAC têm `stats.lovesCount = null`. Em vez disso, cada variante tem um campo booleano `wishlisted`. Por outro lado, `sentiments` (resumos de reviews por IA) e `source.crawlUrl` são exclusivos dos EUA.
Preciso de tokens de API ou contas separadas por mercado?
Não. Seu token de API do Apify existente funciona sem alterações. O ator gerencia os guest tokens por mercado internamente — nenhuma credencial é necessária para UE/SEA, e os EUA funcionam com proxies residenciais padrão do Apify.

relacionados em ~/ecommerce

Execute Sephora Scraper (Global) ou solicite um projeto personalizado

Comece a extrair dados no Apify em minutos, ou me contrate para desenvolver um scraper sob medida e um pipeline de RAG para sua fonte e esquema exatos.

executar no Apify obter dados personalizados