На Etsy более 100 миллионов активных объявлений, 5,6 миллиона продавцов и примерно 450 миллионов посещений в месяц. Это огромный объем общедоступных данных о ценах, трендах, отзывах и конкурентах — и если вам когда-либо приходилось собирать их вручную, вы знаете, насколько это утомительно.
Однажды я провел выходные, вручную каталогизируя товары конкурентов для проекта по исследованию рынка. Уже на 30-м товаре я начал сомневаться во всех жизненных решениях, которые привели меня к этой таблице. Дело в том, что данные Etsy невероятно ценны для ценового анализа, разработки продуктов, поиска ниш и бенчмаркинга продавцов — но только если вы действительно можете получать их в масштабе. Об этом и рассказывает это руководство: один подробный туториал о том, как скрапить Etsy с помощью Python по всем четырем основным типам страниц (результаты поиска, страницы товаров, страницы магазинов и отзывы), а также честный разбор антибот-защиты Etsy и no-code альтернатива для тех, кто предпочел бы вообще обойтись без скриптов.
Что значит скрапить Etsy с помощью Python?
Веб-скрапинг простыми словами — это когда вы пишете код, который заходит на веб-страницы и автоматически извлекает нужные вам данные: названия товаров, цены, описания, изображения, рейтинги, отзывы, информацию о магазине — и упорядочивает их в структурированный формат вроде таблицы или базы данных.
Python — язык по умолчанию для такой работы. Он дружелюбен к новичкам, у него огромное сообщество и богатая экосистема библиотек для скрапинга: Requests для загрузки страниц, BeautifulSoup для парсинга HTML, Selenium и Playwright для автоматизации браузера, а также pandas для организации и экспорта данных. Python стабильно входит в тройку самых популярных языков в ежегодном опросе разработчиков Stack Overflow, а его библиотеки для скрапинга — одни из самых скачиваемых на PyPI.
Когда вы скрапите Etsy, вы извлекаете данные из HTML (а иногда и из скрытого JSON), который Etsy отдает браузеру. Среди данных, которые можно получить:
- Названия товаров, цены, описания, изображения и варианты
- Информацию о продавце/магазине (название, количество продаж, локация, рейтинг)
- Рейтинги и полный текст отзывов
- Выдачу поиска, категории и сигналы трендов
Зачем скрапить Etsy? Реальные сценарии, которые дают ROI
Скрапинг Etsy — это не просто техническое упражнение, а конкурентное преимущество. Независимо от того, продавец вы, продакт-менеджер или аналитик данных, структурированные данные Etsy под рукой могут напрямую влиять на прибыль.

