jsonscraper

TikTok Scraper API: как получить данные о видео в JSON с jsonscraper

Практический старт с маршрутом getVideoByID, проверкой JSON и обработкой ключа в cURL и Python.

Если приложению нужны сведения о конкретном TikTok-видео, удобнее начать с одного запроса и проверить, какие данные он возвращает. Затем ответ можно валидировать и подготовить к хранению или аналитике.

На странице TikTok Scraper API от jsonscraper перечислены маршруты для видео, пользователей, поиска, хештегов, музыки и других типов данных. Ниже разберём документированный запрос getVideoByID и способы безопасно обработать его ответ. Примеры основаны на материалах поставщика; перед использованием проверьте их с действующим ключом и актуальной документацией.

Первый запрос: получить сведения о видео

Laptop with code and plant in coffee shop
James Harrison

В документации getVideoByID в Postman указан метод GET и параметр video_id. В примере также показаны region и cache_timeout. Базовый адрес, опубликованный на странице сервиса, — https://tiktok.evelode.com.

Пример запроса через cURL:

export JSONSCRAPER_LICENSE_KEY="ваш_ключ"

curl --get "https://tiktok.evelode.com/getVideoByID" \
  --data-urlencode "video_id=7106855913906081070" \
  --data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
  --data-urlencode "region=US"

ID в примере взят из опубликованного запроса. Замените его на ID видео, которое нужно проверить. Храните ключ в переменной окружения или менеджере секретов: не добавляйте его в публичный репозиторий, клиентский JavaScript или логи.

Postman описывает region как код региона и указывает US в качестве значения по умолчанию. Для cache_timeout документация указывает окно кэширования по умолчанию в 3600 секунд; значение 0 отключает кэширование. Если этот параметр нужен вашему сценарию, его можно передать явно:

curl --get "https://tiktok.evelode.com/getVideoByID" \
  --data-urlencode "video_id=7106855913906081070" \
  --data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
  --data-urlencode "region=US" \
  --data-urlencode "cache_timeout=0"

Это адаптация параметров, опубликованных для маршрута, а не гарантия, что все ответы будут иметь одинаковую структуру или что отключение кэширования подходит для любой задачи. Перед внедрением сверьте авторизацию и параметры с текущей коллекцией: Postman может передавать ключ через настроенный API Key, а пример cURL выше показывает его как параметр URL.

Тот же запрос на Python

Ниже — вариант на стандартной библиотеке Python. Он формирует GET-запрос, передаёт параметры и обрабатывает сетевую ошибку, HTTP-ошибку и некорректный JSON.

import json
import os
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import Request, urlopen

base_url = "https://tiktok.evelode.com/getVideoByID"
license_key = os.environ.get("JSONSCRAPER_LICENSE_KEY")

if not license_key:
    raise RuntimeError("Задайте переменную JSONSCRAPER_LICENSE_KEY")

params = {
    "video_id": "7106855913906081070",
    "license_key": license_key,
    "region": "US",
}

url = f"{base_url}?{urlencode(params)}"
request = Request(url, method="GET")

try:
    with urlopen(request, timeout=30) as response:
        status_code = response.status
        payload = json.loads(response.read().decode("utf-8"))
except HTTPError as error:
    print(f"HTTP-ошибка: {error.code}")
    raise
except URLError as error:
    print(f"Сетевая ошибка: {error.reason}")
    raise
except json.JSONDecodeError:
    raise RuntimeError("Ответ сервиса не удалось разобрать как JSON")

print("HTTP-статус:", status_code)
print("Верхнеуровневые ключи:", list(payload.keys()))

Это адаптация документированного запроса, а не пример, который поставщик отдельно тестирует для Python. Она также не описывает все возможные ответы сервиса. Поскольку ключ передаётся в URL, не выводите полный URL в логи: в нём может оказаться секрет.

Как проверять JSON-ответ

В опубликованном ответе Postman есть поле status и вложенный объект tiktok.aweme_detail с данными видео и автора. Это пример формы одного ответа, а не гарантия неизменной схемы. Изучить его можно в примере ответа для getVideoByID.

При чтении вложенных полей проверяйте каждый уровень:

def get_video_details(payload):
    tiktok = payload.get("tiktok")
    if not isinstance(tiktok, dict):
        return None

    details = tiktok.get("aweme_detail")
    if not isinstance(details, dict):
        return None

    return details

