日本乐天商品详情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 请求代码,并添加配额监控与自动重试逻辑吗?

相关推荐
派大鑫wink2 小时前
【Day34】Servlet 进阶:会话管理(Cookie vs Session)
java·开发语言·学习方法
多米Domi0112 小时前
0x3f 第35天 电脑硬盘坏了 +二叉树直径,将有序数组转换为二叉搜索树
java·数据结构·python·算法·leetcode·链表
猫天意2 小时前
【深度学习小课堂】| torch | 升维打击还是原位拼接?深度解码 PyTorch 中 stack 与 cat 的几何奥义
开发语言·人工智能·pytorch·深度学习·神经网络·yolo·机器学习
crossaspeed2 小时前
Java-线程池(八股)
java·开发语言
UR的出不克3 小时前
使用 Python 爬取 Bilibili 弹幕数据并导出 Excel
java·python·excel
niaiheni3 小时前
PHP文件包含
开发语言·php
初次见面我叫泰隆3 小时前
Qt——1、初识Qt
开发语言·c++·qt
Arms2063 小时前
python时区库学习
开发语言·python·学习
无名的小三轮3 小时前
第二章 信息安全概述
开发语言·php