Przed rozpoczęciem kampanii można automatycznie porównać każde konto na IGie z briefu z publicznymi danymi profilu. Taka kontrola wykrywa niezgodność nazwy użytkownika, status prywatny, zmianę nazwy lub biogramu oraz różnicę między liczbą publikacji a oczekiwanym zakresem. Wynikiem jest tabela kontroli dla specjalisty ds. marketingu, a nie automatyczna decyzja o przydatności twórcy.

Problem: brief dezaktualizuje się szybciej niż arkusz
Lista kampanii może zawierać nazwę konta, link, orientacyjną liczbę obserwujących i wymagania dotyczące publicznego profilu. Te informacje łatwo się rozchodzą: konto zmienia nazwę użytkownika, profil staje się prywatny, a liczby w briefie pozostają bez zmian. Ręczne sprawdzenie pojedynczego profilu jest proste; trudniej kontrolować i powtarzać je dla listy kont przed każdą kampanią.
Przydatnym rozwiązaniem jest określenie jawnych reguł dla każdego wiersza, pobranie dostępnych publicznych pól w chwili kontroli i zapisanie obok siebie wartości oczekiwanych oraz rzeczywistych. „Zgadza się” oznacza wtedy wyłącznie, że konkretne pole spełnia konkretną regułę; decyzja o dopasowaniu odbiorców lub jakości treści pozostaje po stronie specjalisty.
Jakie dane pobierać
W dokumentacji endpointów IG API opisano endpoint GET /v1/user/by/username z wymaganym parametrem username. W zweryfikowanej odpowiedzi dane profilu znajdują się w obiekcie ig: obejmuje on nazwę użytkownika, imię i nazwisko, biogram, informacje o prywatności i weryfikacji oraz liczbę publikacji, obserwujących i obserwowanych kont. Te pola opisują dostępny zrzut profilu.
Do wstępnej kontroli wystarczy to, by porównać nazwę konta, status prywatności i progi liczbowe. Biogram można wyświetlić operatorowi do sprawdzenia albo kontrolować według prostej reguły, na przykład obecności wymaganego terminu. Taki filtr tekstowy wykrywa zgodność ciągu znaków, ale sam w sobie nie ocenia znaczenia ani nie potwierdza spełnienia warunków umowy.
Jak zintegrować zapytanie w Pythonie
Najpierw zapisz klucz licencyjny w zmiennej środowiskowej JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Przykład wykorzystuje potwierdzony adres bazowy, endpoint, parametr username i nazwę klucza license_key. Plik CSV zawiera pola username,min_followers,max_followers,require_public; dla każdego konta skrypt porównuje odpowiedź z regułami i oznacza wiersze wymagające sprawdzenia.
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
Uruchom: python check_profiles.py. Zainstaluj bibliotekę requests, ustaw zmienną środowiskową w środowisku uruchomieniowym i umieść obok plik brief.csv. Nie zapisuj klucza w kodzie źródłowym ani w końcowym pliku CSV. Skrypt przetwarza listę sekwencyjnie, co ułatwia kontrolę i debugowanie niewielkich zbiorów kont.
Dlaczego braki powinny pozostać widoczne
W regułach kontroli ważne jest rozróżnienie wartości zerowej od brakującego pola. W przykładzie liczba obserwujących jest uznawana za odpowiednią tylko wtedy, gdy pole zawiera wartość liczbową; jeśli licznika brakuje, warunek nie jest potwierdzony, a rekord trafia do ręcznej kontroli. Pusty próg min_followers również jest oznaczany jako błąd danych wejściowych, a nie automatycznie zamieniany na zero.
Weryfikację odpowiedzi warto uwzględnić w procesie pracy. Skrypt najpierw upewnia się, że zewnętrzny status ma wartość ok, a następnie sprawdza, czy istnieje obiekt ig. Błąd HTTP, nieoczekiwany JSON lub nieprawidłowa reguła trafiają do raportu bez treści wyjątku, która mogłaby ujawnić klucz w adresie URL. Dzięki temu operator odróżnia awarię zapytania od niezgodności profilu, nie ujawniając sekretu.
Jak interpretować wyniki i zautomatyzować kontrolę
Plik profile_check.csv zawiera pierwotną nazwę użytkownika, zwróconą nazwę, dostępne publiczne pola, wyniki poszczególnych warunków oraz zbiorczą flagę needs_review. Zespół może filtrować wiersze według tej flagi, a programista zapisać raport w magazynie danych lub przekazać go do kolejnego etapu procesu ETL. Aby zaplanować uruchomienia, użyj harmonogramu zadań i zapisuj osobno datę uruchomienia, by porównywać zrzuty kampanii.

Jeśli reguła się zmienia, przechowuj ją w briefie, zamiast wpisywać na stałe w kodzie. Dzięki temu progi można zweryfikować: dla każdego wiersza widać, jakiego zakresu liczby obserwujących lub jakiego statusu publicznego oczekiwano. Można dodać sprawdzanie obecności określonego tekstu w biogramie, ale dosłowna zgodność nie zastępuje merytorycznej oceny specjalisty.
Na stronie IG Scraper API podano adres bazowy, przykład zapytania i link do Postmana. Powyższy scenariusz wykorzystuje wyłącznie potwierdzone wyszukiwanie profilu według nazwy użytkownika i nie zakłada, że zapytanie zwraca publikacje.
Praktyczny rezultat to powtarzalna kontrola wstępna: zamiast ręcznie przeglądać całą listę, zespół otrzymuje zestawienie zgodności i wyjątków powiązanych z konkretnymi polami briefu. Przyspiesza to weryfikację przed rozpoczęciem kampanii, pozostawiając decyzję o jej dopasowaniu odpowiedzialnemu specjaliście.