jsonscraper
Ринки
До журналу

Як перетворити профілі IG на щоденний список змін

Збирайте публічні показники профілів за розкладом, зберігайте знімки й позначайте зміни без вигаданих метрик.

Редакційна політика Повідомити про помилку

Якщо маркетолог вручну перевіряє десятки публічних профілів IG, найбільша втрата — не час на відкриття сторінок, а відсутність порівнюваної історії. Один знімок повідомляє кількість підписників сьогодні; два знімки дають змогу обчислити різницю за вибраний проміжок часу. Для простого моніторингу профілів можна автоматизувати запит, зберегти лише потрібні поля й отримати таблицю змін.

Нижче наведено мінімальний робочий приклад на Python: він отримує відомості про профіль за ім’ям користувача через IG Scraper API та записує рядок JSONL із часовою міткою. Результат — невелике джерело історії, яке можна під’єднати до cron, n8n або власного сховища. Офіційний опис маршруту й параметрів наведено в довіднику IG API.

На яке запитання відповідає щоденний знімок

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

Стаття: Як перетворити профілі IG на щоденний список змін
Короткий опис: Практичний посібник із моніторингу публічних профілів IG: запит до API, безпечне зберігання ключа, запис історичних знімків і обчислення змін між запусками.
Роль зображення: обкладинка — центральна ідея
Розділ: На яке запитання відповідає щоденний знімок
Візуальний об’єкт: Редакційне фото друкованих карток профілів IG, представлених у вигляді абстрактних кольорових плиток соцмереж, поруч із датованими паперовими знімками даних і невеликим
Профіль дає поточний знімок; повторні датовані записи створюють історію для порівняння.© jsonscraper · створено за допомогою ШІ

Маршрут /v1/user/by/username приймає обов’язковий параметр username. У відповіді зазначено, зокрема, follower_count, following_count, media_count, is_verified, is_private і biography. Цей набір підходить для знімка профілю; він не містить історії публікацій і сам по собі не пояснює причину зміни показників.

Сценарій навмисно вузький: отримати набір спостережуваних полів у заданий час і порівняти його з попередніми записами. Так аналітик бачить, наприклад, що між збереженими датами змінилася кількість підписників, і може окремо перейти до подальшої перевірки.

Підготуйте ключ і список акаунтів

Установіть бібліотеку запитів і задайте ключ API у змінній середовища. Не додавайте секрет до вихідного файлу, репозиторію чи виводу програми. API використовує параметр запиту license_key; наведена нижче бібліотека формує рядок запиту самостійно.

python -m pip install requests
export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="ваш_ключ"

Список профілів зручно зберігати у файлі конфігурації або змінній проєкту. Для першого запуску достатньо одного імені користувача, щоб перевірити відповідь, доступ і запис до сховища. У прикладі поле username задано як параметр API, а ключ зчитується лише з оточення.

Запит і збереження знімка в Python

Скрипт перевіряє HTTP-відповідь, зовнішній статус API та наявність об’єкта ig. Далі він зберігає лише явно наявні значення. Якщо якогось поля немає, у записі залишається null: підставляти нуль означало б змішувати невідоме значення зі справжнім нулем.

Стаття: Як перетворити профілі IG на щоденний список змін
Короткий опис: Практичний посібник із моніторингу публічних профілів IG: запит до API, безпечне зберігання ключа, запис історичних знімків і обчислення змін між запусками.
Роль зображення: допоміжна ілюстрація 2 — інший конкретний аспект
Розділ: Запит і збереження знімка в Python
Візуальний об’єкт: Зрозуміла інфографіка російською мовою, що показує потік даних: запланований запит Python до маршруту профілю IG, JSON-файл
Схема показує шлях від запиту профілю до порівняння двох збережених спостережень.© jsonscraper · створено за допомогою ШІ
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"  # замініть на профіль зі свого списку
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 повернув неочікуваний статус або структуру")

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("Знімок збережено:", record["username"], record["observed_at"])

Поля й структура прикладу відповідають відомостям про профіль, описаним для цього маршруту. Успішний запит повертає спостереження на момент звернення; для аналізу динаміки скрипт потрібно запускати повторно й зберігати кожен знімок. На сторінці IG Scraper API показано базовий запит і демонстраційну відповідь у форматі JSON.

Обчисліть зміну між знімками

JSONL зберігає по одному запису в рядку, тому його можна читати стандартним модулем Python. Наступний фрагмент вибирає два останні записи для профілю й обчислює різницю кількості підписників. Він виводить результат лише тоді, коли обидва записи містять числове значення.

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,
        })

Різниця стосується лише двох вибраних спостережень. Якщо пропустити запуски, проміжок між ними стане довшим; тому у звіті потрібно вказувати обидві дати, а не автоматично називати зміну «за день». Для регулярної роботи налаштуйте запуск за розкладом у cron або планувальнику хмарної платформи. У n8n той самий порядок дій можна зібрати з вузлів планувальника, HTTP-запиту й запису результату до бази чи таблиці; назви вузлів і під’єднання сховища залежать від вашої інсталяції.

Розширення на кілька профілів

Для списку акаунтів винесіть імена в окремий файл і перебирайте їх у циклі. Зберігайте статус кожного запиту окремо: тоді збій одного профілю не зітре успішно отримані дані інших. Додайте обмеження часу очікування, журнал помилок і повторний запуск лише для тих акаунтів, запити яких завершилися помилкою.

Як ключ запису можна використовувати pk, якщо API його повернув, і водночас зберігати ім’я користувача для зручності читання. Ідентифікатор допомагає відрізнити профіль від текстової позначки у звіті; якщо значення немає, не слід його вигадувати чи підміняти іншим полем. Для аналітики корисно зберігати вихідний час збору в UTC і явно задавати період порівняння.

Якщо для завдання достатньо отримувати відомості з певною частотою, документований параметр cache_timeout дає змогу вказати строк кешування в секундах; для IG кешування за замовчуванням вимкнене. Виберіть строк з урахуванням інтервалу моніторингу й зберігайте його разом із налаштуваннями збору, щоб під час тлумачення результатів можна було врахувати параметри запиту.

Що ви отримаєте

Після кількох запусків у вас буде файл із часовими знімками публічних показників і простою різницею, яку можна обчислити між вибраними датами. Його можна завантажити в Google Sheets, PostgreSQL або аналітичну систему; окремий шар обробки зможе сформувати сповіщення, коли зміна перевищить поріг, установлений командою. Поріг — ваше бізнес-правило, а не вбудована можливість API.

Маршрут профілю повертає поля акаунта, тож для аудиту саме нових публікацій знадобиться відповідний збір медіа, а не висновки з media_count. У довіднику IG API наведено окремий маршрут отримання публікацій із посторінковим завантаженням за user_id і параметром end_cursor; скористайтеся ним, якщо завдання передбачає вивчення самих дописів. Для описаного тут результату — історичної таблиці показників профілю — достатньо одного запиту на користувача й повторюваного збереження знімків.

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

Люди

Для цієї статті ще немає людей.

Продовжуйте читатиЯк оцінювати креаторів IG за динамікою публікацій: практичний пайплайн на Python
Читайте наступну статтю

Перетворіть прочитане на робочу інтеграцію

Досліджуйте API соціальних даних jsonscraper, тестуйте запити й створюйте нові процеси.

Переглянути API