# Amazon 多个商品的共同关键词 API (amazon.keyword_intersections)

- Canonical page: https://everyinfra.com/amazon-api/keyword_intersections
- Endpoint: POST /api/v1/social with {"platform": "amazon", "action": "keyword_intersections", "params": {...}}
- Price: $0.01151 per call ($11.51 per 1,000 requests); failed and empty results are not charged
- Returns: list, default 20, max 100 per call (larger values are capped)
- Mode: sync; add "mode": "async" for slow tasks

多个商品的共同关键词按 `asins` 找出这几个商品都排得上的搜索关键词，每行是一个共同词，带月搜索量 `search_volume`，以及每个商品在这个词下的名次明细 `rankings`。想知道几个竞品共同在争哪些词、在同一个词下谁的价格和评分更有优势，从这个接口入手。

`asins` 放 2–10 个 ASIN，只查美国站，一个 ASIN 不够，至少要两个。`rankings` 按你传入 ASIN 的顺序排，每项含名次、结果类型（自然或广告）、标题、价格和币种、评分和评分数。

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=amazon&action=keyword_intersections

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| asins | not declared | yes | not declared | 要比的商品 ASIN，2–10 个，数组或逗号分隔的字符串，每个是 10 位大写字母/数字。只查美国站；返回这些商品都排得上的关键词。 |
| limit | integer (1–100) | no | 20 | 这次调用最多返回的条数，整数，1–100；不传按默认值，实际返回可能少于这个数。超过上限照收，按上限返回。 |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| keyword | 这个商品排得上的搜索关键词（ranked_keywords）。 |
| search_volume | 该关键词在美国站的月搜索量估计（ranked_keywords），是整个词的需求，不是这个商品的流量；0 表示量太小。 |
| ranked_at | 观察到这个名次的时间，ISO 8601、UTC（ranked_keywords）；不同关键词的观察时间不同，可能是几周前。 |
| rankings | 这组商品各自在该关键词下的名次（keyword_intersections），按传入顺序，每项有 asin、search_rank、result_type（organic 自然 / sponsored 广告）、title、price、currency、rating、rating_count。 |
| total_keywords | 这个商品总共排得上多少个关键词（ranked_keywords），或这组商品一共有多少个共同关键词（keyword_intersections）；每行相同，一次最多返回 100 个。 |
| platform | 数据来源平台标识，与请求里的 platform 一致（如 xiaohongshu、tiktok）。 |

## Example

```bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "amazon",
  "action": "keyword_intersections",
  "params": {
    "asins": [
      "B0C2JXSHSK",
      "B0CM8STPNH"
    ]
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "amazon",
        "action": "keyword_intersections",
        "params": {
            "asins": [
                "B0C2JXSHSK",
                "B0CM8STPNH",
            ],
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

No real sample for these example parameters yet: structure only, every value is a placeholder (…).

```text
{
  "id": "req_…",
  "platform": "amazon",
  "action": "keyword_intersections",
  "results": [
    {
      "keyword": …,
      "search_volume": …,
      "ranked_at": …,
      "rankings": …,
      "total_keywords": …,
      "platform": …
    }
  ],
  "count": …,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### `rankings` 里的顺序和 `asins` 有什么关系？

一致。`rankings` 按传入 `asins` 的顺序列出每个商品在这个词下的情况，所以第一项对应你传的第一个 ASIN，每项里也带着 ASIN，可以直接对号。

### `ranked_at` 为什么每个词不一样？

它是观察到这个名次的时间，ISO 8601、UTC。不同关键词的观察时间不同，可能是几周前，所以名次是各自某一刻的快照，不是同一时刻的并排对比。

### `total_keywords` 比返回的行数多是什么意思？

在这个接口里，它是这组商品一共有多少个共同关键词，不是单个商品的关键词数，每行的值相同。一次最多返回 100 个共同词，所以 `total_keywords` 大于返回行数，就说明有共同词没在这次结果里。

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=amazon
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
