Acompanhe a Disponibilidade e Mudanças de Estoque do SKU da TikTok Shop
Lead Scraping Automation Engineer
TL;DR:
- O rastreamento de estoque da TikTok Shop deve ser feito no nível do SKU. A disponibilidade de estoque e variantes ao nível do produto responde a perguntas diferentes.
- Um evento de estoque precisa de duas observações válidas. Campos ausentes e solicitações falhadas permanecem desconhecidos, em vez de se tornarem registros de estoque esgotado.
- A chave de comparação inclui contexto de mercado. Mantenha o ID do produto, região retornada, ID do SKU e valores de opções juntos.
- SKUs novos, indisponíveis e ausentes são estados diferentes. Uma variante ausente de uma resposta deve entrar em revisão em vez de ser marcada como descontinuada.
- Instantâneas de produtos públicos não são um livro de registro de armazém. Elas não substituem o estoque comprometido, reservado ou de cumprimento do lado do vendedor.
- Gratuito para começar. Novas contas Scrapeless incluem crédito gratuito através do Painel Scrapeless.
Introdução: um produto pode conter muitos estados de disponibilidade
Uma página de produto pode estar disponível enquanto um tamanho ou cor não está. Monitorar apenas o objeto de estoque agregado oculta a variante exata que um comprador pode selecionar.
Este tutorial expande a skus array retornada pelo ator Scrapeless TikTok Shop, armazena uma linha por variante e observação, e produz eventos de estoque esgotado e de volta ao estoque. Ele também mantém campos ausentes, falhas de solicitação e SKUs temporariamente ausentes fora do fluxo definitivo de eventos de estoque.
O guia do scraper da TikTok Shop explica as camadas de resposta de produto e SKU usadas aqui.
Pipeline à Vista
| Estágio | Ação | Saída |
|---|---|---|
| Assistir | Fornecer pares de ID de produto e região | Lista de vigilância de produtos |
| Buscar | Solicitar cada página de produto pública | Instantânea bruta do produto |
| Expandir | Criar uma linha por SKU | Tabela de instantâneas de variantes |
| Comparar | Unir cada SKU à sua linha válida anterior | Mudanças de disponibilidade |
| Revisar | Separar registros ausentes e desconhecidos | Fila de qualidade de dados |
O pipeline relata campos de instantâneas de produtos voltados para o comprador. Não é um sistema completo de inventário de armazém.
Pré-requisitos
- Uma conta Scrapeless e token de API do Painel Scrapeless
- Python 3 com a biblioteca padrão e SQLite
- Uma lista de vigilância de IDs de produtos públicos conhecidos da TikTok Shop e regiões
- Um cronograma de observação definido e política de revisão
- Um
SCRAPELESS_API_KEYativo para o exemplo da API
O bloco de coleção é uma lacuna de pré-requisito porque uma credencial e uma lista de vigilância real são fornecidas pelo leitor. As regras de normalização seguem a resposta documentada da Shop sem apresentar uma saída ao vivo inventada.
Estágio 1: Solicitar um Produto Conhecido em uma Região Fixa
Chame scraper.tiktok.shop.page com product_id e region. O resultado pode conter o region resolvido, o stock ao nível do produto, options, e skus. Cada SKU pode incluir sku_id, seus pares de opções, dados de preço aninhados, available_quantity, in_stock, e uma URL de imagem.
Mantenha a região retornada, mesmo quando ela diferir em maiúsculas da solicitação. A região pertence a cada chave de comparação porque a disponibilidade do produto pode variar por mercado.
A documentação oficial de pesquisa de inventário da TikTok Shop separa consultas de ID de produto e ID de SKU. Essa distinção também pertence a um modelo de instantânea pública.
Estágio 2: Expandir o Inventário de Produto e SKU Separadamente
O objeto de estoque ao nível do produto pode incluir uma contagem de SKU, quantidade disponível agregada, e uma flag de disponível. Esses campos resumem a resposta do produto. Eles não devem sobrepor as linhas de variante.
Uma linha SKU normalizada deve conter:
| Campo | Propósito |
|---|---|
collected_at |
Identifica a observação |
product_id |
Vincula a variante ao seu produto |
region |
Impede comparações entre mercados |
sku_id |
Chave de comparação de variante estável |
option_signature |
Cor, tamanho ou outros pares de opções legíveis por humanos |
available_quantity |
Quantidade retornada para aquele SKU, anulável |
in_stock |
Flag de disponibilidade retornada, anulável |
collection_status |
Separa sucesso de coleta falhada |
Não derive in_stock = false quando available_quantity estiver ausente. Preserve ambos os campos porque a resposta pode expor um sem evidência suficiente para inferir o outro.
Comece a Raspagem com Scrapeless
Potencialize seu fluxo de trabalho de raspagem e automação com Scrapeless!
Inscreva-se hoje e obtenha $5 em crédito gratuito — sem necessidade de cartão de crédito.Reivindique seu crédito gratuito agora no Painel Scrapeless.
Estágio 3: Armazenar Instantâneas de Variantes no SQLite
Uma tabela apenas para anexação preserva cada estado observado. A documentação CREATE TABLE do SQLite define a restrição de chave primária utilizada aqui.
Nota: O código abaixo requer um token de API Scrapeless ativo em
SCRAPELESS_API_KEY, além deTIKTOK_SHOP_PRODUCT_IDeTIKTOK_SHOP_REGIONfornecidos pelo leitor.
python
import json
import os
import sqlite3
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 = json.dumps({
"actor": "scraper.tiktok.shop.page",
"input": {"product_id": str(product_id), "region": region},
}).encode()
request = Request(
ENDPOINT,
data=payload,
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)
raw = fetch_product(
os.environ["TIKTOK_SHOP_PRODUCT_ID"],
os.environ["TIKTOK_SHOP_REGION"],
)
collected_at = datetime.now(timezone.utc).isoformat()
product_id = str(raw.get("product_id") or "")
region = str(raw.get("region") or "")
database = sqlite3.connect("tiktok-shop-inventory.sqlite3")
database.execute("""
CREATE TABLE IF NOT EXISTS sku_snapshots (
collected_at TEXT NOT NULL,
product_id TEXT NOT NULL,
region TEXT NOT NULL,
sku_id TEXT NOT NULL,
option_signature TEXT,
available_quantity INTEGER,
in_stock INTEGER,
PRIMARY KEY (collected_at, product_id, region, sku_id)
)
""")
for sku in raw.get("skus") or []:
options = sku.get("options") or []
signature = " | ".join(
f"{option.get('name', '')}={option.get('value', '')}"
for option in options
)
database.execute(
"INSERT INTO sku_snapshots VALUES (?, ?, ?, ?, ?, ?, ?)",
(
collected_at, product_id, region, str(sku.get("sku_id") or ""),
signature, sku.get("available_quantity"), sku.get("in_stock"),
),
)
database.commit()
database.close()
with open("tiktok-shop-product-raw.json", "w", encoding="utf-8") as output:
json.dump(raw, output, ensure_ascii=False, indent=2)
Armazene identificadores como texto e preserve o JSON bruto ao lado da tabela normalizada. Isso torna as mudanças de opção-rótulo ou esquema revisáveis posteriormente.
Etapa 4: Classificar Mudanças de Estoque de Forma Conservadora
Um evento de disponibilidade válido compara o mesmo ID do produto, região retornada e ID SKU em duas observações bem-sucedidas.
| Estado anterior | Estado atual | Evento |
|---|---|---|
true |
false |
out_of_stock |
false |
true |
back_in_stock |
| quantidade alterada, bandeiras iguais | alteração de quantidade | quantity_changed |
| nenhuma linha anterior | presente | new_sku_observed |
| presente antes, ausente agora | não retornado | sku_absent_review |
| linha anterior válida, solicitação falhada | desconhecido | collection_gap |
Não transforme sku_absent_review em estoque descontinuado a partir de uma observação. As opções de produtos podem mudar, campos podem estar ausentes, e uma solicitação falhada não contém evidências de disponibilidade válidas.
O TikTok Shop documenta eventos de mudança de inventário do lado do vendedor com quantidades como disponível, comprometido e estoque bloqueado por campanha em sua especificação da webhook de inventário. Essas dimensões do lado do vendedor são diferentes da captura de página pública do Shop utilizada aqui.
Etapa 5: Produzir o Relatório de Disponibilidade
O relatório deve incluir nome do produto, região, ID SKU, assinatura de opção, horários de observação anterior e atual, bandeiras anteriores e atuais, quantidades anteriores e atuais, e tipo de evento. Mantenha lacunas de coleta em uma seção de qualidade separada.
Agrupe a saída em três filas:
- Mudanças de disponibilidade confirmadas
- Variantes recém-observadas ou temporariamente ausentes
- Campos ausentes e coleções falhadas que requerem revisão
Essa separação impede que uma equipe de operações atue sobre um valor que o coletor nunca observou.
Lidar com Dados do Produto de Forma Responsável
Colete apenas os campos de produto e SKU necessários para a decisão de inventário. Evite duplicar a mídia do produto quando armazenar URLs de origem for suficiente e restrinja o acesso a listas de vigilância internas ou limites de alerta. O Quadro de Privacidade do NIST fornece controles gerais para minimização e retenção de dados.
Scrapeless fornece o ator do Shop através da API de Scraping. Revise a página de preços atual antes de definir o tamanho e o cronograma da lista de vigilância.
Conclusão: preserve a incerteza no modelo de evento
O rastreamento de inventário do TikTok Shop se torna confiável quando o estoque de produtos e a disponibilidade de SKU permanecem separados. Compare chaves de variante exatas em capturas válidas, preserve dados ausentes como desconhecidos e encaminhe SKUs ausentes para revisão antes de declarar um evento de estoque.
Pronto para Rastrear Variantes do TikTok Shop?
Junte-se ao Discord do Scrapeless ou à comunidade Telegram para discutir esquemas de histórico de variantes. Crie uma conta no Painel do Scrapeless quando a lista de vigilância do produto estiver pronta.
FAQ
Q: O que um rastreador de inventário do TikTok Shop deve monitorar?
Um rastreador de inventário do TikTok Shop deve preservar o estoque em nível de produto e a disponibilidade individual de SKU como observações separadas.
Q: Um SKU ausente está automaticamente fora de estoque?
Um SKU ausente não está automaticamente fora de estoque. Marque-o para revisão a menos que uma resposta atual válida estabeleça explicitamente o estado de indisponibilidade.
Q: Que chave identifica uma captura de SKU comparável?
Use o ID do produto, região retornada e ID SKU. Armazene rótulos de opção para revisão sem usá-los como a única chave.
Q: O estoque público do Shop é igual ao inventário do armazém?
O estoque público do Shop não é igual a um livro-razão completo do armazém. Sistemas do lado do vendedor podem conter estados reservados, comprometidos, de localização e de cumprimento que não são expostos pela captura pública do produto.
Q: Preciso gerenciar proxies ou seletores de página do Shop?
O ator lida com sua superfície de coleta por trás da solicitação da API. O chamador gerencia a lista de vigilância, timestamps, armazenamento, comparações e notificações.
Q: O monitoramento da disponibilidade pública do TikTok Shop é legal?
A legalidade depende da jurisdição, mercado, propósito, método de acesso e termos aplicáveis. Use dados públicos para um propósito permitido e obtenha aconselhamento jurídico para o fluxo de trabalho pretendido.
Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.


