Quando um profissional de marketing verifica manualmente dezenas de perfis públicos do IG, a principal perda não é o tempo gasto abrindo páginas, mas a falta de um histórico comparável. Um snapshot informa o número de seguidores hoje; dois snapshots permitem calcular a diferença no intervalo escolhido. Para monitorar perfis de forma simples, é possível automatizar a solicitação, salvar apenas os campos necessários e obter uma tabela de mudanças.
A seguir, um exemplo mínimo funcional em Python: ele obtém informações de um perfil pelo nome de usuário usando a IG Scraper API e registra uma linha JSONL com data e hora. O resultado é uma pequena fonte histórica que pode ser conectada ao cron, ao n8n ou ao seu próprio armazenamento. A descrição oficial da rota e dos parâmetros está no guia da IG API.
Que questão um snapshot diário resolve
Suponha que uma equipe acompanhe contas públicas de marcas ou parceiros e queira detectar mudanças no número de seguidores, de publicações ou no status de verificação. Consultar a página mostra os valores atuais, mas não preserva, por si só, o estado da semana passada. Portanto, primeiro é preciso definir quais campos são importantes e, em seguida, salvá-los com a data da observação.

A rota /v1/user/by/username aceita o parâmetro obrigatório username. A resposta inclui, entre outros, follower_count, following_count, media_count, is_verified, is_private e biography. Esse conjunto serve para um snapshot do perfil; não contém o histórico de publicações e, por si só, não explica a causa das mudanças nas métricas.
O script tem um escopo deliberadamente limitado: obter um conjunto observável de campos em um horário determinado e compará-lo com registros anteriores. Assim, o analista pode ver, por exemplo, que o número de seguidores mudou entre as datas registradas e, em seguida, investigar a questão separadamente da coleta automatizada.
Prepare a chave e a lista de contas
Instale a biblioteca de solicitações e defina a chave da API em uma variável de ambiente. Não coloque o segredo no arquivo-fonte, no repositório nem na saída do programa. A API usa o parâmetro de consulta license_key; a biblioteca abaixo monta a query string automaticamente.
python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="sua_chave"
É prático manter a lista de perfis em um arquivo de configuração ou em uma variável do projeto. Para a primeira execução, basta um nome de usuário para verificar a resposta, o acesso e a gravação no armazenamento. No exemplo, o campo username é definido como parâmetro da API, e a chave é lida somente do ambiente.
Solicitação e gravação de um snapshot em Python
O script verifica a resposta HTTP, o status externo da API e a presença do objeto ig. Em seguida, salva apenas os valores explicitamente disponíveis. Se algum campo estiver ausente, o registro mantém null: inserir zero confundiria um valor desconhecido com um zero real.

