Skip to content

小红书热搜 API (V1)

GET
接口健康状态
健康 可用 少量可用 基本不可用 暂无数据
正在加载健康状态…

搜索小红书 (RedNote) 热门内容条目,支持可选关键词、内容类目路径、分页、排序指标和时间范围控制。可用于趋势发现、话题监测和内容规划。

请求参数

参数名位置类型必填默认值说明
tokenquerystring-此 API 服务的访问令牌。
searchWordquerystring搜索关键词。
pageNumqueryinteger1用于分页的页码。
orderByquerystringpremium_imp_num结果集的排序指标。


可用值:

- premium_imp_num:曝光量

- premium_good_read_rate:阅读率

- premium_read_num:阅读数

- premium_engage_num:互动数

- premium_engage_rate:互动率

- premium_like_num:点赞数

- premium_fav_num:收藏数

- premium_cmt_num:评论数
ndquerystringDAY_7时间范围(天)。


可选值:

- DAY_3:最近3天

- DAY_7:最近7天

- DAY_14:最近14天

- DAY_30:最近30天
noteContentCategoryquerystring-内容类目筛选条件。传入一个完整的蒲公英类目路径,用 # 分隔符连接。您可以传入父级路径,或用另一个 # 追加一个列出的子级路径。仅接受一个路径。


可用值:


内容类目:

- 内容类目#美妆: 整体妆容, 唇妆, 眼妆, 美甲, 底妆, 美妆合集, 香水, 美妆其他

- 内容类目#护肤: 面部保养, 面部清洁, 护肤合集, 护肤其他

- 内容类目#个人护理: 头发产品, 身体护理, 口腔护理, 护理其他

- 内容类目#母婴: 母婴日常, 早教, 婴童用品, 婴童洗护, 婴童食品, 婴童时尚, 孕期穿搭, 孕产经验, 产后恢复, 育儿经验, 宝宝才艺, 宝宝写真, 母婴其他

- 内容类目#时尚: 穿搭, 配饰, 发型, 箱包, 鞋靴, 时尚其他

- 内容类目#美食: 美食教程, 美食探店, 美食展示, 美食测评, 吃播, 美食其他

- 内容类目#家居家装: 装修, 家居用品, 花艺园艺, 家居装饰, 家具, 家电, 室内设计, 居家经验, 家居家装其他

- 内容类目#影视综资讯: 动漫, 娱乐资讯, 影视, 民生资讯, 综艺, 影视综其他

- 内容类目#运动健身: 减脂塑形, 滑雪, 滑板, 水上活动, 运动其他, 足球, 篮球, 跑步, 游泳

- 内容类目#宠物: 猫, 狗, 动物其他

- 内容类目#文化艺术: 社科, 文化, 艺术, 文化艺术其他

- 内容类目#兴趣爱好: 绘画, 手工, 阅读, 文具手账, 舞蹈, 兴趣爱好其他, 玩具周边

- 内容类目#生活记录: 接地气生活, 日常片段, 中外生活, 品质生活, 校园生活

- 内容类目#教育: 大学教育, k12教育, 家庭教育, 学习日常, 留学教育, 教育其他, 语言教育

- 内容类目#职场: 职场干货, 职场行业, 职业考试, 职场其他

- 内容类目#情感: 情感知识, 情感日常, 情感其他

- 内容类目#摄影: 人文风光摄影, 摄影技巧, 胶片摄影, 人像摄影, 摄影其他

- 内容类目#游戏: 手机游戏, 主机游戏, 游戏其他, 线下游戏

- 内容类目#科技数码: 移动数码, 玩机攻略, 数码科技其他

- 内容类目#出行旅游: 城市出行, 户外, 旅行

- 内容类目#音乐

- 内容类目#搞笑

- 内容类目#健康养生

- 内容类目#汽车: 用车攻略, 汽车评测, 汽车其他

- 内容类目#婚嫁: 婚礼造型, 婚礼记录, 婚礼经验, 婚礼用品

- 内容类目#商业财经

- 内容类目#素材

- 内容类目#其他


所属行业:

- 所属行业#母婴: 母婴出行, 哺乳喂养工具, 婴童个护清洁, 母婴家居, 母婴奶粉, 母婴辅零食, 婴童服饰鞋靴, 玩具相关, 母婴纸品, 孕产妇相关, 母婴营养品, 婴童面部护肤, 母婴小家电

- 所属行业#家用电器: 大家电, 厨卫电器, 生活电器, 家电套系

- 所属行业#3C数码: 手机, 数码设备, 电脑, 办公设备, 操作系统

