SERP API
使用本地化、设备、浏览器、分页、安全搜索和统一搜索类型参数查询结构化 Google 搜索结果。
接口
GET https://api.goanyapi.com/api/v1/serp当前配置下,每次成功请求消耗 2 积分。
鉴权
Authorization: Bearer YOUR_API_KEY请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
q | string | 是 | 搜索词,最多 200 个字符 |
gl | string | 否 | 两位搜索国家代码,例如 us 或 gb |
hl | string | 否 | 两位结果语言代码,例如 en 或 zh |
start | integer | 否 | 0 到 990 的结果偏移量;第二页使用 10 |
device | string | 否 | desktop、mobile、ios、iphone、ipad、ios_tablet、android 或 android_tablet |
browser | string | 否 | chrome、safari 或 firefox;Firefox 只支持桌面设备 |
safe | string | 否 | 安全搜索模式:active 或 off |
search_type | string | 否 | web(默认)、news、videos、local、places、shopping、short_videos 或 jobs |
search_type 是面向用户的唯一 Google 结果类型参数,API 会自动完成所需的参数映射,调用方不需要了解 Google 的底层参数。Google 已弃用 num,请使用 start 分页。未列出的参数会返回 invalid_params。
请求示例
GET /api/v1/serp?q=ai%20image&gl=us&hl=en&search_type=web&device=desktop&browser=chrome&safe=off
Authorization: Bearer YOUR_API_KEY成功响应
以下示例来自项目 demo.json 中真实的 ai image 响应。为便于阅读,数组和长链接已缩短,Base64 图片正文标记为省略。
{
"code": "ok",
"message": "ok",
"data": {
"endpoint": "serp",
"remainingCredits": 1035,
"query": {
"q": "ai image",
"gl": "us",
"hl": "en",
"search_type": "web",
"device": "desktop",
"browser": "chrome",
"safe": "off"
},
"result": {
"general": {
"search_engine": "google",
"query": "ai image",
"detected_query": "ai image",
"results_cnt": 134,
"search_time": 0.19,
"language": "en",
"country_code": "US",
"location": "United States",
"gl": "US",
"mobile": false,
"basic_view": false,
"search_type": "text",
"page_title": "ai image - Google Search",
"timestamp": "2026-08-18T09:06:26.895Z"
},
"input": {
"original_url": "https://www.google.com/search?q=ai+image",
"request_id": "hl_ff4e75aa_80fd5475533"
},
"navigation": [
{
"title": "Images",
"href": "https://www.google.com/search?q=ai+image&..."
}
],
"organic": [
{
"link": "https://felo.ai/tools/ai-image",
"source": "Felo",
"display_link": "https://felo.ai › tools › ai-image",
"title": "Free AI Image Generator - Text to Image | Felo AI",
"description": "Felo AI Image generates stunning photos, illustrations, and art in 30 seconds.",
"snippet_highlighted_words": ["Felo AI Image"],
"extensions": [
{
"type": "rating",
"rating": 4.9,
"reviews_cnt": 1709394,
"rank": 2
}
],
"icon": "data:image/jpeg;base64,[已省略]",
"rank": 5,
"global_rank": 11
}
],
"images": [
{
"link": "https://ai.plainenglish.io/ai-image-generation-shocking-insights-99-dont-know-37948a8a02b0",
"source": "Artificial Intelligence in Plain English",
"source_logo": "data:image/png;base64,[已省略]",
"image": "data:image/jpeg;base64,[已省略]",
"image_alt": "AI Image Generation — SHOCKING Insights",
"image_base64": "data:image/jpeg;base64,[已省略]",
"rank": 1,
"global_rank": 5
}
],
"pagination": {
"pages": [
{
"page": 2,
"start": 10,
"link": "https://www.google.com/search?q=ai+image&start=10"
}
],
"current_page": 1,
"next_page": 2,
"next_page_start": 10,
"next_page_link": "https://www.google.com/search?q=ai+image&start=10"
},
"related": [
{
"text": "AI image generator free",
"link": "https://www.google.com/search?q=AI+image+generator+free",
"rank": 1,
"global_rank": 16
}
]
}
}
}响应字段
Google 会根据查询返回不同的结果模块。除非业务已确认某个模块稳定存在,否则应将 data.result 下的字段和数组都按可选字段处理。
响应外层
| 字段 | 类型 | 说明 |
|---|---|---|
code | string | 请求成功时为 ok |
message | string | 请求状态消息 |
data.endpoint | string | 固定值:serp |
data.costCredits | number | 本次请求扣除的积分 |
data.remainingCredits | number | 成功请求扣费后的剩余积分 |
data.query | object | API 实际使用的已校验公开请求参数 |
data.query.q | string | 搜索词 |
data.result | object | 过滤后的结构化 Google 响应 |
结果模块
| 字段 | 类型 | 说明 |
|---|---|---|
data.result.general | object | 搜索元数据、识别后的查询、地区、数量和耗时 |
data.result.input | object | 请求追踪信息 |
data.result.navigation | array | Google 结果分类导航链接 |
data.result.organic | array | 按展示顺序排列的自然搜索结果 |
data.result.images | array | 页面存在图片模块时返回的图片结果 |
data.result.pagination | object | 当前页、下一页及可用分页链接 |
data.result.related | array | 相关搜索建议 |
搜索概况与请求输入
| 字段 | 类型 | 说明 |
|---|---|---|
data.result.general.search_engine | string | 搜索引擎标识,通常为 google |
data.result.general.query | string | Google 展示的查询词 |
data.result.general.detected_query | string | Google 识别或标准化后的查询词 |
data.result.general.results_cnt | number | Google 报告的近似结果总数 |
data.result.general.search_time | number | 搜索处理耗时,单位为秒 |
data.result.general.language | string | 结果语言代码 |
data.result.general.country_code | string | 解析出的两位国家代码 |
data.result.general.location | string | 解析出的可读地区名称 |
data.result.general.gl | string | Google 国家定位值 |
data.result.general.mobile | boolean | Google 是否渲染了移动端结果页 |
data.result.general.basic_view | boolean | 是否使用 Google 基础结果视图 |
data.result.general.search_type | string | 识别到的结果页类型 |
data.result.general.page_title | string | Google 结果页的浏览器标题 |
data.result.general.timestamp | string | 响应生成的 ISO 8601 时间 |
data.result.input.original_url | string | 实际请求的 Google URL |
data.result.input.request_id | string | 用于排查问题的请求标识 |
导航与自然搜索结果
| 字段 | 类型 | 说明 |
|---|---|---|
data.result.navigation[].title | string | 导航名称,例如 Images 或 Videos |
data.result.navigation[].href | string | 对应结果分类的 Google 链接 |
data.result.organic[].link | string | 结果目标地址 |
data.result.organic[].source | string | 来源或发布方名称 |
data.result.organic[].display_link | string | 结果中展示的面包屑样式地址 |
data.result.organic[].title | string | 结果标题 |
data.result.organic[].description | string | 结果摘要 |
data.result.organic[].snippet_highlighted_words | array | Google 在摘要中高亮的文本片段 |
data.result.organic[].icon | string | 站点图标,通常为 Base64 data URI |
data.result.organic[].rank | number | 在自然搜索结果模块中的位置 |
data.result.organic[].global_rank | number | 在整页所有结果模块中的位置 |
data.result.organic[].extensions | array | 可选的标签、评分或其他附加信息 |
data.result.organic[].extensions[].type | string | 附加信息类型,如 text 或 rating |
data.result.organic[].extensions[].text | string | 文本类附加信息的内容 |
data.result.organic[].extensions[].rating | number | 评分值 |
data.result.organic[].extensions[].reviews_cnt | number | 评价数量 |
data.result.organic[].extensions[].rank | number | 附加信息在当前结果中的顺序 |
图片、分页与相关搜索
| 字段 | 类型 | 说明 |
|---|---|---|
data.result.images[].link | string | 图片所在页面 |
data.result.images[].source | string | 图片来源或发布方 |
data.result.images[].source_logo | string | 来源图标,通常为 Base64 data URI |
data.result.images[].image | string | 图片 URL 或 data URI |
data.result.images[].image_alt | string | 图片替代文本 |
data.result.images[].image_base64 | string | 响应中提供的内联 Base64 图片数据 |
data.result.images[].rank | number | 在图片模块中的位置 |
data.result.images[].global_rank | number | 在整页所有结果模块中的位置 |
data.result.pagination.pages | array | 可用后续页的描述列表 |
data.result.pagination.pages[].page | number | 用户看到的页码 |
data.result.pagination.pages[].start | number | 请求该页所需的 start 偏移量 |
data.result.pagination.pages[].link | string | 对应页面的 Google 链接 |
data.result.pagination.current_page | number | 当前页码 |
data.result.pagination.next_page | number | 下一页页码 |
data.result.pagination.next_page_start | number | 下一页对应的 start 偏移量 |
data.result.pagination.next_page_link | string | 下一页 Google 链接 |
data.result.related[].text | string | 相关搜索文字 |
data.result.related[].link | string | 相关搜索的 Google 链接 |
data.result.related[].rank | number | 在相关搜索模块中的位置 |
data.result.related[].global_rank | number | 在整页所有结果模块中的位置 |
响应过滤
结构化 JSON 保留在 data.result,但会递归移除广告模块、酒店结果、AI Overview、知识面板和源 HTML。响应不会返回服务端凭证、内部配置或请求头。
Google 会根据查询词、国家、语言、设备和时间改变结果模块。客户端应忽略未知字段,并允许文档中列出的可选模块缺失。
计费
只有查询成功返回有效的结构化 JSON 后才扣除配置的 SERP 积分。鉴权失败、参数错误、查询失败或返回无效 JSON 均不扣积分。