# SERP API 响应格式：JSON 的每个区块和字段

> SerpCrypto SERP API 返回内容逐字段详解：search_metadata、organic_results、ai_overview、people_also_ask、local pack、ads 以及按引擎划分的数组。

- URL: https://serpcrypto.com/zh/docs/response/
- 最后更新: 2026-10-22
- 发布者: SerpCrypto (https://serpcrypto.com)

每个引擎一个外层，然后结果页的每个部分一个区块。本页列出每个区块、它的字段及其类型。示例中的 ID、计数、价格和结果均为示意。

**快速回答 — SerpCrypto SERP API 响应包含什么？**

每个 **SerpCrypto** 响应是一个 JSON 对象：`search_metadata`（状态、引擎、已用积分）、`search_parameters`（应用的设置）、`search_information`，然后结果页的每个部分一个区块，比如 `organic_results`、`ai_overview`、`people_also_ask` 或 `local_results`。没有的部分就直接缺失。一页 1 个积分，低至 US$0.30/千次搜索；加密货币支付，无需 KYC。

## 完整的 Google 响应长什么样？

下面的示例是英国的一次 `standing desk` Google 搜索，每个数组只保留一项。真实响应大约有十条 organic 结果，外加该查询、地点和设备下页面显示的所有其他区块。

*engine=google, gl=gb：缩减后的示意值*

```json
{
  "search_metadata": {
    "id": "srch_2b81d0c6fa47",
    "status": "success",
    "engine": "google",
    "created_at": "2026-10-22T10:02:31Z",
    "credits_used": 1
  },
  "search_parameters": {
    "engine": "google",
    "q": "standing desk",
    "gl": "gb",
    "hl": "en",
    "google_domain": "google.co.uk",
    "device": "desktop",
    "page": 1
  },
  "search_information": { "total_results": 52400000, "query_displayed": "standing desk" },
  "ai_overview": {
    "text": "A standing desk lets you work while standing or sitting…",
    "references": [
      { "index": 1, "title": "How to choose a standing desk", "link": "https://www.example.co.uk/guide", "source": "Example Guide" }
    ]
  },
  "ads": [
    { "position": 1, "block": "top", "title": "Electric Standing Desks", "link": "https://shop.example.com/desks", "displayed_link": "shop.example.com", "description": "Free delivery on…" }
  ],
  "organic_results": [
    {
      "position": 1,
      "title": "Best standing desks 2026, tested",
      "link": "https://www.example.co.uk/best-standing-desks",
      "displayed_link": "www.example.co.uk › reviews",
      "snippet": "We tested 14 electric and manual desks…",
      "date": "12 Oct 2026",
      "sitelinks": [ { "title": "Budget picks", "link": "https://www.example.co.uk/best-standing-desks#budget" } ]
    }
  ],
  "people_also_ask": [
    { "question": "Is it healthy to stand all day at a desk?", "snippet": "…", "title": "Standing at work", "link": "https://www.example.org/standing" }
  ],
  "shopping_results": [
    { "position": 1, "title": "Example Desk Pro 140 cm", "price": "£299.00", "source": "Example Store", "link": "https://shop.example.com/desk-pro" }
  ],
  "related_searches": [ { "query": "standing desk electric" }, { "query": "standing desk converter" } ],
  "pagination": { "current": 1, "next_page": 2 }
}
```

## 为什么我的响应里少了一些区块？

因为结果页没有显示它们。Google 会按查询、地点和设备决定是否显示 ads、AI Overview、local pack 或 top stories。SerpCrypto 返回页面显示的内容，其余留空，而不是发送空占位符。

读取每个区块时都给一个默认值，如下面的 Python 代码。区块内部同理：`date` 或 `sitelinks` 这类可选字段只出现在有这些字段的结果上。

*Python：安全读取可选区块*

```python
data = response.json()

# A block is present only when the results page shows it: read with a default.
overview = data.get("ai_overview") or {}
organic = data.get("organic_results", [])
questions = [item["question"] for item in data.get("people_also_ask", [])]

if overview:
    print("AI Overview sources:", [ref["link"] for ref in overview.get("references", [])])
print(len(organic), "organic results,", len(questions), "questions")
```

## search_metadata 里有什么？

| 字段 | 类型 | 描述 |
| --- | --- | --- |
| `id` | string | 本次搜索的标识符。联系支持时请附上它。 |
| `status` | string | 200 响应中的 `success`。 |
| `engine` | string | 执行本次搜索的引擎。 |
| `created_at` | string | 搜索时间，ISO 8601，UTC。 |
| `credits_used` | integer | 本次搜索消耗的积分：成功时为 1。 |

## search_parameters 和 search_information 是什么？

将 `search_parameters` 与你的结果一起存储：它精确记录了某条排名来自哪个国家、语言、地点和设备。

| 字段 | 类型 | 描述 |
| --- | --- | --- |
| `search_parameters` | object | 实际应用的参数（已补全默认值）：`engine`、`q`、`gl`、`hl`、`location`、`google_domain`、`device`、`page` 以及你发送的其他参数。 |
| `search_information.total_results` | integer | 引擎显示的结果数量（仅在显示时返回）。这是估算值，并非精确数字。 |
| `search_information.query_displayed` | string | 结果页面显示的查询词。 |

## organic_results 有哪些字段？

自然结果是未付费的网页结果。在 Bing 上，`organic_results` 的结构相同。

| 字段 | 类型 | 描述 |
| --- | --- | --- |
| `position` | integer | 该结果在本页此区块中的顺序，从 1 开始。 |
| `title` | string | 蓝色链接标题。 |
| `link` | string | 结果的 URL。 |
| `displayed_link` | string | 标题下方显示的 URL 或面包屑导航。 |
| `snippet` | string | 标题下方显示的文本。 |
| `date` | string | 摘要旁显示的日期，与页面上所写一致。可选。 |
| `sitelinks` | array | 结果下方显示的附加链接，每项包含 `title` 和 `link`。可选。 |

## AI Overview 是如何返回的？

仅当 Google 对该查询和地点显示 AI Overview 时才会出现 `ai_overview`。许多查询没有 AI Overview。

| 字段 | 类型 | 描述 |
| --- | --- | --- |
| `ai_overview.text` | string | 页面上显示的 AI Overview 文本。 |
| `ai_overview.references[].index` | integer | 该来源在概览中的顺序。 |
| `ai_overview.references[].title` | string | 所引用页面的标题。 |
| `ai_overview.references[].link` | string | 所引用页面的 URL。 |
| `ai_overview.references[].source` | string | 网站名称，与页面上显示一致。 |

## ads 和 people_also_ask 包含什么？

| 字段 | 类型 | 描述 |
| --- | --- | --- |
| `ads[].position` | integer | 在其区块内的顺序。 |
| `ads[].block` | string | 页面的 `top` 或 `bottom`。 |
| `ads[].title`、`link`、`displayed_link` | string | 广告的标题、落地页 URL 和显示的 URL。 |
| `ads[].description` | string | 广告正文。 |
| `people_also_ask[].question` | string | 显示的问题原文。 |
| `people_also_ask[].snippet` | string | 展开问题时显示的答案文本。 |
| `people_also_ask[].title`、`link` | string | 答案来源页面的标题和 URL。 |

## 还可能显示哪些其他 Google 区块？

| 区块 | 字段 | 它是什么 |
| --- | --- | --- |
| `local_results` | `position`、`title`、`address`、`rating`、`reviews`、`type` | 本地 pack：针对带地点意图的查询，在地图上显示的企业信息。 |
| `knowledge_graph` | `title`、`type`、`description`、`source.name`、`source.link` | 关于人物、地点、公司或事物的知识面板。 |
| `top_stories` | `title`、`link`、`source`、`date` | 以轮播形式显示的新闻文章。 |
| `inline_videos` | `title`、`link`、`source`、`duration` | 显示在网页结果中的视频结果。 |
| `shopping_results` | `position`、`title`、`price`、`source`、`link` | 显示在网页结果中的商品列表。 |
| `related_searches` | `query` | 显示在页面底部的搜索建议。 |
| `pagination` | `current`、`next_page` | 当前页码和下一页页码（如有）。 |

## 其他引擎返回什么？

每种垂直搜索沿用同一套框架，再各自追加自己的数组。在 Google Maps 上，`local_results` 比网页搜索的本地结果区更丰富。

| `engine` | 主数组 | 字段 |
| --- | --- | --- |
| `google_news` | `news_results` | `position`、`title`、`link`、`source`、`date`、`snippet`、`thumbnail` |
| `google_images` | `images_results` | `position`、`title`、`original`、`original_width`、`original_height`、`thumbnail`、`source`、`link` |
| `google_maps` | `local_results` | `position`、`title`、`place_id`、`address`、`phone`、`website`、`rating`、`reviews`、`type`、`hours`、`gps_coordinates.latitude`、`gps_coordinates.longitude` |
| `google_shopping` | `shopping_results` | `position`、`title`、`price`、`extracted_price`、`currency`、`source`、`link`、`delivery`、`rating`、`reviews` |
| `bing` | `organic_results`、`related_searches` | 与 Google 自然搜索结果相同的字段 |

## 价格、评分和日期是什么类型？

只要页面以文本形式书写，这些值就保留页面原来的形式。`price` 是带货币符号的字符串，例如 `£299.00`，而 Google Shopping 会追加一个数字类型的 `extracted_price`，以及作为代码的 `currency`。`rating` 是数字，`reviews` 是整数。`date` 这类日期保持页面上的写法，例如 `12 Oct 2026` 或 `3 days ago`，所以如果需要时间戳，请在你自己的代码里解析。

## 如何跨多个页面构建整体排名？

把页码与每条结果一起保存。`position` 给出该结果在其所在页面区块内的顺序，`search_parameters.page` 告诉你那是第几页。每页约 10 条自然结果，这是 Google 自 2025 年 9 月起不再支持 num=100 后的返回方式；每多一页就多消耗 1 积分。

做排名追踪时，多数团队会为每个关键词、每一天保存 `link`、`position`、`page`、`gl`、`location`、`device` 和 `created_at`。这样就足以绘制排名走势图，并按地点或设备解释排名变化。完整方法见[排名追踪](https://serpcrypto.com/zh/use-cases/rank-tracking/)。

## 响应格式问题

### 字段命名稳定吗？

在版本 1 内稳定。可能会新增区块或字段，所以请忽略你不认识的键。删除或重命名字段会伴随路径中出现新版本，例如 `/api/v2/`。

### 我能拿到页面的原始 HTML 吗？

不能。版本 1 只返回解析后的 JSON。解析出的区块覆盖了大多数工具所需的内容：结果、广告、相关问题、AI Overview、本地结果区和知识面板。

### 为什么 total_results 与我统计的数量不同？

这是搜索引擎自己给出的估算值，而不是你可以翻页浏览的结果数量。页面远在那个数字之前就结束了；用 `pagination.next_page` 判断是否还有下一页。

### 没有自然搜索结果的响应也会扣积分吗？

会，只要搜索成功：空页面也算一次结果。只有出错才免费。1 积分 = 1 次成功的查询请求，可在任意支持的引擎上返回一页结果。失败的请求不计费。

---

SerpCrypto: SerpCrypto 是面向开发者和 AI Agent 的 SERP API，可将 Google 和 Bing 搜索结果以 JSON 返回，用加密货币支付，无需上传证件。预付费搜索积分自 US$0.30/千次搜索 起永不过期。无需 KYC——无需证件、无需自拍、无需材料。加密货币支付。