| Сценарий использования | Что вы скрапите | Кому это полезно | Бизнес-эффект |
|---|---|---|---|
| Анализ конкурентных цен | Результаты поиска + цены товаров | E-commerce-операции, продавцы | Динамическое ценообразование в среднем может увеличить выручку на 5–22% |
| Поиск ниш и трендов | Результаты поиска, популярные объявления | Основатели, аналитики | Раннее выявление растущих ниш (например, запрос "preppy pajamas" показал рост поиска на +1 112%) |
| Разработка и улучшение продукта | Отзывы, сведения о товаре | Продуктовые команды | Один бренд кухонной утвари вернул себе статус #1 Best Seller за 60 дней, используя данные о тональности отзывов |
| SEO и исследование ключевых слов | Результаты поиска, названия/теги товаров | Маркетинговые команды | Определение высокочастотных, низкоконкурентных ключевых слов |
| Бенчмаркинг продавцов | Страницы магазинов, количество продаж | Отделы продаж, аналитики | Сбор квалифицированных лидов по $0.01–0.10 за запись вместо покупки списков |
| Мониторинг ассортимента и остатков | Наличие товара | E-commerce-операции | Быстрее реагировать на изменения остатков у конкурентов |
Каждый из этих сценариев требует данных с разных типов страниц Etsy — поэтому в этом руководстве мы разбираем все четыре.
Экономия времени: вручную vs. автоматически
- Ручное исследование Etsy: 30–45 минут на один товар (50–75 часов на 100 товаров)
- Автоматизированный скрапинг: 100 объявлений за 2–5 минут
- Скрапинг с ИИ на 30–40% быстрее и дает до 99,5% точности
API Etsy или веб-скрапинг: что выбрать?
Прежде чем написать хотя бы одну строку кода, стоит спросить: использовать официальный API Etsy или скрапить сайт напрямую? Этот вопрос постоянно всплывает на форумах, и ответ зависит от того, какие данные вам нужны.
Что умеет и чего не умеет API Etsy
Etsy предлагает API v3 с аутентификацией OAuth 2.0. Он подходит для доступа к данным вашего собственного магазина — объявлениям, заказам, квитанциям. Но у него есть серьезные ограничения:
- Данные конкурентов: API в основном ограничен вашим собственным магазином. Вы не можете получить цены, продажи или объявления другого продавца.
- Отзывы: Нет надежного эндпоинта для массового получения полного текста отзывов.
- Лимиты запросов: По умолчанию 10 запросов/секунду, 10 000 запросов/день. Порог offset — 12 000 записей.
- Использование ИИ/ML: Явно отклоняется при проверке приложения.
- Документация: Жалобы сообщества широко распространены — плохие примеры, устаревшие эндпоинты, медленная поддержка.
Когда веб-скрапинг — лучший путь
Если вам нужна информация о конкурентах, тональность отзывов, анализ между магазинами или данные, которые API не раскрывает, скрапинг — правильный выбор. Компромисс такой: вам придется столкнуться с антибот-защитой Etsy (об этом ниже), а также вложиться в настройку.
Таблица сравнения: API vs. скрапинг vs. no-code
| Критерий | Официальный API Etsy | Веб-скрапинг на Python | Thunderbit (no-code) |
|---|---|---|---|
| Доступ к ценам товаров | ✅ (ограниченные поля) | ✅ Полный HTML/JSON-LD | ✅ ИИ извлекает любое видимое поле |
| Данные отзывов | ❌ Недоступны массово | ✅ Через эндпоинт отзывов/HTML | ✅ Скрапинг подстраниц |
| Данные магазинов конкурентов | ❌ Только собственный магазин | ✅ Любой публичный магазин | ✅ Любой публичный магазин |
| Требуется аутентификация | ✅ OAuth 2.0 | ⚠️ Cookies для данных авторизованного пользователя | ⚠️ Браузерный скрапинг для входа |
| Риск антибот-блокировки | Нет | ВЫСОКИЙ (DataDome) | Обрабатывается автоматически (в браузере) |
| Время на настройку | Среднее (API-ключи, OAuth) | Высокое (код + прокси) | Около 2 минут |
Если вам нужны данные конкурентов, отзывы или анализ между магазинами, API просто этого не покрывает. Это честная картина.
Выберите подход к скрапингу на Python, прежде чем писать код
Вопрос, который я постоянно вижу на Reddit и Stack Overflow: «Что лучше — Requests + BeautifulSoup, Selenium, proxy API или что-то совсем другое?» Правильный ответ зависит от вашего уровня, бюджета и сценария использования.
| Подход | Лучше всего для | Порог входа | Умеет JS? | Антибот-защита | Стоимость |
|---|---|---|---|---|---|
| Requests + BeautifulSoup | Разработчики, которым нужен полный контроль | Средний | ❌ | Вручную (заголовки, прокси) | Бесплатно + стоимость прокси |
| Selenium / Playwright | Страницы с большим количеством JS, потоки авторизации | Высокий | ✅ | Частично (browser fingerprint) | Бесплатно + стоимость прокси |
| Сервисы proxy API | Масштаб + обход антиботов | Средний | ✅ (через API) | ✅ Встроено | от $49/мес |
| Thunderbit (no-code) | Не разработчики, быстрый сбор данных | Очень низкий | ✅ (нативно в браузере) | ✅ (браузерная сессия) | Есть бесплатный тариф |
Если вам нужен полный контроль и вы уверенно работаете с Python, выбирайте Requests + BeautifulSoup. Если нужна рендеризация JS или авторизация, используйте Selenium. Если вам нужен обход антиботов в масштабе, рассмотрите proxy-сервис. А если вы хотите данные Etsy без написания и поддержки кода, стоит посмотреть на Thunderbit — об этом позже.
Как Etsy защищается: понимание антибот-защиты DataDome
Большинство гайдов по скрапингу советуют просто «использовать прокси» и идти дальше. Для Etsy этого недостаточно. Etsy использует DataDome — одну из самых агрессивных антибот-систем в интернете. Собственный кейс DataDome называет Etsy успешным примером, отмечая, что когда-то скраперы составляли около 1% вычислительных затрат Etsy.

