# Xiaohongshu Note details API (xiaohongshu.note)

- Canonical page: https://everyinfra.com/en/xiaohongshu-api/note
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "xiaohongshu", "action": "note", "params": {...}}
- Price: $0.005556 per call ($5.56 per 1,000 requests); failed calls and empty results are not charged
- Returns: single object
- Mode: sync; add "mode": "async" for slow tasks

Xiaohongshu Note details reads one note from its `url` and returns its full content: the full body, every image in order, its topics and mentioned users, plus like, save, comment and share counts and the publish time, with `lat` and `lng` when the images carry a location. Use it to analyze what a note actually says and how it landed, to review a seeding campaign, or to turn search results into full text you can analyze.

Pass the complete note link with its query parameters, such as xsec_token, intact; a recent link from search results works best, and a bare note ID usually does not. `ip_location` is the IP region Xiaohongshu displays, not an address the author typed, and the topic IDs in `topics` lead to more notes on the same topic.

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=xiaohongshu&action=note

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| url | not declared | yes | not declared | Specifies the full Xiaohongshu note URL, formatted as /explore/<note_id> or /discovery/item/<note_id>. Use recent search URLs that retain query parameters like xsec_token. The sub_comments action requires both this url and a valid comment_id. |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| id | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
| url | The record's link on Xiaohongshu. Links from search, note, profile and hashtag usually carry an access token, so they open in a signed-out browser (the token expires; call again for a fresh link). Note links from user_posts carry no token and need one to open in a browser: call note with the note ID to get a link that opens. Profile links from search_users carry no token either; call profile with the user_id for one that opens. Note links from pgy_content_square carry a token, except with `keyword`, where they carry none. |
| title | Title. null when the platform has no titles (for example text-only posts). |
| text | Note body or comment text. note and hashtag return the full body; search and user_posts may return a truncated excerpt (up to about 60 and 100 characters respectively). Call note with the note ID for the full text. |
| like_count | Like count. On note and comment results, the likes on that item; on profile, the total likes the account's notes have received. null means not public or not returned this time, not zero. |
| collect_count | Save count. On note results, how many times that note was saved; on profile, the total saves across the account's notes. null means not public or not returned this time, not zero. |
| comment_count | Comments. null means not disclosed, not 0. |
| share_count | Shares. null means not disclosed, not 0. |
| posted_at | Publish time in ISO 8601, UTC (for example 2026-08-07T12:34:56+00:00). Non-standard strings from the platform are passed through as is, so parse defensively. null means the platform does not disclose it. |
| ip_location | IP location (province or country) that Xiaohongshu displays; not entered by the user. Only some user_posts rows carry it. |
| author_name | Author's display name. |
| author_id | The author's user ID. Pass it to profile or user_posts. Note results carry the 24-character ID from profile URLs; comment results (comments, comments_batch, sub_comments) usually carry a different 29-character form. The two forms of one person do not match, so convert them with the user_id that profile returns before de-duplicating across batches. |
| is_video | Whether the note is a video note. The play URL is NOT part of the note detail response (since 2026-10-14): call the separate video action with the same note URL to fetch it; each call is billed per call. |
| avatar_url | Avatar image link. Some platforms return sized CDN links that can expire. |
| author_url | The author's profile link. It carries no access token, so a signed-out browser cannot open it; the url that profile returns for the author_id opens directly. |
| platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |
| images | Image links. On note, hashtag, search and user_posts, every image of the note in order. On comment results (comments, comments_batch, sub_comments), the images attached to the comment, stickers included; an empty array means none. null means this item was not returned this time. |
| tags | Tag list: on note, the note's topic tags; on profile, the personal tags shown on the profile page (such as star sign or region); on reviews, the review tags the store attaches, such as good quality, absent when there are none. As written. |
| topics | The note's topics, each with a name and a topic_id (the topic page ID). Pass topic_id to hashtag to read that topic's notes. The field is left out when the note has no topics or they were not returned. |
| mentioned_users | People @-mentioned: on comment results, those mentioned in the comment; on note, those mentioned in the note. Each entry has user_id and nickname. Absent when there are none. |
| lat | Latitude of the location attached to the note's images (note), as given; absent when there is no location. |
| lng | Longitude of the location attached to the note's images (note); appears together with lat. |
| has_goods | platform-native meaning |
| is_cooperation_note | Whether the note is a paid brand collaboration (search, note); absent when this could not be determined. |
| author_red_id | The author's Xiaohongshu ID: on comment results (comments, comments_batch, sub_comments) the commenter's, on note the note author's. |
| author_is_verified | platform-native meaning |
| language | Content language code (for example zh, en) as judged by the platform; it can be wrong. |
| updated_at | platform-native meaning |

