jsonscraper

Мониторинг TikTok-хэштегов на Python: рабочий запрос к API

Проверяем маршрут и параметры в Postman, сохраняем ответы API и строим историю наблюдений по подтверждённым данным.

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

Маркетинговая команда замечает, что в TikTok появляются ролики о новом продукте, но вручную проверять несколько хэштегов каждый день трудно. Чтобы сравнивать публикации и видимые показатели во времени, нужен повторяемый сбор с меткой времени, архивом исходных ответов и проверкой изменений.

Article: Мониторинг TikTok-хэштегов на Python: рабочий запрос к API
Summary: Практическое руководство по сбору публичных TikTok-видео по хэштегу: проверка маршрута, запросы через Python, архивирование JSON и обработка подтверждённых полей ответа.
Image role: cover — the central idea
Section: 
Visual subject: Editorial still-life photograph of a printed social analytics timeline beside a smartphone displaying a generic short-video hashtag feed, colored hashtag cards and dated JSON observation she
© jsonscraper · AI-generated illustration

Для такого прототипа подходит TikTok Scraper API от jsonscraper: на странице продукта перечислены маршруты для хэштегов, пользователей, видео и поиска. Первый шаг — проверить нужный маршрут и формат ответа в Postman, затем перенести подтверждённую конфигурацию в Python. Так можно построить повторяемый процесс, извлекая только те поля, которые действительно присутствуют в ответе.

Задача: увидеть динамику, а не отдельный популярный ролик

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

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

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

Что подтверждает документация API

На странице TikTok Scraper API указан базовый адрес https://tiktok.evelode.com и перечислены маршруты класса Hashtag: GET /getHashtagInfo, GET /getHashtagFeed и GET /getHashtagFeedByID. Страница также показывает пример запроса к другому маршруту с параметром license_key и описывает настройку ключа в коллекции Postman.

Для GET /getHashtagFeed официальная спецификация маршрутов указывает обязательный параметр query (URL хэштега или имя тега), а также необязательные cursor, count, region и cache_timeout. В ответе ленты ожидается массив tiktok.aweme_list; среди перечисленных полей элемента — aweme_id, desc, create_time, share_url, данные автора и statistics. Отдельные поля могут отсутствовать, поэтому перед обработкой проверяйте фактический JSON.

В коллекции jsonscraper в Postman удобно выполнить пробный запрос, сверить фактический ответ и получить тестовый пример для последующей проверки кода. Для авторизации передаётся license_key; ключ храните в переменной окружения и не выводите в логи.

Сначала проверьте запрос в Postman

Начните с одного тестового хэштега. В коллекции выберите маршрут ленты хэштега, задайте license_key способом, указанным в документации, и передайте имя тега в query. При необходимости добавьте count и код страны в region. Выполните запрос и проверьте HTTP-статус, поле верхнего уровня status и содержимое tiktok.aweme_list.

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

Ключ API храните в переменной окружения, а не в исходном файле. Если ключ передаётся в URL, маскируйте его при журналировании запроса, чтобы полный адрес не попадал в логи.

Python-клиент для запроса и архивации

Маршрут и имена параметров ниже соответствуют опубликованной спецификации: для хэштега используется query, а авторизация передаётся через license_key. Пример совместим с Python 3.8+ и сохраняет исходный ответ вместе с метаданными запуска.

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

import requests

BASE_URL = "https://tiktok.evelode.com"
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]


def fetch_hashtag_feed(hashtag: str) -> dict:
    params = {
        "license_key": API_KEY,
        "query": hashtag,
        "count": 20,
    }
    response = requests.get(
        f"{BASE_URL}/getHashtagFeed",
        params=params,
        timeout=45,
    )
    response.raise_for_status()
    payload = response.json()
    if payload.get("status") != "ok":
        raise RuntimeError("API вернул статус, отличный от ok")
    return payload


def archive_response(hashtag: str, payload: dict) -> Path:
    collected_at = datetime.now(timezone.utc).isoformat()
    safe_tag = hashtag.lstrip("#").replace("/", "_")
    output_dir = Path("data/raw") / safe_tag
    output_dir.mkdir(parents=True, exist_ok=True)

    filename = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ.json")
    file_path = output_dir / filename
    file_path.write_text(
        json.dumps(
            {
                "hashtag": hashtag,
                "collected_at": collected_at,
                "response": payload,
            },
            ensure_ascii=False,
            indent=2,
        ),
        encoding="utf-8",
    )
    return file_path


if __name__ == "__main__":
    tag = "#примертемы"
    payload = fetch_hashtag_feed(tag)
    saved_path = archive_response(tag, payload)
    print(f"Архив сохранён: {saved_path}")

Перед запуском задайте переменную окружения JSONSCRAPER_TIKTOK_LICENSE_KEY. Запрос использует подтверждённый query и ограничивает число запрошенных элементов через count. В ответе проверяются внешний статус и JSON-статус; архив сохраняет фактические данные для последующей обработки. Проверьте запуск на одном хэштеге, прежде чем добавлять расписание и аналитику.

Как добавить нормализацию без хрупких предположений

В ответе ленты документация указывает массив tiktok.aweme_list. Перед преобразованием проверьте, что tiktok — объект, а aweme_list — список. Для каждого элемента извлекайте только подтверждённые поля, например aweme_id, desc, create_time, share_url и значения из statistics, если они присутствуют.

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

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

Метрики на основе повторных наблюдений

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

Количество впервые обнаруженных публикаций за день можно считать по результатам ваших запусков. Эта метрика описывает поток, возвращённый конкретными запросами при заданных параметрах и расписании. Она позволяет сравнивать собственные снимки, если метод сбора остаётся последовательным.

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

Расписание и обработка ошибок

Когда запрос и разбор проверены, запускайте скрипт по расписанию — например, через cron, GitHub Actions или оркестратор данных. Список хэштегов вынесите в отдельную конфигурацию, чтобы добавлять и удалять темы без изменения логики клиента.

Для автоматического запуска задайте тайм-аут, ограниченное число повторов при временных сетевых ошибках и журналирование HTTP-статуса и длительности запроса. Не записывайте ключ в журнал. При ошибке разбора сохраняйте безопасные диагностические сведения и уведомляйте ответственного сотрудника.

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

Классификация и автоматизация отчётов

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

Числовые показатели рассчитывайте обычным кодом, чтобы повторные запуски давали воспроизводимую арифметику. Классификатор полезен для обработки текста; итоговый отчёт должен связывать выводы с конкретными строками и датами наблюдений.

В no-code-сценарии те же этапы можно связать в автоматизаторе: расписание, HTTP-запрос по проверенной конфигурации, проверка ответа, сохранение JSON, преобразование подтверждённых полей и уведомление об ошибке. Сначала проверьте контракт в Postman, затем переносите его в Python, n8n или Make.

Ожидаемый результат и следующий шаг

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

Начните с одного маршрута и одного реального ответа: выполните запрос /getHashtagFeed с параметром query, сохраните JSON и затем добавляйте разбор полей и расписание. Страница TikTok Scraper API показывает базовый адрес и карту маршрутов, а спецификация маршрутов содержит имена параметров для реализации клиента.

Персоны

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

Читайте дальшеКак архивировать результаты поиска TikTok на Python
Читать следующую статью

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

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

Смотреть API