Antes do lançamento de uma campanha, é possível comparar automaticamente cada conta do IG incluída no briefing com os dados públicos do perfil. Essa verificação identifica divergências de username, status privado, alterações no nome ou na biografia e diferenças entre o número de publicações e o intervalo esperado. O resultado é uma tabela de verificações para o profissional de marketing, não uma decisão automática sobre a adequação do criador.

O problema: o briefing fica desatualizado mais rápido que a planilha
A lista da campanha pode conter o nome da conta, um link, uma estimativa de seguidores e requisitos para o perfil público. Essas informações podem divergir facilmente: a conta muda de username, o perfil passa a ser privado e os números do briefing continuam os mesmos. Verificar um perfil manualmente é simples; repetir o processo para uma lista de contas antes de cada campanha é mais difícil de controlar e reproduzir.
Uma solução útil é definir regras explícitas para cada linha, obter os campos públicos disponíveis no momento da verificação e registrar lado a lado os valores previstos e os observados. Nesse caso, «corresponde» significa apenas que um campo específico atende a uma regra específica; a decisão sobre a adequação da audiência ou a qualidade do conteúdo continua a cargo do profissional.
Quais dados solicitar
O guia de endpoints da IG API descreve a rota GET /v1/user/by/username, que exige o parâmetro username. Na resposta verificada, os dados do perfil ficam no objeto ig: ali estão o username, o nome completo, a biografia, os indicadores de privacidade e verificação e as contagens de publicações, seguidores e contas seguidas. Esses campos descrevem uma captura dos dados do perfil disponível naquele momento.
Isso basta para uma verificação preliminar de nome da conta, privacidade e limites numéricos. A biografia pode ser exibida para análise do operador ou verificada segundo uma regra simples, como a presença de um termo obrigatório. Esse filtro textual encontra uma correspondência na string, mas, por si só, não avalia o significado nem confirma o cumprimento de condições contratuais.
Como integrar a solicitação ao Python
Primeiro, salve a chave de licença na variável de ambiente JSONSCRAPER_INSTAGRAM_LICENSE_KEY. O exemplo usa o endereço-base, a rota, o parâmetro username e o nome da chave license_key, todos confirmados. O CSV contém os campos username,min_followers,max_followers,require_public; para cada conta, o script compara a resposta com as regras e sinaliza as linhas que precisam de análise.
import csv
import os
import sys
import requests
BASE_URL = "https://ig.jsonscraper.com"
API_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
if not API_KEY:
raise SystemExit("Set JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
# brief.csv: username,min_followers,max_followers,require_public
with open("brief.csv", newline="", encoding="utf-8") as source:
brief = list(csv.DictReader(source))
results = []
for row in brief:
username = row.get("username", "").strip()
minimum_text = row.get("min_followers", "").strip()
if not username or not minimum_text:
results.append({
"requested_username": username,
"needs_review": True,
"error": "Missing username or min_followers",
})
continue
try:
response = requests.get(
f"{BASE_URL}/v1/user/by/username",
params={"username": username, "license_key": API_KEY},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
raise ValueError("Unexpected API response")
profile = payload["ig"]
followers = profile.get("follower_count")
minimum = int(minimum_text)
maximum_text = row.get("max_followers", "").strip()
maximum = int(maximum_text) if maximum_text else None
public_required = row.get("require_public", "").strip().lower() == "true"
checks = {
"username_matches": (
isinstance(profile.get("username"), str)
and profile["username"].lower() == username.lstrip("@").lower()
),
"followers_in_range": (
isinstance(followers, int)
and followers >= minimum
and (maximum is None or followers
Para executar: python check_profiles.py. Instale a biblioteca requests, defina a variável de ambiente no ambiente de execução e coloque o arquivo brief.csv na mesma pasta. Não registre a chave no código-fonte nem no CSV de saída. O script processa a lista sequencialmente, o que facilita a verificação e a depuração de conjuntos pequenos de contas.
Por que os dados ausentes devem continuar visíveis
Nas regras de verificação, é importante distinguir um valor zero de um campo inexistente. No exemplo, o número de seguidores só é considerado adequado quando há um campo numérico; se o contador estiver ausente, a condição não foi confirmada e o registro é encaminhado para análise manual. Um limite min_followers vazio também é sinalizado como erro nos dados de entrada, em vez de ser convertido automaticamente em zero.
É recomendável manter a validação da resposta como parte do fluxo de trabalho. Primeiro, o script confirma que o status externo é ok e, depois, verifica se existe o objeto ig. Erros HTTP, JSON inesperado ou regras inválidas são registrados sem o texto da exceção, que poderia revelar a chave na URL. Assim, o operador consegue distinguir uma falha na solicitação de uma divergência no perfil, sem expor o segredo.
Como interpretar o resultado e automatizar a verificação
O arquivo profile_check.csv contém o username informado, o nome retornado, os campos públicos disponíveis, os resultados de cada condição e o indicador geral needs_review. A equipe pode filtrar as linhas por esse indicador, e o desenvolvedor pode armazenar o relatório ou encaminhá-lo à próxima etapa do processo ETL. Para programar a execução, use um agendador e armazene a data da execução separadamente, para poder comparar as capturas da campanha.

Se uma regra mudar, mantenha-a no briefing em vez de incorporá-la ao código. Assim, os limites podem ser verificados: cada linha mostra qual intervalo de seguidores ou qual indicador de privacidade era esperado. É possível acrescentar uma verificação de texto específico na biografia, mas uma correspondência literal não substitui a avaliação de conteúdo feita por um profissional.
A página da IG Scraper API apresenta o endereço-base, um exemplo de solicitação e um link para o Postman. O cenário acima usa apenas a consulta de perfil por username, que está confirmada, e não pressupõe que essa solicitação retorne publicações.
O resultado prático é uma verificação preliminar reproduzível: em vez de analisar manualmente a lista inteira, a equipe recebe uma relação de correspondências e exceções associadas a campos específicos do briefing. Isso acelera a verificação antes do lançamento, mantendo a decisão sobre a adequação à campanha nas mãos do profissional responsável.