I team di marketing devono controllare manualmente decine di account per capire quali creator adatti siano attivi, come cambia il loro pubblico e quando il profilo è stato aggiornato l’ultima volta. Un foglio di calcolo compilato una sola volta diventa presto obsoleto: il numero di follower e la descrizione del profilo cambiano, mentre le date di pubblicazione e le metriche dei singoli post vanno raccolte di nuovo.

Una soluzione pratica consiste nel tenere un piccolo registro delle osservazioni: una volta al giorno, interrogare i profili pubblici di un elenco predefinito, salvare la risposta insieme all’ora di raccolta e confrontare i nuovi valori con le istantanee precedenti. Questo approccio aiuta a selezionare gli account da controllare manualmente, valutare l’attività e preparare report periodici. Non sostituisce le analisi disponibili al proprietario dell’account: per esempio, i dati pubblici del profilo non danno accesso alle metriche interne sulla copertura.
Per prima cosa, stabilisci cosa monitorare
Per individuare potenziali partner, di solito basta un breve elenco di campi: nome utente, identificativo del profilo, stato di verifica, numero di follower, numero di post, biografia e ora di raccolta. Questi valori permettono di notare le modifiche al profilo e aiutano a confrontare gli account in base alla nicchia scelta. I campi effettivi dipendono dalla risposta dell’API; prima di elaborarli, consulta il JSON aggiornato nella documentazione e non fare affidamento su campi che non vi compaiono.
Per osservare l’attività relativa ai contenuti, puoi integrare i profili con i dati delle pubblicazioni. La mappa di IG Scraper API elenca endpoint distinti per i contenuti multimediali e i video degli utenti, oltre a richieste per media e commenti. Aggiungili come fase separata dopo aver verificato il profilo: prima controlla i parametri necessari e il formato della risposta in Postman, poi registra solo i campi davvero utili al report.
Una buona regola per il monitoraggio è conservare le risposte grezze separatamente dalle righe normalizzate. Il JSON grezzo permette di ricontrollare l’interpretazione se la risposta dell’API cambia; una tabella normalizzata è più comoda per grafici e filtri. In entrambi i casi, salva l’ora della richiesta per distinguere il valore attuale da quello storico.
Collega IG Scraper API
Per jsonscraper, l’indirizzo base dell’API IG è https://ig.jsonscraper.com. La documentazione ufficiale mostra una richiesta di profilo tramite nome utente: GET /v1/user/by/username, con i parametri username, license_key e cache_timeout. Per esempio, per un account di test la documentazione riporta un URL del tipo https://ig.jsonscraper.com/v1/user/by/username?username=apple&license_key=YOUR_LICENSE_KEY&cache_timeout=60. Usa il parametro di cache solo secondo le condizioni dello specifico endpoint e le tue esigenze: la frequenza delle richieste dovrebbe riflettere la rapidità con cui ti servono gli aggiornamenti.
Per verificare la struttura della risposta, apri la pagina di IG Scraper API e consulta la raccolta Postman collegata. Nell’esempio, una risposta riuscita contiene uno stato, un oggetto ig con l’identificativo del profilo, il nome utente e lo stato di verifica, oltre a un timestamp. La documentazione elenca inoltre gruppi di endpoint per utenti, media, ricerca, hashtag e località: puoi così ampliare la raccolta man mano che definisci l’obiettivo analitico.
Conserva la chiave API in una variabile d’ambiente, non nel codice sorgente né in un’applicazione client. La documentazione di jsonscraper raccomanda di custodire la chiave nell’ambiente e di non inserirla nelle build client. Limita l’accesso alla chiave nel flusso di lavoro: per esempio, rendila disponibile solo al processo di raccolta in background.
Un esempio minimo funzionante in Python
Lo script seguente legge i nomi utente da una variabile d’ambiente, richiede ogni profilo e scrive i dati in un file JSONL. JSONL è comodo per un prototipo iniziale: ogni riga rappresenta un’istantanea. Il codice salva intenzionalmente l’intero oggetto di risposta, senza presumere che siano sempre presenti tutti i campi del profilo. Dopo la prima esecuzione, esamina la risposta effettiva e solo in seguito definisci uno schema stabile per la tabella.
import json
import os
import time
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlencode
from urllib.request import Request, urlopen
API_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
USERNAMES = [name.strip() for name in os.environ["IG_USERNAMES"].split(",") if name.strip()]
BASE_URL = "https://ig.jsonscraper.com/v1/user/by/username"
OUTPUT = Path("instagram_profiles.jsonl")
def fetch_profile(username: str) -> dict:
query = urlencode({
"username": username,
"license_key": API_KEY,
"cache_timeout": 60,
})
request = Request(f"{BASE_URL}?{query}", headers={"Accept": "application/json"})
with urlopen(request, timeout=30) as response:
return json.load(response)
with OUTPUT.open("a", encoding="utf-8") as output:
for username in USERNAMES:
collected_at = datetime.now(timezone.utc).isoformat()
try:
payload = fetch_profile(username)
row = {
"collected_at": collected_at,
"requested_username": username,
"ok": True,
"payload": payload,
}
except Exception as exc:
row = {
"collected_at": collected_at,
"requested_username": username,
"ok": False,
"error": str(exc),
}
output.write(json.dumps(row, ensure_ascii=False) + "\n")
output.flush()
time.sleep(1)
Prima di avviare lo script, imposta la configurazione nell’ambiente:
export JSONSCRAPER_LICENSE_KEY="la_tua_chiave"
export IG_USERNAMES="creator_one,creator_two,creator_three"
python monitor.py
La pausa nell’esempio serve a elaborare l’elenco in modo più graduale; non è un limite dichiarato dell’API. Per un’esecuzione programmata, configura la frequenza e la gestione degli errori in base al tuo piano, alla documentazione e ai requisiti di aggiornamento. Se una richiesta fallisce, il record salvato permette di rilevare il problema invece di saltare silenziosamente l’account.
Normalizza i dati dopo aver verificato la risposta
Dopo aver esaminato la risposta dell’endpoint che utilizzi, individua un insieme stabile di colonne. Per esempio, una tabella delle osservazioni può contenere l’ora di raccolta, il nome utente, l’identificativo del profilo, lo stato verificato della risposta e i contatori necessari, se presenti nel JSON. Definisci esplicitamente cosa fare quando manca un campo: salvare un valore vuoto, contrassegnare il record come incompleto oppure inviarlo a una nuova verifica.
Non sovrascrivere la riga di ieri con il valore di oggi. Lo storico delle istantanee serve a calcolare le differenze tra date e a rilevare i cambiamenti. Per il numero di follower, calcola la differenza tra osservazioni riuscite consecutive dello stesso profilo; confrontare gli identificativi stabili è preferibile a basarsi soltanto sul nome utente, che può cambiare.
Se la risposta grezza contiene più dati di quelli necessari al report, valuta di conservarla per un periodo limitato. La tabella normalizzata dovrebbe includere solo i campi giustificati dallo specifico obiettivo. Per una ricerca pubblica sui creator, in genere questo riduce la quantità di dati e rende più semplice spiegare perché vengono raccolti.
Aggiungi un’esecuzione quotidiana e una notifica
Su un server, puoi avviare lo script con un pianificatore di attività come cron; in uno strumento di automazione, puoi usare una pianificazione e una richiesta HTTP. Il flusso di base è composto da un trigger, dalla lettura dell’elenco dei profili, dalla chiamata sequenziale dell’endpoint, dalla verifica della risposta, dalla scrittura di una riga nel sistema di archiviazione e dalla preparazione di un riepilogo. In n8n o Make, puoi suddividere le stesse fasi in nodi distinti, così che l’errore relativo a un profilo non interrompa l’intera raccolta.
Per il report, calcola metriche semplici: quanti profili sono stati elaborati correttamente, quali hanno cambiato il numero di follower rispetto all’ultima istantanea riuscita e quando è stato aggiornato l’ultimo record. Un elenco separato degli errori aiuta a individuare rapidamente nomi non validi, profili non disponibili e problemi temporanei nelle richieste. Se aggiungi le pubblicazioni, definisci prima la profondità dello storico e i campi necessari, quindi collega l’endpoint corrispondente indicato nella documentazione.
Anche la cache va configurata con criterio. La documentazione descrive cache_timeout come parametro degli endpoint supportati, utile per riutilizzare risultati recenti. Per un report comparativo quotidiano, scegli una modalità coerente con il livello di aggiornamento richiesto; non confondere una risposta memorizzata nella cache con una nuova rilevazione senza segnalarlo nel registro.
Cosa può mostrare questo monitoraggio
Dopo aver raccolto un certo numero di istantanee, il team disporrà di uno storico verificabile delle osservazioni sui profili pubblici selezionati. Potrà confrontare le variazioni dei contatori, individuare i record che non vengono aggiornati da tempo e preparare un breve elenco di account da valutare manualmente. Se la raccolta dei media è disponibile per l’endpoint e l’obiettivo scelti, potrai aggiungere le pubblicazioni ai profili e analizzare la frequenza dei post o i formati dei contenuti, purché la documentazione confermi i campi specifici.
Usa le metriche come filtro per il lavoro di ricerca, non come decisione automatica su una collaborazione. Il numero di follower, da solo, non descrive l’affinità del pubblico con il brand, la qualità dei contenuti o l’idoneità commerciale del creator. Aggiungi una verifica umana del profilo e tieni separati i criteri di selezione dalla raccolta tecnica.
Per una prova iniziale, apri la raccolta IG API in Postman, configura la chiave ed esegui una richiesta di profilo. Poi trasferisci i parametri verificati nello script o nell’automazione. Otterrai così una raccolta quotidiana riproducibile, uno storico delle modifiche e una base per un report analitico, senza dover partire da uno scraper di pagine scritto da zero.