- 所属行业#食品饮料: 休闲零食, 方便速食, 粮油调味, 预制菜, 饮料冲调, 乳制品, 水果/水产, 肉禽蛋品, 功能性食品, 酒类(新)

- 所属行业#美妆个护: 彩妆, 美容护肤, 香水香薰, 身体洗护, 口腔护理, 头发护理, 美容仪器

- 所属行业#汽车出行: 乘用车, 摩托车, 电动自行车, 自行车, 卡车, 汽车用品, 维修保养, 汽车服务

- 所属行业#本地生活: 奶茶果汁(新), 咖啡(新), 甜品烘焙(新), 熟食卤味(新), 特色小吃/特产(新), 酒吧(新), 西式快餐(新), 中式快餐(新), 中式正餐(新), 西式正餐(新), 线下零售

- 所属行业#日化家清: 家务工具, 家用清洁, 纸品, 护理用品

- 所属行业#医疗健康: OTC, 保健食品, 保健用品, 非OTC药品, 健康机械, 视力保健, 家用医疗器械, 成人计生(械)

- 所属行业#宠物(新): 宠物服务, 宠物食品, 宠物用品, 养宠经验, 宠物药保

- 所属行业#家居家装: 灯饰光源, 家居百货, 家居建材零售, 家具, 家装辅材, 家装主材, 五金电具, 装修设计与工程服务, 智能家居, 家居卖场, 家居展会, 家纺, 餐厨杯

- 所属行业#出行旅游: 交通出行, 酒店住宿, 国内游(新), 出境游(新), 景点景区(新), 旅游攻略(新), 旅游主题(新)

- 所属行业#教育培训: K12教育, 素质教育, 图书, 成人兴趣培训, 学历教育, 语言及留学, 早教, 职业教育

- 所属行业#金融行业: 保险, 贷款, 银行, 证券

- 所属行业#医疗医美: 口腔医疗, 眼科医疗, 皮肤美容, 植发养发, 体检机构(新), 月子妇产(新), 面部塑形, 医美身体塑形, 中医医疗

- 所属行业#免税平台: 美妆个护, 奢侈品

- 所属行业#服饰鞋包: 女装, 男装, 女鞋, 男鞋, 女士内衣, 男士内衣, 服饰配件, 童装/亲子装, 箱包, 旅行箱, 童鞋/亲子鞋

- 所属行业#珠宝配饰: 腕表, 首饰, 眼镜, 配饰, 珠宝摆件, 金条、金币

- 所属行业#运动户外: 运动鞋, 户外鞋, 运动服装, 户外服装, 运动户外装备, 运动服配, 健身器械, 运动现场

- 所属行业#文玩娱乐: 玩具, 游戏, 文玩收藏, 文体, 文具

- 所属行业#到店综合: 商务服务, 生活服务

- 所属行业#奢侈品: 箱包, 服饰, 鞋履, 珠宝配饰, 腕表, 运动户外, 品质生活, 婴童, 内衣, 高端酒店, 书写工具

- 所属行业#互联网: 平台电商, 网服, 游戏, 内容消费, 生活服务, 软件工具, 会员服务

- 所属行业#影像婚美: 婚纱摄影, 写真摄影, 婚礼服务, 婚恋交友

- 所属行业#房地产: 房产中介, 房产开发, 商业地产


示例:

- 内容类目#美妆

- 内容类目#美妆#整体妆容

- 所属行业#母婴#母婴出行

代码示例

bash
curl --max-time 120 -X GET 'https://api.justoneapi.com/api/xiaohongshu/hot-search/v1?token=YOUR_API_KEY'
text
我想使用 Just One API 提供的“热搜 (V1)”接口。
接入地址: https://api.justoneapi.com。
接口路径: /api/xiaohongshu/hot-search/v1?token=YOUR_API_KEY
接口地址: BASE_URL + /api/xiaohongshu/hot-search/v1?token=YOUR_API_KEY
HTTP 方法: GET
身份验证: 在 URL 中传入 token 查询参数。
OpenAPI 定义: https://docs.justoneapi.com/openapi/xiaohongshu-rednote/hot-search-v1-zh.json

请求参数说明:
- token (query): 此 API 服务的访问令牌。 (必填)
- searchWord (query): 搜索关键词。
- pageNum (query): 用于分页的页码。
- orderBy (query): 结果集的排序指标。

