Pokud marketér ručně kontroluje desítky veřejných profilů na IGu, hlavní ztrátou není čas strávený otevíráním stránek, ale chybějící srovnatelná historie. Jeden snímek ukazuje dnešní počet sledujících; ze dvou snímků lze vypočítat rozdíl za zvolené období. Jednoduché sledování profilů můžete automatizovat: provést požadavek, uložit jen potřebná pole a získat tabulku změn.
Níže najdete minimální funkční příklad v Pythonu: získá údaje o profilu podle uživatelského jména prostřednictvím IG Scraper API a zapíše řádek JSONL s časovým razítkem. Výsledkem je malý zdroj historických dat, který lze připojit ke cron, n8n nebo vlastnímu úložišti. Oficiální popis endpointu a parametrů najdete v dokumentaci IG API.
Jakou otázku řeší každodenní snímek
Předpokládejme, že tým sleduje veřejné účty značek nebo partnerů a chce zaznamenat změny v počtu sledujících, příspěvků nebo ve stavu ověření. Zobrazení profilu ukazuje aktuální hodnoty, samo o sobě ale neuchovává stav z minulého týdne. Nejprve proto určete, která pole jsou důležitá, a pak je ukládejte s datem pozorování.

Endpoint /v1/user/by/username vyžaduje parametr username. Odpověď obsahuje mimo jiné pole follower_count, following_count, media_count, is_verified, is_private a biography. Tato sada se hodí pro snímek profilu; neobsahuje historii příspěvků a sama o sobě nevysvětluje příčinu změny ukazatelů.
Skript má záměrně úzký rozsah: získat sledovanou sadu polí v určený čas a porovnat ji s předchozími záznamy. Analytik tak například uvidí, že se mezi uloženými daty změnil počet sledujících, a může na to navázat samostatným ověřením, nezávislým na automatizovaném sběru.
Připravte klíč a seznam účtů
Nainstalujte knihovnu pro HTTP požadavky a nastavte klíč API v proměnné prostředí. Nevkládejte tajný klíč do zdrojového souboru, repozitáře ani výstupu programu. API používá parametr požadavku license_key; níže uvedená knihovna vytvoří query string sama.
python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="váš_klíč"
Seznam profilů můžete uložit do konfiguračního souboru nebo projektové proměnné. Pro první spuštění stačí jedno uživatelské jméno, abyste ověřili odpověď, přístup a ukládání dat. V příkladu je pole username nastaveno jako parametr API a klíč se načítá pouze z prostředí.
Požadavek a uložení snímku v Pythonu
Skript ověří HTTP odpověď, externí stav API a přítomnost objektu ig. Poté uloží jen hodnoty, které skutečně existují. Pokud některé pole chybí, zůstane v záznamu null: dosazení nuly by znamenalo zaměnit neznámou hodnotu za skutečnou nulu.

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" # nahraďte profilem ze svého seznamu
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 vrátilo neočekávaný stav nebo strukturu")
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("Snímek uložen:", record["username"], record["observed_at"])
Pole a struktura příkladu odpovídají údajům o profilu popsaným pro tento endpoint. Úspěšný požadavek vrací pozorování z okamžiku dotazu; pro analýzu vývoje je třeba skript spouštět opakovaně a ukládat každý snímek. Na stránce IG Scraper API najdete základní požadavek a ukázkovou odpověď ve formátu JSON.
Výpočet změny mezi snímky
JSONL ukládá jeden záznam na řádek, takže jej lze číst standardním modulem Pythonu. Následující úryvek vybere dva poslední záznamy pro profil a vypočítá rozdíl v počtu sledujících. Výsledek vypíše pouze tehdy, když oba záznamy obsahují číselnou hodnotu.
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,
})
Rozdíl se vztahuje výhradně ke dvěma vybraným pozorováním. Pokud některá spuštění vynecháte, interval mezi nimi bude delší; report by proto měl uvádět obě data a automaticky změnu neoznačovat jako „za den“. Pro pravidelný provoz nastavte spouštění podle plánu v cron nebo plánovači cloudové platformy. V n8n lze stejný postup sestavit z uzlů plánovače, HTTP požadavku a zápisu výsledku do databáze či tabulky; názvy uzlů a připojení úložiště se liší podle vaší instalace.
Rozšíření na více profilů
U seznamu účtů uložte uživatelská jména do samostatného souboru a projděte je ve smyčce. Stav každého požadavku ukládejte samostatně: chyba u jednoho profilu pak nesmaže úspěšně získaná data ostatních. Přidejte časový limit, protokol chyb a opakujte požadavek pouze u účtů, u nichž skončil chybou.
Jako klíč záznamu můžete použít pk, pokud jej API vrátilo, a pro přehlednost zároveň uchovávat uživatelské jméno. Identifikátor pomáhá odlišit profil od textového označení v reportu; pokud chybí, nevymýšlejte jej ani jej nenahrazujte jiným polem. Pro analytiku je užitečné uchovávat původní čas sběru v UTC a výslovně určit období porovnání.
Pokud pro daný úkol stačí získávat údaje v určité frekvenci, zdokumentovaný parametr cache_timeout umožňuje nastavit dobu ukládání do mezipaměti v sekundách; ukládání IGu do mezipaměti je ve výchozím nastavení vypnuté. Zvolte dobu s ohledem na interval sledování a uložte ji spolu s nastavením sběru, abyste při interpretaci výsledků znali parametry požadavku.
Jaký bude výsledek
Po několika spuštěních budete mít soubor s časovými snímky veřejných ukazatelů a jednoduchým vypočteným rozdílem mezi zvolenými daty. Lze jej nahrát do Google Sheets, PostgreSQL nebo analytického systému; samostatná vrstva zpracování může vytvořit upozornění, když změna překročí týmově nastavený limit. Tento limit je vaše obchodní pravidlo, nikoli vestavěná funkce API.
Endpoint profilu poskytuje pole účtu, takže k auditu nových příspěvků potřebujete odpovídající sběr médií, nikoli závěry odvozené z media_count. Dokumentace IG API uvádí samostatný endpoint pro výpis příspěvků s načítáním po stránkách pomocí user_id a parametru end_cursor; použijte jej, pokud potřebujete analyzovat samotné příspěvky. Pro popsaný výsledek — historickou tabulku ukazatelů profilu — stačí jeden požadavek na uživatele a opakované ukládání snímků.
Začněte s jedním profilem a dvěma spuštěními: ověřte správný stav odpovědi, ukládání dat a to, že chybějící údaje zůstávají výslovně neznámé. Potom přidejte seznam účtů a plán spouštění. Získáte tak reprodukovatelné pozorování s jasným intervalem a zdrojovými hodnotami, které lze ověřit a předat do dalšího analytického procesu.