Um profissional de marketing pode encontrar no TikTok um vídeo cujo autor discute o produto desejado, mas é mais difícil transformar esse sinal em um contato verificável: o nome do autor no TikTok pode ser diferente do nome no IG, e o perfil pode ser privado ou nem sequer ter uma associação confirmada com a pessoa. O resultado prático não é uma lista automática de «leads prontos», mas uma tabela de verificações: vídeo original, autor no TikTok, suposto nome de usuário no IG, resposta da API e status para análise posterior.
Abaixo está um processo mínimo em Python para essa tarefa. Ele pesquisa vídeos públicos por uma frase-chave, extrai os campos disponíveis do autor e verifica perfis do IG somente quando você já tem um nome de usuário fundamentado para conferir. A API pode obter dados de perfil por nome de usuário; ela não determina automaticamente que duas contas pertencem à mesma pessoa.
Que resultado vale a pena automatizar
Imagine uma equipe que vende equipamentos para preparar café em casa e quer encontrar autores de vídeos públicos sobre o preparo de bebidas. A busca manual é útil para conhecer o conteúdo inicialmente, mas, quando repetida, torna difícil registrar qual vídeo levou ao contato, de onde veio o nome do perfil e o que exatamente foi verificado.

O pipeline separa três ações: pesquisar vídeos no TikTok, salvar os dados observados e verificar o suposto perfil do IG. Isso ajuda o analista a abrir um único arquivo CSV e acompanhar a origem de cada candidato. Os campos do IG só devem ser preenchidos depois que o nome de usuário for encontrado na descrição pública, em um link do autor ou confirmado por uma pessoa com base em outros materiais disponíveis.
Essa abordagem é útil para uma agência, uma equipe de pesquisa ou um profissional de marketing interno que precise de uma lista pequena e reproduzível para qualificação manual. Ela preserva o contexto da descoberta e não transforma nomes parecidos em uma afirmação de identidade.
Quais campos podem ser obtidos
A rota documentada do TikTok /searchVideo exige o parâmetro keyword; também estão disponíveis count, date_posted, sort_by, region e cursor. Nas respostas observadas, podem aparecer o ID do vídeo, a descrição, a data de publicação, o link, os dados do autor e contagens públicas de interação. O conjunto de campos pode variar; por isso, o código abaixo trata valores ausentes com segurança.
Para o IG, este fluxo usa a rota GET documentada /v1/user/by/username com o parâmetro username. A resposta pode incluir nome de usuário, nome de exibição, status de privacidade e verificação, número de publicações, seguidores e contas seguidas, além da biografia. Essas informações servem para consulta e análise posterior por um especialista, não para classificar o autor.
A documentação oficial da API do TikTok descreve os parâmetros de pesquisa, enquanto a documentação da API do IG descreve os métodos e parâmetros do IG. As definições incorporadas da API jsonscraper também registram rotas, nomes de parâmetros e formatos de resposta observados; a data das verificações mencionadas é 25 de outubro de 2026.
Configure as chaves e a lista de candidatos
Armazene as chaves de API em variáveis de ambiente: JSONSCRAPER_TIKTOK_LICENSE_KEY e JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Não as coloque no código-fonte, em arquivos CSV ou nos registros de tarefas. Para instalar a biblioteca de requisições, use python -m pip install requests. O exemplo a seguir requer Python 3.8 ou mais recente.
import csv
import os
import sys
from urllib.parse import urlencode
import requests
TIKTOK_KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
INSTAGRAM_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
if not TIKTOK_KEY or not INSTAGRAM_KEY:
sys.exit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY and JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
def get_json(base_url, path, params):
response = requests.get(
f"{base_url}{path}",
params=params,
timeout=30,
)
response.raise_for_status()
return response.json()
def extract_videos(payload):
"""Handle both observed TikTok search result locations."""
if payload.get("status") != "ok":
raise RuntimeError(f"TikTok API status: {payload.get('status')}")
tiktok = payload.get("tiktok") or {}
videos = list(tiktok.get("aweme_list") or [])
for item in tiktok.get("search_item_list") or []:
video = item.get("aweme_info")
if video:
videos.append(video)
unique = {}
for video in videos:
video_id = video.get("aweme_id")
if video_id:
unique[video_id] = video
return list(unique.values())
keyword = "домашний кофе"
tiktok_payload = get_json(
"https://tiktok.evelode.com",
"/searchVideo",
{
"license_key": TIKTOK_KEY,
"keyword": keyword,
"count": 20,
"date_posted": "this-month",
"sort_by": "relevance",
},
)
rows = []
for video in extract_videos(tiktok_payload):
author = video.get("author") or {}
stats = video.get("statistics") or {}
rows.append({
"tiktok_video_id": video.get("aweme_id", ""),
"tiktok_url": video.get("share_url", ""),
"video_description": video.get("desc", ""),
"created_at": video.get("create_time", ""),
"tiktok_username": author.get("unique_id", ""),
"tiktok_author_name": author.get("nickname", ""),
"tiktok_followers": author.get("follower_count", ""),
"views": stats.get("play_count", ""),
"likes": stats.get("digg_count", ""),
"instagram_username": "",
"instagram_status": "not checked",
"instagram_followers": "",
"instagram_is_private": "",
"manual_match_review": "required",
})
# Заполняйте этот словарь только username, найденными отдельно
# и внесёнными после ручной проверки источника.
verified_instagram_usernames = {
# "tiktok_video_id": "instagram_username"
}
for row in rows:
username = verified_instagram_usernames.get(row["tiktok_video_id"])
if not username:
continue
ig_payload = get_json(
"https://ig.jsonscraper.com",
"/v1/user/by/username",
{
"license_key": INSTAGRAM_KEY,
"username": username,
},
)
if ig_payload.get("status") != "ok":
row["instagram_status"] = "api status: " + str(ig_payload.get("status"))
continue
profile = ig_payload.get("ig") or {}
row["instagram_username"] = profile.get("username", username)
row["instagram_status"] = "profile returned"
row["instagram_followers"] = profile.get("follower_count", "")
row["instagram_is_private"] = profile.get("is_private", "")
row["manual_match_review"] = "check relationship manually"
if rows:
with open("social_lead_checks.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=rows[0].keys())
writer.writeheader()
writer.writerows(rows)
else:
print("No video rows returned for this query.")
Por que o processador considera duas estruturas de resposta
Na pesquisa do TikTok, os vídeos podem aparecer em dois locais: tiktok.aweme_list e tiktok.search_item_list[].aweme_info. Em uma resposta observada, a primeira lista podia estar vazia, enquanto os itens apareciam na segunda. Por isso, o exemplo combina as duas fontes e elimina duplicatas usando aweme_id. Primeiro, verifica o status externo e, em seguida, lê o objeto tiktok.

O código salva somente os campos que estão realmente presentes na resposta. Um valor vazio significa que o campo não estava no objeto recebido; não deve ser interpretado como indicador igual a zero. É útil guardar os links e as descrições dos vídeos junto com as métricas: sem eles, a tabela perde o contexto original quando consultada posteriormente.
Adicione paginação somente se necessário
O exemplo solicita uma página e processa apenas os itens retornados. Se for preciso continuar a pesquisa, a documentação prevê o uso de cursor na busca por vídeos; o valor vem da resposta anterior. Armazene o cursor como um valor opaco e envie-o sem fazer cálculos próprios. Interrompa o ciclo quando a resposta indicar que não há continuação ou quando o limite definido pela equipe for atingido. A paginação amplia o conjunto de resultados retornados, mas não permite chamá-lo de cobertura exaustiva de todas as publicações sobre o tema.
Antes de adicionar a exportação automática, confira uma resposta real com sua chave e escolha um volume moderado de páginas. Armazene o JSON original junto à linha normalizada ou separadamente, com a data da execução: assim, será possível identificar se um campo da resposta mudou e reprocessar a coleta caso o esquema seja alterado.
Como usar o CSV na qualificação
Na tabela, é possível filtrar as linhas pela presença do link do vídeo, da descrição, do autor e de um perfil do IG preenchido. Para a fila inicial de revisão, são úteis status simples: «vídeo encontrado», «nome de usuário do IG encontrado», «perfil retornado», «relação entre contas verificada por uma pessoa» e «excluído». Os status descrevem o andamento da verificação, não a qualidade nem as intenções do autor.
Se a tarefa exigir um relatório reproduzível, execute o script em intervalos regulares e acrescente uma coluna separada com a data de obtenção dos dados. A comparação entre snapshots permitirá ver exatamente o que mudou nos campos disponíveis entre as execuções, por exemplo, no número de seguidores do perfil. Armazene separadamente as métricas do TikTok e do IG, indicando a plataforma e o horário da observação: são contextos diferentes e respostas distintas da API.
Para um fluxo maior, substitua o CSV por um banco de dados com chave primária composta pela plataforma e pelo ID do vídeo. Guarde o texto original da consulta, o horário da coleta e a resposta bruta. O envio de notificações ao Slack ou de uma linha ao CRM deve ocorrer após a confirmação manual da relação entre os perfis, não imediatamente após uma correspondência de nomes.
Limites de interpretação e operação segura
A pesquisa por frase-chave retorna os resultados encontrados pela API, não uma lista completa de publicações. As contagens de visualizações, curtidas e seguidores são um snapshot da resposta no momento da consulta. Elas servem para ordenar uma lista de trabalho e realizar verificações posteriores, mas, por si só, não comprovam intenção comercial, audiência ou consentimento para contato.
Confirme a relação entre os perfis com sinais públicos explícitos e registre quem fez a verificação e quando. Se o nome de usuário do IG vier de uma planilha de terceiros sem uma fonte verificável, mantenha o status «requer verificação». Um perfil privado ou dados ausentes devem aparecer como resultados distintos da verificação, sem tentativas de preencher lacunas com suposições.
Use as chaves em um gerenciador de segredos do ambiente de trabalho, restrinja o acesso às exportações e defina um prazo de retenção adequado ao objetivo da pesquisa. Envie ao CRM somente os campos necessários para o trabalho manual posterior e cumpra as regras aplicáveis das plataformas e os requisitos de tratamento de dados.
O que você terá ao final
Após a execução, será criado um CSV com a lista de vídeos encontrados, seus autores e as métricas disponíveis, além de campos separados para a verificação do IG. O script pode ser executado manualmente, em intervalos regulares no CI ou por meio de um nó de requisição HTTP em uma plataforma de automação. O princípio prático essencial é automatizar a coleta e a estruturação dos dados, deixando a determinação da relação entre as contas como uma etapa verificável por uma pessoa.
Para conferir as rotas e os parâmetros disponíveis, comece pelo TikTok Scraper API e pelo IG Scraper API. As páginas dos produtos apresentam exemplos de requisições e links para a documentação; comece com uma consulta pequena antes de integrar a coleta a um processo contínuo.