可用值:
- `premium_imp_num`:曝光量
- `premium_good_read_rate`:阅读率
- `premium_read_num`:阅读数
- `premium_engage_num`:互动数
- `premium_engage_rate`:互动率
- `premium_like_num`:点赞数
- `premium_fav_num`:收藏数
- `premium_cmt_num`:评论数
- nd (query): 时间范围(天)。

可选值:
- `DAY_3`:最近3天
- `DAY_7`:最近7天
- `DAY_14`:最近14天
- `DAY_30`:最近30天
- noteContentCategory (query): 内容类目筛选条件。传入一个完整的蒲公英类目路径,用 # 分隔符连接。您可以传入父级路径,或用另一个 # 追加一个列出的子级路径。仅接受一个路径。

可用值:

内容类目:
- 内容类目#美妆: 整体妆容, 唇妆, 眼妆, 美甲, 底妆, 美妆合集, 香水, 美妆其他
- 内容类目#护肤: 面部保养, 面部清洁, 护肤合集, 护肤其他
- 内容类目#个人护理: 头发产品, 身体护理, 口腔护理, 护理其他
- 内容类目#母婴: 母婴日常, 早教, 婴童用品, 婴童洗护, 婴童食品, 婴童时尚, 孕期穿搭, 孕产经验, 产后恢复, 育儿经验, 宝宝才艺, 宝宝写真, 母婴其他
- 内容类目#时尚: 穿搭, 配饰, 发型, 箱包, 鞋靴, 时尚其他
- 内容类目#美食: 美食教程, 美食探店, 美食展示, 美食测评, 吃播, 美食其他
- 内容类目#家居家装: 装修, 家居用品, 花艺园艺, 家居装饰, 家具, 家电, 室内设计, 居家经验, 家居家装其他
- 内容类目#影视综资讯: 动漫, 娱乐资讯, 影视, 民生资讯, 综艺, 影视综其他
- 内容类目#运动健身: 减脂塑形, 滑雪, 滑板, 水上活动, 运动其他, 足球, 篮球, 跑步, 游泳
- 内容类目#宠物: 猫, 狗, 动物其他
- 内容类目#文化艺术: 社科, 文化, 艺术, 文化艺术其他
- 内容类目#兴趣爱好: 绘画, 手工, 阅读, 文具手账, 舞蹈, 兴趣爱好其他, 玩具周边
- 内容类目#生活记录: 接地气生活, 日常片段, 中外生活, 品质生活, 校园生活
- 内容类目#教育: 大学教育, k12教育, 家庭教育, 学习日常, 留学教育, 教育其他, 语言教育
- 内容类目#职场: 职场干货, 职场行业, 职业考试, 职场其他
- 内容类目#情感: 情感知识, 情感日常, 情感其他
- 内容类目#摄影: 人文风光摄影, 摄影技巧, 胶片摄影, 人像摄影, 摄影其他
- 内容类目#游戏: 手机游戏, 主机游戏, 游戏其他, 线下游戏
- 内容类目#科技数码: 移动数码, 玩机攻略, 数码科技其他
- 内容类目#出行旅游: 城市出行, 户外, 旅行
- 内容类目#音乐
- 内容类目#搞笑
- 内容类目#健康养生
- 内容类目#汽车: 用车攻略, 汽车评测, 汽车其他
- 内容类目#婚嫁: 婚礼造型, 婚礼记录, 婚礼经验, 婚礼用品
- 内容类目#商业财经
- 内容类目#素材
- 内容类目#其他