import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
API_URL = "https://ig.jsonscraper.com/v1/user/by/username"
LICENSE_KEY = os.environ["JSONSCRAPER_INSTAGRAM_LICENSE_KEY"]
USERNAME = "apple" # substitua por um perfil da sua lista
OUTPUT = Path("instagram-profile-snapshots.jsonl")
response = requests.get(
API_URL,
params={"username": USERNAME, "license_key": LICENSE_KEY},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
raise RuntimeError("A API retornou um status ou uma estrutura inesperados")
profile = payload["ig"]
record = {
"observed_at": datetime.now(timezone.utc).isoformat(),
"username": profile.get("username", USERNAME),
"pk": profile.get("pk"),
"follower_count": profile.get("follower_count"),
"following_count": profile.get("following_count"),
"media_count": profile.get("media_count"),
"is_verified": profile.get("is_verified"),
"is_private": profile.get("is_private"),
}
with OUTPUT.open("a", encoding="utf-8") as file:
file.write(json.dumps(record, ensure_ascii=False) + "\n")
print("Snapshot salvo:", record["username"], record["observed_at"])
Os campos e a estrutura do exemplo correspondem às informações de perfil descritas para essa rota. Uma solicitação bem-sucedida retorna uma observação no momento da chamada; para analisar a dinâmica, é preciso executar o script novamente e salvar cada snapshot. A página da IG Scraper API mostra uma solicitação básica e uma resposta de demonstração em formato JSON.
Calcule a mudança entre snapshots
O JSONL armazena um registro por linha, por isso pode ser lido com o módulo padrão do Python. O trecho a seguir seleciona os dois últimos registros de um perfil e calcula a diferença no número de seguidores. Ele exibe o resultado somente quando ambos os registros contêm um valor numérico.
import json
from pathlib import Path
rows = [
json.loads(line)
for line in Path("instagram-profile-snapshots.jsonl").read_text(encoding="utf-8").splitlines()
]
username = "apple"
profile_rows = [row for row in rows if row.get("username") == username]
profile_rows.sort(key=lambda row: row["observed_at"])
if len(profile_rows) >= 2:
previous, current = profile_rows[-2:]
old = previous.get("follower_count")
new = current.get("follower_count")
if isinstance(old, int) and isinstance(new, int):
print({
"username": username,
"from": previous["observed_at"],
"to": current["observed_at"],
"follower_delta": new - old,
})
A diferença corresponde estritamente às duas observações selecionadas. Se algumas execuções forem perdidas, o intervalo entre elas será maior; por isso, o relatório deve mostrar ambas as datas, em vez de chamar automaticamente a mudança de “diária”. Para um uso regular, agende a execução com cron ou com o agendador de uma plataforma na nuvem. No n8n, é possível montar o mesmo fluxo com nós de agendamento, solicitação HTTP e gravação do resultado em um banco de dados ou planilha; os nomes dos nós e a conexão com o armazenamento dependem da sua instalação.
Amplie o monitoramento para vários perfis
Para uma lista de contas, coloque os nomes em um arquivo separado e percorra-o com um loop. Salve o status de cada solicitação individualmente: assim, uma falha em um perfil não apaga os dados obtidos com sucesso para os demais. Adicione um limite de tempo, um registro de erros e uma nova tentativa apenas para as contas cujas solicitações falharam.
Como chave do registro, você pode usar pk, caso a API o retorne, mantendo também o nome de usuário para facilitar a leitura. O identificador ajuda a distinguir o perfil de um rótulo textual no relatório; se o valor não estiver disponível, não o invente nem o substitua por outro campo. Para a análise, é útil armazenar o horário original da coleta em UTC e definir explicitamente o período de comparação.
Se a tarefa exigir apenas a obtenção de informações em determinada frequência, o parâmetro documentado cache_timeout permite indicar o período de cache em segundos; para o IG, o cache fica desativado por padrão. Escolha o período de acordo com o intervalo de monitoramento e salve-o junto com as configurações de coleta, para que os parâmetros da solicitação sejam considerados na interpretação dos resultados.
O que você terá ao final
Após algumas execuções, você terá um arquivo com snapshots temporais de métricas públicas e uma diferença simples, calculável entre as datas escolhidas. É possível carregá-lo no Google Sheets, no PostgreSQL ou em um sistema analítico; uma camada de processamento separada pode gerar um alerta quando uma mudança ultrapassar o limite definido pela equipe. O limite é uma regra de negócio sua, não um recurso integrado à API.
A rota de perfil fornece campos da conta; portanto, para auditar publicações novas, é preciso coletar as mídias correspondentes, em vez de tirar conclusões a partir de media_count. O guia da IG API lista uma rota separada para obter publicações, com carregamento paginado por user_id e pelo parâmetro end_cursor; use-a se a tarefa exigir examinar as próprias publicações. Para o resultado descrito aqui — uma tabela histórica de métricas do perfil — basta uma solicitação por usuário e o salvamento repetido dos snapshots.
Comece com um perfil e duas execuções: confirme que o status da resposta está correto, que as datas são salvas e que os dados ausentes permanecem explicitamente desconhecidos. Depois, adicione a lista de contas e o agendamento. Assim, você terá observações reproduzíveis, com intervalos e valores originais claros, que podem ser verificadas e encaminhadas para um processo analítico.