API Douyin Тренды
Состояние API
Данные о состоянии этого API временно недоступны, поэтому неизвестно, как он работал в последнее время. Это не значит, что API не работает.
Получайте популярные ключевые слова из списков трендов Douyin. У каждого ключевого слова есть позиция, показатель популярности, число связанных видео, статей и прямых эфиров, метка и лучшая позиция. Выберите списки через boards (по умолчанию hotspot). hot_value является собственным показателем Douyin, и сравнивать его можно только в пределах одного списка.
Douyin Trending получает текущие записи из одного или нескольких списков трендов Douyin: позицию, фразу тренда, показатель популярности, число связанных видео, название списка и обложку, а также, если Douyin их показывает, время события, лучшую достигнутую позицию и число связанных постов и прямых трансляций. Эти данные показывают, что пользователи Douyin смотрят прямо сейчас, и помогают в контент-планировании, ньюсджекинге, раннем выявлении связанных с брендом тем и планировании публикаций.
Выберите один или несколько списков с помощью boards: hotspot, seeding, entertainment, social или challenge. Если параметр не указан, возвращается список hotspot. Ключевое слово не нужно. hot_value содержит внутренний показатель популярности Douyin, который можно сравнивать только в пределах одного списка и который часто отсутствует в списке hotspot. rank отражает позицию на момент вызова, поэтому выполняйте вызовы по расписанию и сохраняйте каждый снимок, чтобы видеть, как меняются позиции.
Цена: $0.56 за 1 000 запросов ($0.000556 за вызов). Неудачные вызовы и пустые результаты не оплачиваются. Синхронный режим. Для долгих задач добавьте в тело запроса "mode": "async", получите job_id и опрашивайте статус.
Промпт для ИИ
Помогите мне написать скрипт для сбора данных через эндпоинт EveryInfra Douyin Тренды (douyin/trending).
Как работает эндпоинт:
- Запрос: POST https://api.everyinfra.com/api/v1/social с заголовком Authorization: Bearer <API key>. Читайте ключ из переменной окружения EVERYINFRA_API_KEY и никогда не прописывайте его в коде.
- В теле запроса укажите platform: douyin и action: trending, а параметры передайте в params.
- Обязательных параметров нет.
- Необязательные параметры:
- boards: Типы списков трендов для действия trending; передаются одной строкой или массивом строк: hotspot, seeding, entertainment, social и challenge. Если параметр не передан или передан пустой массив, используется hotspot. (допустимые значения: challenge / entertainment / hotspot / seeding / social)
- limit: Максимальное число записей в этом вызове, целое число от 1 до 60. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. (по умолчанию: 20)
- Возвращает список записей. Основные поля каждой записи: rank (Позиция (нумерация с 1): место в тренда…), keyword (Ключевое слово: трендовая фраза в trend…), hot_value (Значение популярности, собственная метр…), video_count (Число видео: видео аккаунта в profile и…), board (Рейтинг, к которому относится запись), image_url, event_time (Время трендового события), sentence_id (ID трендовой фразы (trending)), group_id (ID трендового события (trending)), label (Числовой код значка записи в рейтинге (…), word_type (Числовой код типа трендовой фразы (tren…), article_count (Число связанных постов с изображениями…); всего полей: 19, полный список: https://api.everyinfra.com/api/v1/social/catalog?platform=douyin.
- Пример тела запроса:
{
"platform": "douyin",
"action": "trending",
"params": {}
}
- Цена: $0.56 за 1 000 запросов; неудачные и пустые результаты не оплачиваются.
- Для десятков или сотен целей добавьте в тело запроса "mode": "async": вы сразу получите job_id и сможете опрашивать GET https://api.everyinfra.com/api/v1/jobs/{job_id}, чтобы получить результат.
- При ответе 422 исправьте запрос, используя предложенные в ошибке имена параметров и допустимые значения; при ответе 429 или 503 подождите указанное в Retry-After время и повторите попытку.
Прежде чем писать код, спросите меня, какие цели мне нужны, сколько их будет, какие поля мне нужны и в каком формате вывести результат; затем согласуйте со мной план и примерную стоимость.Параметры запроса
| Имя | Расположение | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|---|
Authorization | header | string | Да | - | Укажите Bearer, а после него — ваш API-ключ. Создайте ключ в консоли; никогда не указывайте его в URL и не храните в репозитории кода. |
platform | body | string | Да | douyin | Идентификатор платформы, фиксированное значение. |
action | body | string | Да | trending | Идентификатор возможности, фиксированное значение. |
boards | body.params | array | Нет | - | Типы списков трендов для действия trending; передаются одной строкой или массивом строк: hotspot, seeding, entertainment, social и challenge. Если параметр не передан или передан пустой массив, используется hotspot.Допустимые значенияchallengeentertainmenthotspotseedingsocial |
limit | body.params | integer (1–60) | Нет | 20 | Максимальное число записей в этом вызове, целое число от 1 до 60. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. При значениях выше максимума эндпоинт возвращает ошибку 422 до списания средств. |
Примеры кода
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H 'Content-Type: application/json' \
--data-raw '{
"platform": "douyin",
"action": "trending",
"params": {}
}'Спецификация OpenAPI (JSON)Примеры читают ключ из переменной окружения EVERYINFRA_API_KEY; скопированный код никогда не содержит ваш ключ.
Пример ответа
Получено October 24, 2026 at 18:28 (UTC) вызовом этого API с параметрами из примера кода выше. results и count — реальный ответ этого вызова, из которого удалены персональные данные (имена, никнеймы, аватары, ссылки на профили, контакты); в списке оставлены первые 2. id, billing и quota меняются при каждом вызове, поэтому показана только их структура.
{
"id": "req_…",
"platform": "douyin",
"action": "trending",
"results": [
{
"rank": 1,
"keyword": "渡船之上 信仰如磐",
"video_count": 1,
"board": "hotspot",
"event_time": "2026-10-25 02:34:26",
"sentence_id": "2711825",
"label": 0,
"word_type": 14,
"is_pinned": true,
"platform": "douyin"
},
{
"rank": 2,
"keyword": "中超成都蓉城0:1大连英博",
"hot_value": 11367047,
"video_count": 12,
"board": "hotspot",
"image_url": "https://p5-ex-gddgtc-sign.douyinpic.com/tos-cn-i-dy/782a03e57ee24eb7b51eac3c0ee20e5e~noop.jpeg?lk3s=bfd515bb&x-expires=1792886400&x-signature=TFoV42oMHa89HkqBwV3AKbDx6sI%3D&from=3218412987",
"event_time": "2026-10-24T07:01:06.000Z",
"sentence_id": "2711309",
"group_id": "7699487992537503010",
"label": 3,
"word_type": 1,
"article_count": 0,
"is_pinned": false,
"max_rank": 1,
"live_room_count": 0,
"topic_view_count": 59034929,
"sentence_tag": 5000,
"label_icon_url": "https://lf3-static.bytednsdoc.com/obj/eden-cn/vjl_avo_upfbvk/ljhwZthlaukjlkulzlp/hotspot_detail_page/3.png",
"platform": "douyin"
}
],
"count": 20,
"billing": {
"charged": …,
"charged_usd": …,
"balance_after_usd": …,
…
},
"quota": { … }
}Поля ответа
Бизнес-данные находятся в results. В таблице перечислены поля, которые может содержать запись; значения, которые платформа не показывает, никогда не выдумываются.
| Поле | Значение |
|---|---|
rank | Позиция (нумерация с 1): место в трендах в trending, позиция в рейтинге Xingtu в xingtu_creator_rankings, позиция в поисковом рейтинге в billboard_search_hot и место подсказки в поисковой строке Douyin в search_suggest. |
keyword | Ключевое слово: трендовая фраза в trending, поисковый запрос в billboard_search_hot, поисковая подсказка в search_suggest. |
hot_value | Значение популярности, собственная метрика Douyin, сопоставимая только в пределах одного рейтинга и временного интервала: в trending это популярность записи (в рейтинге горячих тем часто отсутствует); в видеорейтингах Hot Spot Treasure это оценка популярности в рейтинге, записи упорядочены по убыванию; в billboard_search_hot это популярность поискового запроса за этот интервал. |
video_count | Число видео: видео аккаунта в profile и billboard_account_search, видео, связанные с записью, в trending. |
board | Рейтинг, к которому относится запись. |
image_url | Ссылка на изображение. Возможности с несколькими изображениями могут возвращать массив image_urls. |
event_time | Время трендового события. |
sentence_id | ID трендовой фразы (trending). |
group_id | ID трендового события (trending); у некоторых записей пустой. |
label | Числовой код значка записи в рейтинге (trending), например «горячее», «новое» или «набирает популярность»; 0 означает, что значка нет. |
word_type | Числовой код типа трендовой фразы (trending). |
article_count | Число связанных постов с изображениями в тренде (trending). |
is_pinned | Закреплён ли элемент (записи постов: закреплён в профиле автора; trending: закреплён в рейтинге). |
max_rank | Наивысшая позиция, которой тренд достиг в рейтинге (trending). |
live_room_count | Число связанных прямых эфиров в тренде (trending). |
topic_view_count | Трактуется так же, как на самой платформе |
sentence_tag | Трактуется так же, как на самой платформе |
label_icon_url | Трактуется так же, как на самой платформе |
related_music_id | Трактуется так же, как на самой платформе |
platform | Идентификатор исходной платформы. Совпадает со значением platform в запросе (например, xiaohongshu, tiktok). |
FAQ
Можно ли запросить несколько списков сразу?
Да. boards принимает одну строку или массив, а поле board каждой записи указывает, из какого списка она получена, поэтому группируйте по нему, прежде чем объединять результаты. Если не передать boards или передать пустой массив, вернётся только список hotspot.
Можно ли сравнивать hot_value между списками?
Нет. Это собственный показатель популярности Douyin, и он имеет смысл только в пределах одного списка; в записях hotspot он часто пустой. Для сравнения между списками используйте rank или счётчики связанного контента, например video_count и article_count.
Как отслеживать тренд во времени?
Вызывайте по расписанию и сохраняйте каждый результат со временем вызова. sentence_id связывает записи одной и той же фразы тренда между снимками, max_rank показывает лучшую достигнутую ею позицию, а is_pinned отмечает фразу, закреплённую вверху списка; такие фразы, возможно, стоит исключить из анализа позиций.
Ошибки и оплата
- 401
- Ключ отсутствует или недействителен.
- 402
- Недостаточно средств на балансе. Сначала пополните баланс.
- 422
- Недопустимое имя или значение параметра. Исправьте запрос по подсказкам в сообщении об ошибке. Без списания.
- 429
- Достигнут лимит запросов в минуту. Подождите указанное в Retry-After время, затем повторите попытку.
- 503
- Не удалось выполнить. Зарезервированная сумма возвращается на баланс. Если результат неизвестен, проверьте его перед повторной попыткой.
- 200 (пусто)
- Нет данных. Без списания.