所属行业:
- 所属行业#母婴: 母婴出行, 哺乳喂养工具, 婴童个护清洁, 母婴家居, 母婴奶粉, 母婴辅零食, 婴童服饰鞋靴, 玩具相关, 母婴纸品, 孕产妇相关, 母婴营养品, 婴童面部护肤, 母婴小家电
- 所属行业#家用电器: 大家电, 厨卫电器, 生活电器, 家电套系
- 所属行业#3C数码: 手机, 数码设备, 电脑, 办公设备, 操作系统
- 所属行业#食品饮料: 休闲零食, 方便速食, 粮油调味, 预制菜, 饮料冲调, 乳制品, 水果/水产, 肉禽蛋品, 功能性食品, 酒类(新)
- 所属行业#美妆个护: 彩妆, 美容护肤, 香水香薰, 身体洗护, 口腔护理, 头发护理, 美容仪器
- 所属行业#汽车出行: 乘用车, 摩托车, 电动自行车, 自行车, 卡车, 汽车用品, 维修保养, 汽车服务
- 所属行业#本地生活: 奶茶果汁(新), 咖啡(新), 甜品烘焙(新), 熟食卤味(新), 特色小吃/特产(新), 酒吧(新), 西式快餐(新), 中式快餐(新), 中式正餐(新), 西式正餐(新), 线下零售
- 所属行业#日化家清: 家务工具, 家用清洁, 纸品, 护理用品
- 所属行业#医疗健康: OTC, 保健食品, 保健用品, 非OTC药品, 健康机械, 视力保健, 家用医疗器械, 成人计生(械)
- 所属行业#宠物(新): 宠物服务, 宠物食品, 宠物用品, 养宠经验, 宠物药保
- 所属行业#家居家装: 灯饰光源, 家居百货, 家居建材零售, 家具, 家装辅材, 家装主材, 五金电具, 装修设计与工程服务, 智能家居, 家居卖场, 家居展会, 家纺, 餐厨杯
- 所属行业#出行旅游: 交通出行, 酒店住宿, 国内游(新), 出境游(新), 景点景区(新), 旅游攻略(新), 旅游主题(新)
- 所属行业#教育培训: K12教育, 素质教育, 图书, 成人兴趣培训, 学历教育, 语言及留学, 早教, 职业教育
- 所属行业#金融行业: 保险, 贷款, 银行, 证券
- 所属行业#医疗医美: 口腔医疗, 眼科医疗, 皮肤美容, 植发养发, 体检机构(新), 月子妇产(新), 面部塑形, 医美身体塑形, 中医医疗
- 所属行业#免税平台: 美妆个护, 奢侈品
- 所属行业#服饰鞋包: 女装, 男装, 女鞋, 男鞋, 女士内衣, 男士内衣, 服饰配件, 童装/亲子装, 箱包, 旅行箱, 童鞋/亲子鞋
- 所属行业#珠宝配饰: 腕表, 首饰, 眼镜, 配饰, 珠宝摆件, 金条、金币
- 所属行业#运动户外: 运动鞋, 户外鞋, 运动服装, 户外服装, 运动户外装备, 运动服配, 健身器械, 运动现场
- 所属行业#文玩娱乐: 玩具, 游戏, 文玩收藏, 文体, 文具
- 所属行业#到店综合: 商务服务, 生活服务
- 所属行业#奢侈品: 箱包, 服饰, 鞋履, 珠宝配饰, 腕表, 运动户外, 品质生活, 婴童, 内衣, 高端酒店, 书写工具
- 所属行业#互联网: 平台电商, 网服, 游戏, 内容消费, 生活服务, 软件工具, 会员服务
- 所属行业#影像婚美: 婚纱摄影, 写真摄影, 婚礼服务, 婚恋交友
- 所属行业#房地产: 房产中介, 房产开发, 商业地产

示例:
- 内容类目#美妆
- 内容类目#美妆#整体妆容
- 所属行业#母婴#母婴出行


返回格式: 请根据实际 Content-Type 安全处理 JSON 或文本响应。

响应处理与错误码:
1. 需通过返回体中的 "code" 字段判断业务结果(code 为 0 表示成功)。
2. 超时建议:建议将请求超时时间设置为 120 秒;如果 120 秒偏长,请至少设置为 60 秒,但可能会有少量请求因超时而未接收到结果。
3. 业务码说明:
   - 0: 成功
   - 100: Token 无效或已失效
   - 301: 采集失败,请重试
   - 302: 超出速率限制
   - 303: 超出每日配额
   - 400: 参数错误
   - 500: 内部服务器错误
   - 600: 权限不足
   - 601: 账户余额不足
   - 602: TOKEN 限额超限
4. code 601 表示账户共享余额不足。code 602 表示当前 API TOKEN 自身的累计消费上限已达到。TOKEN 限额不是资金划拨,多个 TOKEN 仍共享同一个账户余额。

请帮我用我擅长的编程语言写一个脚本来调用这个接口,并处理返回结果。
python
import requests

BASE_URL = "https://api.justoneapi.com"  # 由 OpenAPI servers 提供

url = BASE_URL + "/api/xiaohongshu/hot-search/v1?token=YOUR_API_KEY"
response = requests.get(url, timeout=120)
print(response.status_code)
if response.content:
    content_type = response.headers.get("content-type", "").lower()
    if "json" in content_type:
        try:
            print(response.json())
        except ValueError:
            print(response.text)
    elif content_type.startswith("text/") or "xml" in content_type or content_type.split(";", 1)[0].strip() in {"application/javascript", "application/x-www-form-urlencoded", "application/graphql"}:
        print(response.text)
    else:
        with open("response.bin", "wb") as output:
            output.write(response.content)
        print(f"Saved {len(response.content)} bytes to response.bin")
