Наша собственная статистика посещений включена всегда. Google Analytics помогает нам понять, как пользуются нашими публичными страницами (но не вашим рабочим пространством после входа), и включается только с вашего разрешения. См. нашу политику конфиденциальности.

API Douyin Посты пользователя

POST

Состояние API

Данные о состоянии этого API временно недоступны, поэтому неизвестно, как он работал в последнее время. Это не значит, что API не работает.

Отслеживайте видео, которые публикует аккаунт Douyin, начиная с новых. У каждого видео есть подпись, хештеги, длительность, счётчики вовлечённости и время публикации. Начинайте пагинацию с пустым page_token. Передавайте каждый next_page_token обратно в течение 24 часов. since задаёт самую раннюю дату публикации.

Douyin Posts by user выводит список видео, опубликованных одним аккаунтом, по его user_id. Каждая запись содержит подпись, хештеги, длительность, показатели вовлечённости и время публикации. Используйте эту возможность, чтобы увидеть, что публикует аккаунт и какие видео работают лучше, когда вы оцениваете авторов, следите за аккаунтами конкурентов или изучаете закономерности публикаций.

user_id — это secUid аккаунта, который обычно начинается с MS4w; возьмите его из author_id в результатах поиска или из ссылки на профиль. Никнеймы и короткие числовые Douyin ID не подходят. Вызов без page_token возвращает последнюю порцию видео и принимает since; чтобы пройти весь список видео, начните с пустого page_token и передавайте обратно каждый next_page_token. При сравнении видео не учитывайте view_count, поскольку Douyin не публикует число просмотров.

Цена: $0.56 за 1 000 запросов ($0.000556 за вызов). Неудачные вызовы и пустые результаты не оплачиваются. Синхронный режим. Для долгих задач добавьте в тело запроса "mode": "async", получите job_id и опрашивайте статус.

Промпт для ИИ

Помогите мне написать скрипт для сбора данных через эндпоинт EveryInfra Douyin Посты пользователя (douyin/user_posts).

Как работает эндпоинт:
- Запрос: POST https://api.everyinfra.com/api/v1/social с заголовком Authorization: Bearer <API key>. Читайте ключ из переменной окружения EVERYINFRA_API_KEY и никогда не прописывайте его в коде.
- В теле запроса укажите platform: douyin и action: user_posts, а параметры передайте в params.
- Обязательные параметры:
  - user_id: Строка secUid пользователя Douyin (обычно начинается с MS4w), а не никнейм и не короткий числовой Douyin ID. Используется для указания аккаунта в действиях profile и user_posts.
- Необязательные параметры:
  - page_token: Токен страницы для user_posts. Чтобы начать с самой новой страницы, отправьте пустую строку page_token="", затем передавайте next_page_token из каждого ответа без изменений, не меняя остальные параметры.
  - since: Задаёт нижнюю границу диапазона дат публикации видео в действиях profile и user_posts в формате YYYY-MM-DD. Фильтрует видео, полученные по запросу, а не дату создания аккаунта.
  - limit: Максимальное число записей в этом вызове, целое число от 1 до 100. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. (по умолчанию: 20)
