Före kampanjstart kan varje IG-konto i briefen jämföras automatiskt med offentliga profiluppgifter. Kontrollen upptäcker avvikande användarnamn, privat status, ändrat namn eller ändrad biografi och skillnader mellan antalet inlägg och det förväntade intervallet. Resultatet är en kontrolltabell för marknadsföraren, inte ett automatiskt beslut om kreatören är lämplig.

Problemet: briefen blir inaktuell snabbare än kalkylbladet
En kampanjlista kan innehålla kontonamn, länk, ungefärligt antal följare och krav på en offentlig profil. Uppgifterna kan lätt bli inaktuella: kontot byter användarnamn, profilen blir privat och siffrorna i briefen förblir desamma. Det är enkelt att kontrollera en profil manuellt, men svårare att hålla kontroll över och upprepa kontrollen av en hel lista inför varje kampanj.
En användbar lösning är att ange tydliga regler för varje rad, hämta tillgängliga offentliga fält vid kontrolltillfället och spara de ursprungliga och faktiska värdena sida vid sida. ”Matchar” betyder då bara att ett visst fält uppfyller en viss regel; bedömningen av målgruppens relevans eller innehållets kvalitet ligger kvar hos specialisten.
Vilka uppgifter ska hämtas?
I IG API:s dokumentation över endpoints beskrivs endpointen GET /v1/user/by/username med den obligatoriska parametern username. I det verifierade svaret finns profiluppgifterna i objektet ig: där anges användarnamn, fullständigt namn, biografi, uppgifter om privat och verifierad status samt antal inlägg, följare och följda konton. Fälten beskriver en tillgänglig ögonblicksbild av profilen.
Det räcker för en första kontroll av kontonamn, privat status och numeriska gränsvärden. Biografin kan visas för operatören eller kontrolleras med en enkel regel, till exempel om ett obligatoriskt uttryck förekommer. Ett sådant textfilter hittar en strängmatchning, men bedömer inte i sig innebörden och bekräftar inte att avtalsvillkor är uppfyllda.
Så bygger du in anropet i Python
Spara först licensnyckeln i miljövariabeln JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Exemplet använder den bekräftade basadressen, endpointen, parametern username och nyckeln license_key. CSV-filen innehåller fälten username,min_followers,max_followers,require_public; för varje konto jämför skriptet svaret med reglerna och markerar rader som behöver granskas.
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
Kör: python check_profiles.py. Installera biblioteket requests, ange miljövariabeln i körmiljön och lägg brief.csv bredvid skriptet. Skriv inte in nyckeln i källkoden eller i den slutliga CSV-filen. Skriptet behandlar listan i tur och ordning, vilket gör det praktiskt att kontrollera och felsöka mindre uppsättningar konton.
Varför saknade uppgifter ska förbli synliga
Kontrollreglerna måste skilja mellan ett nollvärde och ett fält som saknas. I exemplet godkänns antalet följare bara om ett numeriskt fält finns; om räknaren saknas är villkoret inte bekräftat och posten skickas vidare för manuell granskning. Ett tomt gränsvärde för min_followers markeras också som ett indatafel i stället för att automatiskt omvandlas till noll.
Spara kontrollen av svaret som en del av arbetsflödet. Skriptet kontrollerar först att den externa statusen är ok och verifierar sedan att objektet ig finns. HTTP-fel, oväntad JSON eller en ogiltig regel hamnar i rapporten utan undantagstext som skulle kunna röja nyckeln i URL:en. På så sätt kan operatören skilja ett anropsfel från en profil som inte matchar, utan att hemligheten sprids.
Så läser du resultatet och automatiserar kontrollen
Filen profile_check.csv innehåller det ursprungliga användarnamnet, det returnerade namnet, tillgängliga offentliga fält, resultaten för enskilda villkor och den övergripande flaggan needs_review. Teamet kan filtrera rader efter flaggan, och utvecklaren kan spara rapporten i lagring eller skicka den vidare till nästa steg i ETL-processen. Schemalägg körningen med en schemaläggare och spara kördatumet separat så att ögonblicksbilder från olika kampanjer kan jämföras.

Om en regel ändras ska den lagras i briefen, inte byggas in i koden. Då går gränsvärdena att kontrollera: för varje rad framgår vilket intervall för antal följare eller vilket krav på offentlig profil som gällde. Du kan lägga till en kontroll av om en viss text finns i biografin, men en bokstavlig matchning ersätter inte specialistens innehållsbedömning.
På sidan IG Scraper API finns basadressen, ett exempel på en förfrågan och en länk till Postman. Scenariot ovan använder bara den bekräftade profiluppslagningen med användarnamn och förutsätter inte att anropet returnerar inlägg.
Det praktiska resultatet är en reproducerbar förhandskontroll: i stället för att granska hela listan manuellt får teamet en översikt över matchningar och avvikelser kopplade till specifika fält i briefen. Det snabbar upp kontrollen före kampanjstart, samtidigt som ansvaret för att bedöma kampanjens lämplighet ligger kvar hos den ansvariga specialisten.