jsonscraper

Як вимірювати динаміку контенту конкурентів в IG: API-пайплайн на Python

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

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

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

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

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

Спочатку визначте, що саме порівнювати

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

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

Підключіть задокументований маршрут

У документації jsonscraper для базового запиту вказано адресу https://ig.jsonscraper.com і маршрут GET /v1/user/by/username. Для отримання дописів карта API також містить GET /v1/user/medias/chunk. Перевірте точний набір параметрів і полів відповіді у пов’язаній із продуктом колекції Postman: не прив’язуйте обробник до припущеної структури, доки не вивчите реальну відповідь на свій запит.

Для первинної перевірки скористайтеся задокументованим прикладом запиту профілю; передавайте ключ через змінну середовища, а не записуйте його у вихідний код:

curl -G "https://ig.jsonscraper.com/v1/user/by/username" \
  --data-urlencode "username=apple" \
  --data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
  --data-urlencode "cache_timeout=60"

У прикладі на сторінці продукту для маршруту профілю вказано username, license_key і cache_timeout. Застосовуйте параметр до інших маршрутів лише тоді, коли його вказано для них у документації. Для запиту дописів візьміть актуальні назви параметрів зі специфікації цього маршруту.

Зберігайте відповіді як часові знімки

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

import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

BASE_URL = "https://ig.jsonscraper.com"
USERNAME = os.environ["IG_USERNAME"]
LICENSE_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
OUTPUT = Path("instagram_snapshots.jsonl")

# Заповніть endpoint і параметри за документацією маршруту
# GET /v1/user/medias/chunk у колекції Postman.
MEDIA_PATH = os.environ["IG_MEDIA_PATH"]
MEDIA_PARAMS = json.loads(os.environ["IG_MEDIA_PARAMS_JSON"])

params = {
    **MEDIA_PARAMS,
    "username": USERNAME,
    "license_key": LICENSE_KEY,
}

response = requests.get(
    f"{BASE_URL}{MEDIA_PATH}", params=params, timeout=30
)
response.raise_for_status()
payload = response.json()

record = {
    "collected_at": datetime.now(timezone.utc).isoformat(),
    "username": USERNAME,
    "response": payload,
}
with OUTPUT.open("a", encoding="utf-8") as file:
    file.write(json.dumps(record, ensure_ascii=False) + "\n")

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

Додайте розклад і метрики

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

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

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

Що отримаєте в результаті

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

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

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

People

No people listed for this article yet.

Keep readingЯк парсити IG за допомогою Python
Read the next article

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

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

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