jsonscraper

Как собрать ежедневный мониторинг IG-креаторов на Python

Пайплайн для маркетолога или аналитика: получать публичные данные профилей, сохранять снимки и находить изменения без ручной проверки аккаунтов.

Редакционная политика Сообщить об ошибке

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

Article: Как собрать ежедневный мониторинг IG-креаторов на Python
Summary: Показываем, как автоматизировать ежедневный мониторинг списка публичных IG-профилей через IG Scraper API: запросить профиль, хранить историю наблюдений и формировать отчёт об изменениях.
Image role: cover — the central idea
Section: 
Visual subject: A data pipeline dashboard concept showing a neatly organized grid of public social media profile cards feeding timestamped JSON records into a simple analytics c
© jsonscraper · AI-generated illustration

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

Сначала определите, что именно нужно отслеживать

Для поиска потенциальных партнёров обычно достаточно короткого списка полей: имя пользователя, идентификатор профиля, признак верификации, число подписчиков, число публикаций, биография и время сбора. Эти значения позволяют заметить, что профиль изменился, и помогают сопоставлять аккаунты по выбранной нише. Фактические поля зависят от ответа API; перед обработкой стоит посмотреть текущий JSON в документации и не полагаться на поля, которых там нет.

Чтобы видеть контентную активность, профили можно дополнять данными о публикациях. В карте IG Scraper API перечислены отдельные маршруты для пользовательских медиа и видеоклипов, а также запросы для медиа и комментариев. Подключайте их как отдельный этап после проверки профиля: сначала подтвердите нужные параметры и форму ответа в Postman, затем фиксируйте только те поля, которые действительно нужны вашему отчёту.

Полезное правило для мониторинга: хранить сырые ответы отдельно от нормализованных строк. Сырой JSON позволяет повторно проверить интерпретацию, если API-ответ изменится; нормализованная таблица удобна для графиков и фильтров. В обоих случаях сохраняйте время запроса, чтобы отличать актуальное значение от исторического.

Подключите IG Scraper API

У jsonscraper базовый адрес IG API — https://ig.jsonscraper.com. В официальной документации приведён запрос профиля по имени пользователя: GET /v1/user/by/username с параметрами username, license_key и cache_timeout. Например, для тестового аккаунта документация показывает URL вида https://ig.jsonscraper.com/v1/user/by/username?username=apple&license_key=YOUR_LICENSE_KEY&cache_timeout=60. Параметр кэширования следует использовать только согласно условиям конкретного маршрута и собственной задаче: частота опроса должна соответствовать тому, насколько быстро вам нужны обновления.

Для проверки структуры ответа откройте страницу IG Scraper API и перейдите к связанной Postman-коллекции. В примере успешный ответ содержит статус, объект ig с идентификатором профиля, именем пользователя и признаком верификации, а также временную метку. Документация отдельно перечисляет группы маршрутов для пользователей, медиа, поиска, хэштегов и локаций; это позволяет расширять сбор по мере того, как определится аналитическая задача.

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

Минимальный рабочий пример на Python

Ниже скрипт читает имена пользователей из переменной окружения, запрашивает каждый профиль и записывает JSONL-файл. JSONL удобен для начального прототипа: одна строка — один снимок. Код намеренно сохраняет весь объект ответа, а не предполагает, что все поля профиля всегда присутствуют. После первого запуска изучите фактический ответ и только потом создавайте стабильную схему таблицы.

import json
import os
import time
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlencode
from urllib.request import Request, urlopen

API_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
USERNAMES = [name.strip() for name in os.environ["IG_USERNAMES"].split(",") if name.strip()]
BASE_URL = "https://ig.jsonscraper.com/v1/user/by/username"
OUTPUT = Path("instagram_profiles.jsonl")


def fetch_profile(username: str) -> dict:
    query = urlencode({
        "username": username,
        "license_key": API_KEY,
        "cache_timeout": 60,
    })
    request = Request(f"{BASE_URL}?{query}", headers={"Accept": "application/json"})
    with urlopen(request, timeout=30) as response:
        return json.load(response)


