日本乐天商品详情API接口的请求构造与参数说明

日本乐天商品详情核心通过IchibaItem/Search(市场商品搜索)IchibaItem/Item(商品详情) 两个 API 获取,均为 RESTful 风格的 GET 请求,需携带 Application ID 等认证参数,参数配置直接影响数据准确性与配额消耗Rakuten WS。以下是完整的请求构造、参数说明及 Python 实战示例,适配跨境选品与数据采集场景。


一、 核心 API 基础信息

接口名称 接口路径 功能 请求方式 版本 核心认证
商品搜索 IchibaItem/Search/20220601 批量获取商品列表与基础详情 GET 20220601 Application ID
商品详情 IchibaItem/Item/20170426 通过商品 ID 获取单条完整详情 GET 20170426 Application ID

请求基础 URL :[接口路径]响应格式:默认 JSON,支持 XML(通过 format 参数指定)


二、 认证与权限准备

  1. 申请 Application ID
    • 关注博主创建应用并获取 Application ID(必填);
    • 部分接口(如高频率调用)需额外申请权限,遵循 API 使用规范。
  2. 认证参数
    • 核心参数:applicationId(所有请求必填);
    • 可选参数:affiliateId(用于推广佣金追踪)、formatVersion(响应格式版本,默认 2)。

三、 商品详情 API(IchibaItem/Item)核心参数说明

通过商品 ID(itemCode)精准获取商品详情,参数分为必填、核心可选、高级可选三类Rakuten WS:

参数类别 参数名 类型 必填 说明 示例值
必填参数 applicationId String 开发者应用 ID 1234567890abcdef1234567890abcdef
itemCode String 商品唯一编码(格式:店铺代码:商品 ID) shop001:item123456
核心可选 affiliateId String 推广 ID,用于佣金结算 affiliate_123
format String 响应格式(json/xml) json
formatVersion Integer 响应版本(1/2),默认 2 2
高级可选 elements String 指定返回字段,用逗号分隔 itemName,itemPrice,availability
imageType String 图片类型(small/medium/large) large
callback String JSONP 回调函数名 handleResponse

四、 商品搜索 API(IchibaItem/Search)核心参数说明

用于批量获取商品列表,支持多条件筛选,核心参数如下:

参数类别 参数名 类型 必填 说明 示例值
必填参数 applicationId String 开发者应用 ID 1234567890abcdef1234567890abcdef
条件参数(至少一个) keyword String 搜索关键词 ワイヤレスイヤホン
genreId Integer 商品分类 ID(通过分类 API 获取) 555086
itemCode String 商品编码,支持多个用逗号分隔 shop001:item123456,shop002:item654321
分页参数 page Integer 页码,默认 1,最大 100 1
hits Integer 每页结果数,1-100 20
筛选参数 minPrice Integer 最低价格 1000
maxPrice Integer 最高价格 50000
sort String 排序方式(+price 升序 /-price 降序) -itemPrice
availability Integer 库存状态(0 无货 / 1 有货) 1

五、 请求构造实战(Python 代码示例)

以下是通过 Python 构造请求的完整流程,包含认证、参数拼接、响应解析、异常处理

1. 商品详情 API 请求示例

python

运行

复制代码
import requests
import json

def get_rakuten_item_detail(application_id, item_code, affiliate_id=None):
    """
    调用乐天商品详情API
    :param application_id: 应用ID
    :param item_code: 商品编码(店铺代码:商品ID)
    :param affiliate_id: 推广ID
    :return: 商品详情字典
    """
    base_url = "https://app.rakuten.co.jp/services/api/IchibaItem/Item/20170426"
    params = {
        "applicationId": application_id,
        "itemCode": item_code,
        "format": "json",
        "formatVersion": 2
    }
    if affiliate_id:
        params["affiliateId"] = affiliate_id
    
    try:
        response = requests.get(base_url, params=params, timeout=10)
        response.raise_for_status()  # 抛出HTTP错误
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"请求失败:{e}")
        return None

# 调用示例
APP_ID = "你的应用ID"
ITEM_CODE = "shop001:item123456"
item_detail = get_rakuten_item_detail(APP_ID, ITEM_CODE)
if item_detail:
    print(json.dumps(item_detail, ensure_ascii=False, indent=2))
2. 商品搜索 API 请求示例

python

运行

复制代码
def search_rakuten_items(application_id, keyword, genre_id=None, page=1, hits=20):
    """
    调用乐天商品搜索API
    :param application_id: 应用ID
    :param keyword: 搜索关键词
    :param genre_id: 分类ID
    :param page: 页码
    :param hits: 每页结果数
    :return: 搜索结果字典
    """
    base_url = "https://app.rakuten.co.jp/services/api/IchibaItem/Search/20220601"
    params = {
        "applicationId": application_id,
        "keyword": keyword,
        "page": page,
        "hits": hits,
        "sort": "-itemPrice",  # 价格降序
        "format": "json"
    }
    if genre_id:
        params["genreId"] = genre_id
    
    try:
        response = requests.get(base_url, params=params, timeout=10)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"搜索失败:{e}")
        return None

# 调用示例
SEARCH_KEYWORD = "ワイヤレスイヤホン"
search_result = search_rakuten_items(APP_ID, SEARCH_KEYWORD, page=1, hits=10)
if search_result:
    print(f"找到 {search_result['count']} 个商品")
    for item in search_result.get("Items", []):
        print(f"商品名:{item['Item']['itemName']},价格:{item['Item']['itemPrice']}日元")

五、 请求构造注意事项

  1. 参数编码:URL 参数需进行 URL 编码,特别是中文 / 日文关键词,requests 库会自动处理。
  2. 配额管理:乐天 API 有调用频率限制(免费版 QPS 约 10,日调用量约 10000),超限额会返回 429 错误,需添加重试机制与限流控制。
  3. 异常处理:针对 404(商品不存在)、403(权限不足)、503(服务不可用)等错误,需捕获并处理。
  4. 响应解析:formatVersion=2 时,响应结构更清晰,推荐使用。通过 elements 参数指定返回字段,减少数据传输量。

六、 常见错误码与解决方案

错误码 说明 解决方案
400 参数错误 检查必填参数是否缺失,格式是否正确
401 未授权 确认 applicationId 有效
403 权限不足 申请对应 API 的访问权限
404 商品不存在 核对 itemCode 是否正确
429 超出配额 降低调用频率,申请提升配额
503 服务不可用 稍后重试,添加重试机制

需要我根据你的应用 ID 与目标商品编码 ,生成可直接运行的 Python 请求代码,并添加配额监控与自动重试逻辑吗?

相关推荐
iFeng的小屋1 天前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python
m0_561359671 天前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
LeonDL1681 天前
基于YOLO11深度学习的衣物识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·pyqt5·yolo数据集·yolo11数据集·yolo11深度学习·衣物识别系统
傻啦嘿哟1 天前
Python操作PDF页面详解:删除指定页的完整方案
开发语言·python·pdf
Data_Journal1 天前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php
德育处主任Pro1 天前
纯前端网格路径规划:PathFinding.js的使用方法
开发语言·前端·javascript
serve the people1 天前
python环境搭建 (十三) tenacity重试库
服务器·python·php
ASS-ASH1 天前
AI时代之向量数据库概览
数据库·人工智能·python·llm·embedding·向量数据库·vlm
墨笔.丹青1 天前
基于QtQuick开发界面设计出简易的HarmonyUI界面----下
开发语言·前端·javascript
代码无bug抓狂人1 天前
C语言之表达式括号匹配
c语言·开发语言·算法