Prima di avviare una campagna, puoi confrontare automaticamente ogni account IG del brief con i dati pubblici del profilo. Questo controllo individua username non corrispondenti, profili privati, cambiamenti di nome o biografia e discrepanze nel numero di pubblicazioni rispetto all’intervallo previsto. Il risultato è una tabella di controlli per chi si occupa di marketing, non una decisione automatica sull’idoneità del creator.

Il problema: il brief invecchia più rapidamente del foglio di calcolo
L’elenco della campagna può contenere il nome dell’account, un link, una stima dei follower e i requisiti relativi al profilo pubblico. Queste informazioni possono facilmente diventare incoerenti: l’account cambia username, il profilo diventa privato e le cifre nel brief restano quelle precedenti. Controllare manualmente un singolo profilo è semplice; ripetere il controllo per un elenco di account prima di ogni campagna è più difficile da gestire e riprodurre.
Una soluzione utile consiste nello stabilire regole esplicite per ogni riga, recuperare i campi pubblici disponibili al momento del controllo e registrare accanto sia i valori attesi sia quelli effettivi. «Corrisponde» significa quindi soltanto che un campo specifico rispetta una regola specifica; la valutazione sulla corrispondenza con il pubblico o sulla qualità dei contenuti resta affidata a uno specialista.
Quali dati richiedere
Nella documentazione degli endpoint di IG API è descritto l’endpoint GET /v1/user/by/username, che richiede il parametro username. Nella risposta verificata, i dati del profilo si trovano nell’oggetto ig: vi sono indicati username, nome completo, biografia, indicatori di privacy e verifica, numero di pubblicazioni, follower e account seguiti. Questi campi descrivono un’istantanea disponibile del profilo.
Per un controllo preliminare, questi dati bastano a confrontare il nome dell’account, la privacy e le soglie numeriche. Puoi mostrare la biografia all’operatore oppure verificarla con una regola semplice, ad esempio la presenza di un termine obbligatorio. Un filtro testuale di questo tipo individua una corrispondenza letterale, ma da solo non valuta il significato né conferma il rispetto delle condizioni contrattuali.
Come integrare la richiesta in Python
Per prima cosa, salva la chiave di licenza nella variabile d’ambiente JSONSCRAPER_INSTAGRAM_LICENSE_KEY. L’esempio usa l’indirizzo di base, l’endpoint, il parametro username e il nome della chiave license_key verificati. Il CSV contiene i campi username,min_followers,max_followers,require_public; per ogni account, lo script confronta la risposta con le regole e segnala le righe che richiedono un controllo.
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
Per eseguirlo: python check_profiles.py. Installa la libreria requests, imposta la variabile d’ambiente nell’ambiente di esecuzione e metti accanto il file brief.csv. Non inserire la chiave nel codice sorgente o nel CSV finale. Lo script elabora l’elenco in sequenza, una modalità pratica per verificare ed eseguire il debug di piccoli gruppi di account.
Perché i dati mancanti devono restare visibili
Le regole di controllo devono distinguere un valore pari a zero da un campo assente. Nell’esempio, il numero di follower è considerato conforme solo se il campo è numerico; se il contatore non è presente, il requisito non è confermato e il record viene inviato al controllo manuale. Anche una soglia min_followers vuota viene segnalata come errore nei dati di input, anziché essere trasformata automaticamente in zero.
È opportuno includere nel flusso di lavoro anche la verifica della risposta. Lo script controlla prima che lo stato esterno sia ok e poi verifica che sia presente l’oggetto ig. Gli errori HTTP, il JSON inatteso o una regola non valida vengono riportati senza il testo dell’eccezione, che potrebbe rivelare la chiave nell’URL. In questo modo l’operatore può distinguere un errore della richiesta da una mancata corrispondenza del profilo senza esporre il segreto.
Come leggere i risultati e automatizzare il controllo
Il file profile_check.csv contiene lo username iniziale, il nome restituito, i campi pubblici disponibili, i risultati delle singole condizioni e l’indicatore generale needs_review. Il team può filtrare le righe in base a questo indicatore, mentre uno sviluppatore può salvare il rapporto in un archivio o passarne i dati al passaggio successivo del processo ETL. Per pianificare l’esecuzione, usa un pianificatore e salva separatamente la data di avvio, così da poter confrontare le istantanee delle campagne.

Se una regola cambia, conservala nel brief invece di incorporarla nel codice. Così le soglie restano verificabili: per ogni riga è possibile vedere quale intervallo di follower o quale requisito di visibilità era previsto. Per la biografia puoi aggiungere un controllo sulla presenza di un testo specifico, ma una corrispondenza letterale non sostituisce la valutazione del contenuto da parte di uno specialista.
Nella pagina IG Scraper API sono indicati l’indirizzo di base, un esempio di richiesta e un link a Postman. Lo scenario qui sopra usa soltanto la ricerca del profilo tramite username, verificata, e non presuppone che la richiesta restituisca le pubblicazioni.
Il risultato pratico è un controllo preliminare riproducibile: invece di esaminare manualmente l’intero elenco, il team ottiene un riepilogo delle corrispondenze e delle eccezioni associate a specifici campi del brief. Questo accelera la verifica prima del lancio, lasciando la valutazione dell’idoneità per la campagna allo specialista responsabile.