De volta ao blog

Acompanhe a Disponibilidade e Mudanças de Estoque do SKU da TikTok Shop

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

03-Sep-2026

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_KEY ativo 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 gratuitosem 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 de TIKTOK_SHOP_PRODUCT_ID e TIKTOK_SHOP_REGION fornecidos pelo leitor.

python Copy
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.

Artigos mais populares

Catálogo