Si un profesional de marketing comprueba manualmente decenas de perfiles públicos de IG, la principal pérdida no es el tiempo que tarda en abrir las páginas, sino la falta de un historial comparable. Una instantánea indica el número de seguidores de hoy; dos instantáneas permiten calcular la diferencia en un intervalo determinado. Para supervisar perfiles de forma sencilla, se puede automatizar la solicitud, guardar solo los campos necesarios y obtener una tabla de cambios.
A continuación se muestra un ejemplo mínimo funcional en Python: obtiene información de un perfil por nombre de usuario mediante IG Scraper API y registra una línea JSONL con una marca de tiempo. El resultado es una pequeña fuente de historial que se puede conectar a cron, n8n o un sistema de almacenamiento propio. La documentación de IG API describe oficialmente la ruta y sus parámetros.
Qué pregunta resuelve una instantánea diaria
Supongamos que un equipo supervisa cuentas públicas de marcas o socios y quiere detectar cambios en el número de seguidores, publicaciones o en el estado de verificación. Consultar una página muestra los valores actuales, pero no conserva por sí sola el estado de la semana anterior. Por eso, primero hay que definir qué campos son importantes y luego guardarlos con la fecha de observación.

La ruta /v1/user/by/username acepta el parámetro obligatorio username. La respuesta incluye, entre otros, follower_count, following_count, media_count, is_verified, is_private y biography. Este conjunto sirve para tomar una instantánea del perfil; no contiene el historial de publicaciones ni explica por sí solo la causa de los cambios en las métricas.
El alcance del script es deliberadamente acotado: obtener un conjunto observable de campos en un momento determinado y compararlo con registros anteriores. Así, el analista puede ver, por ejemplo, que el número de seguidores cambió entre las fechas guardadas y continuar la revisión por separado de la recopilación automatizada.
Prepara la clave y la lista de cuentas
Instala la biblioteca para realizar solicitudes y define la clave de API en una variable de entorno. No incluyas el secreto en el archivo de código fuente, el repositorio ni la salida del programa. La API utiliza el parámetro de solicitud license_key; la biblioteca de abajo genera la cadena de consulta automáticamente.
python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="tu_clave"
Es práctico guardar la lista de perfiles en un archivo de configuración o en una variable del proyecto. Para la primera ejecución basta con un nombre de usuario, con el que se pueden comprobar la respuesta, el acceso y el registro en el almacenamiento. En el ejemplo, username se define como parámetro de la API y la clave se lee únicamente del entorno.
Solicitud y almacenamiento de una instantánea con Python
El script comprueba la respuesta HTTP, el estado externo de la API y la presencia del objeto ig. A continuación, guarda solo los valores que existen explícitamente. Si falta algún campo, el registro conserva null: asignar cero mezclaría un valor desconocido con un cero 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" # sustitúyelo por un perfil de tu 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("La API devolvió un estado o una estructura 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("Instantánea guardada:", record["username"], record["observed_at"])
Los campos y la estructura del ejemplo corresponden a la información del perfil descrita para esta ruta. Una solicitud correcta devuelve una observación del momento en que se realiza; para analizar la evolución, hay que ejecutar el script de nuevo y guardar cada instantánea. La página de IG Scraper API muestra una solicitud básica y una respuesta de demostración en formato JSON.
Calcula el cambio entre instantáneas
JSONL almacena un registro por línea, por lo que se puede leer con el módulo estándar de Python. El siguiente fragmento selecciona los dos últimos registros de un perfil y calcula la diferencia en el número de seguidores. Solo muestra el resultado si ambos registros contienen un 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,
})
La diferencia corresponde estrictamente a las dos observaciones seleccionadas. Si se omiten ejecuciones, el intervalo entre ellas será más largo; por eso, el informe debe mostrar ambas fechas, en lugar de llamar automáticamente al cambio «diario». Para un funcionamiento periódico, programa la ejecución con cron o con el planificador de una plataforma en la nube. En n8n, se puede montar el mismo flujo con nodos de programación, solicitud HTTP y escritura del resultado en una base de datos o una hoja de cálculo; los nombres de los nodos y la conexión al almacenamiento dependen de la instalación.
Ampliación a varios perfiles
Para una lista de cuentas, guarda los nombres en un archivo aparte y recórrelos con un bucle. Registra por separado el estado de cada solicitud: así, el fallo de un perfil no elimina los datos obtenidos correctamente de los demás. Añade un tiempo de espera limitado, un registro de errores y un nuevo intento solo para las cuentas cuya solicitud haya fallado.
Se puede usar pk como clave del registro si la API lo devuelve, conservando también el nombre de usuario para facilitar la lectura. El identificador ayuda a distinguir un perfil de una etiqueta de texto en el informe; si no hay valor, no se debe inventar ni sustituir por otro campo. Para el análisis, es útil guardar la hora original de recopilación en UTC y definir explícitamente el periodo de comparación.
Si la tarea solo requiere obtener información con una frecuencia determinada, el parámetro documentado cache_timeout permite indicar el tiempo de almacenamiento en caché en segundos; para IG, la caché está desactivada de forma predeterminada. Elige el plazo teniendo en cuenta el intervalo de supervisión y guarda ese valor junto con la configuración de recopilación, para tener en cuenta los parámetros de la solicitud al interpretar los resultados.
Qué obtendrás
Tras varias ejecuciones, tendrás un archivo con instantáneas temporales de métricas públicas y una diferencia sencilla que se puede calcular entre las fechas elegidas. Puedes cargarlo en Google Sheets, PostgreSQL o un sistema de análisis; una capa de procesamiento independiente podrá generar una notificación cuando el cambio supere el umbral definido por el equipo. El umbral es una regla de negocio propia, no una función integrada de la API.
La ruta del perfil proporciona campos de la cuenta, así que para auditar publicaciones nuevas se necesita una recopilación específica de medios, no conclusiones basadas en media_count. La documentación de IG API enumera una ruta independiente para obtener publicaciones, con carga paginada mediante user_id y el parámetro end_cursor; úsala si la tarea requiere estudiar las publicaciones en sí. Para el resultado descrito aquí —un historial tabular de métricas del perfil— basta con una solicitud por usuario y guardar las instantáneas de forma periódica.
Empieza con un perfil y un par de ejecuciones: comprueba que el estado de la respuesta sea correcto, que se guarden las fechas y que los datos ausentes permanezcan explícitamente como desconocidos. Después, añade la lista de cuentas y el horario. Así obtendrás observaciones reproducibles con un intervalo claro y valores originales, que se pueden verificar y transferir a un proceso de análisis posterior.