När en marknadsförare manuellt kontrollerar dussintals offentliga IG-profiler är den största tidsförlusten inte att öppna sidorna, utan att det saknas en jämförbar historik. En ögonblicksbild visar antalet följare i dag; två ögonblicksbilder gör det möjligt att beräkna skillnaden över ett valt intervall. För enkel profilövervakning kan du automatisera anropet, bara spara de fält du behöver och skapa en tabell över förändringarna.
Nedan följer ett minimalt fungerande exempel i Python: det hämtar profilinformation via användarnamn med IG Scraper API och skriver en JSONL-rad med en tidsstämpel. Resultatet är en liten historikkälla som kan kopplas till cron, n8n eller din egen lagring. Den officiella beskrivningen av endpointen och parametrarna finns i IG API-referensen.
Vilken fråga besvarar en daglig ögonblicksbild?
Anta att ett team följer offentliga konton för varumärken eller partner och vill upptäcka förändringar i antalet följare, inlägg eller verifieringsstatus. En profilsida visar aktuella värden, men sparar inte i sig tillståndet från förra veckan. Därför behöver du först avgöra vilka fält som är viktiga och sedan spara dem med observationsdatum.

Endpointen /v1/user/by/username kräver parametern username. Svaret innehåller bland annat follower_count, following_count, media_count, is_verified, is_private och biography. Dessa fält passar för en profilögonblicksbild; de innehåller ingen historik över inlägg och förklarar inte i sig orsaken till att mätvärdena förändras.
Skriptet har medvetet ett begränsat omfång: hämta en observerbar uppsättning fält vid en bestämd tidpunkt och jämför den med tidigare poster. Då kan analytikern exempelvis se att antalet följare har förändrats mellan sparade datum och gå vidare med en separat kontroll, oberoende av den automatiska insamlingen.
Förbered nyckeln och kontolistan
Installera biblioteket för HTTP-anrop och ange API-nyckeln i en miljövariabel. Lägg inte hemligheten i en källfil, ett kodförråd eller programmets utdata. API:et använder frågeparametern license_key; biblioteket nedan skapar själv frågesträngen.
python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="din_nyckel"
Det är praktiskt att lagra profilerna i en konfigurationsfil eller projektvariabel. För den första körningen räcker ett användarnamn för att kontrollera svaret, åtkomsten och lagringen. I exemplet anges fältet username som API-parameter, medan nyckeln bara läses från miljön.
Hämta och spara en ögonblicksbild i Python
Skriptet kontrollerar HTTP-svaret, API:ets övergripande status och att objektet ig finns. Därefter sparar det bara värden som uttryckligen finns. Om ett fält saknas står null kvar i posten: att ersätta det med noll skulle blanda ihop ett okänt värde med ett faktiskt nollvärde.

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" # ersätt med en profil från din 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("API:et returnerade en oväntad status eller struktur")
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("Ögonblicksbild sparad:", record["username"], record["observed_at"])
Fälten och strukturen i exemplet motsvarar den profilinformation som beskrivs för denna endpoint. Ett lyckat anrop returnerar en observation från anropstillfället; för att analysera utvecklingen behöver skriptet köras igen och varje ögonblicksbild sparas. På sidan om IG Scraper API visas ett grundläggande anrop och ett exempelsvar i JSON-format.
Beräkna förändringen mellan ögonblicksbilder
JSONL lagrar en post per rad och kan därför läsas med Pythons standardmodul. Nästa kodavsnitt väljer de två senaste posterna för en profil och beräknar skillnaden i antal följare. Resultatet skrivs ut endast om båda posterna innehåller ett numeriskt värde.
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,
})
Skillnaden gäller strikt de två valda observationerna. Om körningar hoppas över blir intervallet mellan dem längre; därför bör rapporten visa båda datumen i stället för att automatiskt kalla förändringen ”på en dag”. För regelbunden användning kan du schemalägga körningen med cron eller en molnplattforms schemaläggare. I n8n kan samma arbetsflöde byggas av noder för schemaläggning, HTTP-anrop och lagring av resultatet i en databas eller tabell; nodernas namn och lagringskopplingen beror på din installation.
Utöka till flera profiler
För en kontolista kan du lägga användarnamnen i en separat fil och gå igenom dem med en loop. Spara status för varje anrop separat: då raderar ett fel i en profil inte data som hämtats framgångsrikt för de andra. Lägg till en tidsgräns, en fellogg och en ny körning endast för de konton där anropet misslyckades.
Du kan använda pk som postens nyckel om API:et returnerar det, och samtidigt spara användarnamnet för läsbarhet. Identifieraren hjälper till att skilja profilen från en textetikett i rapporten; om värdet saknas ska du inte hitta på det eller ersätta det med ett annat fält. För analys är det användbart att spara den ursprungliga insamlingstiden i UTC och uttryckligen ange jämförelseperioden.
Om uppgiften bara kräver att information hämtas med en viss frekvens kan den dokumenterade parametern cache_timeout ange cachelagringstiden i sekunder; för IG är cachelagring avstängd som standard. Välj en tidsperiod som passar övervakningsintervallet och spara den tillsammans med insamlingsinställningarna, så att parametrarna för anropet kan beaktas när resultaten tolkas.
Vad blir resultatet?
Efter flera körningar har du en fil med tidsstämplade ögonblicksbilder av offentliga mätvärden och en enkel beräknad skillnad mellan valda datum. Den kan läsas in i Google Sheets, PostgreSQL eller ett analyssystem; ett separat bearbetningslager kan skapa en avisering när förändringen överskrider en tröskel som teamet har bestämt. Tröskeln är er affärsregel, inte en inbyggd API-funktion.
Profil-endpointen tillhandahåller kontofält, så om du vill granska just nya inlägg behöver du hämta media i stället för att dra slutsatser från media_count. I IG API-referensen finns en separat endpoint för att hämta inlägg med sidvis inläsning via user_id och parametern end_cursor; använd den om uppgiften kräver att du granskar själva inläggen. För resultatet som beskrivs här – en historisk tabell över profilvärden – räcker ett anrop per användare och återkommande lagring av ögonblicksbilder.
Börja med en profil och ett par körningar: kontrollera att svarstatusen är korrekt, att datumen sparas och att saknade data förblir tydligt okända. Lägg sedan till en kontolista och ett schema. På så sätt får du en reproducerbar observation med ett tydligt intervall och ursprungsvärden, som går att kontrollera och skicka vidare till en analysprocess.