淘宝 & 天猫 API - 商品搜索 (V1)
通过关键词和可选筛选条件搜索淘宝/天猫商品,返回分页结果集 包含基本商品元数据(例如商品ID、标题、价格、可用时的图片)和上架状态。
典型用例:
- 发现用于分析或监控的商品
- 通过关键词/类别构建关注列表
- 市场和竞争对手研究
- 为下游管道(详情采集、价格跟踪)提供数据
请求参数
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
token | query | string | 是 | 此 API 服务的访问令牌。 |
keyword | query | string | 是 | 搜索关键词。 |
sort | query | string | 否 | 结果集的排序方式。 可用值: - _sale:销量- _bid:价格:从高到低- bid:价格:从低到高- _coefp:通用 |
tmall | query | boolean | 否 | 是否将结果筛选为仅天猫商品。 |
startPrice | query | string | 否 | 最低价格筛选(包含)。 |
endPrice | query | string | 否 | 最高价格筛选(包含)。 |
page | query | integer | 否 | 用于分页的页码。 |
代码示例
💡 环境说明
默认示例使用 https://api.justoneapi.com (prod-global)。中国大陆地区建议替换为 http://47.117.133.51:30015 (prod-cn) 以获得更好的访问体验。详见 环境选择。
bash
# 提示: 中国大陆地区建议将 https://api.justoneapi.com 替换为 http://47.117.133.51:30015
curl -X GET "https://api.justoneapi.com/api/taobao/search-item-list/v1?token=YOUR_API_KEY&keyword=VALUE"text
我想使用 Just One API 提供的“商品搜索 (V1)”接口。
接口地址: https://api.justoneapi.com/api/taobao/search-item-list/v1
HTTP 方法: GET
身份验证: 在 URL 后添加查询参数“?token=您的API密钥”。
OpenAPI 定义: https://docs.justoneapi.com/openapi/taobao-tmall-apis/product-search-v1-zh.json
请求参数说明:
- token (query): 此 API 服务的访问令牌。 (必填)
- keyword (query): 搜索关键词。 (必填)
- sort (query): 结果集的排序方式。
可用值:
- `_sale`:销量
- `_bid`:价格:从高到低
- `bid`:价格:从低到高
- `_coefp`:通用
- tmall (query): 是否将结果筛选为仅天猫商品。
- startPrice (query): 最低价格筛选(包含)。
- endPrice (query): 最高价格筛选(包含)。
- page (query): 用于分页的页码。
返回格式: JSON
响应处理与错误码:
1. 需通过返回体中的 "code" 字段判断业务结果(code 为 0 表示成功)。
2. 超时建议:建议将请求超时时间设置为至少 60 秒。
3. 业务码说明:
- 0: 成功
- 100: Token 无效或已失效
- 301: 采集失败,请重试
- 302: 超出速率限制
- 303: 超出每日配额
- 400: 参数错误
- 500: 内部服务器错误
- 600: 权限不足
- 601: 余额不足
请帮我用我擅长的编程语言写一个脚本来调用这个接口,并处理返回结果。python
# 提示: 中国大陆地区建议将 https://api.justoneapi.com 替换为 http://47.117.133.51:30015
import requests
url = "https://api.justoneapi.com/api/taobao/search-item-list/v1?token=YOUR_API_KEY&keyword=VALUE"
response = requests.get(url)
print(response.json())js
// 提示: 中国大陆地区建议将 https://api.justoneapi.com 替换为 http://47.117.133.51:30015
const response = await fetch("https://api.justoneapi.com/api/taobao/search-item-list/v1?token=YOUR_API_KEY&keyword=VALUE", {
method: "GET"
});
const data = await response.json();
console.log(data);java
// 提示: 中国大陆地区建议将 https://api.justoneapi.com 替换为 http://47.117.133.51:30015
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.justoneapi.com/api/taobao/search-item-list/v1?token=YOUR_API_KEY&keyword=VALUE"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}go
// 提示: 中国大陆地区建议将 https://api.justoneapi.com 替换为 http://47.117.133.51:30015
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
client := &http.Client{}
url := "https://api.justoneapi.com/api/taobao/search-item-list/v1?token=YOUR_API_KEY&keyword=VALUE"
req, _ := http.NewRequest("GET", url, nil)
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}php
// 提示: 中国大陆地区建议将 https://api.justoneapi.com 替换为 http://47.117.133.51:30015
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.justoneapi.com/api/taobao/search-item-list/v1?token=YOUR_API_KEY&keyword=VALUE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
$response = curl_exec($ch);
curl_close($ch);
echo $response;响应结果
json
{
"code": 0,
"data": {
"code": "SUCCESS",
"extraMap": {
"MtopCostMillis": 72
},
"model": {
"brandList": [
{
"brandId": 1116992510,
"brandName": "徽味和",
"count": 12
}
],
"costMillis": 71,
"extraMap": {
"WorldsearchIP": "33.44.173.30",
"WorldsearchName": "worldsearch033044173030.center.na620",
"EndpointHost": "33.69.77.30",
"sp_status": "OK",
"Endpoint": "taobao_item",
"afterSearchCostMillis": 0
},
"itemList": [
{
"cityEn": "",
"commentCount": "",
"discntPriceYuan": 13.9,
"discntRate": 348,
"discntType": "活动价",
"extraMap": {},
"fahuoDsr": "487",
"frontStock": 92034,
"fuwuDsr": "486",
"hasTongkuan": false,
"hasXiangsi": false,
"itemGradeAvg": 0,
"itemId": 638549822878,
"itemLoc": "湖南 长沙",
"itemName": "皇家小虎手抓饼面饼皮正品旗舰店早餐半成品美食葱油煎饼卷饼商用",
"itemNameEn": "",
"itemSubName": "猪油起酥 千层酥脆 无需解冻 3分钟营养早餐",
"itemSubNameEn": "",
"itemType": "b",
"miaoshuDsr": "483",
"options": 17750295040,
"orderPayUV": "1万+",
"picUrl": "i2/3578271683/O1CN013v45XU1OIrg7zeMMP_!!4611686018427385795-0-item_pic.jpg",
"picUrlFull": "https://g.search.alicdn.com/img/bao/uploaded/i4/i2/3578271683/O1CN013v45XU1OIrg7zeMMP_!!461168601842...",
"picUrlList": [
"i1/3578271683/O1CN01HjLE5T1OIrYaObHf5_!!3578271683.jpg"
],
"priceFen": 39900,
"priceYuanDouble": 399,
"priceZKFen": 1390,
"priceZKYuanDouble": 13.9,
"prodId": 104492152,
"provEn": "",
"sellerGoodrat": 10000,
"sellerLevel": 18,
"sellerLoc": "上海 上海",
"serviceList": [],
"shopId": 3578271683,
"shopName": "皇家小虎旗舰店",
"spuId": 8750681503,
"tagList": [],
"tmcTagList": [
"47109"
],
"userTag": 18014535948435464,
"userType": 1,
"vidname": ""
}
],
"page": {
"nextNo": 2,
"pageNo": 1,
"pageSize": 10,
"prevNo": 1,
"showBegin": 1,
"showEnd": 3,
"totalItems": 176338,
"totalPages": 17634
},
"propertyList": [
{
"flag": "qp_commend",
"pid": 122450261,
"pname": "省份",
"valueList": [
{
"count": 1381,
"flag": "qp_commend",
"vid": 52863,
"vname": "福建省"
}
]
}
],
"responseStatus": 0,
"success": true,
"traceList": []
}
}
}💡 提示:为简化展示,列表类数据样例仅保留 1-2 条记录,实际返回条数以接口响应为准。
