# How do I get all the original images from a Xiaohongshu note?

> Fetch every image URL of a Xiaohongshu (RedNote) note by ID or link through an API, download them in a few lines of Python, and know what the response leaves out.

Canonical page: https://okdata.online/answers/xiaohongshu-note-images-api/

**Short answer: **Call the okdata Xiaohongshu note detail endpoint with the note ID or link; the images field lists every image in the note at the largest size Xiaohongshu serves, along with the text and counts, for $0.02 per note. Downloading the files is then a plain HTTP GET; 100 notes cost $2.00.

A design team wants a mood board from the 100 most-saved notes about "small apartment storage": every image, in order, plus the caption, so they can see what layouts resonate. Screenshots lose quality and the order, and saving images one by one in the app takes hours. Note detail returns every image URL in order, so it is one call per note plus the downloads.

## The endpoint

[Xiaohongshu note detail](/apis/xiaohongshu/notes/get/) takes `id` or `url`. The `images` array holds every image of the note in the order the creator posted them, using the largest size available. The same response carries the title, full text, hashtags, publish time, likes, saves and comment count, so the board can show why each note was picked.

To build the list of notes first:

- [note search](/apis/xiaohongshu/notes/search/) with `sort=popular`, or
- [account notes](/apis/xiaohongshu/users/notes/list/) for one creator's profile.

## Cost

| Step | Calls | Cost |
|---|---|---|
| Find 100 popular notes | 5 search pages | $0.10 |
| Images and text of all 100 | 100 | $2.00 |
| Total | 105 | $2.10 |

Downloading the image files themselves is not an API call and costs nothing on our side.

## Python

```python
import os, pathlib, requests

API = "https://api.okdata.online/v1/xiaohongshu/notes/get"
HEAD = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}

note = requests.get(API, headers=HEAD, params={"id": "6650a1b2000000001e00abcd"}, timeout=60).json()["data"]["item"]
folder = pathlib.Path(note["id"]); folder.mkdir(exist_ok=True)
for i, src in enumerate(note["images"] or [], 1):
    (folder / f"{i:02d}.jpg").write_bytes(requests.get(src, timeout=60).content)
(folder / "caption.txt").write_text(f"{note['title']}\n\n{note['text']}", encoding="utf-8")
```

Download soon after fetching: image links come from Xiaohongshu's CDN and are not meant to be permanent.

## What is not included

- The video file of a video note. For video notes you get the text, counts and the image list Xiaohongshu provides, usually the cover. A downloader tool is the better fit for saving videos.
- Images from comments.
- Anything from private notes; they return `not_found`, which is not charged.

## Rights and alternatives

Images belong to their creators. A mood board for internal research is one thing; republishing is another and needs permission. XHS-Downloader and its browser script save images and videos with your own session and suit one-off downloads. For research across many notes, the [content research](/solutions/content-research/) page covers picking notes before you fetch them.

## Endpoints used

- [Xiaohongshu note detail](https://okdata.online/apis/xiaohongshu/notes/get/) `xiaohongshu.notes.get`: $0.02 per call
- [Xiaohongshu note search](https://okdata.online/apis/xiaohongshu/notes/search/) `xiaohongshu.notes.search`: $0.02 per call · about 20 notes per page
- [Xiaohongshu account notes](https://okdata.online/apis/xiaohongshu/users/notes/list/) `xiaohongshu.users.notes.list`: $0.02 per call · about 20 notes per page

Updated 2026-11-12
