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

API Xiaohongshu Поиск

POST

Состояние API

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

Находите заметки Xiaohongshu по теме, по 20 на странице. Получите заголовок, фрагмент текста, число лайков, сохранений, комментариев и репостов, автора и время публикации. Фильтруйте результаты по типу контента и диапазону дат, а также задавайте порядок сортировки. Для следующей страницы передайте next_page_token обратно как page_token. Текст в поиске — фрагмент, а не полная заметка.

Xiaohongshu Search ищет заметки по keyword и возвращает одну страницу карточек заметок: заголовок, короткий фрагмент текста, число лайков и сохранений, автора и время публикации. У видеозаметок также есть ссылка на воспроизведение в video_url и длительность в duration_sec, а у карточек с отметкой места есть poi_name. По результатам видно, что сейчас публикуют по этой теме и какие заметки собирают больше всего реакций, поэтому эта возможность подходит как отправная точка для исследования трендов, мониторинга бренда и поиска авторов для сотрудничества.

Сузить выдачу можно параметрами sort (сначала новые, больше всего лайков, комментариев или сохранений), date_range (последние 24 часа, 7 дней, месяц, полгода или год; any_time без ограничения) и content_type (заметки с изображениями или видео). Учтите, что text в результатах поиска содержит только фрагмент; если нужен полный текст, передайте url из результата в возможность Note details. Значение null в like_count или collect_count означает, что данные для этого поля в этот раз не были возвращены, а не что его значение равно нулю.

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

Промпт для ИИ

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

Как работает эндпоинт:
- Запрос: POST https://api.everyinfra.com/api/v1/social с заголовком Authorization: Bearer <API key>. Читайте ключ из переменной окружения EVERYINFRA_API_KEY и никогда не прописывайте его в коде.
- В теле запроса укажите platform: xiaohongshu и action: search, а параметры передайте в params.
- Обязательные параметры:
  - keyword: Строка запроса для поиска по содержимому заметок Xiaohongshu (например, «sensitive skin sunscreen») в действии search. Ищет по тексту заметок, а не по ID пользователей.
- Необязательные параметры:
  - content_type: Фильтрует возвращаемые заметки по типу контента, например изображения с текстом или видео. Используйте допустимые значения, указанные для текущего действия. (допустимые значения: all / image / video)
  - date_range: Фильтрует заметки по времени публикации: any_time (без ограничения, то же, что без параметра), last_24_hours (последние 24 часа), last_7_days (последние 7 дней), last_30_days (последний месяц), last_6_months (последние п… (допустимые значения: any_time / last_1_year / last_24_hours / last_30_days / last_6_months / last_7_days)
  - page_token: Курсор пагинации для действий comments, sub_comments, search, user_posts, search_users и hashtag: чтобы получить следующую страницу, передайте значение next_page_token из записи предыдущего ответа.
  - sort: Задаёт порядок заметок в результатах действия search: relevance, newest, most_liked, most_commented или most_collected. Используйте только допустимые значения, указанные для этого действия. (допустимые значения: most_collected / most_commented / most_liked / newest / relevance)
- Возвращает список записей. Основные поля каждой записи: id, url (Ссылка на запись в Xiaohongshu), title, text (Текст заметки или комментария), like_count (Число лайков), collect_count (Число сохранений), comment_count, share_count, posted_at, image_url, author_name, author_id (ID пользователя-автора); всего полей: 29, полный список: https://api.everyinfra.com/api/v1/social/catalog?platform=xiaohongshu.
- Пример тела запроса:
{
  "platform": "xiaohongshu",
  "action": "search",
  "params": {
    "keyword": "小户型收纳"
  }
}
- Цена: $5.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ДаxiaohongshuИдентификатор платформы, фиксированное значение.
actionbodystringДаsearchИдентификатор возможности, фиксированное значение.
keywordbody.paramsstringДа-Строка запроса для поиска по содержимому заметок Xiaohongshu (например, «sensitive skin sunscreen») в действии search. Ищет по тексту заметок, а не по ID пользователей.
content_typebody.paramsstring (enum)Нет-Фильтрует возвращаемые заметки по типу контента, например изображения с текстом или видео. Используйте допустимые значения, указанные для текущего действия.Допустимые значенияallimagevideo
date_rangebody.paramsstring (enum)Нет-Фильтрует заметки по времени публикации: any_time (без ограничения, то же, что без параметра), last_24_hours (последние 24 часа), last_7_days (последние 7 дней), last_30_days (последний месяц), last_6_months (последние полгода) или last_1_year (последний год). С last_30_days и last_1_year страница может содержать меньше 20 заметок, а пустая страница не оплачивается; для более полных страниц добавьте sort=newest. Эти два значения работают только в синхронных вызовах. При пагинации сохраняйте одно и то же значение.Допустимые значенияany_timelast_1_yearlast_24_hourslast_30_dayslast_6_monthslast_7_days
page_tokenbody.paramsstringНет-Курсор пагинации для действий comments, sub_comments, search, user_posts, search_users и hashtag: чтобы получить следующую страницу, передайте значение next_page_token из записи предыдущего ответа; чтобы начать с первой страницы, не указывайте его. Для каждой страницы нужен один вызов API; оплата взимается за каждый запрос.
sortbody.paramsstring (enum)Нет-Задаёт порядок заметок в результатах действия search: relevance, newest, most_liked, most_commented или most_collected. Используйте только допустимые значения, указанные для этого действия.Допустимые значенияmost_collectedmost_commentedmost_likednewestrelevance

Примеры кода

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": "xiaohongshu",
  "action": "search",
  "params": {
    "keyword": "小户型收纳"
  }
}'

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

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

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

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