## Example

```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": "note",
  "params": {
    "url": "https://www.xiaohongshu.com/explore/6aa7a3f600000000110335f8?xsec_token=YByFNzoKupps8B3qI774Gx7XGxfHpq4QWEvxU4zsD8454%3D"
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "xiaohongshu",
        "action": "note",
        "params": {
            "url": "https://www.xiaohongshu.com/explore/6aa7a3f600000000110335f8?xsec_token=YByFNzoKupps8B3qI774Gx7XGxfHpq4QWEvxU4zsD8454%3D",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-10-15T15:16:12Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "id": "req_…",
  "platform": "xiaohongshu",
  "action": "note",
  "results": {
    "id": "6aa7a3f600000000110335f8",
    "url": "https://www.xiaohongshu.com/explore/6aa7a3f600000000110335f8?xsec_token=YByFNzoKupps8B3qI774Gx7XGxfHpq4QWEvxU4zsD8454%3D",
    "title": "33㎡的一字户塞下28㎡收纳？！还巨显大！",
    "text": "感谢超有生活智慧的@••• 接受采访！\n本期视频超多干货！\n33㎡邪修出两房！2㎡卫生间硬塞浴缸🛁\n全屋28㎡收纳、衣柜800件衣服装不满！\n超低成本旋转鞋架、空调机位改树屋🌳\n把每一寸空间都榨干的小户型终极收纳来啦！\n#roomtour[话题]# #小户型收纳[话题]# #探家[话题]#  #小红书自建房大赏[话题]#  #WeeklyPick[话题]#  #野生体验家howto[话题]# #我在小红书搞装修[话题]# #装修内行人[话题]#",
    "like_count": 3421,
    "collect_count": 3928,
    "comment_count": 104,
    "share_count": 976,
    "posted_at": "2026-09-14T09:01:04+00:00",
    "ip_location": "•••",
    "author_name": "•••",
    "author_id": "•••",
    "is_video": true,
    "avatar_url": "https://sns-avatar-qc-ae.rednotecdn.com/•••",
    "author_url": "https://www.xiaohongshu.com/•••",
    "platform": "xiaohongshu",
    "images": [
      "https://sns-i11-ae.rednotecdn.com/spectrum/1040g34o3253cssm6302049v1t8cah4q0tpb8l58?imageView2/2/w/576/format/heif/q/58|imageMogr2/strip&redImage/frame/0/enhance/4&ap=1&sc=V_PRV&sign=ed0259e196793273f51646a46b2c1a02&t=6ad0ee3c"
    ],
    "tags": [
      "roomtour",
      "小户型收纳",
      "探家"
    ],
    "topics": [
      {
        "name": "roomtour",
        "topic_id": "6103b7a0b2363700017d720a"
      },
      {
        "name": "小户型收纳",
        "topic_id": "5be9634385cfbb000101d51f"
      },
      {
        "name": "探家",
        "topic_id": "6064a7711fd52f0001b7d830"
      }
    ],
    "mentioned_users": [
      {
        "user_id": "•••",
        "nickname": "•••"
      }
    ]
  },
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### Why doesn't a bare note ID work?

Xiaohongshu note pages need the access token carried in the link. Pass the full URL, with the path /explore/<note ID> or /discovery/item/<note ID>, and keep query parameters such as xsec_token. The `url` in search results already carries the token, so you can pass it straight through.

### Is `ip_location` where the author lives?

Not exactly. It is the IP region, a province or a country, that Xiaohongshu shows on every post. The platform sets it rather than the author, so it suits rough regional analysis but should not be treated as a precise location.

### Why is there no video link for a video note?

Note details does not include the play link; it marks video notes with `is_video`. To get the link, call Video details with the same note `url`: it returns the play link and the video length and is billed as a separate call. Video notes found through search already carry the play link on their result rows.

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=xiaohongshu
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