- Возвращает список записей. Основные поля каждой записи: next_page_token (Токен страницы (search / user_posts / c…), id, url, text, media_type (Тип медиа: video или image для постов с…), video_url (URL воспроизведения видео (подписанный,…), like_count, comment_count, share_count, collect_count, view_count (Число воспроизведений), author_name; всего полей: 54, полный список: https://api.everyinfra.com/api/v1/social/catalog?platform=douyin.
- Пример тела запроса:
{
  "platform": "douyin",
  "action": "user_posts",
  "params": {
    "user_id": "https://www.douyin.com/user/MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS"
  }
}
- Цена: $0.56 за 1 000 запросов; неудачные и пустые результаты не оплачиваются.
- Для десятков или сотен целей добавьте в тело запроса "mode": "async": вы сразу получите job_id и сможете опрашивать GET https://api.everyinfra.com/api/v1/jobs/{job_id}, чтобы получить результат.
- При ответе 422 исправьте запрос, используя предложенные в ошибке имена параметров и допустимые значения; при ответе 429 или 503 подождите указанное в Retry-After время и повторите попытку.

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

Параметры запроса

ИмяРасположениеТипОбязательныйПо умолчаниюОписание
AuthorizationheaderstringДа-Укажите Bearer, а после него — ваш API-ключ. Создайте ключ в консоли; никогда не указывайте его в URL и не храните в репозитории кода.
platformbodystringДаdouyinИдентификатор платформы, фиксированное значение.
actionbodystringДаuser_postsИдентификатор возможности, фиксированное значение.
user_idbody.paramsstringДа-Строка secUid пользователя Douyin (обычно начинается с MS4w), а не никнейм и не короткий числовой Douyin ID. Используется для указания аккаунта в действиях profile и user_posts; её можно взять из поля author_id в результатах поиска или из URL профиля пользователя.
page_tokenbody.paramsstringНет-Токен страницы для user_posts. Чтобы начать с самой новой страницы, отправьте пустую строку page_token="", затем передавайте next_page_token из каждого ответа без изменений, не меняя остальные параметры. Токены действуют 24 часа и работают только для того же аккаунта и тех же параметров; на последней странице нет next_page_token. Страницы содержат до 100 записей, сначала новые, и не учитывают нижнюю границу since. Если нужен диапазон дат, фильтруйте по posted_at на своей стороне. Каждая страница соответствует одному вызову.
sincebody.paramsdateНет-Задаёт нижнюю границу диапазона дат публикации видео в действиях profile и user_posts в формате YYYY-MM-DD. Фильтрует видео, полученные по запросу, а не дату создания аккаунта. Если параметр не передан, фильтр по дате не применяется.
limitbody.paramsinteger (1–100)Нет20Максимальное число записей в этом вызове, целое число от 1 до 100. Если параметр не указан, применяется значение по умолчанию; вызов может вернуть меньше записей. При значениях выше максимума эндпоинт возвращает ошибку 422 до списания средств.

Примеры кода

bash
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": "user_posts",
  "params": {
    "user_id": "https://www.douyin.com/user/MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS"
  }
}'

Спецификация OpenAPI (JSON)Примеры читают ключ из переменной окружения EVERYINFRA_API_KEY; скопированный код никогда не содержит ваш ключ.

Пример ответа

Реальный ответ

Получено September 26, 2026 at 08:56 (UTC) вызовом этого API с параметрами из примера кода выше. results и count — реальный ответ этого вызова, из которого удалены персональные данные (имена, никнеймы, аватары, ссылки на профили, контакты); в списке оставлены первые 2. id, billing и quota меняются при каждом вызове, поэтому показана только их структура.

json
{
  "id": "req_…",
  "platform": "douyin",
  "action": "user_posts",
  "results": [
    {
      "id": "•••",
      "url": "https://www.douyin.com/video/7534316807973260587",
      "text": "10个实用技巧,告别说英语时忘词! #英语学习视频 #英语学习分享 #英语听力磨耳朵 #零基础学英语口语",
      "media_type": "video",
      "like_count": 7310,
      "comment_count": 80,
      "share_count": 1378,
      "collect_count": 6115,
      "view_count": 0,
      "author_name": "•••",
      "author_id": "MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS",
      "author_douyin_id": "•••",
      "author_follower_count": 48341,
      "region": "河北",
      "posted_at": "2025-08-04T00:10:00+00:00",
      "platform": "douyin",
      "duration_sec": 244,
      "hashtags": [
        "英语学习视频",
        "英语学习分享",
        "英语听力磨耳朵"
      ]
    },
    {
      "id": "•••",
      "url": "https://www.douyin.com/video/7524662531407793447",
      "text": "英语磨耳朵:春节中国最重要的传统节日 #英语学习视频 #英语听力训练 #四六级翻译 #英语短文",
      "media_type": "video",
      "like_count": 602,
      "comment_count": 19,
      "share_count": 206,
      "collect_count": 474,
      "view_count": 0,
      "author_name": "•••",
      "author_id": "MS4wLjABAAAAk1tZ-L085zZf2yW_H5dnVFZWyk8Rt8v4RAvf9KhTyPoVdMDxTs7Q_rvgTJGWXezS",
      "author_douyin_id": "•••",
      "author_follower_count": 48341,
      "region": "河北",
      "posted_at": "2025-07-09T00:12:00+00:00",
      "platform": "douyin",
      "duration_sec": 40,
      "hashtags": [
        "英语学习视频",
        "英语听力训练",
        "四六级翻译"
      ]
    }
  ],
  "next_page_token": …,
  "pagination": { … },
  "count": 20,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

Поля ответа

Бизнес-данные находятся в results. В таблице перечислены поля, которые может содержать запись; значения, которые платформа не показывает, никогда не выдумываются.

ПолеЗначение
next_page_tokenТокен страницы (search / user_posts / comments / comment_replies / billboard_video_hot / billboard_low_fan_explosion / billboard_high_completion / billboard_account_search / music_search): передайте его без изменений в page_token, чтобы получить следующую страницу, оставив остальные параметры прежними; действует 24 часа. У всех записей страницы одно и то же значение, оно же присутствует на верхнем уровне ответа. На последней странице отсутствует. На страницах комментариев последовательно возвращаются все комментарии верхнего уровня.
idУникальный ID записи на платформе. Уникален только в пределах одной платформы; на разных платформах ID могут повторяться.
urlСсылка на запись на платформе.
textОсновной текст без HTML возвращается полностью и никогда не обрезается (на нескольких платформах результаты списковых запросов содержат только фрагмент; это указано в примечаниях к полям платформы).
media_typeТип медиа: video или image для постов с изображениями.
video_urlURL воспроизведения видео (подписанный, со сроком действия; если видео нужно сохранить, скачайте его сразу). Для постов с изображениями или если источник не передал URL возвращается null.
like_countЛайки. null означает, что платформа или эта возможность не раскрывает значение; это не 0.
comment_countКомментарии. null означает, что значение не раскрыто, а не 0.
share_countКоличество раз, когда записью поделились. null означает, что значение не раскрыто, а не 0.
collect_countСохранения или добавления в избранное. null означает, что значение не раскрыто, а не 0.
view_countЧисло воспроизведений. Douyin не публикует число воспроизведений, поэтому это поле никогда не содержит фактического числа воспроизведений; оценивайте охват по like_count, comment_count и share_count.
author_nameОтображаемое имя автора.
author_idУникальный ID автора на платформе.
author_douyin_idID автора в Douyin.
author_uidЧисловой ID пользователя-автора (в comments — автора комментария). author_id — это secUid; оба идентификатора указывают на одного и того же человека.
author_bioОписание профиля автора (записи search / user_posts / video).
author_avatar_urlURL изображения аватара автора: в записях search, user_posts и video — автора контента, а в записях comments — автора комментария.
author_follower_countЧисло подписчиков автора. null означает, что значение не раскрыто.
cover_image_urlURL обложки видео или поста с изображениями (записи search / user_posts).
video_widthШирина кадра видео в пикселях.
video_heightВысота кадра видео в пикселях.
duration_secondsДлительность в секундах. null для контента, который не является видео или аудио.
regionРегион.
hashtagsХештеги в тексте в порядке появления; поле отсутствует, если их нет.
posted_atВремя публикации в ISO 8601, UTC (например, 2026-08-07T12:34:56+00:00). Нестандартные строки платформы передаются как есть, поэтому учитывайте это при разборе. null означает, что платформа его не раскрывает.
platformИдентификатор исходной платформы. Совпадает со значением platform в запросе (например, xiaohongshu, tiktok).
image_urlsМассив ссылок на изображения в порядке показа на платформе; поле отсутствует, если изображений нет.
duration_secДлительность видео в секундах.
hashtag_idsТрактуется так же, как на самой платформе
search_rankТрактуется так же, как на самой платформе
author_is_verifiedВерифицирован ли автор (записи search / user_posts / video).
author_following_countНа сколько аккаунтов подписан автор (записи search / user_posts / video).
author_like_countОбщее число лайков, полученных профилем автора (search / user_posts / video / transcript).
author_video_countОбщее число постов в профиле автора (записи search / user_posts / video).
author_ip_locationМестоположение автора по IP-адресу, которое Douyin показывает в каждом профиле.
titleЗаголовок. null, если на платформе нет заголовков (например, у текстовых постов).
musicФоновый трек: id, title, author, is_original (оригинальный звук или нет), duration_sec, cover_url и play_url (ссылка на аудио, которая может стать недействительной). Отсутствует, если информации о музыке нет.
download_countСколько раз пост скачали.
forward_countСколько раз пост переслали.
is_pinnedЗакреплён ли элемент (записи постов: закреплён в профиле автора; trending: закреплён в рейтинге).
is_adЯвляется ли пост рекламой.
video_tagsТеги категорий контента, которые Douyin присвоил посту (например, еда или посещение заведения).
video_resolutionУровень качества видео в обозначении Douyin (например, 720p).
animated_cover_urlСсылка на анимированную обложку.
cityНазвание города на языке платформы в исходном виде.
city_codeТрактуется так же, как на самой платформе
locationОписание местоположения передаётся как есть; формат зависит от платформы.
text_languageТрактуется так же, как на самой платформе
video_bitratesТрактуется так же, как на самой платформе
download_urlТрактуется так же, как на самой платформе
has_watermarkТрактуется так же, как на самой платформе
video_url_expires_atТрактуется так же, как на самой платформе
permissionsТрактуется так же, как на самой платформе
author_genderТрактуется так же, как на самой платформе
author_ageТрактуется так же, как на самой платформе

FAQ

Где найти secUid?

Откройте профиль аккаунта в Douyin: длинная строка после /user/, начинающаяся с MS4w, и есть secUid. author_id в результатах поиска и по видео содержит то же значение, поэтому его можно сразу передать в user_id. Никнеймы и короткие числовые Douyin ID не позволяют определить аккаунт.

Как постранично получить все видео аккаунта?

Для первой страницы передайте page_token пустой строкой. Затем передавайте next_page_token из каждого ответа без изменений, не меняя остальные параметры. На странице до 100 видео, от новых к старым; у последней страницы нет next_page_token. Токены действуют 24 часа, а при пагинации since игнорируется, поэтому, если нужен диапазон дат, фильтруйте по posted_at самостоятельно.

Как получать только новые видео?

В вызове без page_token передайте в since дату в формате YYYY-MM-DD, чтобы получить видео, опубликованные в этот день или позже. При запуске по расписанию берите самую позднюю дату публикации из предыдущего запуска как следующее значение since, и синхронизация будет инкрементальной.

Ошибки и оплата

401
Ключ отсутствует или недействителен.
402
Недостаточно средств на балансе. Сначала пополните баланс.
422
Недопустимое имя или значение параметра. Исправьте запрос по подсказкам в сообщении об ошибке. Без списания.
429
Достигнут лимит запросов в минуту. Подождите указанное в Retry-After время, затем повторите попытку.
503
Не удалось выполнить. Зарезервированная сумма возвращается на баланс. Если результат неизвестен, проверьте его перед повторной попыткой.
200 (пусто)
Нет данных. Без списания.

Ошибки

Официальные источники

Используются только для проверки объектов и терминов. Они не означают, что платформа разрешила или одобрила работу EveryInfra.

  • Открытая платформа Douyin: Open ID и Union ID ↗

    На открытой платформе Douyin Open ID — это идентификатор пользователя в рамках одного приложения, а Union ID действует в пределах аккаунта разработчика. На этой странице user_id ожидает secUid, как описано выше; не передавайте идентификаторы открытой платформы напрямую как равнозначные входные данные.

    Проверено 2026-09-04