~/ecommerce/sephora-scraper

Sephora Scraper (Глобально)

Актор Apify, который извлекает полные данные о товарах Sephora — варианты, цены, изображения, состав и отзывы — из 21 витрины в США, Канаде, на 9 рынках ЕС и 10 рынках Азиатско-Тихоокеанского региона по единой нормализованной схеме.

красота >99% успешность PythonCrawleecurl_cffi СШАКанадаФранцияИталияГерманияИспанияПольшаЧехияГрецияРумынияПортугалияНовая ЗеландияАвстралияСингапурМалайзияТаиландИндонезияФилиппиныГонконгТайваньБруней
proooxy/sephora-scraper — характеристики
категорияecommerce / красота
языкPython
стекPython, Crawlee, curl_cffi
рынкиСША, Канада, Франция, Италия, Германия, Испания, Польша, Чехия, Греция, Румыния, Португалия, Новая Зеландия, Австралия, Сингапур, Малайзия, Таиланд, Индонезия, Филиппины, Гонконг, Тайвань, Бруней
успешность>99%
выводчистый JSON, готовый к RAG

ключевые возможности

21 витрина в одном акторе — США, Канада, 9 рынков ЕС и 10 рынков APAC под единым SKU

Автоопределение рынка — вставьте любой URL sephora.* и диспетчер направит его в нужный модуль

Смешанные мультирыночные запуски — URL US + EU + SEA в одном списке startUrls, потоково записываются в единый датасет с меткой `market`

Корректные локализованные цены — NZD, EUR, USD, AUD и еще 17 валют, возвращаемых собственным слоем локализации Sephora

Нормализованная схема — каждый рынок выдает одну и ту же структуру `source / brand / title / options / variants / medias / stats`

Изоляция сессий по рынкам — состояние авторизации не может «перетекать» между регионами

Глобальный circuit breaker — 50 последовательных сбоев прерывают запуск, чтобы не тратить вычисления впустую на недоступную цель

сценарии использования

  • Панрегиональная аналитика цен на рынках красоты США, ЕС и APAC
  • Мониторинг наличия и ассортимента товаров между рынками
  • Конкурентный анализ для брендов, выходящих на новые регионы Sephora
  • Сравнение состава между региональными рецептурами
  • Отслеживание отзывов и рейтингов — включая сигналы избранного (wishlist) SEA и AI-сводки тональности отзывов для US
  • Аудит цен по программам лояльности/членства на каждом рынке

входные параметры

ПараметрТипОбязательныйОписание
startUrlsarrayобязательноURL товаров или категорий с любой витрины sephora.*. Рынок определяется автоматически по хосту.
marketstringопциональноОпциональное переопределение рынка (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).
localestringопциональноОпциональная локаль BCP 47 (например, fr-FR, en-NZ) — переопределяет рынок по умолчанию.
categoryIdsarrayопциональноТолько для EU. ID категорий SFCC вроде C479 — альтернатива вставке URL категорий.
proxyobjectопциональноКонфигурация прокси Apify. Настоятельно рекомендуются резидентные; закрепите apifyProxyCountry за целевым рынком.
maxConcurrencynumberопциональноПараллельные запросы. По умолчанию 5. US: 2-5. EU: 3. SEA: 8-16.
maxRequestsPerCrawlnumberопциональноГлобальный жесткий лимит по всем рынкам. 0 = без ограничений.

Поддерживаемые рынки

РегионКод рынкаСтранаВалютаДомен
АмерикаusСШАUSDsephora.com
АмерикаusКанадаCADsephora.ca
EUeu-frФранцияEURsephora.fr
EUeu-itИталияEURsephora.it
EUeu-deГерманияEURsephora.de
EUeu-esИспанияEURsephora.es
EUeu-plПольшаPLNsephora.pl
EUeu-czЧехияCZKsephora.cz
EUeu-grГрецияEURsephora.gr
EUeu-roРумынияRONsephora.ro
EUeu-ptПортугалияEURsephora.pt
APACsea-nzНовая ЗеландияNZDsephora.nz
APACsea-auАвстралияAUDsephora.com.au
APACsea-sgСингапурSGDsephora.sg
APACsea-myМалайзияMYRsephora.com.my
APACsea-thТаиландTHBsephora.co.th
APACsea-idИндонезияIDRsephora.co.id
APACsea-phФилиппиныPHPsephora.ph
APACsea-hkГонконгHKDsephora.hk
APACsea-twТайваньTWDsephora.tw
APACsea-bnБрунейBNDsephora.bn

Пример вывода

 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}

Советы

  • Закрепите страну прокси за целевым рынком. Резидентный выход в несоответствующей стране — самый крупный источник 403 от слоя Akamai у Sephora. Установите apifyProxyCountry в ISO-код витрины (US, FR, NZ и т. д.).
  • Сначала проведите smoke-тест. Установите maxRequestsPerCrawl=10 перед первым производственным запуском на новом рынке.
  • Настраивайте параллелизм по регионам. US: 2-5. EU: 3. SEA: 8-16. При смешанных запусках у каждого рынка свой отдельный семафор.

частые вопросы

Какие витрины Sephora поддерживает этот парсер?
21 витрину: US (sephora.com), Canada (sephora.ca), 9 рынков EU (FR, IT, DE, ES, PL, CZ, GR, RO, PT) и 10 рынков APAC (NZ, AU, SG, MY, TH, ID, PH, HK, TW, BN). Рынок определяется автоматически по хосту — при смешивании рынков менять входные параметры не нужно.
Можно ли парсить несколько рынков за один запуск?
Да. Смешайте URL sephora.com, sephora.fr и sephora.nz в одном списке startUrls. Диспетчер сгруппирует их по рынкам, запустит каждый модуль параллельно с подходящей для рынка авторизацией и пометит каждый элемент датасета полем `market`.
Как парсер справляется с антибот-защитой?
Он использует резидентные прокси для всех рынков и curl_cffi для TLS-фингерпринтинга уровня браузера на трафике EU и SEA, чтобы обойти Akamai. Трафик US использует HttpCrawler из Crawlee с пулом сессий, который ротируется при 403/429.
Продолжат ли работать мои существующие конфигурации запуска v1.x для US?
Да. Входные параметры до версии 2.0 — startUrls, maxConcurrency, proxy, maxRequestsPerCrawl — ведут себя идентично. Единственное изменение в выводе — новое поле `market` в каждом элементе, это мягкое аддитивное изменение.
Почему некоторые поля равны null в данных SEA?
API Sephora SEA не предоставляет счетчик `lovesCount`, поэтому у элементов APAC `stats.lovesCount = null`. Вместо этого у каждого варианта есть булево поле `wishlisted`. И наоборот, `sentiments` (AI-сводки отзывов) и `source.crawlUrl` доступны только для US.
Нужны ли отдельные API-токены или аккаунты для каждого рынка?
Нет. Ваш существующий API-токен Apify работает без изменений. Актор сам управляет гостевыми токенами по каждому рынку внутри — учетные данные не нужны для EU/SEA, а US работает на стандартных резидентных прокси Apify.

похожие в ~/ecommerce

Запустите Sephora Scraper (Глобально) или закажите разработку под задачу

Начните извлекать данные на Apify за считаные минуты или закажите у меня разработку парсера на заказ и RAG-конвейера под ваш источник и схему.

запустить на Apify заказать данные