Bir pazarlamacı düzinelerce herkese açık IG profilini elle kontrol ediyorsa, asıl kayıp sayfaları açmak için harcanan zaman değil, karşılaştırılabilir bir geçmişin olmamasıdır. Tek bir anlık görüntü bugünkü takipçi sayısını gösterir; iki görüntü ise seçilen zaman aralığındaki farkı hesaplamayı sağlar. Basit profil takibi için isteği otomatikleştirebilir, yalnızca gerekli alanları kaydedebilir ve bir değişiklik tablosu oluşturabilirsiniz.
Aşağıda Python ile hazırlanmış, kullanıcı adına göre IG Scraper API üzerinden profil bilgilerini alan ve zaman damgalı bir JSONL satırı kaydeden basit bir örnek yer alıyor. Sonuç, cron, n8n veya kendi depolama sisteminize bağlayabileceğiniz küçük bir geçmiş veri kaynağıdır. Uç noktanın ve parametrelerin resmî açıklaması IG API başvuru kılavuzunda yer alıyor.
Günlük anlık görüntü hangi sorunu çözer?
Bir ekibin marka veya iş ortağı hesapları gibi herkese açık hesapları izlediğini ve takipçi sayısındaki, gönderi sayısındaki ya da doğrulanma durumundaki değişiklikleri fark etmek istediğini varsayalım. Profil sayfasına bakmak mevcut değerleri gösterir, ancak geçen haftaki durumu kendi başına saklamaz. Bu nedenle önce hangi alanların önemli olduğunu belirlemek, ardından bu alanları gözlem tarihiyle birlikte kaydetmek gerekir.