Что такое DataDome и как он работает?
DataDome не просто проверяет ваш IP-адрес. Он использует многоуровневый стек обнаружения:
- TLS fingerprinting (JA3): библиотека Python
requestsимеет характерную TLS-сигнатуру, которую DataDome может мгновенно распознать. - Проверка HTTP-заголовков и протокола: ищет полные и согласованные браузерные заголовки — отсутствующие или перепутанные заголовки вызывают подозрение.
- JavaScript fingerprinting (протокол Picasso): запускает JS-проверки в браузере, чтобы убедиться, что вы реальный пользователь.
- Поведенческий ML: анализирует более 35 сигналов на каждый запрос, с более чем 85 000 моделей на сайт.
- Оценка репутации IP: адреса из дата-центров помечаются почти мгновенно.
- Проверка cookie: cookie
datadomeдолжна присутствовать и быть валидной.
Признаки блокировки и как это проверить
Одна из самых частых ловушек: вы получаете ответ 200 OK, но HTML на самом деле — это страница CAPTCHA, а не нужные вам данные. Другие признаки:
- ошибки 403 Forbidden
- бесконечные циклы перенаправлений
- в теле ответа есть JavaScript-объект
ddили HTML slider CAPTCHA
Всегда проверяйте тело ответа, а не только статус-код. Быстрая проверка:
if "captcha" in resp.text.lower() or "datadome" in resp.text.lower():
print("Заблокировано! Вместо данных получена страница CAPTCHA.")
Заголовки и cookies, которые снижают вероятность обнаружения
Гарантировать отсутствие блокировки нельзя, но реалистичные заголовки и управление cookie значительно помогают:
session = requests.Session()
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/133.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Sec-Ch-Ua": '"Chromium";v="133", "Not-A.Brand";v="99", "Google Chrome";v="133"',
"Sec-Ch-Ua-Mobile": "?0",
"Sec-Ch-Ua-Platform": '"Windows"',
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Upgrade-Insecure-Requests": "1",
})
Также важно:
- Сохранять cookies между запросами с помощью
requests.Session(). - Добавлять случайные задержки (2–7 секунд) между запросами.
- Имитировать цепочку переходов: сначала открыть главную страницу, затем поиск, затем страницы товаров.
- На больших объемах ротация residential proxy необходима. IP из дата-центров помечаются почти мгновенно.
Эти техники снижают вероятность обнаружения, но не устраняют ее полностью. Для высокообъемного скрапинга вам, скорее всего, понадобится proxy-сервис или браузерный подход.
Настройка Python-среды для скрапинга Etsy
Перед началом:
- Сложность: средняя
- Время: примерно 30–60 минут (настройка + первый скрапинг)
- Что понадобится: Python 3.8+, pip, редактор кода, браузер Chrome (для проверки через DevTools)
Установка зависимостей
Создайте папку проекта, настройте виртуальное окружение и установите нужные библиотеки:
mkdir etsy-scraper && cd etsy-scraper
python -m venv venv
source venv/bin/activate # На Windows: venv\Scripts\activate
pip install requests beautifulsoup4 lxml pandas
- requests — загружает веб-страницы
- beautifulsoup4 — парсит HTML
- lxml — более быстрый HTML-парсер (необязательно, но рекомендуется)
- pandas — структурирует данные и экспортирует их в CSV/Excel
Если позже понадобится автоматизация браузера (для логина или страниц с большим количеством JS), также установите:
pip install selenium
Поймите структуру страниц Etsy до написания кода
Вот совет, который экономит массу времени: Etsy встраивает структурированные данные о товарах в теги <script type="application/ld+json"> на большинстве страниц. Эти данные JSON-LD уже структурированы — название товара, цена, рейтинг, изображения — так что вам не нужно бороться с хрупкими CSS-селекторами для каждого поля.
Откройте любую страницу товара Etsy, щелкните правой кнопкой, выберите «Просмотреть исходный код страницы» и найдите application/ld+json. Вы увидите блок с @type: Product, содержащий большую часть нужных вам данных. На страницах поиска есть @type: ItemList.
CSS-селекторы по-прежнему полезны как запасной вариант для данных, которых нет в JSON-LD, например сведений о доставке или текста отзывов, но первым делом стоит смотреть именно туда.
Шаг 1: Скрапинг результатов поиска Etsy с помощью Python
Результаты поиска — отправная точка для большинства проектов по скрапингу Etsy: будь то мониторинг ниши, отслеживание цен конкурентов или создание базы товаров.
Соберите URL поиска
URL поиска Etsy выглядит так:
https://www.etsy.com/search?q={keyword}&ref=pagination&page={page_number}
Для многословных запросов кодируйте пробелы в URL (например, handmade+jewelry или handmade%20jewelry). Параметр ref=pagination делает запрос более похожим на реальный переход в браузере.
Дополнительные полезные параметры: order (most_relevant, price_asc, price_desc, date_desc), min_price, max_price, ship_to, free_shipping=true. Каждая страница возвращает 48 товаров.
Отправьте запрос и распарсьте HTML
import requests
from bs4 import BeautifulSoup
import json
import time
import random
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
}
def scrape_etsy_search(query, max_pages=3):
all_products = []
for page in range(1, max_pages + 1):
url = f"https://www.etsy.com/search?q={query}&ref=pagination&page={page}"
resp = requests.get(url, headers=headers, timeout=30)
if "captcha" in resp.text.lower():
print(f"Блокировка на странице {page}. Попробуйте добавить задержки или прокси.")
break
soup = BeautifulSoup(resp.text, "lxml")
for script in soup.find_all("script", type="application/ld+json"):
data = json.loads(script.string)
if data.get("@type") == "ItemList":
for item in data.get("itemListElement", []):
all_products.append({
"name": item.get("name"),
"url": item.get("url"),
"image": item.get("image"),
"price": item.get("offers", {}).get("price"),
"currency": item.get("offers", {}).get("priceCurrency"),
"position": item.get("position"),
})
time.sleep(random.uniform(2, 5))
return all_products
Извлечение данных о товарах из JSON-LD
Массив itemListElement дает название каждого товара, URL, изображение, цену и валюту. Если вам также нужны звездный рейтинг или число результатов (они не всегда есть в JSON-LD), используйте CSS-селекторы:
- Карточка товара:
.v2-listing-card - Название:
h3.v2-listing-card__title - Цена:
span.currency-value - Ссылка:
a.listing-link(href)
Обработка пагинации
Идите по страницам циклом и добавляйте случайную задержку между каждым запросом. Обычно Etsy возвращает до 20–250 страниц в зависимости от запроса.
results = scrape_etsy_search("handmade+jewelry", max_pages=5)
print(f"Скраплено {len(results)} товаров.")
Для скрапинга 5 страниц у меня это заняло около 20 секунд в тесте — вместо более чем 30 минут ручного копипаста.
Шаг 2: Скрапинг страниц товаров Etsy с помощью Python
Когда у вас уже есть список URL товаров из поиска, следующий шаг — извлечь подробные данные со страницы каждого товара.
Получите страницу товара
def scrape_etsy_product(url):
resp = requests.get(url, headers=headers, timeout=30)
soup = BeautifulSoup(resp.text, "lxml")
for script in soup.find_all("script", type="application/ld+json"):
data = json.loads(script.string)
if data.get("@type") == "Product":
offers = data.get("offers", {})
price = offers.get("price") or offers.get("lowPrice")
rating_data = data.get("aggregateRating", {})
return {
"name": data.get("name"),
"description": data.get("description", "")[:500],
"brand": data.get("brand", {}).get("name") if isinstance(data.get("brand"), dict) else data.get("brand"),
"category": data.get("category"),
"price": price,
"currency": offers.get("priceCurrency"),
"availability": offers.get("availability"),
"rating": rating_data.get("ratingValue"),
"review_count": rating_data.get("reviewCount"),
"images": data.get("image", []),
"sku": data.get("sku"),
"material": data.get("material"),
}
return None
Обработка вариантов цены
У некоторых товаров есть одна offers.price. У других, с вариантами вроде размера или цвета, используются offers.lowPrice и offers.highPrice. Код выше учитывает оба случая, переходя от price к lowPrice.
Дополнительные поля через CSS-селекторы
Для данных, которых нет в JSON-LD — информации о доставке, вариантах, полных сведениях о продавце — понадобятся CSS-селекторы:
- Название:
h1[data-buy-box-listing-title] - Варианты:
select[data-selector-id]илиdiv[data-option-set] - Доставка:
div.wt-text-captionрядом с блоком доставки
Компромисс такой: JSON-LD чище и стабильнее при изменениях интерфейса. CSS-селекторы более хрупкие, но дают доступ к большему числу полей.
Шаг 3: Скрапинг страниц магазинов Etsy с помощью Python
Это раздел, который большинство конкурирующих гайдов пропускает полностью, а между тем он, пожалуй, самый ценный для отделов продаж и аналитиков конкурентов.
Соберите URL магазина и получите страницу
def scrape_etsy_shop(shop_name):
url = f"https://www.etsy.com/shop/{shop_name}"
resp = requests.get(url, headers=headers, timeout=30)
soup = BeautifulSoup(resp.text, "lxml")
# Метаданные магазина из HTML (не из JSON-LD)
sales_el = soup.select_one("div.shop-sales-reviews a")
rating_el = soup.find("input", {"name": "initial-rating"})
location_el = soup.select_one("div.shop-location")
shop_data = {
"name": shop_name,
"sales": sales_el.text.strip() if sales_el else None,
"rating": rating_el["value"] if rating_el else None,
"location": location_el.text.strip() if location_el else None,
}
# Объявления из JSON-LD
listings = []
for script in soup.find_all("script", type="application/ld+json"):
data = json.loads(script.string)
if data.get("@type") == "ItemList":
for item in data.get("itemListElement", []):
listings.append({
"name": item.get("name"),
"url": item.get("url"),
"price": item.get("offers", {}).get("price"),
})
shop_data["listings"] = listings
return shop_data
Что можно извлечь со страниц магазинов
JSON-LD на страницах магазинов — это @type: ItemList, и он покрывает карточки товаров, но не метаданные уровня магазина, такие как количество продаж, локация или рейтинг. Для этого нужны CSS-селекторы:
| Показатель | Селектор | Примечания |
|---|---|---|
| Название магазина | h1 или meta title | Обычно в заголовке страницы |
| Общее число продаж | div.shop-sales-reviews a | Текст вроде «12 345 продаж» |
| Звездный рейтинг | значение input[name="initial-rating"] | Число от 1 до 5 |
| Локация | div.shop-location | Город, страна |
| На сайте с | div.shop-info | Текст с датой |
Данные о магазине особенно ценны для составления списков лидов, сравнения с конкурентами и выявления топ-продавцов в нише.
Шаг 4: Скрапинг отзывов Etsy с помощью Python
Отзывы — одни из самых ценных и одновременно самых сложных данных на Etsy. Полный текст отзывов, рейтинги и даты не находятся в начальном HTML страницы; они загружаются через внутренний API-эндпоинт.
Способ 1: Найти внутренний API отзывов Etsy
Откройте страницу товара в Chrome, откройте DevTools (F12), перейдите на вкладку Network и прокрутите до секции отзывов. Вы увидите POST-запрос примерно к такому адресу:
https://www.etsy.com/api/v3/ajax/bespoke/member/neu/specs/deep_dive_reviews
Этот эндпоинт возвращает HTML-фрагменты с карточками отзывов. Чтобы использовать его, нужны:
- listing_id — числовой ID из URL товара
- shop_id — извлекается из HTML страницы товара с помощью regex
- csrf_nonce — извлекается из тега
<meta>на странице
Извлечение ID и CSRF-токена
import re
def get_review_params(product_url):
resp = requests.get(product_url, headers=headers)
html = resp.text
listing_id = product_url.split("/")[-1].split("?")[0]
shop_id_match = re.search(r'"shopId"\s*:\s*(\d+)', html)
shop_id = shop_id_match.group(1) if shop_id_match else None
soup = BeautifulSoup(html, "lxml")
csrf_meta = soup.find("meta", {"name": "csrf_nonce"})
csrf = csrf_meta["content"] if csrf_meta else None
return listing_id, shop_id, csrf
Скрапинг отзывов с пагинацией
def scrape_reviews(listing_id, shop_id, csrf, max_pages=5):
session = requests.Session()
session.headers.update(headers)
all_reviews = []
for page in range(1, max_pages + 1):
payload = {
"specs": {
"deep_dive_reviews": {
"module_path": "neu/specs/deep_dive_reviews",
"listing_id": listing_id,
"shop_id": shop_id,
"page": page,
}
}
}
resp = session.post(
"https://www.etsy.com/api/v3/ajax/bespoke/member/neu/specs/deep_dive_reviews",
json=payload,
headers={"x-csrf-token": csrf, "Content-Type": "application/json"},
)
data = resp.json()
html_fragment = data.get("output", {}).get("deep_dive_reviews", "")
review_soup = BeautifulSoup(html_fragment, "lxml")
for card in review_soup.select("div.review-card"):
rating_el = card.find("input", {"name": "rating"})
text_el = card.select_one("div.wt-text-body")
user_el = card.select_one("a[data-review-username]")
date_el = card.select_one("p.wt-text-body-small")
all_reviews.append({
"rating": rating_el["value"] if rating_el else None,
"text": text_el.text.strip() if text_el else None,
"reviewer": user_el.text.strip() if user_el else None,
"date": date_el.text.strip() if date_el else None,
})
time.sleep(random.uniform(2, 5))
return all_reviews
Способ 2: Парсинг отзывов из HTML (запасной вариант)
Если API-способ не сработает, например из-за проблем с CSRF-токеном, можно распарсить первую страницу отзывов прямо из HTML страницы товара. Ограничение такое: в статическом HTML находится только начальный набор отзывов. Для большего объема нужен API или браузерный инструмент вроде Selenium.
Как обойти данные, требующие входа: скрапинг своего магазина Etsy
Это пробел, который не закрывает ни один другой туториал, но это реальная задача — особенно для продавцов Etsy, которым нужно извлекать свои заказы, выручку и статистику.
Проблема в том, что requests сам по себе не может получить доступ к панели Etsy, потому что не имеет cookie вашей авторизованной сессии.
Вариант 1: Selenium с ручным входом и сохранением cookies
Используйте Selenium, чтобы открыть браузер, войти вручную (или автоматизировать логин), а затем продолжить скрапинг уже в авторизованной сессии:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.etsy.com/signin")
# Войдите вручную в окне браузера, затем:
input("Нажмите Enter после входа...")
cookies = driver.get_cookies()
# Теперь используйте driver.get() для перехода по страницам панели и скрапинга
Вы также можете сохранить cookie из сессии Selenium и повторно использовать их с requests.Session() для более быстрого и легкого скрапинга после первого входа.
Вариант 2: Экспорт cookie браузера для использования с Requests
Используйте расширение браузера (например, "EditThisCookie"), чтобы экспортировать cookie активной сессии Etsy, а затем загрузите их в сессию Requests:
import requests
session = requests.Session()
# Добавьте cookies, экспортированные из браузера
session.cookies.set("uaid", "YOUR_UAID_VALUE", domain=".etsy.com")
session.cookies.set("user_prefs", "YOUR_USER_PREFS_VALUE", domain=".etsy.com")
# ... добавьте другие cookies сессии по необходимости
resp = session.get("https://www.etsy.com/your/orders", headers=headers)
Простой путь: режим браузерного скрапинга Thunderbit
Поскольку Thunderbit работает внутри вашего браузера Chrome, он автоматически наследует вашу активную сессию Etsy. Никакого кода для аутентификации, никакого экспорта cookie — просто откройте панель Etsy и скрапьте. Это действительно удобно для извлечения заказов, выручки, статистики и других данных, доступных только продавцу, без единой строки скрипта.
Скрапить панель Etsy с помощью ИИ
Экспорт и использование собранных данных Etsy
Сохранение в CSV или JSON
import pandas as pd
df = pd.DataFrame(results)
df.to_csv("etsy_products.csv", index=False, encoding="utf-8")
df.to_json("etsy_products.json", orient="records", indent=2)
Лучшие практики: добавляйте временные метки в имена файлов, используйте кодировку UTF-8 и корректно обрабатывайте спецсимволы в названиях товаров (продавцы Etsy любят эмодзи и диакритические знаки).
Экспорт в Google Sheets, Airtable или Notion
Для пользователей Python библиотеки вроде gspread (Google Sheets) или Airtable API позволяют отправлять данные программно. Но если вы используете Thunderbit, все экспорты — в Google Sheets, Excel, Airtable и Notion — бесплатны и выполняются в один клик. Без API-ключей, без настройки OAuth.
Обойдитесь без кода: как скрапить Etsy с помощью Thunderbit (no-code альтернатива)
Не все хотят писать Python-скрипты, поддерживать конфигурации прокси или отлаживать CSS-селекторы в 2 часа ночи. Если это про вас, вот как получить данные Etsy с помощью Thunderbit.
Установите расширение Thunderbit для Chrome
Перейдите в Chrome Web Store и установите Thunderbit. Создайте бесплатный аккаунт — бесплатный тариф дает 6 страниц в месяц, а все экспорты бесплатны.
Используйте AI Suggest Fields на любой странице Etsy
Откройте страницу поиска, товара или магазина Etsy. Нажмите «AI Suggest Fields» в боковой панели Thunderbit. ИИ просканирует страницу и предложит столбцы — название товара, цена, рейтинг, изображения, название магазина, теги, информацию о доставке. При необходимости можно изменить или добавить столбцы.
Нажмите Scrape и экспортируйте
Нажмите «Scrape», чтобы извлечь данные с текущей страницы. Для многостраничных результатов используйте пагинационный скрапинг Thunderbit. Чтобы обогатить список URL товаров деталями с каждой страницы товара (описания, отзывы, доставка), используйте скрапинг подстраниц — Thunderbit автоматически переходит по каждой ссылке и подтягивает дополнительные данные.
Экспорт в Excel, Google Sheets, Airtable или Notion — бесплатно.
Когда Thunderbit лучше Python для скрапинга Etsy
- Не нужна настройка прокси или код антибота. Thunderbit работает в вашем настоящем Chrome-браузере, поэтому наследует вашу сессию и выглядит для DataDome как обычный пользователь.
- ИИ автоматически подстраивается под изменения интерфейса. Не нужно чинить сломанные селекторы после обновления фронтенда Etsy.
- Отлично подходит для разовых исследований, конкурентного анализа или нетехнических членов команды. Если вам нужен просто быстрый набор данных, Python-среда не обязательна.
- Скрапинг подстраниц позволяет обогащать список URL товаров подробными данными без написания вложенных циклов.
Для пошагового разбора посмотрите YouTube-канал Thunderbit.
Сравнение затрат на 6 месяцев: Python vs. Thunderbit
| Фактор | Python своими силами | Thunderbit |
|---|---|---|
| Время на настройку | 8–20 часов | Менее 5 минут |
| Стоимость за 6 месяцев (включая труд и прокси) | $2 720–9 450 | $90–228 |
| Ежемесячная поддержка | 4–10+ часов (обновления селекторов = 80%+ накладных расходов) | 0–1 час |
| Антибот-защита | Residential proxy по цене в 85 раз выше обычного кредита | Браузерный подход, нативно обходит DataDome |
| Качество данных | Высокое (при затратах усилий) | Высокое (на базе ИИ) |
Я не говорю, что Python — неправильный выбор: если вам нужен полный контроль, кастомная логика или интеграция в более крупный пайплайн, код по-прежнему король. Но для большинства бизнес-пользователей, которым просто нужны данные Etsy, математика ROI склоняется в сторону no-code-инструмента.
Юридические и этические советы по скрапингу Etsy
Меня спрашивают о законности в каждом посте о скрапинге, так что вот краткая версия:
- Условия использования Etsy прямо запрещают автоматический доступ. При этом Etsy в основном опирается на техническое принуждение (DataDome), а не на судебные иски — известных судебных дел против скраперов, связанных именно с Etsy, нет.
- Скрапьте только общедоступные данные. Не обходите аутентификацию и не заходите в приватные панели продавцов, которые вам не принадлежат.
- Используйте разумную частоту запросов. Задержки 2–7 секунд между запросами и никакого «долбления» серверов Etsy.
- Соблюдайте
robots.txt. Etsy разрешает страницы поиска, но ограничивает некоторые пути. - Ответственно обращайтесь с персональными данными в соответствии с законами о конфиденциальности, например GDPR.
- Проконсультируйтесь с юристом для коммерческих проектов по скрапингу в больших масштабах.
Больше информации вы найдете в нашей статье о юридических последствиях веб-скрапинга — включая дело Meta v. Bright Data (2024), где скрапинг общедоступных данных был признан допустимым.
Итоги: ключевые выводы
Мы рассмотрели очень многое. Вот что я хочу, чтобы вы вынесли из этого материала:
- Структурированные данные JSON-LD на Etsy обычно извлекать проще, чем парсить сырой HTML.
- DataDome — реальное препятствие: для скрапинга на Python в масштабе нужны правильные заголовки, задержки, управление cookie и residential proxies.
- API Etsy ограничен. Если вам нужны отзывы, магазины конкурентов или анализ между продавцами, практичнее скрапить сайт.
- Thunderbit предлагает no-code альтернатива, которая нативно справляется с антибот-защитой и аутентификацией — стоит попробовать, если вы хотите данные Etsy без поддержки скриптов.
- Всегда скрапьте ответственно и соблюдайте правила Etsy.
Если хотите начать без написания кода, попробуйте Thunderbit бесплатно. Или используйте Python-код из этого руководства, чтобы собрать собственный скрейпер — и пусть ваши селекторы никогда не ломаются в пятницу днем.
Больше гайдов по скрапингу — в нашем руководстве по Etsy scraper и подборке лучших AI web scraper.
Попробуйте Thunderbit, чтобы быстрее скрапить данные Etsy Get Started Free
Часто задаваемые вопросы
1. Законно ли скрапить Etsy с помощью Python?
Скрапинг общедоступных данных в целом допускается в соответствии с недавними судебными прецедентами (например, Meta v. Bright Data, hiQ v. LinkedIn). Однако Условия использования Etsy запрещают автоматический доступ, поэтому перед скрапингом всегда изучайте их ToS и robots.txt. Для крупномасштабного или коммерческого использования проконсультируйтесь с юристом.
2. Можно ли скрапить Etsy без блокировок?
Etsy использует DataDome — одну из самых жестких антибот-систем. Реалистичные заголовки, задержки между запросами, сохранение cookie и ротация residential proxy помогают снизить число блокировок. Браузерный подход Thunderbit избегает большинства детектов, поскольку работает в вашей реальной сессии Chrome.
3. Есть ли у Etsy API, который можно использовать вместо скрапинга?
Да — у Etsy есть API v3, но он в основном ограничен данными вашего собственного магазина и не дает полноценного доступа к отзывам. Для большинства сценариев конкурентной разведки и анализа между магазинами требуется именно скрапинг.
4. Какие библиотеки Python нужны для скрапинга Etsy?
Минимум: requests, beautifulsoup4, pandas для экспорта и json (встроен в Python). Для страниц с большим количеством JS или с обязательным логином добавьте selenium. Для более быстрого парсинга HTML используйте lxml.
5. Как именно скрапить отзывы Etsy?
Отзывы Etsy загружаются через внутренний API-эндпоинт (/api/v3/ajax/bespoke/member/neu/specs/deep_dive_reviews). Нужно извлечь listing ID, shop ID и CSRF-токен со страницы товара, а затем отправлять POST-запросы к этому эндпоинту с пагинацией. В качестве запасного варианта можно распарсить первую порцию отзывов прямо из HTML страницы товара — оба подхода пошагово разобраны в этом руководстве.
Подробнее


