Перед запуском кампанії можна автоматично звірити кожен акаунт IG із брифу з публічними даними профілю. Така перевірка виявляє невідповідність username, приватний статус, зміну імені або біографії та розбіжність між кількістю публікацій і очікуваним діапазоном. Результат — таблиця перевірок для маркетолога, а не автоматичне рішення про придатність автора.

Проблема: бриф застаріває швидше, ніж таблиця
У списку кампанії можуть зберігатися ім’я акаунта, посилання, орієнтир за кількістю підписників і вимоги до публічного профілю. Ці дані легко розходяться: акаунт змінює username, профіль стає приватним, а цифри в брифі залишаються колишніми. Перевірити один профіль вручну просто; повторювати це для списку акаунтів перед кожною кампанією вже складніше контролювати й відтворювати.
Корисний підхід — задати для кожного рядка явні правила, отримати доступні публічні поля на момент перевірки й записати поруч початкові та фактичні значення. Тоді «збігається» означає лише, що конкретне поле відповідає конкретному правилу; рішення про відповідність аудиторії або якість контенту залишається за фахівцем.
Які дані запитувати
У довіднику маршрутів IG API описано маршрут GET /v1/user/by/username з обов’язковим параметром username. У перевіреній відповіді дані профілю містяться в об’єкті ig: там зазначені username, повне ім’я, біографія, ознаки приватності й верифікації, кількість публікацій, підписників і підписок. Ці поля описують доступний знімок профілю.
Для попередньої перевірки цього достатньо, щоб зіставити ім’я акаунта, приватність і числові пороги. Біографію можна показати оператору для перегляду або перевіряти за простим правилом, наприклад за наявністю обов’язкового терміна. Такий текстовий фільтр знаходить збіг рядка, але сам по собі не оцінює зміст і не підтверджує виконання договірних умов.
Як вбудувати запит у Python
Спершу збережіть ліцензійний ключ у змінній середовища JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Приклад використовує підтверджені базову адресу, маршрут, параметр username та ім’я ключа license_key. CSV містить поля username,min_followers,max_followers,require_public; для кожного акаунта скрипт звіряє відповідь із правилами й позначає рядки, які потребують перевірки.
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
Запуск: python check_profiles.py. Установіть бібліотеку requests, задайте змінну середовища в середовищі запуску й покладіть поруч brief.csv. Не записуйте ключ у вихідний код або підсумковий CSV. Скрипт обробляє список послідовно, що зручно для перевірки й налагодження невеликих наборів акаунтів.
Чому пропуски мають залишатися видимими
У правилах перевірки важливо розрізняти нульове значення й поле, якого немає. У прикладі кількість підписників вважається прийнятною лише за наявності числового поля; якщо лічильник відсутній, умову не підтверджено, і запис скеровується на ручну перевірку. Порожній поріг min_followers також позначається як помилка вхідних даних, а не автоматично перетворюється на нуль.
Перевірку відповіді варто зберегти як частину робочого процесу. Скрипт спочатку переконується, що зовнішній статус дорівнює ok, а потім перевіряє наявність об’єкта ig. Помилка HTTP, неочікуваний JSON або некоректне правило потрапляють до звіту без тексту винятку, який міг би розкрити ключ у URL. Так оператор відрізняє збій запиту від невідповідності профілю, не розголошуючи секрет.
Як читати результат і автоматизувати перевірку
Файл profile_check.csv містить початковий username, повернене ім’я, доступні публічні поля, результати окремих умов і загальний прапорець needs_review. Команда може відфільтрувати рядки за цим прапорцем, а розробник — зберегти звіт у сховищі або передати його на наступний етап процесу ETL. Для запуску за розкладом використовуйте планувальник і зберігайте дату запуску окремо, щоб порівнювати знімки кампаній.

Якщо правило змінюється, зберігайте його в брифі, а не вбудовуйте в код. Це робить пороги перевірюваними: для кожного рядка видно, який діапазон підписників або яку ознаку публічності очікували. Для біографії можна додати перевірку наявності заданого тексту, але буквальний збіг не замінює змістовної оцінки фахівця.
На сторінці IG Scraper API наведено базову адресу, приклад запиту й посилання на Postman. Наведений вище сценарій використовує лише підтверджений пошук профілю за username і не передбачає, що цей запит повертає публікації.
Практичний результат — відтворювана попередня перевірка: замість ручного перегляду всього списку команда отримує перелік збігів і винятків, пов’язаних із конкретними полями брифу. Це пришвидшує перевірку перед запуском, залишаючи рішення про відповідність кампанії за відповідальним фахівцем.