# 海关数据 API

面向请求方的海关数据查询接口文档。

**Base URL**: `https://cd.210k.cc`

---

## 认证

所有请求须在 Header 携带 Bearer Token：

```
Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

Token 由管理员分配，每人一个，请妥善保管。

---

## 反馈与问题跟踪

用户反馈、Bug 报告、接口体验问题统一收集在：

`https://github.com/frankie0736/customs-data-issues`

提交 issue 时，建议附上：
- 接口路径与时间
- 关键请求参数（脱敏后）
- 返回的错误码 / 响应片段
- 是否可稳定复现

---

## 快速开始

```bash
TOKEN="你的token"

# 提交查询
TASK=$(curl -s -X POST https://cd.210k.cc/api/query \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keyword":"LED light","sid":"100","page_size":10}')

TASK_ID=$(echo $TASK | python3 -c "import sys,json; print(json.load(sys.stdin)['task_id'] or 'cached')")
echo "Task: $TASK_ID"

# 轮询结果（通常 1-3 秒内完成）
curl -s "https://cd.210k.cc/api/task/$TASK_ID" \
  -H "Authorization: Bearer $TOKEN" | python3 -m json.tool
```

---

## 接口列表

| 端点 | 方法 | 说明 |
|------|------|------|
| `/api/query` | POST | 提交查询，返回 task_id 或缓存结果 |
| `/api/task/{id}` | GET | 轮询任务状态 |
| `/api/tasks/status` | POST | 批量查询多个任务状态 |
| `/api/task/{id}` | DELETE | 取消排队中的任务 |
| `/api/queue/status` | GET | 查看队列状态与 worker 状态 |
| `/api/stats` | GET | 查看实时运行统计与 ACC 状态 |
| `/api/aggregate` | POST | 已暂停，固定返回 `410 Gone` |
| `/api/detail` | POST | 查询单条关单完整详情 |
| `/api/contact` | POST | 已暂停，固定返回 `410 Gone` |

---

### POST /api/query — 提交查询

**请求体（JSON）：**