/v1/user/by/username uç noktası, zorunlu username parametresini kabul eder. Yanıtta diğerlerinin yanı sıra follower_count, following_count, media_count, is_verified, is_private ve biography alanları bulunur. Bu alanlar bir profilin anlık görüntüsü için uygundur; gönderi geçmişini içermez ve metriklerdeki değişikliğin nedenini kendi başına açıklamaz.
Bu senaryonun kapsamı bilerek dar tutulmuştur: belirli bir zamanda gözlemlenebilen alanları almak ve bunları önceki kayıtlarla karşılaştırmak. Böylece analist, örneğin kaydedilmiş tarihler arasında takipçi sayısının değiştiğini görür ve otomatik veri toplamadan ayrı olarak daha fazla inceleme yapabilir.
Anahtarı ve hesap listesini hazırlayın
İstekler kitaplığını yükleyin ve API anahtarını bir ortam değişkeninde tanımlayın. Gizli anahtarı kaynak dosyaya, depoya veya program çıktısına koymayın. API, license_key sorgu parametresini kullanır; aşağıdaki kitaplık sorgu dizgesini kendisi oluşturur.
python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="anahtarınız"
Profil listesini bir yapılandırma dosyasında veya proje değişkeninde tutmak kullanışlıdır. İlk çalıştırmada yanıtı, erişimi ve depolama kaydını doğrulamak için tek bir kullanıcı adı yeterlidir. Örnekte username alanı API parametresi olarak tanımlanmış, anahtar ise yalnızca ortamdan okunmuştur.
Python ile istek gönderme ve anlık görüntü kaydetme
Betik HTTP yanıtını, API'nin harici durumunu ve ig nesnesinin varlığını denetler. Ardından yalnızca açıkça mevcut olan değerleri kaydeder. Bir alan eksikse kayıtta null kalır: sıfır eklemek, bilinmeyen bir değeri gerçekten sıfır olan bir değerle karıştırmak anlamına gelir.

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" # listenizdeki bir profille değiştirin
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 beklenmeyen bir durum veya yapı döndürdü")
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("Anlık görüntü kaydedildi:", record["username"], record["observed_at"])
Örnekteki alanlar ve yapı, bu uç nokta için açıklanan profil bilgileriyle uyumludur. Başarılı bir istek, çağrı anındaki gözlemi döndürür; zaman içindeki değişimleri analiz etmek için betiğin tekrar çalıştırılması ve her anlık görüntünün kaydedilmesi gerekir. IG Scraper API sayfasında temel istek ve örnek JSON yanıtı gösteriliyor.
Anlık görüntüler arasındaki değişimi hesaplayın
JSONL her satırda bir kayıt saklar; bu nedenle standart Python modülüyle okunabilir. Aşağıdaki parça, bir profil için en son iki kaydı seçer ve takipçi sayısındaki farkı hesaplar. Sonucu yalnızca iki kayıtta da sayısal bir değer bulunuyorsa yazdırır.
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,
})
Fark, kesin olarak seçilen iki gözlem için geçerlidir. Çalıştırmalar atlanırsa aralarındaki süre uzar; bu nedenle rapor, değişimi otomatik olarak “bir günlük” diye adlandırmak yerine her iki tarihi de göstermelidir. Düzenli kullanım için cron veya bir bulut platformunun zamanlayıcısıyla çalıştırma planlayın. n8n'de aynı iş akışını zamanlayıcı, HTTP isteği ve sonucu bir veritabanına ya da tabloya kaydeden düğümlerle kurabilirsiniz; düğüm adları ve depolama bağlantısı kurulumunuza bağlıdır.
Birden fazla profili izlemeyi genişletin
Hesap listesini ayrı bir dosyaya çıkarın ve adları bir döngüyle işleyin. Her isteğin durumunu ayrı kaydedin: böylece bir profildeki hata, diğerlerinden başarıyla alınan verileri silmez. Zaman aşımı sınırı, hata günlüğü ve yalnızca isteği başarısız olan hesaplar için yeniden deneme ekleyin.
Kayıt anahtarı olarak API döndürmüşse pk değerini kullanabilir, okunabilirlik için kullanıcı adını da saklayabilirsiniz. Tanımlayıcı, profili rapordaki metin etiketinden ayırmaya yardımcı olur; değer yoksa bir tane uydurmamalı veya başka bir alanı onun yerine kullanmamalısınız. Analiz için toplamanın ilk zamanını UTC'de saklamak ve karşılaştırma dönemini açıkça belirlemek yararlıdır.
Göreviniz için belirli bir sıklıkta bilgi almak yeterliyse, belgelenmiş cache_timeout parametresi önbellek süresini saniye cinsinden belirtmenizi sağlar; IG için önbellekleme varsayılan olarak kapalıdır. İzleme aralığınıza uygun bir süre seçin ve sonuçları yorumlarken istek ayarlarını da göz önünde bulundurabilmek için bu ayarı toplama yapılandırmasıyla birlikte saklayın.
Sonuçta ne elde edersiniz?
Birkaç çalıştırmanın ardından elinizde herkese açık metriklerin zaman damgalı anlık görüntülerini içeren bir dosya ve seçilen tarihler arasındaki farkı hesaplamanın basit bir yolu olur. Bu dosyayı Google Sheets'e, PostgreSQL'e veya bir analiz sistemine yükleyebilirsiniz; ayrı bir işleme katmanı, değişim ekip tarafından belirlenen bir eşiği aştığında bildirim oluşturabilir. Eşik, API'nin yerleşik bir özelliği değil, sizin iş kuralınızdır.
Profil uç noktası hesap alanlarını döndürür; dolayısıyla yeni gönderileri denetlemek için media_count değerinden çıkarım yapmak yerine uygun medya toplama yöntemini kullanmanız gerekir. IG API başvuru kılavuzunda, user_id ve end_cursor parametresiyle sayfalar hâlinde yükleme yapan ayrı bir gönderi listeleme uç noktası bulunur; göreviniz gönderilerin kendisini incelemeyi gerektiriyorsa bunu kullanın. Burada açıklanan sonuç, profil metriklerinin geçmiş tablosudur; bunun için kullanıcı başına tek bir istek ve anlık görüntülerin düzenli olarak kaydedilmesi yeterlidir.
Tek bir profille ve birkaç çalıştırmayla başlayın: yanıt durumunun doğru olduğunu, tarihlerin kaydedildiğini ve eksik verilerin açıkça bilinmiyor olarak kaldığını doğrulayın. Ardından hesap listesini ve zamanlamayı ekleyin. Böylece anlaşılır bir aralığa ve kaynak değerlere sahip, yeniden üretilebilir gözlemler elde eder; bunları kontrol edip sonraki analiz sürecine aktarabilirsiniz.