json
{
  "id": "req_…",
  "platform": "xiaohongshu",
  "action": "search",
  "results": [
    {
      "id": "6a55fff400000000110058c3",
      "url": "https://www.xiaohongshu.com/explore/6a55fff400000000110058c3?xsec_token=YBwgl4W48szr36c1jFWrf2WWLLGDKYfA5rrXQivgGAj1A%3D",
      "title": "抽屉乱救星!亚克力薄抽治愈收纳焦虑|附教程",
      "text": "我发现这种又薄、还自带分隔的亚克力薄抽,简直就是为收纳小工具小零件而生的。今天就来分享详细的改造教程,评论区等你们交作业",
      "like_count": 10388,
      "collect_count": 19173,
      "comment_count": 257,
      "share_count": 2323,
      "posted_at": "2026-07-14T09:23:00+00:00",
      "image_url": "https://sns-na-i6.xhscdn.com/1040g2sg322jlesv1mse043d8j25m1nmqtti8mog?imageView2/2/w/608/format/heif/q/56|imageMogr2/strip&redImage/frame/0/enhance/4&ap=5&sc=SRH_PRV&sign=b642658d19400d337f2d5296494687c7&t=6ad0ee01",
      "author_name": "•••",
      "author_id": "•••",
      "avatar_url": "https://sns-avatar-qc.xhscdn.com/•••",
      "author_url": "https://www.xiaohongshu.com/•••",
      "is_video": true,
      "next_page_token": "n1.p2",
      "video_url": "http://sns-video-v6.xhscdn.com/stream/79/110/258/01ea55fdf56356a44f0370019f5ff0eb8f_258.mp4?sign=734255c44c5f43e96d8b4a12707707a8&t=6ad58b41",
      "duration_sec": 124,
      "platform": "xiaohongshu"
    },
    {
      "id": "6ac221730000000015002ebb",
      "url": "https://www.xiaohongshu.com/explore/6ac221730000000015002ebb?xsec_token=YBPVyCh77T_2_QF6CFfJ2TiJ8GngzcLJj_Iho466OzP5o%3D",
      "title": "鬼才🔥3平开放式小厨房超实用设计!",
      "text": "#家的1%幸福效应  #howto装扮我的家  #适己化装修  #小户型也有完美厨房  #开放式厨房  #利用厨房空间",
      "like_count": 38783,
      "collect_count": 30796,
      "comment_count": 1021,
      "share_count": 6986,
      "posted_at": "2026-10-04T09:50:43+00:00",
      "image_url": "https://sns-na-i6.xhscdn.com/1040g008325t8oj9j4q005pl7le7nc96up4p8rk8?imageView2/2/w/608/format/heif/q/56|imageMogr2/strip&redImage/frame/0/enhance/4&ap=5&sc=SRH_PRV&sign=ee3e432a917938b82ba55751f30a860e&t=6ad0ee01",
      "author_name": "•••",
      "author_id": "•••",
      "avatar_url": "https://sns-avatar-qc.xhscdn.com/•••",
      "author_url": "https://www.xiaohongshu.com/•••",
      "is_video": true,
      "next_page_token": "n1.p2",
      "video_url": "http://sns-video-v6.xhscdn.com/stream/1/110/258/01eac221721521f001037001a106536b1a_258.mp4?sign=e98d44d7b6f666dc2c4e841655d8c578&t=6ad58b41",
      "duration_sec": 189,
      "platform": "xiaohongshu",
      "poi_id": "42303030413832584538"
    }
  ],
  "next_page_token": …,
  "pagination": { … },
  "count": 20,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

Поля ответа

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

ПолеЗначение
idУникальный ID записи на платформе. Уникален только в пределах одной платформы; на разных платформах ID могут повторяться.
urlСсылка на запись в Xiaohongshu. Ссылки из search, note, profile и hashtag обычно содержат токен доступа, поэтому открываются в браузере без входа в аккаунт (срок действия токена ограничен; чтобы получить свежую ссылку, повторите вызов API). Ссылки на заметки из user_posts не содержат токена, а без него в браузере не открываются: вызовите note с ID заметки, чтобы получить рабочую ссылку. Ссылки на профили из search_users тоже не содержат токена; чтобы получить рабочую ссылку, вызовите profile с user_id. Ссылки на заметки из pgy_content_square содержат токен, кроме запросов с keyword: в них токена нет.
titleЗаголовок. null, если на платформе нет заголовков (например, у текстовых постов).
textТекст заметки или комментария. note и hashtag возвращают полный текст; search и user_posts могут вернуть сокращённый фрагмент (примерно до 60 и 100 символов соответственно). Чтобы получить полный текст, вызовите note с ID заметки.
like_countЧисло лайков. В результатах note и в результатах по комментариям это число лайков у соответствующей записи; в profile — общее число лайков, полученных заметками аккаунта. null означает, что значение не общедоступно или не было возвращено при этом вызове; это не ноль.
collect_countЧисло сохранений. В результатах note это число сохранений заметки; в profile — общее число сохранений всех заметок аккаунта. null означает, что значение не общедоступно или не было возвращено при этом вызове; это не ноль.
comment_countКомментарии. null означает, что значение не раскрыто, а не 0.
share_countКоличество раз, когда записью поделились. null означает, что значение не раскрыто, а не 0.
posted_atВремя публикации в ISO 8601, UTC (например, 2026-08-07T12:34:56+00:00). Нестандартные строки платформы передаются как есть, поэтому учитывайте это при разборе. null означает, что платформа его не раскрывает.
image_urlСсылка на изображение. Возможности с несколькими изображениями могут возвращать массив image_urls.
author_nameОтображаемое имя автора.
author_idID пользователя-автора. Передавайте его в profile или user_posts. В результатах заметок используется 24-символьный ID из URL профиля; в результатах комментариев (comments, comments_batch, sub_comments) обычно другой, 29-символьный формат. Два формата для одного человека не совпадают, поэтому перед удалением дубликатов между пакетами приведите их к user_id, который возвращает profile.
avatar_urlСсылка на аватар. Некоторые платформы возвращают CDN-ссылки с заданным размером, срок действия которых может истечь.
author_urlСсылка на профиль автора. Она не содержит токена доступа, поэтому в браузере без входа в аккаунт не открывается; url, который profile возвращает для author_id, открывается напрямую.
is_videoЯвляется ли заметка видеозаметкой. URL воспроизведения НЕ входит в ответ с деталями заметки (с 2026-10-14): чтобы получить его, вызовите отдельное действие video с тем же URL заметки; каждый вызов API оплачивается отдельно.
next_page_tokenТокен страницы (search, comments, sub_comments, user_posts, search_users, hashtag): чтобы получить следующую страницу, передайте его без изменений в page_token, не меняя остальные параметры.
video_urlСсылка на воспроизведение видео (MP4), подписанная и с ограниченным сроком действия; если видео нужно сохранить, скачайте его сразу. null для заметок с изображениями или если значение не вернулось. Ссылка есть в записях search/user_posts и в отдельном действии video; детали заметки её не содержат (с 2026-10-14), поэтому, если нужна ссылка на воспроизведение, вызовите действие video с тем же URL заметки.
duration_secДлительность видео в секундах. null для заметок с изображениями или если длительность не была возвращена при этом вызове.
duration_secondsДлительность в секундах. null для контента, который не является видео или аудио.
platformИдентификатор исходной платформы. Совпадает со значением platform в запросе (например, xiaohongshu, tiktok).
poi_idID места, отмеченного на карточке результата поиска (search); отсутствует, если место не отмечено.
poi_nameНазвание места: в search это место, отмеченное на карточке результата; в note_location это часть отмеченного места после точки, например филиал кофейни. Отсутствует, если место не отмечено или отмечено несколько мест.
imagesСсылки на изображения. В note, hashtag, search и user_posts перечислены все изображения заметки по порядку. В результатах по комментариям (comments, comments_batch, sub_comments) перечислены изображения, прикреплённые к комментарию, включая стикеры; пустой массив означает, что их нет. null означает, что значение не было возвращено при этом вызове.
is_goods_noteЯвляется ли заметка товарной, со ссылками на товары (search, user_posts).
is_cooperation_noteЯвляется ли заметка платной коллаборацией с брендом (search, note); отсутствует, если это не удалось определить.
author_is_verifiedТрактуется так же, как на самой платформе
updated_atТрактуется так же, как на самой платформе
author_red_idXiaohongshu ID автора: в результатах комментариев (comments, comments_batch, sub_comments) это ID автора комментария, в note это ID автора заметки.
video_widthТрактуется так же, как на самой платформе
video_heightТрактуется так же, как на самой платформе

FAQ

Почему текст заметки обрезан?

В результатах поиска приходит фрагмент, который Xiaohongshu показывает на карточках выдачи, обычно несколько десятков символов. Чтобы получить полный текст и все изображения, вызовите Note details с url из записи результата: в этой ссылке уже есть токен доступа, который нужен странице заметки.

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

Передайте next_page_token с верхнего уровня ответа обратно в page_token, оставив остальные параметры без изменений. Без page_token выдача начинается с первой страницы. Каждая страница — это один вызов, а вызов, не вернувший ни одной записи, не оплачивается.

Где взять видео из видеозаметки?

Возьмите video_url из записи поиска. Это подписанная ссылка на воспроизведение MP4 с ограниченным сроком действия, поэтому, если файл нужно сохранить, скачайте его сразу. duration_sec содержит длительность, а у заметок с изображениями оба поля равны null. Note details не возвращает ссылку на воспроизведение, поэтому, если у вас есть только ссылка на заметку, вызовите с ней Video details.

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

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

Ошибки

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

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

  • Xiaohongshu: точки входа для заметок с изображениями и видеозаметок ↗

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

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