details = get_video_details(payload)

if details is None:
    print("В ответе нет ожидаемого объекта с данными видео")
else:
    video_id = details.get("id")
    description = details.get("desc")
    author = details.get("author")

    print("ID:", video_id)
    print("Описание:", description)
    print("Автор:", author)

Названия полей взяты из опубликованного примера. Проверка через .get() не означает, что поля обязательны: она позволяет обработать ответ, в котором ожидаемых значений нет. Если логика приложения зависит от конкретного поля, проверьте его наличие на ответах для своего сценария и предусмотрите поведение на случай отсутствия.

Полезно разделять три проверки:

  1. Транспорт: получен ли HTTP-ответ и каков его статус.
  2. Формат: удалось ли разобрать тело ответа как JSON.
  3. Содержание: присутствуют ли данные, нужные приложению.

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

От одного запроса к рабочему конвейеру

Speedcurve Performance Analytics
Luke Chesser

Для прототипа достаточно отправить запрос и вывести несколько значений. Для регулярной обработки разделите работу на этапы:

Запрос → проверка → нормализация → дедупликация → хранение.

  • Запрос. Получите ответ по документированному маршруту и отдельно сохраните технический статус.
  • Проверка. Убедитесь, что тело разбирается как JSON и содержит данные, необходимые конкретной задаче.
  • Нормализация. Переложите нужные значения в собственную модель данных. Не переносите всю вложенную структуру в базу, если приложению нужны только отдельные поля.
  • Дедупликация. Выберите идентификатор после проверки, что он присутствует и подходит для вашей задачи. Не предполагайте, что он всегда будет доступен во всех ответах.
  • Хранение. При необходимости сохраняйте время запроса и исходный ответ отдельно от нормализованной записи. Это поможет понять, какие изменения внесло приложение.

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

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

Кэширование и регион

В описании маршрута getVideoByID параметр cache_timeout задаёт время кэширования в секундах: указано значение по умолчанию 3600 секунд, а 0 отключает кэширование. Параметр region описан как код страны; в документации приведён пример US. Перед внедрением сверьте эти сведения с актуальной документацией запроса в Postman.

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

Какие задачи можно изучить дальше

На странице продукта перечислены маршруты для поиска видео и пользователей, хештегов, локаций, музыки и трендов. Среди примеров — searchVideo, searchHashtag, getUserFeed и getTrendingFeed. Это опубликованная поставщиком карта маршрутов, а не независимая проверка каждого из них. Параметры и форму ответа изучайте в документации конкретного маршрута: их нельзя автоматически переносить из примера getVideoByID.

jsonscraper предлагает использовать коллекцию Postman для настройки ключа и запуска запросов. Это может быть удобным способом проверить отдельный маршрут до написания интеграции. Сервис также перечисляет сценарии автоматизации, но совместимость конкретного процесса проверяйте отдельно в своей конфигурации. Экспортируя коллекцию или делясь ею, убедитесь, что в ней не остался рабочий ключ.

Что проверить перед использованием в приложении

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

  • Выполняется ли запрос с действующим ключом и корректным ID.
  • Как приложение обрабатывает неверный или отсутствующий параметр.
  • Что происходит, если JSON корректен, но нужного поля нет.
  • Как обрабатываются HTTP-ошибка, сетевой сбой и тайм-аут.
  • Какие поля подходят для идентификации и дедупликации именно в вашей задаче.
  • Как меняется результат повторного запроса при разных значениях cache_timeout, если вы используете этот параметр.

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

Начните с одного воспроизводимого сценария

Проверьте getVideoByID на нужном видео, изучите фактический JSON и напишите обработчик, который учитывает отсутствующие поля и ошибки. Затем при необходимости расширьте процесс нормализацией, дедупликацией и хранением.

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

Похожие материалы

Security · Руководство

Забытые API-ключи: как отозвать их, не остановив сервис

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

Community Pulse · Руководство

Claude Code или Codex: сравнивайте не бренд, а свою работу

Отзывы разработчиков о Claude Code и Codex расходятся, а исследование PR не указывает на универсального победителя. Практический способ сравнить инструменты — проверить их на задачах и в среде, где вы действительно работаете.

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

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

Смотреть API