主题
GET /api/seller
查询 Amazon 卖家信息:评分、反馈数、品类与品牌统计、地址、(可选)店铺 ASIN 列表等。
数据链路:Redis 缓存 → spider 通路(pro/seller WS,不消耗 API key 池)→ API 兜底。带 update 参数的请求会跳过 spider 直连 API(该参数是 API 独有的新鲜度触发语义)。只要名称 / 评分等轻量信息请用 GET /api/seller/name。
接口
GET https://mcp.keepamore.com/api/seller计费
| 模式 | units |
|---|---|
storefront=false(默认) | 每个卖家 ID 1 unit(最少 1 unit) |
storefront=true | 10 units / 次(且仅允许 1 个卖家 ID) |
- storefront 模式附带店铺 ASIN 列表(每日从数据库编译),因此单价较高
update/page/perPage/csvDays等附加参数 不会 额外计费- 卖家 ID 列表会自动去重后再计费
参数(Query String)
| 名称 | 类型 | 必填 | 默认 | 约束 | 说明 |
|---|---|---|---|---|---|
domain | integer | ✅ | — | 1–12 | 站点 ID,参见 domain 映射。也可用 domainId / country 别名 |
seller | string[] / csv | ✅ | — | 1–100,正则 ^[A-Z0-9]{10,20}$ | 卖家 ID 列表。可写 ?seller=A,B,C 或多次 ?seller=A&seller=B;storefront=1 时仅允许 1 个 |
storefront | boolean | false | — | true 时返回店铺 ASIN 列表(asinList / asinListLastSeen,每日编译) | |
update | integer | — | ≥ 0 | storefront 数据新鲜度阈值(小时);仅 storefront=1 时生效,否则会被忽略。带此参数时直连 API | |
page | integer | — | ≥ 0 | storefront asinList 分页;不传则返回全部 | |
perPage | integer | — | 1–10000 | 每页 ASIN 数量;不传则返回全部 | |
csvDays | integer | -1 | ≥ -1 | csv 时间序列控制:-1 = 全部;0 = 完全移除;>0 = 最近 N 天 | |
date | string | — | YYYY-MM-DD | 历史快照模式:查该日的卖家快照。⚠️ 只覆盖每站点 Top 100,000 名内卖家;与 storefront / update 互斥。详见 下方专节 |
服务端会对卖家 ID 自动 trim / uppercase / 去重 / 排序,以保证缓存命中稳定。
响应
json
{
"code": "0000",
"msg": "ok",
"data": {
"sellers": {
"A1PA6795UKMFR9": {
"sellerId": "A1PA6795UKMFR9",
"sellerName": "Amazon.com",
"hasFBA": true,
"ratingCount": [3, 10, 98, 321],
"positiveRating": [96, 98, 98, 95],
"csv": [
[7000000, 95, 7100000, 96],
[7000000, 12000, 7100000, 12500]
],
"asinList": ["B0..."],
"asinListLastSeen": [7234567, 7234560],
"_pagination": {
"page": 0,
"perPage": 100,
"total": 1234,
"totalPages": 13
}
}
},
"fromCache": false
}
}_pagination仅在传入page/perPage时出现- csv 字段:根据
csvDays可能被完整移除、裁剪到最近 N 天、或保持全量 asinList/asinListLastSeen仅在storefront=1时返回
每个卖家对象的完整 27+ 字段(评分四元组、csv 双索引、类目品牌竞品 / Buy Box 占有率等)见 Seller Object。
历史快照模式(date 参数)
带 date=YYYY-MM-DD 时,本接口改为读取 Top Seller 每日全量快照(与 topseller 同源,每天北京时间 02:00 同步),返回该日期当天的卖家档案:
json
{
"code": "0000",
"msg": "ok",
"data": {
"sellers": {
"A1PA6795UKMFR9": {
"country": "us",
"seller_id": "A1PA6795UKMFR9",
"rank_position": 42,
"seller_name": "Amazon.com",
"current_rating": 95,
"current_rating_count": 3210000,
"rating_30d_count": 98,
"rating_30d_positive": 96,
"buy_box_new_rate": 88,
"has_fba": true,
"storefront_asin_count": 12345,
"primary_category_name": "Electronics",
"category_statistics": [{ "catId": 1055398, "productCount": 1200 }],
"competitors_json": [{ "percent": 50, "sellerId": "A..." }],
"snapshot_date": "2026-09-01"
}
},
"missing": ["A0NOTINTOP100K"],
"_snapshot": {
"date": "2026-09-01",
"source": "snapshot",
"coverage": "每站点 Top 100,000 卖家内"
},
"fromCache": false
}
}与实时模式的差异(重要):
| 维度 | 实时(不带 date) | 历史快照(带 date) |
|---|---|---|
| 字段形态 | merchant 形态(sellerName 驼峰、ratingCount 四元数组、csv 序列等) | 快照 45 列(snake_case,字段表见 topseller 的 detail 说明);JSON 列已解析为对象 |
| 覆盖范围 | 任意卖家 | ⚠️ 只覆盖每站点 Top 100,000 名内卖家(Most Rated Sellers 榜单全量);不在榜内的 ID 出现在 missing 数组、不进 sellers |
| 时间范围 | 当前实时数据 | 2026-06 起至今的任意一天(NAS 保留 400 天) |
| 不支持 | — | storefront / update / csv(与 date 同用会报参数错误) |
| 计费 | 每 ID 1 unit(storefront 10 units) | 不变:每 ID 1 unit(快照读取零额外成本,计费口径保持一致) |
bash
# 查 2 个卖家在 2026-09-01 的档案(不在 Top 10 万内的会进 missing)
curl "https://mcp.keepamore.com/api/seller?domain=1&seller=A1PA6795UKMFR9,ATVPDKIKX0DER&date=2026-09-01" \
-H "X-API-Key: km_xxx"示例
bash
# 请将 km_xxx 替换为你的 API Key
# 批量查 3 个卖家的评分
curl "https://mcp.keepamore.com/api/seller?domain=1&seller=A1PA6795UKMFR9,ATVPDKIKX0DER&csvDays=0" \
-H "X-API-Key: km_xxx"
# 拉某卖家店铺前 200 个 ASIN
curl "https://mcp.keepamore.com/api/seller?domain=1&seller=A1PA6795UKMFR9&storefront=1&page=0&perPage=200" \
-H "X-API-Key: km_xxx"js
// 请将 km_xxx 替换为你的 API Key
// 批量查卖家评分
const resp = await fetch(
"https://mcp.keepamore.com/api/seller?domain=1&seller=A1PA6795UKMFR9,ATVPDKIKX0DER&csvDays=0",
{ headers: { "X-API-Key": "km_xxx" } },
);
console.log(await resp.json());
// 拉店铺前 200 个 ASIN
const resp2 = await fetch(
"https://mcp.keepamore.com/api/seller?domain=1&seller=A1PA6795UKMFR9&storefront=1&page=0&perPage=200",
{ headers: { "X-API-Key": "km_xxx" } },
);
console.log(await resp2.json());python
# 请将 km_xxx 替换为你的 API Key
import requests
URL = "https://mcp.keepamore.com/api/seller"
HEADERS = {"X-API-Key": "km_xxx"}
# 1) 批量查卖家评分(最常见,省 csv)
r1 = requests.get(URL,
params={"domain": 1, "seller": "A1PA6795UKMFR9,ATVPDKIKX0DER", "csvDays": 0},
headers=HEADERS, timeout=180)
print(r1.json())
# 2) 拉店铺前 200 个 ASIN
r2 = requests.get(URL,
params={"domain": 1, "seller": "A1PA6795UKMFR9",
"storefront": 1, "page": 0, "perPage": 200},
headers=HEADERS, timeout=180)
print(r2.json())php
<?php
// 请将 km_xxx 替换为你的 API Key
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$resp = $client->get('https://mcp.keepamore.com/api/seller', [
'headers' => ['X-API-Key' => 'km_xxx'],
'query' => [
'domain' => 1,
'seller' => 'A1PA6795UKMFR9,ATVPDKIKX0DER',
'csvDays' => 0,
],
'timeout' => 180,
]);
echo $resp->getBody();java
// 请将 km_xxx 替换为你的 API Key(Java 11+ 标准库)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
String url = "https://mcp.keepamore.com/api/seller"
+ "?domain=1&seller=A1PA6795UKMFR9,ATVPDKIKX0DER&csvDays=0";
HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("X-API-Key", "km_xxx")
.timeout(Duration.ofSeconds(180))
.GET()
.build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());go
// 请将 km_xxx 替换为你的 API Key(Go 标准库 net/http)
package main
import (
"fmt"
"io"
"net/http"
"net/url"
"time"
)
func main() {
q := url.Values{}
q.Set("domain", "1")
q.Set("seller", "A1PA6795UKMFR9,ATVPDKIKX0DER")
q.Set("csvDays", "0")
req, _ := http.NewRequest("GET",
"https://mcp.keepamore.com/api/seller?"+q.Encode(), nil)
req.Header.Set("X-API-Key", "km_xxx")
client := &http.Client{Timeout: 180 * time.Second}
resp, err := client.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}典型配方
| 场景 | 建议参数 |
|---|---|
| 批量查卖家基本信息(最省) | seller=A,B,C + csvDays=0 |
| 拉单个卖家完整店铺 ASIN | seller=A + storefront=1(不传 page / perPage 即返回全部) |
| 分页拉超大店铺 ASIN | seller=A + storefront=1 + page=0&perPage=1000,逐页递增 page |
| 强制刷新 storefront 数据 | seller=A + storefront=1 + update=0(忽略缓存新鲜度阈值) |
和 MCP 的对应
- MCP:
kmore_get_seller
GET /api/seller/name 轻量名称查询
批量查询卖家名称与评分,每个卖家只返回 name / rating(0–100)/ ratingCount 三元组——轻量查询,远省于完整 /seller。适合"拿到一批卖家 ID 只想显示名字"的场景:topseller 榜单标注、buyBox 卖家名称、竞品卖家速览等。
接口
GET https://mcp.keepamore.com/api/seller/name计费
| 模式 | units |
|---|---|
| 按查询卖家数量 | 每 10 个卖家 ID 1 unit(向上取整,最少 1 unit) |
参数(Query String)
| 名称 | 类型 | 必填 | 默认 | 约束 | 说明 |
|---|---|---|---|---|---|
domain | integer | ✅ | — | 1–12 | 站点 ID(可用 domainId / country) |
seller | string[] / csv | ✅ | — | 1–100,正则 ^[A-Z0-9]{10,20}$ | 卖家 ID 列表,同 /seller 的解析规则 |
响应
json
{
"code": "0000",
"msg": "ok",
"data": {
"merchantNames": {
"A3452MZW8LXF6S": { "name": "OFEEFAN", "rating": 100, "ratingCount": 31053 }
},
"missing": ["A1B7M9EQGNCLQA"],
"fromCache": false
}
}merchantNames:解析到的卖家;missing= 请求了但无记录的 ID(全部解析到时省略)- 缓存 6 小时
示例
bash
curl "https://mcp.keepamore.com/api/seller/name?domain=1&seller=A3452MZW8LXF6S,ATVPDKIKX0DER" \
-H "X-API-Key: km_xxx"