Guía del Scraper de TikTok Shop: Datos de Productos, Precios y SKUs
Advanced Data Extraction Specialist
TL;DR:
- Un scraper de TikTok Shop comienza con un producto conocido. Envía
product_idyregionascraper.tiktok.shop.page. - Los registros de productos y variantes necesitan tablas separadas. El precio a nivel de producto, stock, vendedor y envío no deben sobrescribir las opciones y disponibilidad a nivel de SKU.
- La región y la moneda pertenecen a cada observación. La región devuelta representa la página que se resolvió, mientras que la moneda le da significado al precio.
- Las etiquetas de ventas tienen límites. Preserva
sold_counttal como se devuelve; no lo reinterpretes como GMV, un libro de órdenes, o ventas por un período elegido. - Las instantáneas apoyan el monitoreo. El actor devuelve datos del producto; la programación y el historial son construidos por la aplicación que llama.
- Gratis para comenzar. Las nuevas cuentas de Scrapeless incluyen crédito gratuito a través del Scrapeless Dashboard.
Introducción: modela el producto antes de construir el feed
Una página de producto de TikTok Shop combina varios tipos de datos: identidad del producto, identidad del vendedor, precio mostrado, stock agregado, opciones seleccionables, SKUs, imágenes, calificaciones, reseñas, categorías y detalles de envío. Aplanar todo eso en una fila funcione hasta que un producto tenga varias variantes o falte un campo en una región.
El scraper de Scrapeless TikTok Shop devuelve una respuesta estructurada del producto a partir de un ID de producto conocido y región. Esta guía muestra la solicitud, mapea los campos y construye un normalizador limpio en Python para registros de productos y SKUs. Para el sobre de solicitud común utilizado por actores de datos gestionados, lee la guía de actor de datos de Scrapeless publicada.
Lo que Devuelve el Scraper de TikTok Shop
El actor scraper.tiktok.shop.page está diseñado para la búsqueda de detalles del producto. Puede devolver:
- ID de producto, nombre, región, vendedor y cantidad vendida
- precio mostrado y moneda
- stock agregado
- calificación y cantidad de reseñas
- imágenes del producto
- definiciones de opciones y registros de SKU
- disponibilidad de SKU
- detalles del vendedor, categorías e información de envío
La respuesta describe una página de producto pública solicitada en el momento de la colección. No es una exportación completa del catálogo, resultado de pago, historial de pedidos o historial de precios automático.
La propia documentación de comercio de TikTok distingue productos de SKUs en la visión general de la API de Productos. Esa distinción también es el límite adecuado de la base de datos para los registros de páginas de productos extraídos: un producto puede tener muchas variantes vendibles.
Parámetros de Solicitud
El extremo es POST https://api.scrapeless.com/api/v1/scraper/request, autenticado con x-api-token.
El cuerpo tiene dos entradas requeridas:
| Parámetro | Tipo | Propósito |
|---|---|---|
product_id |
string | Identifica la página del producto Shop |
region |
string | Selecciona el contexto del mercado para la solicitud |
La documentación muestra ejemplos de región como GB, SG, JP, y US. No trates ese pequeño conjunto de ejemplos como un directorio completo del mercado. Confirma el mercado necesario por el flujo de trabajo del producto y conserva la región devuelta en el resultado.
El ejemplo completo de entrada y salida está en la documentación del actor de página de TikTok Shop.
Prerrequisitos
- Una cuenta de Scrapeless y un token API de la Scrapeless Dashboard
- Un ID de producto público conocido de TikTok Shop
- La región de mercado necesaria para la tarea de investigación
- Un esquema de almacenamiento que pueda mantener instantáneas de productos y SKUs por separado
El código requiere un token activo en SCRAPELESS_API_KEY y un ID de producto real en TIKTOK_SHOP_PRODUCT_ID.
Captura Rápida Con curl
bash
curl --request POST 'https://api.scrapeless.com/api/v1/scraper/request' \
--header "x-api-token: ${SCRAPELESS_API_KEY}" \
--header 'content-type: application/json' \
--data "{\"actor\":\"scraper.tiktok.shop.page\",\"input\":{\"product_id\":\"${TIKTOK_SHOP_PRODUCT_ID}\",\"region\":\"GB\"}}"
La respuesta es JSON. El tipo registrado application/json se mantiene en el registro de tipos de medios de IANA, por lo que los clientes HTTP estándar pueden analizar el cuerpo sin un decodificador específico del sitio.
Normalizar Datos de Productos y SKUs en Python
El normalizador a continuación preserva la respuesta en bruto, crea un registro de producto y emite una fila por SKU. Evita deliberadamente asumir que cada campo opcional existe.
python
import json
import os
from datetime import datetime, timezone
from urllib.request import Request, urlopen
ENDPOINT = "https://api.scrapeless.com/api/v1/scraper/request"
def fetch_product(product_id, region):
payload = {
"actor": "scraper.tiktok.shop.page",
"input": {"product_id": str(product_id), "region": region},
}
request = Request(
ENDPOINT,
data=json.dumps(payload).encode(),
headers={
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
"content-type": "application/json",
},
method="POST",
)
with urlopen(request, timeout=60) as response:
return json.load(response)
def normalize(raw):
observed_at = datetime.now(timezone.utc).isoformat()
product_id = str(raw.get("product_id", ""))
product = {
"observed_at": observed_at,
"product_id": product_id,
"region": raw.get("region"),
"name": raw.get("name"),
"seller": raw.get("seller"),
"price": raw.get("price"),
"currency": raw.get("currency"),
"stock": raw.get("stock"),
"sold_count": raw.get("sold_count"),
"rating": raw.get("rating"),
"review_count": raw.get("review_count"),
}
sku_rows = []
for sku in raw.get("skus") or []:
sku_rows.append({
"observed_at": observed_at,
"product_id": product_id,
"region": raw.get("region"),
"sku_id": str(sku.get("sku_id") or sku.get("id") or ""),
"options": sku.get("options"),
"availability": sku.get("availability"),
"price": sku.get("price"),
"currency": sku.get("currency") or raw.get("currency"),
})
return product, sku_rows
raw_product = fetch_product(os.environ["TIKTOK_SHOP_PRODUCT_ID"], "GB")
product_row, sku_rows = normalize(raw_product)
print(json.dumps({"product": product_row, "skus": sku_rows}, indent=2))
Comienza a Raspar con Scrapeless
¡Potencia tu flujo de trabajo de raspado web y automatización con Scrapeless!
Regístrate hoy y obtén $5 de crédito gratis — no se requiere tarjeta de crédito.Reclama tu crédito gratis ahora en el Scrapeless Dashboard.
Cómo Leer los Campos del Producto
Identidad y vendedor
Almacene product_id como una cadena. Mantenga el objeto del vendedor o el identificador del vendedor con la instantánea del producto, porque un nombre solo puede no ser una clave de unión durable.
Precio y moneda
Un precio sin moneda y región está incompleto. Preserve el valor exactamente como se devuelve, luego normalice su representación numérica solo en un campo separado. La referencia de código de moneda ISO explica por qué los identificadores de moneda pertenecen junto a los valores monetarios.
Stock y disponibilidad
El stock a nivel de producto es una vista agregada. La disponibilidad del SKU describe una combinación de opciones específica. La documentación de inventario de TikTok Shop también identifica el producto y el SKU como dimensiones de inventario separadas. Preserve ambos niveles y evite sustituir un campo SKU faltante con el agregado del producto.
Conteo vendido, calificación y reseñas
Mantenga sold_count, calificación y conteo de reseñas como etiquetas observadas. Un conteo vendido en la página de un producto no establece una ventana de informes y no expone un libro de órdenes. La calificación y el conteo de reseñas describen la respuesta de la página actual, no el texto de reseñas individuales.
Opciones y SKUs
Las opciones describen dimensiones como color o tamaño; los registros de SKU representan combinaciones concretas cuando la página las expone. Almacene la estructura de opción en bruto junto a una etiqueta normalizada para que una opción recién introducida no rompa filas anteriores.
Construya un Esquema Listo para Instantáneas
Un modelo práctico utiliza tres almacenes:
| Almacén | Campos clave | Razón |
|---|---|---|
| Respuestas en bruto | ID de colección, tiempo observado, ID de producto, región | Soporta un reprocesamiento posterior |
| Instantáneas de productos | tiempo observado, ID de producto, región, precio, moneda, stock | Soporta comparaciones a nivel de producto |
| Instantáneas de SKU | tiempo observado, ID de producto, ID de SKU, opciones, disponibilidad | Soporta comparaciones a nivel de variante |
Faltante y cero son diferentes. El stock cero es un valor; el stock ausente es desconocido. Mantenga esa distinción en bases de datos, trabajos de análisis y reglas de alerta.
Scrapeless proporciona este actor a través de Scraping API. Use la página de precios actual al dimensionar un conjunto de productos y la cadencia de colecciones.
Problemas Comunes a Prevenir
- Enviar un ID de producto numérico. Mantenga los identificadores como cadenas a través de configuración, solicitudes y almacenamiento.
- Eliminar la región después de la solicitud. La región es parte de la observación y pertenece a cada fila normalizada.
- Suponer que cada producto tiene SKUs. Utilice una lista vacía cuando no haya un array de SKU presente.
- Convertir la disponibilidad faltante en cero. Preserve nulo o ausencia hasta que la fuente proporcione un estado definitivo.
- Llamar al conteo vendido ingreso. El campo no es un libro de órdenes precio por pedidos y no debe usarse como GMV.
Conclusión: preserve la jerarquía del producto
Un scraper confiable de TikTok Shop comienza con un ID de producto y una región conocidos, luego mantiene los datos de producto y SKU en sus niveles naturales. Esa estructura hace útil la investigación única ahora y deja espacio para una comparación con fecha y hora más adelante.
¿Listo para Construir Su Conjunto de Datos de TikTok Shop?
Discuta esquemas en el Discord de Scrapeless o en la comunidad de Telegram. Abra el Dashboard de Scrapeless cuando su lista de productos y las reglas de región estén listas.
FAQ
Q: ¿Qué recopila un scraper de TikTok Shop?
El actor cubierto aquí recopila el producto, vendedor, precio, moneda, stock, calificación, conteo de reseñas, imagen, opción, SKU, categoría y campos de envío de una página de producto pública conocida cuando están disponibles.
Q: ¿Cómo raspo productos de TikTok Shop con Python?
Envíe una solicitud POST JSON a la API de Scraper de Scrapeless con el actor scraper.tiktok.shop.page, además de product_id y region en el objeto de entrada.
Q: ¿Puede el actor descubrir todos los productos en una tienda?
No. Este actor de página de producto espera un ID de producto conocido; no debe describirse como una API de descubrimiento de catálogo completo.
Q: ¿La respuesta incluye variantes de producto?
Puede incluir opciones y registros de SKU con disponibilidad. Mantenga esos registros separados de los campos a nivel de producto.
Q: ¿El actor rastrea precios automáticamente?
No. Devuelve una instantánea. Su aplicación programa llamadas, almacena marcas de tiempo, compara instantáneas y envía alertas.
Q: ¿Es legal raspar datos de TikTok Shop?
La legalidad depende del mercado, propósito, datos, método de acceso y términos aplicables. Recopile datos de productos públicos para un propósito permitido y confirme las obligaciones para las regiones en cuestión.
Q: ¿Necesito gestionar un proxy o un analizador de defensa de página?
El actor gestionado maneja la superficie de colección. Tu código proporciona un contexto de producto válido y maneja la respuesta estructurada.
Q: ¿Puede esto funcionar sin un agente de IA?
Sí. El ejemplo utiliza solicitudes HTTP ordinarias y no depende de un agente.
En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.



