一、接口基础信息
- 请求方式:HTTP GET
- 认证机制:OAuth 2.0 Bearer Token
- 请求地址:
https://api.jumia.com/search/v1/list
二、核心请求参数
| 参数名 | 类型 | 示例值 | 说明 |
|---|---|---|---|
q | string | "smartphone" | 搜索关键词 |
category | int | 123 | 类目ID |
page | int | 1 | 分页页码 |
sort | string | "newest" | 排序规则(newest/price_asc/price_desc) |
max_price | float | 500.0 | 价格上限(单位:本地货币) |
三、响应数据结构(JSON格式)
{
"total_items": 1500,
"items": [
{
"id": "SN12345678",
"name": "Samsung Galaxy S21",
"price": 450.99,
"original_price": 499.99,
"rating": 4.5,
"image_url": "https://img.jumia.com/...",
"seller_info": {
"id": "SELLER987",
"name": "TechHub Africa",
"rating": 4.8
}
}
],
"facets": {
"categories": [
{"id": 123, "name": "Mobile Phones", "count": 1200}
],
"brands": [
{"name": "Samsung", "count": 300}
]
}
}
四、Python调用示例
import requests
import pandas as pd
def fetch_jumia_search(keyword, max_pages=3):
headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}
all_items = []
for page in range(1, max_pages+1):
params = {
"q": keyword,
"page": page,
"sort": "price_asc"
}
response = requests.get(
"https://api.jumia.com/search/v1/list",
headers=headers,
params=params
)
if response.status_code == 200:
data = response.json()
all_items.extend(data['items'])
return pd.DataFrame(all_items)
# 调用示例
df = fetch_jumia_search("wireless headphones")
print(df[['name', 'price', 'rating']].head())
五、关键注意事项
-
频率限制:
- 标准API套餐:100次/分钟请求限制
- 建议添加延时控制:
time.sleep(0.5)
-
数据字段说明:
original_price字段可能为null(无折扣时)- 图片URL需拼接完整路径:
"https://img.jumia.com" + image_url
-
错误处理:
if response.status_code == 401:
raise Exception("Token过期,需刷新凭证")
elif response.status_code == 429:
print("触发限流,等待重试...")
六、进阶应用场景
-
价格监控系统:
# 监控特定商品价格波动 daily_data = fetch_jumia_search("iPhone 13") price_history = daily_data.groupby('id')['price'].agg(['min','max']) -
类目分析工具:
# 分析手机类目品牌分布 phone_data = fetch_jumia_search("", category=123) brand_distribution = phone_data['seller_info.name'].value_counts()
法律声明:使用API需遵守Jumia开发者协议,禁止爬取用户隐私数据,商业用途需申请企业授权。本文示例仅用于技术学习目的。
(注:实际API参数可能因Jumia版本更新调整,建议查阅最新官方文档:developer.jumia.com)