js
const BASE_URL = "https://api.justoneapi.com"; // 由 OpenAPI servers 提供
const url = BASE_URL + "/api/xiaohongshu/hot-search/v1?token=YOUR_API_KEY";

const response = await fetch(url, {
  method: "GET",
  signal: AbortSignal.timeout(120000)
});
console.log(response.status);
const responseBytes = await response.arrayBuffer();
if (responseBytes.byteLength) {
  const contentType = (response.headers.get("content-type") || "").toLowerCase();
  const mediaType = contentType.split(";", 1)[0].trim();
  const textual = contentType.startsWith("text/") || contentType.includes("json") || contentType.includes("xml") || ["application/javascript", "application/x-www-form-urlencoded", "application/graphql"].includes(mediaType);
  if (textual) {
    const responseText = new TextDecoder().decode(responseBytes);
    let data = responseText;
    if (contentType.includes("json")) {
      try { data = JSON.parse(responseText); } catch { /* Keep the raw body. */ }
    }
    console.log(data);
  } else {
    console.log(`Received ${responseBytes.byteLength} binary bytes`);
  }
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;

public class Main {
    public static void main(String[] args) throws Exception {
        final String BASE_URL = "https://api.justoneapi.com"; // 由 OpenAPI servers 提供
        final String url = BASE_URL + "/api/xiaohongshu/hot-search/v1?token=YOUR_API_KEY";

        HttpClient client = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(120)).build();
        HttpRequest.Builder builder = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .timeout(Duration.ofSeconds(120))
            .method("GET", HttpRequest.BodyPublishers.noBody());

        HttpRequest request = builder.build();

        HttpResponse<byte[]> response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
        System.out.println(response.statusCode());
        String contentType = response.headers().firstValue("content-type").orElse("").toLowerCase();
        String mediaType = contentType.split(";", 2)[0].trim();
        if (contentType.startsWith("text/") || contentType.contains("json") || contentType.contains("xml") || mediaType.equals("application/javascript") || mediaType.equals("application/x-www-form-urlencoded") || mediaType.equals("application/graphql")) {
            System.out.println(new String(response.body(), StandardCharsets.UTF_8));
        } else {
            Files.write(Path.of("response.bin"), response.body());
            System.out.println("Saved " + response.body().length + " bytes to response.bin");
        }
    }
}
go
package main

import (
	"fmt"
	"io"
	"os"
	"strings"
	"net/http"
	"time"
)

const BASE_URL = "https://api.justoneapi.com" // 由 OpenAPI servers 提供

func main() {
	client := &http.Client{Timeout: 120 * time.Second}
	url := BASE_URL + "/api/xiaohongshu/hot-search/v1?token=YOUR_API_KEY"
	req, _ := http.NewRequest("GET", url, nil)
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	fmt.Println(resp.StatusCode)
	bodyBytes, _ := io.ReadAll(resp.Body)
	contentType := strings.ToLower(resp.Header.Get("Content-Type"))
	mediaType := strings.TrimSpace(strings.SplitN(contentType, ";", 2)[0])
	if strings.HasPrefix(contentType, "text/") || strings.Contains(contentType, "json") || strings.Contains(contentType, "xml") || mediaType == "application/javascript" || mediaType == "application/x-www-form-urlencoded" || mediaType == "application/graphql" {
		fmt.Println(string(bodyBytes))
	} else {
		os.WriteFile("response.bin", bodyBytes, 0600)
		fmt.Printf("Saved %d bytes to response.bin\n", len(bodyBytes))
	}
}
php
<?php
$BASE_URL = 'https://api.justoneapi.com'; // 由 OpenAPI servers 提供
$url = $BASE_URL . '/api/xiaohongshu/hot-search/v1?token=YOUR_API_KEY';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
$contentType = strtolower((string) curl_getinfo($ch, CURLINFO_CONTENT_TYPE));
curl_close($ch);
echo $status . PHP_EOL;
$mediaType = trim(explode(';', $contentType, 2)[0]);
if (str_starts_with($contentType, 'text/') || str_contains($contentType, 'json') || str_contains($contentType, 'xml') || in_array($mediaType, ['application/javascript', 'application/x-www-form-urlencoded', 'application/graphql'], true)) {
    echo $response;
} else {
    file_put_contents('response.bin', $response);
    echo 'Saved ' . strlen($response) . ' bytes to response.bin' . PHP_EOL;
}

响应示例

正在加载响应示例…