with OUTPUT.open("a", encoding="utf-8") as output:
    for username in USERNAMES:
        collected_at = datetime.now(timezone.utc).isoformat()
        try:
            payload = fetch_profile(username)
            row = {
                "collected_at": collected_at,
                "requested_username": username,
                "ok": True,
                "payload": payload,
            }
        except Exception as exc:
            row = {
                "collected_at": collected_at,
                "requested_username": username,
                "ok": False,
                "error": str(exc),
            }

        output.write(json.dumps(row, ensure_ascii=False) + "\n")
        output.flush()
        time.sleep(1)

Перед запуском задайте конфигурацию в окружении:

export JSONSCRAPER_LICENSE_KEY="ваш_ключ"
export IG_USERNAMES="creator_one,creator_two,creator_three"
python monitor.py

Пауза в примере нужна для более спокойной последовательной обработки списка; это не заявленный лимит API. Для рабочего расписания настройте частоту и обработку ошибок с учётом вашего плана, документации и требований к актуальности. Если запрос завершился ошибкой, сохранённая запись помогает увидеть проблему, а не молча пропустить аккаунт.

Нормализуйте данные после проверки ответа

Когда вы изучили ответ для используемого маршрута, выделите устойчивый набор колонок. Например, таблица наблюдений может включать время сбора, username, идентификатор профиля, проверенный статус ответа и нужные счётчики — если они присутствуют в JSON. Для каждого поля явно определите поведение при пропуске: сохранить пустое значение, пометить запись как неполную или отправить её на повторный просмотр.

Не перезаписывайте вчерашнюю строку сегодняшним значением. История снимков нужна, чтобы посчитать разницу между датами и заметить изменения. Для числа подписчиков вычисляйте разность между соседними успешными наблюдениями одного и того же профиля; сравнение по стабильному идентификатору предпочтительнее сравнения только по имени пользователя, которое может измениться.

Сырой ответ стоит хранить с ограниченным сроком, если он содержит больше данных, чем требуется для отчёта. Нормализованная таблица должна включать лишь поля, оправданные конкретной задачей. Для публичного исследования креаторов это обычно уменьшает объём данных и упрощает объяснение того, зачем сведения собираются.

Добавьте ежедневный запуск и уведомление

На сервере скрипт можно запускать планировщиком задач, например cron, а в автоматизаторе — по расписанию и через HTTP-запрос. Базовая цепочка состоит из триггера, чтения списка профилей, последовательного вызова маршрута, проверки успешного ответа, записи строки в хранилище и подготовки сводки. В n8n или Make те же этапы удобно разделить на отдельные узлы, чтобы сбой одного профиля не останавливал всю подборку.

Для отчёта рассчитывайте простые показатели: сколько профилей успешно обработано, какие изменили число подписчиков относительно прошлого успешного снимка и когда последний раз обновлялась запись. Отдельный список ошибок помогает быстро выявлять неверные имена, недоступные профили и временные проблемы запроса. Если добавляете публикации, сначала согласуйте нужную глубину истории и набор полей, затем подключите соответствующий маршрут из документации.

Кэширование также стоит настраивать осмысленно. Документация описывает cache_timeout как параметр поддерживаемых маршрутов для повторного использования недавних результатов. Для ежедневного сравнительного отчёта задайте режим, согласованный с требуемой свежестью данных; не смешивайте кэшированный ответ с новой контрольной точкой, не отмечая это в журнале.

Что покажет такой мониторинг

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

Используйте метрики как фильтр для исследовательской работы, а не как автоматическое решение о сотрудничестве. Число подписчиков само по себе не описывает соответствие аудитории бренду, качество контента или коммерческую пригодность автора. Добавьте человеческую проверку профиля и сохраните критерии отбора отдельно от технического сбора.

Для пробного запуска откройте коллекцию IG API в Postman, настройте ключ и выполните запрос профиля. Затем перенесите проверенные параметры в скрипт или автоматизацию. Так вы получите воспроизводимый ежедневный сбор, историю изменений и основу для аналитического отчёта, не начиная с самописного парсера страниц.

Персоны

Для этой статьи персоны пока не указаны.

Читайте дальшеКак измерять динамику контента конкурентов в IG: API-пайплайн на Python
Читать следующую статью

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

Изучайте API социальных данных jsonscraper, тестируйте запросы и создавайте новые процессы.

Смотреть API