| 字段 | 类型 | 必填 | 默认值 | 说明 |
|------|------|------|--------|------|
| `keyword` | string | ✅ | — | 搜索关键字 |
| `field` | string | | `ProductDesc1` | 搜索字段（见下方字段表） |
| `sid` | string | | `"100"` | 数据源 ID（见下方数据源表） |
| `date_start` | string | | 近12个月 | 开始月份，格式 `YYYYMM`；与 `date_end` 跨度不能超过 **35 个月** |
| `date_end` | string | | 上个月 | 结束月份，格式 `YYYYMM`；与 `date_start` 跨度不能超过 **35 个月** |
| `page_num` | int | | `1` | 页码，从 1 开始；最大值随 `page_size` 动态变化 |
| `page_size` | int | | `10` | 每页记录数，只支持 `10` / `20` / `30` |
| `prefetch_pages` | int | | `0` | 额外预取页数（0-10），见下方说明 |
| `force_refresh` | bool | | `false` | 跳过缓存，强制重新查询 |
| `filters` | array | | `null` | 辅助过滤条件列表（见下方 [辅助过滤条件](#辅助过滤条件filters)） |

**响应 — 缓存命中（立即返回）：**

```json
{
  "task_id": null,
  "cached": true,
  "result": {
    "total": 61963,
    "records": [...],
    "took_ms": 0
  }
}
```

**响应 — 入队：**

```json
{
  "task_id": "c130482d-de47-4545-ba39-63d7ca36c553",
  "cached": false,
  "position": 3,
  "message": "前面还有 2 人排队"
}
```

> 若当前处于数学验证码阻塞期，`/api/query` 会返回标准 `503 math_captcha_blocking` 响应，见文末“数学验证码”章节。

**响应 — prefetch_pages > 0（多页预取）：**

```json
{
  "tasks": [
    {"page_num": 1, "task_id": "aaa...", "cached": false},
    {"page_num": 2, "task_id": "bbb...", "cached": false},
    {"page_num": 3, "task_id": null,     "cached": true}
  ]
}
```

> **prefetch_pages 说明**：设为 N 时，服务器会一次性为第 `page_num` 到 `page_num+N` 共 `N+1` 页创建任务。适合连续翻页；若任务较多，建议后续改用 `POST /api/tasks/status` 批量轮询。最大 `10` 页。
>
> **动态页码上限**：单个查询族最多允许翻到 `6000` 条，因此最大页码随 `page_size` 变化：
>
> - `page_size=10` → 最大 `600` 页
> - `page_size=20` → 最大 `300` 页
> - `page_size=30` → 最大 `200` 页
>
> 若 `page_num` 超出当前 `page_size` 对应的最大值，会直接返回 `400`；若 `prefetch_pages` 导致后续页超出范围，超出的页不会入队。

---

### GET /api/task/{task_id} — 查询任务状态

该接口会刷新该任务的“兴趣租约”。若任务处于 `pending` 且连续 `5` 分钟未被单查或批量轮询，会被系统自动取消；`processing` 中的任务不会被中断。

**响应 — 排队中：**

```json
{
  "status": "pending",
  "position": 2
}
```

**响应 — 排队中（数学验证码阻塞时附加字段）：**

```json
{
  "status": "pending",
  "position": 2,
  "captcha_blocking": true,
  "captcha_url": "https://cd.210k.cc/captcha/live"
}
```

**响应 — 处理中：**

```json
{
  "status": "processing",
  "position": 0
}
```

**响应 — 完成：**

```json
{
  "status": "done",
  "cached": false,
  "result": {
    "total": 61963,
    "records": [...],
    "took_ms": 143
  }
}
```

**响应 — 失败：**

```json
{
  "status": "failed",
  "error": "错误描述"
}
```

**响应 — 自动取消：**

```json
{
  "status": "cancelled",
  "reason": "client_interest_expired"
}
```

---

### POST /api/tasks/status — 批量查询任务状态

适合一次轮询几十到几百个任务。该接口会对本次传入的 `pending/processing` 任务统一刷新兴趣租约。

**请求体（JSON）：**

```json
{
  "task_ids": ["aaa...", "bbb...", "ccc..."]
}
```

- `task_ids` 一次最多 `200` 个
- 会自动去重
- 只会返回当前 token 自己的任务；不存在或无权访问的任务统一记为 `not_found`

**响应示例：**

```json
{
  "summary": {
    "pending": 2,
    "processing": 1,
    "done": 3,
    "failed": 0,
    "cancelled": 1,
    "not_found": 0,
    "all_done": false
  },
  "tasks": [
    {"task_id": "aaa...", "status": "pending", "position": 8},
    {"task_id": "bbb...", "status": "processing", "position": 0},
    {"task_id": "ccc...", "status": "done", "result_ready": true, "cached": false}
  ],
  "next_poll_task_ids": ["aaa...", "bbb..."]
}
```

说明：

- `next_poll_task_ids` 只包含仍需继续轮询的任务
- `done` / `failed` / `cancelled` 的任务，下次不必再传
- 自动取消的任务可能带 `reason: "client_interest_expired"`
- 该接口默认只返回状态；`done` 任务的完整结果请继续用 `GET /api/task/{id}` 获取

---

### DELETE /api/task/{task_id} — 取消任务

只能取消状态为 `pending` 的任务，且只能取消自己提交的任务。

**响应 — 成功：**

```json
{
  "status": "cancelled",
  "task_id": "c130482d-de47-4545-ba39-63d7ca36c553"
}
```

**错误码：**
- `404` — 任务不存在
- `403` — 不是你的任务
- `409` — 任务状态不是 `pending`，无法取消（如已在处理中）

---

### POST /api/aggregate — 已暂停

该端点当前已暂停服务。

**当前响应（固定 `410 Gone`）：**

```json
{
  "detail": "此端点已暂停服务。请使用 /api/query 分页获取明细，并由请求方自行汇总。"
}
```

**替代方案：** 使用 `/api/query` 分页拉取明细后，由请求方自行汇总。

---

### POST /api/detail — 关单详情

查询单条记录的完整详情。所需参数均从 `/api/query` 返回的 `records` 里取。

**请求体（JSON）：**

| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `bid` | string | ✅ | 关单 ID，取 record 的 `BID` 字段 |
| `par_date` | string | ✅ | 分区标识，取 record 的 `ParDate` 字段 |
| `months` | string | ✅ | 月份，取 record 的 `Months` 字段，如 `"202503"` |
| `sid` | string | ✅ | **必须取 record 自身的 `SID` 字段** |

`sid` 必须使用该条记录自身的 `SID`，不能复用搜索时提交的查询 `sid`。如果传错，通常会返回空字段或找不到记录。

**响应示例：**

```json
{
  "fields": {
    "Dates": "2026-03-30",
    "Importer1": "EXAMPLE IMPORTER LLC",
    "Exporter1": "EXAMPLE EXPORTER CO LTD",
    "ProductDesc1": "LED LIGHT STRIPS",
    "HSCODE": "9405409980",
    "TotalPrice": "12500.00",
    "QTY": "5000.00",
    "WT": "350.00"
  },
  "module_count": 9
}
```

> 该接口**直接执行**，不走 `/api/query` 的异步任务队列；但仍受统一限流和时段配额限制。相关返回码见下方“频率限制与准入控制”。

若系统因连续验证码高压进入临时暂停窗口，`/api/detail` 会返回 `503`：

```json
{
  "error": "service_temporarily_suspended",
  "message": "系统因连续验证码高压临时暂停，请稍后重试",
  "retry_after_sec": 1800
}
```

---

### POST /api/contact — 已暂停

该端点当前已暂停服务。

**当前响应（固定 `410 Gone`）：**

```json
{
  "detail": "此端点已暂停服务，正在重新设计。请使用 /api/query (field=Importer1) 查询公司贸易记录。"
}
```

**替代方案：**
- 按公司名查贸易记录：调用 `/api/query`，并将 `field` 设为 `Importer1`
- 查单条记录详情：先用 `/api/query` 拿到记录，再调用 `/api/detail`

---

### GET /api/queue/status — 队列状态

```json
{
  "worker_status": "running",
  "pending": 3,
  "processing": 1,
  "done": 42,
  "failed": 0,
  "cancelled": 1,
  "cache_entries": 15,
  "suspension_active": false,
  "suspension_retry_after_sec": 0,
  "acc": {
    "slot_base_quota": 372,
    "adaptive_multiplier": 1.08,
    "effective_quota": 402,
    "used": 188,
    "remaining": 214
  },
  "worker_rate": {
    "interval_sec": "10-20",
    "batch_size": 9999,
    "cooldown_sec": 0
  }
}
```

`worker_status` 取值：

| 值 | 含义 |
|----|------|
| `running` | 正常处理任务 |
| `idle` | 队列为空 |
| `paused_session` | 服务暂不可执行 |
| `paused_captcha` | 正在处理验证码 |
| `paused_suspended` | 因连续验证码高压临时暂停执行 |
| `starting` | 服务启动中 |

> 数学验证码阻塞时，响应中还会附带 `math_captcha_blocking: true` 和 `captcha_url`。
>
> ```json
> {
>   "worker_status": "paused_captcha",
>   "math_captcha_blocking": true,
>   "captcha_url": "https://cd.210k.cc/captcha/live",
>   ...
> }
> ```

> `suspension_active=true` 时，worker 会暂时停止消化队列，但 `/api/query` 仍可继续入队；`/api/detail` 会直接返回 `503 service_temporarily_suspended`。

---

### GET /api/stats — 运行统计

用于观察当前时段配额、验证码压力和 ACC 运行状态，便于排查“为什么变慢了”或“当前是否处于暂停窗口”。

响应中的重点字段：
- `current_slot.slot_base_quota`：当前路段基准配额
- `current_slot.adaptive_multiplier`：当前自适应乘数
- `current_slot.effective_quota / used / remaining`：当前实际配额与消耗
- `current_slot.suspension_active`：是否处于连续验证码高压暂停窗口
- `today.acc`：今天累计的 boost / brake / 峰值配额

---

## 排队与调度规则

请求方需要注意以下行为，这些都会影响排队时长和完成顺序：

- `/api/query` 进入的是**串行队列**，同一时刻只会有一个任务实际执行；`/api/detail` 不进队列，收到请求后会尝试立即执行；`/api/aggregate` 当前已暂停。
- `position` 是**参考位置**，不是严格 ETA。调度器会在不同 token、不同查询主题之间做穿插，避免单个大批量任务长期霸占队列。
- 同一 token 下，完全相同且仍在排队/执行中的查询会被去重，重复提交会直接返回已有 `task_id`，不会重复入队。
- 缓存命中的查询会**直接返回**，不进入队列，也不会消耗排队名额。
- 同一查询主题（相同 `keyword + field + sid + date_start + date_end`，不含页码）累计请求量较大时，后续页会被降为低优先级；低优先级任务等待时间可能更长，最长约 30 分钟后会自动恢复为正常优先级。
- 每天 `23:00-08:00` 的冷却时段只处理首页任务（`page_num=1`）；深翻页任务（`page_num>1`）会继续留在队列里，等白天时段再处理。
- `prefetch_pages=N` 会一次性尝试为 `1+N` 个页面入队，并按同一次准入检查处理；如果额度不够，会整批拒绝，不会只入队一部分。

---

## 搜索字段（field）

| 值 | 说明 |
|----|------|
| `ProductDesc1` | 产品描述（默认） |
| `Importer1` | 进口商名称 |
| `Exporter1` | 出口商名称 |
| `HSCODE` | HS 编码 |
| `LdPort` | 装货港 |
| `DesPort` | 目的港 |

> `OrgCountry`（原产国）和 `DesCountry`（目的国）不能作为主搜索字段，请在 `filters` 中使用。

---

## 辅助过滤条件（filters）

`filters` 允许在主搜索条件之外叠加额外筛选，常用于按国家、港口等维度缩小结果范围。

**结构（数组中每个元素）：**

| 字段 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `field` | string | — | 过滤字段名 |
| `value` | string | — | 过滤值 |
| `search_type` | int | `0` | 0=包含, 1=精确匹配, 2=开头, 3=模糊 |

**可用过滤字段：** `ProductDesc1`, `Importer1`, `Exporter1`, `HSCODE`, `LdPort`, `DesPort`, `OrgCountry`, `DesCountry`

**示例 — 搜索美国进口的 LED 产品，限定原产国为印度：**

```json
{
  "keyword": "LED light",
  "field": "ProductDesc1",
  "sid": "100",
  "filters": [
    {"field": "OrgCountry", "value": "INDIA"}
  ]
}
```

**示例 — 搜索发往纽约、原产国为中国的家具：**

```json
{
  "keyword": "furniture",
  "sid": "100",
  "filters": [
    {"field": "DesPort", "value": "NEW YORK"},
    {"field": "OrgCountry", "value": "CHINA", "search_type": 1}
  ]
}
```

---

## 全部数据源（287个）

> `sid` 参数填入下表中的 SID 值即可切换数据源。默认 `sid="100"` 为美国进口提单。

### 全球

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `994` | 全球统计进口(年度) | 统计数据 | 全运输 | 按周更新 | 1962-2025 |
| `996` | 全球统计进口(月度) | 统计数据 | 全运输 | 按周更新 | 202001-202602 |
| `995` | 全球统计出口(年度) | 统计数据 | 全运输 | 按周更新 | 1962-2025 |
| `997` | 全球统计出口(月度) | 统计数据 | 全运输 | 按周更新 | 202001-202602 |

### 美国

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `100` | 美国 | 提单数据 | 海运 | 按天更新 | 201401-202603 |
| `101` | 美国新版 | 名录数据 | 全运输 | 按月更新 | 201201-202602 |
| `107` | 美国进口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202601 |
| `102` | 美国船东提单 | 提单数据 | 海运 | 按天更新 | 202301-202603 |
| `103` | 美国出口 | 提单数据 | 海运 | 按月更新 | 201401-202601 |
| `105` | 美国出口新版 | 提单数据 | 海运 | 一次性提供 | 201601-202306 |
| `109` | 美国出口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202601 |

### 墨西哥

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `501` | 墨西哥 | 关单数据 | 全运输 | 每月更新两次 | 202401-202603 |
| `495` | 墨西哥新版 | 关单数据 | 全运输 | 一次性更新 | 201601-202409 |
| `498` | 墨西哥海运 | 关单数据 | 海运 | 按月更新 | 201201-202601 |
| `492` | 墨西哥空运 | 关单数据 | 空运 | 一次性更新 | 202301-202412 |
| `491` | 墨西哥旧版 | 关单数据 | 全运输 | 一次性更新 | 201201-202409 |
| `497` | 墨西哥补充版 | 关单数据 | 全运输 | 一次性提供 | 201601-201711 |
| `502` | 墨西哥发票 | 关单发票数据 | 全运输 | 按月更新 | 202401-202603 |
| `503` | 墨西哥出口 | 关单数据 | 全运输 | 每月更新两次 | 202401-202603 |
| `499` | 墨西哥海运出口 | 关单数据 | 海运 | 按月更新 | 201201-202601 |
| `494` | 墨西哥空运出口 | 关单数据 | 空运 | 一次性更新 | 202301-202412 |
| `493` | 墨西哥旧版出口 | 关单数据 | 全运输 | 一次性更新 | 201201-202409 |
| `504` | 墨西哥发票出口 | 关单发票数据 | 全运输 | 按月更新 | 202401-202603 |

### 加拿大

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `361` | 加拿大进口统计 | 统计数据 | 全运输 | 按月更新 | 201901-202512 |
| `360` | 加拿大 | 名录数据 | 全运输 | 年度更新 | 2015-2021 |
| `363` | 加拿大出口统计 | 统计数据 | 全运输 | 按月更新 | 201901-202512 |

### 澳大利亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `151` | 澳大利亚进口统计 | 统计数据 | 全运输 | 按月更新 | 202101-202601 |
| `153` | 澳大利亚出口统计 | 统计数据 | 全运输 | 按月更新 | 202101-202601 |

### 新西兰

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `811` | 新西兰进口统计 | 统计数据 | 全运输 | 按月更新 | 201501-202602 |
| `813` | 新西兰出口统计 | 统计数据 | 全运输 | 按月更新 | 201501-202602 |

### 巴拿马

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `161` | 科隆自贸区进口 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |
| `250` | 巴拿马 | 关单数据 | 全运输 | 按周更新 | 200901-202602 |
| `251` | 巴拿马旧版 | 关单数据 | 全运输 | 一次性提供 | 201401-202505 |
| `252` | 巴拿马海运提单 | 提单数据 | 海运 | 按月更新 | 201501-202602 |
| `163` | 科隆自贸区出口 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |
| `253` | 巴拿马出口 | 关单数据 | 全运输 | 按周更新 | 201401-202602 |
| `255` | 巴拿马出口旧版 | 关单数据 | 全运输 | 一次性提供 | 201401-202505 |
| `254` | 巴拿马海运提单出口 | 提单数据 | 海运 | 按月更新 | 201501-202602 |

### 哥斯达黎加

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `560` | 哥斯达黎加 | 关单数据 | 全运输 | 按周更新 | 201401-202603 |
| `561` | 哥斯达黎加旧版 | 关单数据 | 全运输 | 一次性提供 | 201401-201709 |
| `565` | 哥斯达黎加转口旧版 | 关单数据 | 全运输 | 一次性提供 | 201401-201709 |
| `567` | 哥斯达黎加出口 | 关单数据 | 全运输 | 按周更新 | 201501-202603 |
| `563` | 哥斯达黎加出口旧版 | 关单数据 | 全运输 | 一次性提供 | 201401-201709 |

### 危地马拉

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `711` | 危地马拉进口统计 | 统计数据 | 全运输 | 按月更新 | 201901-202602 |
| `710` | 危地马拉 | 关单数据 | 全运输 | 不定期更新 | 201801-202602 |
| `714` | 危地马拉出口统计 | 统计数据 | 全运输 | 按月更新 | 201901-202602 |
| `713` | 危地马拉出口 | 关单数据 | 全运输 | 一次性提供 | 201801-201909 |

### 萨尔瓦多

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `450` | 萨尔瓦多 | 关单数据 | 全运输 | 工作日按天更新 | 200801-202603 |

### 斐济

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `891` | 斐济 | 关单数据 | 全运输 | 一次性提供 | 201901-202110 |
| `893` | 斐济出口 | 关单数据 | 全运输 | 一次性提供 | 201901-202110 |

### 尼加拉瓜

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `786` | 尼加拉瓜新版 | 关单数据 | 全运输 | 按周更新 | 202101-202603 |
| `785` | 尼加拉瓜 | 关单数据 | 全运输 | 一次性提供 | 202101-202403 |
| `788` | 尼加拉瓜新版出口 | 关单数据 | 全运输 | 按周更新 | 202101-202603 |
| `787` | 尼加拉瓜出口 | 关单数据 | 全运输 | 一次性提供 | 202101-202403 |

### 波多黎各

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `941` | 波多黎各进口统计 | 统计数据 | 全运输 | 按季度更新 | 200207-202510 |
| `943` | 波多黎各出口统计 | 统计数据 | 全运输 | 按季度更新 | 200207-202510 |

### 多米尼加

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `201` | 多米尼加 | 关单数据 | 全运输 | 按月更新 | 202101-202602 |
| `203` | 多米尼加出口 | 关单数据 | 全运输 | 按月更新 | 202101-202602 |

### 阿根廷

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `540` | 阿根廷 | 关单数据 | 全运输 | 按月更新 | 201001-202601 |
| `542` | 阿根廷快版 | 关单数据 | 全运输 | 按月更新（比普通版快半月左右） | 202001-202602 |
| `543` | 阿根廷出口 | 关单数据 | 全运输 | 按月更新 | 201401-202601 |

### 秘鲁

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `550` | 秘鲁 | 关单数据 | 全运输 | 按周更新 | 201101-202603 |
| `556` | 秘鲁快版 | 关单数据 | 全运输 | 按天更新 | 201401-202603 |
| `557` | 秘鲁空运提单 | 提单数据 | 空运 | 一次性提供 | 201801-201912 |
| `559` | 秘鲁海运提单 | 提单数据 | 海运 | 一次性提供 | 201801-201910 |
| `553` | 秘鲁出口 | 关单数据 | 全运输 | 按周更新 | 201501-202602 |

### 玻利维亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `485` | 玻利维亚快版 | 关单数据 | 全运输 | 半周更新 | 201401-202603 |
| `482` | 玻利维亚新版 | 关单数据 | 全运输 | 按周更新 | 202501-202603 |
| `486` | 玻利维亚进口统计 | 统计数据 | 全运输 | 按月更新 | 201001-202512 |
| `481` | 玻利维亚旧版 | 关单数据 | 全运输 | 一次性提供 | 201401-201808 |
| `483` | 玻利维亚快版出口 | 关单数据 | 全运输 | 按天更新 | 201401-202603 |
| `484` | 玻利维亚新版出口 | 关单数据 | 全运输 | 按周更新 | 202501-202603 |
| `487` | 玻利维亚出口统计 | 统计数据 | 全运输 | 按月更新 | 201001-202512 |

### 智利

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `211` | 智利新版 | 关单数据 | 全运输 | 不定期更新 | 202401-202603 |
| `212` | 智利空运 | 关单数据 | 空运 | 不定期更新 | 202504-202603 |
| `210` | 智利 | 关单数据 | 全运输 | 按月更新 | 200801-202601 |
| `213` | 智利出口 | 关单数据 | 全运输 | 按月更新 | 201401-202601 |

### 巴西

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `294` | 巴西 | 关单数据 | 全运输 | 一次性提供 | 202203-202511 |
| `301` | 巴西空运提单 | 提单数据 | 空运 | 一次性提供 | 202401-202510 |
| `291` | 巴西进口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202602 |
| `298` | 巴西提单 | 提单数据 | 海运 | 一次性提供 | 201901-202512 |
| `297` | 巴西旧版 | 关单数据 | 全运输 | 一次性提供 | 201601-202111 |
| `290` | 巴西2009 | 关单数据 | 全运输 | 一次性提供 | 200901-200912 |
| `292` | 巴西零售 |  |  |  | 202112-202410 |
| `293` | 巴西出口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202602 |
| `295` | 巴西旧版出口 | 关单数据 | 全运输 | 一次性提供 | 201601-202110 |
| `299` | 巴西提单出口 | 提单数据 | 海运 | 一次性提供 | 201901-202511 |
| `296` | 巴西出口 | 关单数据 | 全运输 | 一次性提供 | 202201-202510 |

### 巴拉圭

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `115` | 巴拉圭新版 | 关单数据 | 全运输 | 按月更新 | 202201-202602 |
| `111` | 巴拉圭 | 关单数据 | 全运输 | 一次性提供 | 201401-202208 |
| `117` | 巴拉圭出口新版 | 关单数据 | 全运输  | 按月更新 | 202201-202602 |
| `113` | 巴拉圭出口 | 关单数据 | 全运输 | 一次性提供 | 201401-202208 |

### 委内瑞拉

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `414` | 委内瑞拉提单 | 提单数据 | 海运、空运 | 按月更新 | 201901-202508 |
| `410` | 委内瑞拉 | 关单数据 | 全运输 | 不定期更新 | 200901-202408 |
| `417` | 委内瑞拉提单出口 | 提单数据 | 海运、空运 | 按月更新 | 201901-202508 |
| `413` | 委内瑞拉出口 | 关单数据 | 全运输 | 不定期更新 | 201401-202408 |

### 圭亚那

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `935` | 圭亚那 | 关单数据 | 全运输 | 一次性提供 | 201901-202210 |
| `937` | 圭亚那出口 | 关单数据 | 全运输 | 一次性提供 | 201905-202210 |

### 哥伦比亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `238` | 哥伦比亚新版 | 关单数据 | 全运输 | 按月更新 | 202401-202601 |
| `230` | 哥伦比亚 | 关单数据 | 全运输 | 一次性提供 | 200801-202404 |
| `235` | 哥伦比亚旧版 | 关单数据 | 全运输 | 按月更新 | 200801-202211 |
| `237` | 哥伦比亚出口旧版 | 关单数据 | 全运输 | 一次性提供 | 200601-202212 |
| `233` | 哥伦比亚出口 | 关单数据 | 全运输 | 一次性提供 | 201401-201806 |

### 厄瓜多尔

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `530` | 厄瓜多尔 | 关单数据 | 全运输 | 按月更新 | 200801-202603 |
| `532` | 厄瓜多尔进口快版 | 关单数据 | 全运输 | 按周更新 | 202201-202603 |
| `535` | 厄瓜多尔空运提单 | 提单数据 | 空运 | 一次性提供 | 202001-202112 |
| `538` | 厄瓜多尔海运提单 | 海运提单 | 海运 | 一次性提供 | 202001-202112 |
| `534` | 厄瓜多尔出口快版 | 关单数据 | 全运输 | 按周更新 | 202201-202603 |
| `533` | 厄瓜多尔出口 | 关单数据 | 全运输 | 按月更新 | 201401-202602 |
| `536` | 厄瓜多尔空运提单出口 | 提单数据 | 空运 | 一次性提供 | 202001-202112 |
| `539` | 厄瓜多尔海运提单出口 | 提单数据 | 海运 | 一次性提供 | 202001-202112 |

### 乌拉圭

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `281` | 乌拉圭 | 关单数据 | 全运输 | 按天更新 | 201401-202603 |
| `285` | 乌拉圭转口 | 关单数据 | 全运输 | 按天更新 | 201401-202603 |
| `282` | 乌拉圭进口提单  | 提单数据 | 全运输 | 一次性提供 | 201501-202405 |
| `283` | 乌拉圭出口 | 关单数据 | 全运输 | 按天更新 | 201401-202603 |
| `284` | 乌拉圭出口提单  | 提单数据 | 全运输 | 一次性提供 | 201501-202405 |

### 中国

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `601` | 中国进口统计 | 统计数据 | 全运输 | 按月更新 | 201701-202602 |
| `465` | 中国台湾进口统计 | 统计数据 | 全运输 | 按月更新 | 201901-202512 |
| `460` | 中国台湾 | 名录数据 | 全运输 | 一次性提供 |  |
| `405` | 中越双边进口 | 关单数据 | 全运输 | 一次性提供 | 201701-202012 |
| `603` | 中国出口统计 | 统计数据 | 全运输 | 按月更新 | 201701-202602 |
| `467` | 中国台湾出口统计 | 统计数据 | 全运输 | 按月更新 | 201901-202512 |
| `463` | 中国台湾出口 | 名录数据 | 全运输 | 一次性提供 |  |
| `407` | 中越双边出口 | 详细关单 | 全运输 | 一次性提供 | 201801-202102 |

### 印度

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `421` | 印度 | 关单数据 | 全运输 | 每十天更新 | 201401-202603 |
| `431` | 印度快版 | 关单数据 | 全运输 | 按周更新 | 201901-202603 |
| `423` | 印度空运 | 特殊数据（介于关单与提单之间） | 空运 | 按月更新 | 202201-202512 |
| `435` | 印度经济特区 | 关单数据 | 全运输 | 不定期更新 | 201901-202602 |
| `510` | 印度出口 | 关单数据 | 全运输 | 每十天更新 | 201401-202603 |
| `433` | 印度快版出口 | 关单数据 | 全运输 | 按周更新 | 201901-202603 |
| `425` | 印度空运出口 | 特殊数据（介于关单与提单之间） | 空运 | 按月更新 | 201601-202509 |
| `437` | 印度经济特区出口 | 关单数据 | 全运输 | 不定期更新 | 202101-202602 |

### 越南

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `401` | 越南 | 关单数据 | 全运输 | 按月更新 | 201601-202602 |
| `403` | 越南出口 | 关单数据 | 全运输 | 按月更新 | 201601-202602 |

### 巴基斯坦

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `520` | 巴基斯坦关单 | 关单数据 | 全运输 | 每月两更 | 201401-202603 |
| `130` | 巴基斯坦海运提单 | 提单数据 | 海运 | 按月更新 | 200801-202512 |
| `311` | 巴基斯坦空运提单 | 提单数据 | 空运 | 不定期更新 | 202212-202305 |
| `310` | 巴基斯坦提单 | 提单数据 | 海运、空运 | 一次性提供 | 200801-202108 |
| `523` | 巴基斯坦关单出口 | 关单数据 | 全运输 | 按月更新 | 201701-202602 |
| `527` | 巴基斯坦出口新版 | 提单数据 | 海运、空运 | 一次性提供 | 202202-202407 |

### 印度尼西亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `722` | 印度尼西亚 | 关单数据 | 全运输 | 按月更新 | 201701-202602 |
| `725` | 印度尼西亚新版 | 关单数据 | 全运输 | 一次性提供 | 202301-202407 |
| `720` | 印度尼西亚旧版 | 关单数据 | 全运输 | 一次性提供 | 201807-202109 |
| `721` | 印尼零售 |  |  |  | 202310-202310 |
| `724` | 印度尼西亚出口 | 关单数据 | 全运输 | 按月更新 | 202101-202602 |
| `727` | 印度尼西亚新版出口 | 关单数据 | 全运输 | 一次性提供 | 202301-202407 |
| `723` | 印度尼西亚旧版出口 | 关单数据 | 全运输 | 一次性提供 | 201807-202109 |

### 泰国

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `862` | 泰国进口关单 | 关单数据 | 全运输 | 每月两更 | 202101-202505 |
| `865` | 泰国进口海运提单 | 提单 | 海运 | 每月两更 | 201911-202505 |
| `861` | 泰国进口统计 | 统计数据 | 全运输 | 按月更新 | 202001-202412 |
| `864` | 泰国出口关单 | 关单数据 | 全运输 | 每月两更 | 202105-202505 |
| `867` | 泰国出口海运提单 | 提单数据 | 海运 | 每月两更 | 201911-202505 |
| `868` | 泰国出口新版 | 特殊数据（介于关单与提单之间） | 全运输 | 按天更新 | 202301-202603 |
| `863` | 泰国出口统计 | 统计数据+名录 | 全运输 | 按月更新 | 202012-202412 |

### 土耳其

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `932` | 土耳其新版 | 关单数据 | 全运输 | 按月更新 | 201901-202511 |
| `936` | 土耳其保税区 | 关单数据 | 全运输 | 按月更新 | 202408-202409 |
| `931` | 土耳其 | 关单数据 | 全运输 | 一次性提供 | 201901-202511 |
| `934` | 土耳其新版出口 | 关单数据 | 全运输 | 按月更新 | 200101-202511 |
| `933` | 土耳其出口 | 关单数据 | 全运输 | 按月更新 | 202001-202511 |
| `672` | 土耳其过境 | 过境数据 | 陆运 | 按月更新 | 202301-202602 |

### 马来西亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `331` | 马来西亚 | 关单数据 | 全运输 | 每月两次 | 202301-202602 |
| `333` | 马来西亚出口 | 关单数据 | 全运输 | 每月两次 | 202301-202602 |

### 菲律宾

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `571` | 菲律宾新版 | 关单数据 | 全运输 | 按月更新 | 201901-202603 |
| `570` | 菲律宾 | 关单数据 | 全运输 | 不定期更新 | 201501-202601 |
| `573` | 菲律宾出口新版 | 关单数据 | 全运输 | 按月更新 | 201901-202603 |
| `572` | 菲律宾出口 | 关单数据 | 全运输 | 按月更新 | 202201-202601 |

### 韩国

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `170` | 韩国 | 名录数据+韩国进口食品卫生数据 | 全运输 | 一次性提供+按周更新 | 200901-202603 |
| `871` | 韩国进口统计 | 统计数据 | 全运输 | 按月更新 | 200401-202408 |
| `873` | 韩国出口统计 | 关单数据 | 全运输 | 按月更新 | 200401-202408 |

### 孟加拉国

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `831` | 孟加拉 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |
| `833` | 孟加拉出口 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |

### 乌兹别克斯坦

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `631` | 乌兹别克斯坦新版 | 关单数据 | 全运输 | 按月不定期更新 | 202401-202602 |
| `630` | 乌兹别克斯坦 | 关单数据 | 全运输 | 一次性提供 | 201401-202312 |
| `632` | 乌兹别克斯坦出口新版 | 关单数据 | 全运输 | 按月不定期更新 | 202401-202602 |
| `633` | 乌兹别克斯坦出口 | 关单数据 | 全运输 | 一次性提供 | 201401-202210 |

### 哈萨克斯坦

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `640` | 哈萨克斯坦 | 关单数据 | 全运输 | 按周更新 | 201401-202603 |
| `643` | 哈萨克斯坦出口 | 关单数据 | 全运输 | 按周更新 | 201401-202603 |

### 斯里兰卡

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `660` | 斯里兰卡 | 关单数据 | 全运输 | 按月更新 | 201701-202602 |
| `661` | 斯里兰卡2 | 关单数据 | 全运输 | 按月更新 | 202503-202506 |
| `663` | 斯里兰卡出口 | 关单数据 | 全运输 | 按月更新 | 201701-202602 |
| `662` | 斯里兰卡2出口 | 关单数据 | 全运输 | 按月更新 | 202503-202506 |

### 日本

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `761` | 日本进口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202602 |
| `764` | 日本空运进口统计 | 统计数据 | 空运 | 按月更新 | 201401-202602 |
| `766` | 日本海运进口统计 | 统计数据 | 海运 | 按月更新 | 201401-202602 |
| `763` | 日本出口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202602 |
| `765` | 日本空运出口统计 | 统计数据 | 空运 | 按月更新 | 201401-202602 |
| `767` | 日本海运出口统计 | 统计数据 | 海运 | 按月更新 | 201401-202602 |

### 阿富汗

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `300` | 阿富汗 | 提单数据 | 海运（包含海运到巴基斯坦再陆运进阿富汗部分） | 按月更新 | 200801-202512 |

### 欧亚经济联盟

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `342` | 欧亚经济联盟新版 | 关单数据 | 全运输 | 按月更新 | 202401-202602 |
| `341` | 欧亚经济联盟 | 关单数据 | 全运输 | 一次性提供 | 202201-202307 |
| `344` | 欧亚经济联盟新版出口 | 关单数据 | 全运输 | 按月更新 | 202401-202602 |
| `343` | 欧亚经济联盟出口 | 关单数据 | 全运输 | 一次性提供 | 202201-202307 |

### 亚美尼亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `951` | 亚美尼亚 | 关单数据 | 全运输 | 按月更新 | 201705-202602 |
| `953` | 亚美尼亚出口 | 关单数据 | 全运输 | 按月更新 | 201705-202602 |

### 蒙古国

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `371` | 蒙古国 | 关单数据 | 全运输 | 按月更新 | 202501-202602 |
| `373` | 蒙古国出口 | 关单数据 | 全运输 | 按月更新 | 202501-202602 |

### 伊朗

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `381` | 伊朗 | 关单数据 | 全运输 | 按月更新 | 202501-202601 |
| `383` | 伊朗出口 | 关单数据 | 全运输 | 按月更新 | 202501-202601 |

### 巴勒斯坦

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `391` | 巴勒斯坦 | 关单数据 | 全运输 | 按月更新 | 201501-202602 |

### 新加坡

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `471` | 新加坡 | 关单数据 | 全运输 | 一次性更新 | 201901-201912 |
| `473` | 新加坡出口 | 关单数据 | 全运输 | 一次性更新 | 201901-201912 |

### 马尔代夫

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `131` | 马尔代夫 | 关单数据 | 全运输 | 按月更新 | 202101-202602 |
| `133` | 马尔代夫出口 | 关单数据 | 全运输 | 按月更新 | 202101-202602 |

### 俄罗斯

> **推荐**：优先使用 SID=`125`（铁路，持续更新）或 SID=`126`/`128`（关单）。

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `126` | 俄罗斯 | 关单数据 | 全运输 | 一次性提供 | 202101-202504 |
| `125` | 俄罗斯铁路 | 铁路数据 | 铁路运输 | 按周更新 | 201901-202603 |
| `128` | 俄罗斯新版 | 关单数据 | 全运输 | 一次性提供 | 202301-202312 |
| `121` | 俄罗斯旧版 | 关单数据 | 全运输  | 一次性提供 | 201401-202312 |
| `127` | 俄罗斯出口 | 关单数据 | 全运输 | 一次性提供 | 202101-202503 |
| `129` | 俄罗斯出口新版 | 关单数据 | 全运输 | 一次性提供 | 202301-202312 |
| `123` | 俄罗斯旧版出口 | 关单数据 | 全运输  | 一次性提供 | 201401-202312 |

### 乌克兰

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `140` | 乌克兰 | 关单数据 | 全运输 | 按月更新 | 200801-202602 |
| `143` | 乌克兰出口 | 关单数据 | 全运输 | 按月更新 | 201501-202602 |

### 西班牙

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `351` | 西班牙 | 关单数据 | 全运输 | 按月更新 | 201401-202601 |
| `353` | 西班牙出口 | 关单数据 | 全运输 | 按月更新 | 201401-202601 |

### 欧盟

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `650` | 欧盟进口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202601 |
| `653` | 欧盟出口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202601 |

### 摩尔多瓦

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `321` | 摩尔多瓦 | 关单数据 | 全运输 | 不定期更新 | 201801-202303 |
| `320` | 摩尔多瓦2010 | 关单数据 | 全运输 | 一次性提供 | 200901-201012 |
| `323` | 摩尔多瓦出口 | 关单数据 | 全运输 | 不定期更新 | 201801-202303 |

### 英国

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `180` | 英国 | 名录数据 | 全运输 | 按月更新 | 200801-202601 |
| `181` | 英国进口统计 | 统计数据 | 全运输 | 按月更新 | 202201-202601 |
| `183` | 英国出口 | 名录数据 | 全运输 | 按月更新 | 201601-202601 |
| `182` | 英国出口统计 | 统计数据 | 全运输 | 按月更新 | 202201-202601 |

### 科索沃

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `441` | 科索沃 | 关单数据 | 全运输 | 一次性提供 | 201512-202209 |
| `443` | 科索沃出口 | 关单数据 | 全运输 | 一次性提供 | 201807-202209 |

### 马拉维

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `591` | 马拉维 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |
| `593` | 马拉维出口 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |

### 赞比亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `911` | 赞比亚 | 关单数据 | 全运输 | 一次性提供 | 201901-202312 |
| `913` | 赞比亚出口 | 关单数据 | 全运输 | 一次性提供 | 201901-202312 |

### 莱索托

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `821` | 莱索托 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |
| `823` | 莱索托出口 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |

### 肯尼亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `742` | 肯尼亚 | 关单数据 | 全运输 | 按月更新 | 201801-202602 |
| `744` | 肯尼亚过境 | 过境数据 | 陆运 | 按月更新 | 202201-202602 |
| `741` | 肯尼亚旧版 | 关单数据 | 全运输 | 一次性提供 | 201801-202205 |
| `743` | 肯尼亚出口 | 关单数据 | 全运输 | 按月更新 | 202201-202602 |

### 纳米比亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `901` | 纳米比亚 | 关单数据 | 全运输 | 按月更新 | 201801-202602 |
| `903` | 纳米比亚出口 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |

### 科特迪瓦

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `921` | 科特迪瓦 | 关单数据 | 全运输 | 按月更新 | 201801-202602 |
| `923` | 科特迪瓦出口 | 关单数据 | 全运输 | 按月更新 | 201801-202602 |

### 津巴布韦

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `881` | 津巴布韦 | 关单数据 | 全运输 | 一次性提供 | 201801-202307 |
| `883` | 津巴布韦出口 | 关单数据 | 全运输 | 一次性提供 | 202001-202307 |

### 布隆迪

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `775` | 布隆迪 | 关单数据 | 全运输 | 按月更新 | 201801-202602 |
| `777` | 布隆迪出口 | 关单数据 | 全运输 | 一次性提供 | 201801-202211 |

### 尼日尔

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `261` | 尼日尔 | 关单数据 | 全运输 | 一次性提供 | 201801-202211 |
| `263` | 尼日尔出口 | 关单数据 | 全运输 | 一次性提供 | 201801-202211 |

### 尼日利亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `801` | 尼日利亚 | 关单数据 | 全运输 | 一次性提供 | 201901-202509 |
| `803` | 尼日利亚出口 | 关单数据 | 全运输 | 一次性提供 | 201901-202509 |

### 安哥拉

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `225` | 安哥拉海运进口 | 提单数据 | 海运 | 按月更新 | 202101-202602 |
| `221` | 安哥拉进口统计 | 统计数据 | 全运输 | 按月更新 | 201501-202504 |
| `227` | 安哥拉海运出口 | 提单数据 | 海运 | 按月更新 | 202101-202602 |
| `223` | 安哥拉出口统计 | 统计数据 | 全运输 | 按月更新 | 201501-202504 |

### 塞内加尔

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `271` | 塞内加尔 | 关单数据 | 全运输 | 一次性提供 | 201801-202312 |
| `273` | 塞内加尔出口 | 关单数据 | 全运输 | 一次性提供 | 201801-202312 |

### 埃塞俄比亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `690` | 埃塞俄比亚 | 关单数据 | 全运输 | 按月更新 | 201401-202602 |
| `693` | 埃塞俄比亚出口 | 关单数据 | 全运输 | 按月更新 | 201701-202602 |

### 坦桑尼亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `752` | 坦桑尼亚新版 | 关单数据 | 全运输 | 按周更新 | 202201-202602 |
| `755` | 坦桑尼亚新版过境 | 过境数据 | 全运输 | 按周更新 | 202201-202602 |
| `751` | 坦桑尼亚 | 关单数据 | 全运输 | 一次性提供 | 201801-202305 |
| `754` | 坦桑尼亚新版出口 | 关单数据 | 全运输 | 按周更新 | 202201-202602 |
| `753` | 坦桑尼亚出口 | 关单数据 | 全运输 | 一次性提供 | 201801-202305 |

### 圣多美和普林西比

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `581` | 圣多美和普林西比 | 关单数据 | 全运输 | 按月更新 | 201801-202602 |
| `583` | 圣多美和普林西比出口 | 关单数据 | 全运输 | 按月更新 | 201801-202602 |

### 喀麦隆

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `191` | 喀麦隆 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |
| `193` | 喀麦隆出口 | 关单数据 | 全运输 | 按月更新 | 201901-202602 |

### 卢旺达

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `961` | 卢旺达 | 关单数据 | 全运输 | 按月更新 | 202201-202602 |

### 博茨瓦纳

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `791` | 博茨瓦纳 | 关单数据 | 全运输 | 按月更新 | 201801-202511 |
| `793` | 博茨瓦纳出口 | 关单数据 | 全运输 | 按月更新 | 201801-202511 |

### 南非

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `851` | 南非进口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202601 |
| `853` | 南非出口统计 | 统计数据 | 全运输 | 按月更新 | 201401-202601 |

### 加纳

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `781` | 加纳 | 关单数据 | 全运输 | 按月更新 | 201801-202602 |
| `783` | 加纳出口 | 关单数据 | 全运输 | 按月更新 | 201801-202602 |

### 利比里亚

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `771` | 利比里亚 | 关单数据 | 全运输 | 按月更新 | 201801-202601 |
| `773` | 利比里亚出口 | 关单数据 | 全运输 | 按月更新 | 201801-202601 |

### 乍得

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `241` | 乍得 | 关单数据 | 全运输 | 一次性提供 | 201801-202206 |
| `243` | 乍得出口 | 关单数据 | 全运输 | 一次性提供 | 201801-202206 |

### 乌干达

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `731` | 乌干达 | 关单数据 | 全运输 | 按月更新 | 201601-202601 |
| `735` | 乌干达转口 | 关单数据 | 全运输 | 按月更新 | 201801-202601 |
| `733` | 乌干达出口 | 关单数据 | 全运输 | 按月更新 | 201601-202601 |

### 刚果(金)

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `971` | 刚果(金) | 关单数据 | 全运输 | 按月更新 | 201601-202602 |
| `973` | 刚果(金)出口 | 关单数据 | 全运输 | 按月更新 | 202501-202602 |

### 非洲自贸区

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `981` | 非洲自贸区 | 关单数据 | 陆运 | 按月更新 | 201901-202602 |

### 中美洲

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `621` | 中美洲新版 | 过境数据 | 陆运 | 不定期更新 | 202201-202603 |
| `620` | 中美洲 | 过境数据 | 陆运 | 一次性提供 | 201601-202101 |

### 危险品提单

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `704` | 危险品提单 | 提单数据 | 海运 | 不定期更新 | 202202-202603 |

### 环球海运

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `700` | 环球海运 | 海运提单 | 海运 | 不定期更新 | 201601-202603 |
| `670` | 欧亚航线 | 提单数据 | 海运 | 一次性提供 | 201501-202012 |

### 独联体

| SID | 名称 | 数据类型 | 运输方式 | 更新周期 | 数据范围 |
|-----|------|---------|---------|---------|---------|
| `680` | 独联体 | 过境数据 | 陆运 | 不定期更新 | 201601-202411 |

---

## 返回字段说明

| 字段 | 说明 |
|------|------|
| `Dates` | 提单日期（YYYY-MM-DD） |
| `Months` | 月份（YYYYMM） |
| `Exporter1` | 出口商 |
| `Importer1` | 进口商 |
| `ProductDesc1` | 产品描述 |
| `HSCODE` | HS 编码（6位） |
| `HSCODE8` | HS 编码（8位） |
| `QTY` | 数量 |
| `UNIT` | 数量单位 |
| `WT` | 重量（KG） |
| `TotalPrice` | 总价（USD） |
| `UnitPrice` | 单价（USD） |
| `OrgCountry` | 原产国（仅限 `filters` 使用，不可作为主搜索 `field`） |
| `DesCountry` | 目的国（仅限 `filters` 使用，不可作为主搜索 `field`） |

---

## 代码示例

### Python

```python
import httpx
import time

TOKEN = "你的token"
BASE = "https://cd.210k.cc"

def query(keyword, **kwargs):
    headers = {"Authorization": f"Bearer {TOKEN}"}

    # 提交
    resp = httpx.post(f"{BASE}/api/query",
                      headers=headers,
                      json={"keyword": keyword, **kwargs})
    data = resp.json()

    # 缓存直接返回
    if data.get("cached"):
        return data["result"]

    # 轮询
    task_id = data["task_id"]
    for _ in range(30):
        time.sleep(2)
        r = httpx.get(f"{BASE}/api/task/{task_id}", headers=headers).json()
        if r["status"] == "done":
            return r["result"]
        if r["status"] == "failed":
            raise Exception(r["error"])

    raise TimeoutError("查询超时")

# 使用
result = query("solar panel", sid="100", page_size=10)
print(f"共 {result['total']} 条记录")
for rec in result["records"]:
    print(rec["Dates"], rec["Exporter1"], rec["ProductDesc1"][:60])
```

### JavaScript / Node.js

```javascript
const TOKEN = "你的token";
const BASE = "https://cd.210k.cc";

async function query(keyword, options = {}) {
  const headers = {
    "Authorization": `Bearer ${TOKEN}`,
    "Content-Type": "application/json",
  };

  // 提交
  const res = await fetch(`${BASE}/api/query`, {
    method: "POST",
    headers,
    body: JSON.stringify({ keyword, ...options }),
  });
  const data = await res.json();

  if (data.cached) return data.result;

  // 轮询
  const taskId = data.task_id;
  for (let i = 0; i < 30; i++) {
    await new Promise(r => setTimeout(r, 2000));
    const r = await fetch(`${BASE}/api/task/${taskId}`, { headers }).then(r => r.json());
    if (r.status === "done") return r.result;
    if (r.status === "failed") throw new Error(r.error);
  }
  throw new Error("查询超时");
}

// 使用
const result = await query("LED light", { sid: "100", page_size: 10 });
console.log(`共 ${result.total} 条记录`);
result.records.forEach(r => console.log(r.Dates, r.Exporter1, r.ProductDesc1));
```

---

## 频率限制与准入控制

系统实行三层准入限制，适用于 `/api/query` 和 `/api/detail`。`/api/aggregate`、`/api/contact` 当前固定返回 `410`。

| 层级 | 规则 | 上限 | 错误码 |
|------|------|------|--------|
| **每 token Backlog** | 单 token 同时排队（pending + processing）任务数 | **100 条** | `429 backlog_full` |
| **每 token 小时配额** | 单 token 过去 1 小时内提交的 job 数 | **200 条/小时** | `429 hourly_limit` |
| **全系统小时上限** | 所有 token 合计，过去 1 小时内提交的 job 数 | **500 条/小时** | `429 system_busy` |

> **计费单位是 job，不是 HTTP 请求。** `/api/query` 携带 `prefetch_pages=N` 时，单次请求会产生 `1+N` 个 job，全部计入同一次准入检查（全有或全无：若超限则整批拒绝，不会半途入队）。

**429 错误响应格式：**

```json
{
  "error": "backlog_full",
  "detail": "队列已满：当前 98 条，本次需 3 条，上限 100 条。请等待当前任务完成后再提交。"
}
```

`error` 字段取值：`backlog_full` / `hourly_limit` / `system_busy`

### `/api/detail` 补充限制

- 不进入 `/api/query` 的异步队列，但仍受上表准入限制
- 若执行器正忙，会返回 `429`
- 当前时段执行配额耗尽时，会返回 `429 slot_quota_exhausted`
- 连续验证码高压触发系统暂停时，会返回 `503 service_temporarily_suspended`
- 直接请求会占用当前时段执行额度，因此可能影响队列任务的处理速度

当前时段配额用尽时，会返回：

```json
{
  "error": "slot_quota_exhausted",
  "detail": "当前时段配额已用完 (300/300)，请稍后重试。"
}
```

**建议的客户端重试策略：**
- 收到 `429` → 暂停提交，调用 `GET /api/queue/status` 观察 `pending` 数量
- `backlog_full`：等待自己的任务处理完（通常 30-120 秒）后再提交
- `hourly_limit` / `system_busy`：等到下一小时窗口，或在当前窗口内均匀分批提交
- `slot_quota_exhausted`：等待当前时段切换，或改用 `/api/query` 入队异步处理
- `service_temporarily_suspended`：读取 `retry_after_sec` 或 `Retry-After`，到时再重试 `/api/detail`

---

## 数学验证码（需人工介入）

系统偶发数学验证码（约每 **50-100 个 job** 触发一次）。触发后，`/api/query` 和 `/api/detail` 会统一返回 `503 math_captcha_blocking`，直到验证恢复。

**503 响应格式：**

```json
{
  "error": "math_captcha_blocking",
  "message": "数学验证码待人工求解，请先访问解题页面完成验证后再重试",
  "captcha_url": "https://cd.210k.cc/captcha/live"
}
```

**`GET /api/task/{id}` 返回额外字段（验证码阻塞期间）：**

```json
{
  "status": "pending",
  "position": 3,
  "captcha_blocking": true,
  "captcha_url": "https://cd.210k.cc/captcha/live"
}
```

**客户端处理建议：**

1. 收到 `503 math_captcha_blocking` → 暂停所有提交，**不要重试写入接口**
2. 由人工访问 `captcha_url`（`https://cd.210k.cc/captcha/live`）完成验证
3. 轮询 `GET /api/queue/status`，直到 `math_captcha_blocking` 字段消失（或 `worker_status` 不再是 `paused_captcha`）
4. 解题完成后正常重试，无需重新提交已入队的任务（它们仍在队列中等待）
