以下内容基于 2025 年淘宝开放平台最新文档与社区实测,手把手演示如何合规调用「taobao.item.review.get」接口,快速拿到单品评论数据,并给出可直接落地的 Java 代码模板。全程不依赖第三方 SDK,也不附带任何外链,方便直接集成到自己的采集系统。
一、接口能力速览
官方入口:taobao.item.review.get(隶属 TOP 开放平台)
数据维度:评论正文、评分、晒图、追评、商家回复、SKU 快照、点赞数等 20+ 字段
时效性:与手淘详情页同步,延迟 ≤ 5 min
量级:单页 20 条,最多 100 页(即 2000 条)
权限:个人开发者默认 100 次/日,企业实名后可扩容至 1 万次/日
二、调用前 3 步准备
注册开放平台账号 → 创建应用 → 拿到 app_key / app_secret
在「控制台-接口管理」里申请 taobao.item.review.get 权限,填写用途说明(如“用户反馈聚合分析”),1~3 个工作日可过审
把要采集的商品 ID(num_iid)准备好,可从详情页 URL 直接截取
三、核心请求参数
参数名 必填 示例值 说明
method 是 taobao.item.review.get 固定
app_key 是 12345678 应用唯一标识
timestamp 是 2025-12-15 14:23:45 格式 yyyy-MM-dd HH:mm:ss
format 是 json 返回格式
v 是 2.0 版本
sign_method 是 hmac-sha1 签名算法(推荐)
sign 是 见下方生成逻辑 验签
num_iid 是 632961234567890123 商品数字 ID
page 否 1 页码,默认 1
page_size 否 20 1~20
sort 否 create_time:desc 最新/最早/最有帮助
四、签名生成(HMAC-SHA1 版)
将除 sign 外的所有参数按 key 的 ASCII 升序排列
拼接成 k1v1k2v2… 的字符串,首尾再拼上 app_secret
做 HMAC-SHA1 → 十六进制 → 转大写,即为 sign 值
(Java 标准库即可实现,无需第三方包)
五、Java 0 依赖示例
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.;
import org.json.JSONObject;
public class TaobaoReviewCrawler {
private static final String APP_KEY = "你的app_key";
private static final String APP_SECRET = "你的app_secret";
private static final String GATEWAY = "https://eco.taobao.com/router/rest";
public static void main(String[] args) throws Exception {
long itemId = 632961234567890123L; // 示例商品
int page = 1;
String json = fetchReview(itemId, page);
System.out.println(json);
}
public static String fetchReview(long numIid, int page) throws Exception {
Map<String, String> map = new LinkedHashMap<>();
map.put("method", "taobao.item.review.get");
map.put("app_key", APP_KEY);
map.put("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
map.put("format", "json");
map.put("v", "2.0");
map.put("sign_method", "hmac-sha1");
map.put("num_iid", String.valueOf(numIid));
map.put("page", String.valueOf(page));
map.put("page_size", "20");
map.put("sort", "create_time:desc");
String sign = hmacSha1Sign(map, APP_SECRET);
map.put("sign", sign);
String body = buildQuery(map);
return httpPost(GATEWAY, body);
}
private static String hmacSha1Sign(Map<String, String> params, String secret) throws Exception {
List<String> keys = new ArrayList<>(params.keySet());
Collections.sort(keys);
StringBuilder sb = new StringBuilder(secret);
for (String k : keys) sb.append(k).append(params.get(k));
sb.append(secret);
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA1"));
byte[] bytes = mac.doFinal(sb.toString().getBytes("UTF-8"));
StringBuilder hex = new StringBuilder();
for (byte b : bytes) hex.append(String.format("%02X", b));
return hex.toString();
}
private static String buildQuery(Map<String, String> params) throws Exception {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> e : params.entrySet()) {
if (sb.length() > 0) sb.append('&');
sb.append(e.getKey()).append('=')
.append(URLEncoder.encode(e.getValue(), "UTF-8"));
}
return sb.toString();
}
private static String httpPost(String url, String body) throws Exception {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
try (OutputStream os = conn.getOutputStream()) {
os.write(body.getBytes("UTF-8"));
}
try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
StringBuilder res = new StringBuilder();
String line;
while ((line = br.readLine()) != null) res.append(line);
return res.toString();
}
}
}
六、返回 JSON 关键字段速查
字段 类型 说明
review.review_id Long 评论唯一 ID
review.nick String 买家昵称(已脱敏)
review.created Date 评论时间
review.rate Int 评分 1~5
review.content String 正文
review.append_comment Object 追评内容+时间
review.pics String[] 晒图 URL 数组
review.reply String 商家回复
review.sku String 当时购买的规格快照
七、常见报错速解
错误码 原因 处理
15 签名不对 检查参数顺序、secret 是否正确
11 未授权 回控制台申请 taobao.item.review.get 权限
27 商品 ID 无效 确认商品未下架、ID 为数字
40 session 过期 本接口无需 session,如误传请去掉
如遇任何疑问或有进一步的需求,请随时与我私信或者评论联系。