---
title: "Response Schema"
description: "ResultsPage、Suggestions、Place、App、Trends 等 SERP API 返回的所有类型，逐字段说明。"
---

> Every apinoa docs page as markdown: https://apinoa.com/llms.txt (all in one file: https://apinoa.com/llms-full.txt; this API family in one file: https://apinoa.com/docs/serp/llms.txt)

所有引擎返回同一套共享类型。同一个字段在所有引擎上含义相同。

可选字段确实是可选的：**缺失表示页面没有说明**。没有 `rating` 表示没有显示星级，而不是零星。时间为 ISO 8601、UTC。
每个对象都可能带有 `ext`，其中以该引擎自己的名称保存只有它才有的信息。

| 操作 | 返回 |
|---|---|
| `search` | [`ResultsPage`](#resultspage)（应用商店：[`AppsPage`](#appspage)） |
| `suggestions` | [`Suggestions`](#suggestions) |
| `places` · `place` · `reviews` | [`PlacesPage`](#placespage) · [`Place`](#place) · [`PlaceReviewsPage`](#placereviewspage) |
| `app` · `reviews`（应用商店） | [`App`](#app) · [`AppReviewsPage`](#appreviewspage) |
| `explore` · `trending`（Google Trends） | [`TrendsExplore`](#trendsexplore) · [`TrendingPage`](#trendingpage) |

Google Shopping 返回电商平台类型 `SearchResult`、`Product` 和 `ReviewPage`，见
[Marketplace Response Schema](/docs/api-reference/marketplaces/response-schema)。

## ResultsPage

一页结果，按页面显示顺序包含所有区块。

| 字段 | 类型 | 说明 |
|---|---|---|
| `engine` | string | `google` `bing` `yahoo` `duckduckgo` `yandex` `baidu` `naver` `yahoo-japan` `seznam` `daum` `sogou` |
| `query` | string | 请求的查询；以图搜图时为引擎给该图片起的名称 |
| `type` | string | `web` `news` `images` `videos` `image` |
| `outcome` | string | `results`，或引擎说明没有结果时为 `noResults`。被拦截或无法读取的页面是错误，绝不是 `noResults` |
| `country` `lang` `device` `timeRange` `safe` | string? | 构成本次搜索的输入，原样返回 |
| `image` | string? | 以图搜图所用的图片 |
| `correctedQuery` | string? | 引擎改写查询时实际搜索的内容（"显示的是以下查询的结果：…"） |
| `totalResults` | integer? | 仅当页面明确给出时（"约 1,230,000 条结果"） |
| `page` | integer | 第一页为 1 |
| `items` | Item[] | 所有区块，按页面顺序。见下文 |
| `cursor` | string? | 下一页。只带 `cursor` 传入 |
| `fetchedAt` | string | 读取页面的时间 |

每一项都有 `type`、`rank`（在页面所有项中从 1 开始的位置）和 `ext`，其余字段取决于 `type`：

| `type` | 字段 |
|---|---|
| `organic` | `position`（仅在自然结果中的排名，跨页连续计数）、`url`、`title`、`snippet?`、`site?`、`displayUrl?`、`date?`、`sitelinks?`、`thumbnail?`、`image?`、`imageWidth?`、`imageHeight?`、`images?`、`durationSec?`、`lang?`、`favicon?`、`badges?`、`facts?`、`rating?`、`ratingScale?`、`reviewCount?` |
| `ad` | `block?`（`top` `bottom` `side`）、`url`、`title`、`snippet?`、`advertiser?`、`displayUrl?`、`sitelinks?`、`thumbnail?`、`phone?`、`extensions?`、`favicon?`、`badges?`、`rating?`、`reviewCount?`、`promotion?` |
| `news` | `url`、`title`、`snippet?`、`source?`、`sourceUrl?`、`sourceLogo?`、`date?`、`thumbnail?`、`favicon?` |
| `image` | `imageUrl`、`thumbnail?`、`width?`、`height?`、`title?`、`url?`（图片所在页面）、`source?`、`date?`、`format?`、`favicon?` |
| `video` | `url`、`title`、`snippet?`、`source?`、`channel?`、`channelUrl?`、`avatar?`、`date?`、`durationSec?`、`views?`、`viewsText?`、`thumbnail?`、`embedUrl?`、`preview?`、`favicon?` |
| `topStories` `videoCarousel` `imagePack` `shopping` `twitter` `discussions` | `title?`、`items`（区块内的条目）、`sponsored?`、`moreUrl?`、`total?` |
| `peopleAlsoAsk` | `title?`、`questions`：`{question, answer?, url?, title?}[]` |
| `relatedSearches` | `title?`、`queries`：string[] |
| `knowledgePanel` | `title`、`subtitle?`、`description?`、`source?`、`facts?`、`images?`、`website?`、`links?` |
| `localPack` | `places`：[Place](#place)[]、`moreUrl?`、`total?` |
| `aiOverview` | `answer`：AI Answers API 的 [Answer](/docs/api-reference/answers/response-schema#answer) 类型，原样不变 |
| `other` | `kind`（引擎对该区块的称呼）、`title?`、`text?`、`links?` |

`sitelinks` 和 `links` 为 `{url, title?, snippet?}[]`。`facts` 为按显示顺序排列的 `{label, value}[]`。`badges` 是页面给结果
加的标签，逐字保留。`rating` 使用页面自己的刻度；页面给出刻度时，`ratingScale` 为其最大值（`8.1/10` → `10`）。结构中尚无
对应形式的区块以 `other` 返回，绝不丢弃。

## Suggestions

| 字段 | 类型 | 说明 |
|---|---|---|
| `engine` | string | |
| `query` | string | 输入的内容 |
| `country` `lang` | string? | 传入时原样返回 |
| `suggestions` | array | `{text, type?}`：引擎的联想词，按引擎顺序。`type` 为引擎给出的类别（查询、实体等） |

## Place

商家或兴趣点。

| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | string | 引擎的稳定地点 id；传给 `place` 和 `reviews` |
| `name` | string | |
| `url` | string? | 该地点在引擎上的页面 |
| `address` | object? | `{full?, street?, city?, region?, postalCode?, country?}` |
| `lotAddress` | string? | 韩国在道路地址旁显示的地号地址 |
| `coordinates` | object? | `{lat, lng}` |
| `categories` | string[]? | |
| `rating` `reviewCount` | number? | 满分 5 的星级及旁边的评论数 |
| `priceLevel` | string? | 按显示原样：`$$`、`₩₩` |
| `phone` `website` | string? | |
| `hours` | array? | `{day, hours}`，每个列出的日子一条，时间按显示原样 |
| `status` | string? | `open` `closed` `temporarilyClosed` `permanentlyClosed` |
| `statusText` | string? | 营业状态原文（"Closed · Opens 7 AM"） |
| `photos` | string[]? | 页面带有的照片；该地点的照片总数为 `photoCount` |
| `attributes` | array? | `{group?, label, value?}`：设施、服务选项、支付方式 |
| `description` `neighborhood` `logo` | string? | |
| `verifiedOwner` | boolean? | 业主已认领该商家 |
| `reviewsUrl` | string? | 该地点的评论页面 |
| `lang` | string? | 原样返回 |

## PlacesPage

| 字段 | 类型 | 说明 |
|---|---|---|
| `engine` `query` | string | |
| `outcome` | string | `results` 或 `noResults` |
| `type` | string? | `maps`（地图列表）或 `local`（Google 本地结果） |
| `location` `near` `country` `lang` | string? | 原样返回 |
| `places` | [Place](#place)[] | |
| `page` | object | `{index, size, total?}`。仅当引擎给出数量时才有 `total` |
| `cursor` | string? | 下一页 |
| `fetchedAt` | string | |

## PlaceReviewsPage

| 字段 | 类型 | 说明 |
|---|---|---|
| `engine` `placeId` | string | |
| `summary` | object? | `{average, count?, distribution?}` |
| `starCounts` | object? | 星级 → 评论数，按给出的数值（`{"5": 2409, …}`） |
| `sort` | string? | |
| `page` | object | `{index, size, total?}` |
| `reviews` | array | 见下文 |
| `cursor` | string? | |
| `fetchedAt` | string | |

评论与电商平台商品评论字段相同：`id?`、`author?`、`authorAvatarUrl?`、`rating?`、`title?`、`body?`、`date?`、
`helpfulCount?`、`language?`、`images`、`reply?`（`{body, date?, author?}`，业主的回复）。地点评论另有 `authorId?`、
`authorUrl?` 和 `pinned?`。地点评论可能没有星级（Naver 访客常留下关键词而非星级），此时 `rating` 缺失，绝不为 `0`。

## AppsPage

Google Play 和 App Store 的 `search` 结果。

| 字段 | 类型 | 说明 |
|---|---|---|
| `engine` | string | `google-play` `app-store` |
| `query` | string | |
| `outcome` | string | `results` 或 `noResults` |
| `country` `lang` | string? | 原样返回 |
| `apps` | array | 列表中显示的 [App](#app)，外加 `rank` |
| `page` | object | `{index, size, total?}` |
| `cursor` | string? | |
| `fetchedAt` | string | |

## App

| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | string | Play 为包名（`com.strava`），Apple 为数字 id（`426826309`） |
| `name` | string | |
| `url` `icon` `video` | string? | |
| `developer` | object? | `{id?, name, url?, website?, email?, address?}` |
| `summary` | string? | 名称下方的一句话介绍 |
| `description` `whatsNew` | string? | |
| `screenshots` | string[]? | |
| `categories` | string[]? | 主类别在前 |
| `rating` | object? | `{average, count?}` |
| `starCounts` | object? | 星级 → 评分数 |
| `editorsChoice` | boolean? | |
| `price` | object? | `{currency, amount}`；免费应用为 `amount: 0` |
| `inAppPurchases` | boolean? | |
| `contentRating` `version` `requires` | string? | 按显示原样（"Teen"、"12+"、"Requires iOS 16.0 or later"） |
| `releasedAt` `updatedAt` | string? | |
| `country` `lang` | string? | 原样返回 |
| `related` `moreByDeveloper` | App[]? | 页面在旁边列出的应用，按列表形式（仅 `app`） |
| `privacyPolicyUrl` | string? | 仅 `app` |
| `chart` | object? | `{name, position}`：应用在商店榜单中的位置（仅 `app`） |

## AppReviewsPage

| 字段 | 类型 | 说明 |
|---|---|---|
| `engine` `appId` | string | |
| `sort` `country` `lang` | string? | 原样返回 |
| `page` | object | `{index, size, total?}` |
| `reviews` | array | `id?`、`author?`、`rating`、`title?`、`body?`、`date?`、`helpfulCount?`、`images`、`reply?`（开发者的回复） |
| `cursor` | string? | |
| `fetchedAt` | string | |

## TrendsExplore

Google Trends 对最多五个搜索词显示的内容。Trends 给出的是 0 到 100 的**相对**热度，以本次请求中最热的时间点为基准。
`0` 也是 Trends 给出的值，因此按 `0` 返回。

| 字段 | 类型 | 说明 |
|---|---|---|
| `terms` | string[] | 按请求顺序 |
| `country` `subregion` `timeRange` `category` `property` `lang` | | 输入原样返回。没有 `country` 表示全球 |
| `interestOverTime` | object? | `{points, averages?}`。每个点为 `{date, values, partial?, noData?}`，每个搜索词一个值 |
| `interestByRegion` | object? | `{resolution?, measure?, regions}`。地区为 `{code?, name, values, noData?, coordinates?}`。一个搜索词时 `measure` 为 `interest`；多个搜索词时为 `share`，即各搜索词在该地区相关搜索中的占比 |
| `related` | array? | `{term, topics?, queries?}`，各自有 `top` 和 `rising` 列表，条目为 `{title, kind?, id?, value?, growth?, growthValue?, url?}` |
| `fetchedAt` | string | |

## TrendingPage

某个国家当前的热门搜索。

| 字段 | 类型 | 说明 |
|---|---|---|
| `country` `subregion` `window` `category` `lang` | | 原样返回 |
| `items` | array | `{rank, query, volume?, minVolume?, growth?, startedAt?, endedAt?, active?, categories?, related?, articles?}` |
| `fetchedAt` | string | |

`volume` 为显示的搜索量（`200K+`），`minVolume` 为其下限。`articles` 为 `{title, url, source?, date?, image?}`；使用
`include=articles` 时，返回 Trends 为每个趋势收录的全部文章。
