Google Search MCP Server
Google Search MCP Server (SERP)
一个托管的 Model Context Protocol (MCP) 服务器,为 Claude、Cursor、Windsurf 以及任何其他 MCP 客户端提供八个只读的 Google Search 工具。拉取带有 AI Overview 和 People Also Ask 的实时 SERP,运行 Google AI Mode 查询,并读取新闻、购物、产品详情和短视频结果,全部以结构化 JSON 呈现,无需 Google Cloud 项目,也无需配置搜索引擎。
https://mcp.hasdata.com/api/mcp?apis=google_serp
“SERP”和“Google Search”在这里是同一个产品。该服务器返回解析后的 Google 搜索引擎结果页。
目录
Related MCP server: DuckDuckGo MCP Server
你需要什么
一个支持带自定义请求头的流式 HTTP 的 MCP 客户端。从仪表盘获取 HasData API 密钥,免费创建,无需银行卡,试用额度根据工具不同大约覆盖 100 到 200 次调用。仅此而已。这是一个远程服务器,因此最简单的路径是 URL 加请求头,无需设置 Google Cloud 项目或可编程搜索引擎。仅支持 stdio 的客户端可以改用 @hasdata/google-search-mcp(npm)或 hasdata-google-search-mcp(PyPI)启动器。
快速开始
URL |
|
传输方式 | HTTP,可流式传输 |
认证请求头 |
|
服务器 URL 对所有客户端都是相同的。我们在 Claude Code 和 Claude Desktop 中实际运行过。其他配置块遵循各客户端自己文档中关于远程服务器的格式。
支持 OAuth 的客户端可以将相同的 URL 添加为连接器并登录,而无需在配置文件中放入密钥。
claude mcp add --transport http google-search "https://mcp.hasdata.com/api/mcp?apis=google_serp" \
--header "x-api-key: HASDATA_API_KEY"Claude Desktop 只会从其配置文件中加载本地(stdio)服务器,因此它通过 stdio 启动器访问远程服务器。@hasdata/google-search-mcp 包就是该启动器,它会从环境中读取密钥。
claude_desktop_config.json:
{
"mcpServers": {
"google-search": {
"command": "npx",
"args": ["-y", "@hasdata/google-search-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}使用 Python 而不是 Node?将启动器换成 PyPI 包,uvx 无需手动安装即可运行:
{
"mcpServers": {
"google-search": {
"command": "uvx",
"args": ["hasdata-google-search-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}支持 OAuth 的客户端也可以将 URL 添加为自定义连接器,从而跳过启动器。
.cursor/mcp.json:
{
"mcpServers": {
"google-search": {
"url": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"google-search": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}{
"mcpServers": {
"google-search": {
"url": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
"type": "streamableHttp",
"headers": { "x-api-key": "HASDATA_API_KEY" },
"disabled": false
}
}
}.vscode/mcp.json:
{
"servers": {
"google-search": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}~/.gemini/settings.json:
{
"mcpServers": {
"google-search": {
"httpUrl": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}示例提示
在 Google 上搜索
best running shoes,给我前十条自然结果以及 AI Overview。
一次调用,10 个积分。SERP 响应会在自然结果之外内联返回 AI Overview。
对于同一个查询,取出每个 People Also Ask 问题,并拉取其带来源的 AI Overview 答案。
每个问题一次调用,每次 5 个积分。每个 relatedQuestions 条目都包含一个 aiOverview.pageToken,AI Overview 工具会将该令牌转换为答案块及其引用。
向 Google AI Mode 提问
what is the Model Context Protocol,并给我带引用的答案。
在 Google Shopping 上搜索
nike air max,然后拉取第一个结果的完整产品卡片:销售该产品的每家商店、价格区间和评论明细。
获取
artificial intelligence的最新 Google News,并单独获取cooking pasta的短视频结果。
两次调用,每次 10 个积分。
该工作流依赖两条链路。SERP 响应会内联返回一个 aiOverview,并在每个 People Also Ask 问题上返回一个 pageToken,因此提取 Google 的生成式答案要么随搜索免费获得,要么每个问题一次 5 积分的后续调用。购物结果同样会为每个产品返回一个令牌,因此从列表到完整的多商店卡片的跳转只需一次调用。
工具
八个工具,全部只读。下面的示例来自真实调用并经过裁剪,其中的结果会随 Google 的变化而变化,因此请将它们视为形状示例。每个工具名称都链接到其端点参考文档。
这些示例是载荷,而不是完整响应。tools/call 结果包含一个文本块,该文本本身是 JSON,包含 url、status、text 和 json,抓取的数据位于 json 下。从原始 JSON-RPC 响应来看,路径是 result.content[0].text,解析后再取 .json。聊天客户端会为你解包,而直接与端点通信的代码则不会。
Google SERP
hasdata_google_serp_serp_getSearchResults
某个查询的完整结果页。
参数 | 类型 | 必填 | 说明 |
| string | 是 | 搜索查询,与用户输入时完全一致 |
| string | 两位字母的国家和语言代码 | |
| string | 搜索的地理位置,可以是名称或 | |
| number | 每页的大致结果数。Google 现在将每页限制在约十条,并忽略更高的值,因此 | |
| number | 分页的结果偏移量 | |
| string | 搜索类型和高级筛选,即 Google 原始参数 | |
| string |
|
返回 searchInformation、organicResults、aiOverview、relatedQuestions、relatedSearches、perspectives、immersiveProducts 和 pagination,以及 Google 针对该查询显示的任何块。自然结果条目包含 position、title、link、displayedLink、source、snippet、snippetHighlitedWords、date 和 images。
AI Overview 有两种返回方式。通常
aiOverview是内联的,带有你可以直接阅读的textBlocks和references。有时 Google 会将其放在令牌后面,此时aiOverview携带的是pageToken和hasdataLink,而不是这些块。每个relatedQuestions条目也属于第二种情况。它包含一个question和一个带有相同pageToken和hasdataLink的aiOverview,下面的 AI Overview 工具会展开它。因此,People Also Ask 的答案就是你需要逐个令牌获取的 AI Overview。顶层aiOverview在大多数查询中是内联的,在少数查询中是令牌,所以请同时按两种方式读取。
{
"organicResults": [
{
"position": 1,
"title": "The 15 Best Running Shoes of 2026",
"link": "https://www.runnersworld.com/gear/a19663621/best-running-shoes/",
"source": "Runner's World",
"snippet": "The Brooks Ghost is our No. 1 shoe when we recommend new trainers…"
}
],
"aiOverview": {
"textBlocks": [ { "type": "paragraph", "snippet": "The best running shoes depend on your goal…" } ],
"references": [ { "index": 0, "title": "7 Best Running Shoes in 2026 - RunRepeat", "link": "https://runrepeat.com/guides/best-running-shoes" } ]
},
"relatedQuestions": [
{ "question": "What are the top 5 best running shoes?", "aiOverview": { "pageToken": "eyJpZCI6…", "hasdataLink": "https://api.hasdata.com/scrape/google/ai-overview?pageToken=eyJpZCI6…" } }
],
"pagination": { "next": "…" }
}Google AI Overview
hasdata_google_serp_ai_overview_getAiOverviewResponse
将 AI Overview 令牌展开为其答案。
参数 | 类型 | 必填 | 说明 |
| string | 是 | 来自 SERP 响应的 |
返回带有 textBlocks 和 references 的 aiOverview。当 SERP 给你的是令牌而不是块时,这就是你读取 AI Overview 的方式,也是你将每个 People Also Ask 问题转化为带引用答案的方式。
令牌的有效期约为 4 分钟。过期的令牌不会返回空结果,而是作为工具错误失败,
isError: true,文本为HasData API error: 400 Bad Request。像处理错误密钥一样捕获它,然后重新运行 SERP 以获取新令牌。
{
"aiOverview": {
"textBlocks": [ { "type": "paragraph", "snippet": "The top five running shoes feature versatile options for daily training and racing…" } ],
"references": [ { "index": 0, "title": "…", "link": "https://…" } ]
}
}Google AI Mode
hasdata_google_serp_ai_mode_getAiModeResponse
Google AI Mode 对某个查询的答案,即对话式搜索结果。
参数 | 类型 | 必填 | 说明 |
| string | 是 | 要向 AI Mode 提出的问题 |
| string | 国家和语言代码 | |
| string | 地理位置 | |
| boolean | 设置为 true 以使答案可以在后续调用中继续 | |
| string | 来自先前 AI Mode 响应的令牌,用于继续对话线程 |
返回 textBlocks 和 references,即生成的答案及其引用的来源。
Google SERP Light
hasdata_google_serp_serp_light_getSearchResults
一种更便宜的搜索,返回页面的核心内容。
参数 | 类型 | 必填 | 说明 |
| string | 是 | 搜索查询 |
| string | 国家和语言代码 | |
| string | 地理位置 | |
| number | 页面大小和偏移量 |
返回 organicResults、aiOverview、relatedSearches、filters、appliedLocation、searchInformation 和 pagination。它的积分消耗是完整 SERP 的一半,适合你只需要自然结果和 AI Overview 而不需要其他模块的场景。
Google News
hasdata_google_serp_news_getGoogleNews
针对某个查询或新闻版块的 Google News 结果。
参数 | 类型 | 必填 | 说明 |
| string | 查询词。省略它以读取某个版块 | |
| string | 国家和语言代码 | |
| string | 使用前一次响应中的 token 深入某个主题、版块、报道或出版物 |
返回 newsResults、menuLinks、relatedTopics 和 relatedPublications。每条新闻条目包含 position、title、link、带有 name 和 icon 的 source、thumbnail 和 date。
Google Shopping
hasdata_google_serp_shopping_getSearchResults
针对某个查询的购物结果。
参数 | 类型 | 必填 | 说明 |
| string | 是 | 产品查询 |
| string | 国家和语言代码 | |
| string | 地理位置 | |
| number | 分页的结果偏移量 | |
| string | 高级购物筛选器,即 Google 原始参数 |
返回 shoppingResults、filters、refineSearchFilters、searchInformation 和 pagination。每条结果包含 position、title、productId、price、extractedPrice、rating、reviews、source、category、thumbnail 和一个 immersiveProductPageToken。
immersiveProductPageToken是下面沉浸式产品工具的输入。它是一个临时 token,所以如果你需要产品数据,请在它有效期内展开它;如果旧 token 失效,请重新运行购物调用以获取新的 token。
{
"shoppingResults": [
{
"position": 1,
"title": "Men's Nike Alphafly 3",
"productId": "13366226642799457284",
"price": "$285.00",
"extractedPrice": 285,
"rating": 4.5,
"reviews": 120,
"source": "Nike",
"immersiveProductPageToken": "eyJyZHMiOiJQQ18…"
}
]
}沉浸式产品
hasdata_google_serp_immersive_product_getImmersive_e29f691177
购物结果背后的完整产品卡片。
参数 | 类型 | 必填 | 说明 |
| string | 是 | 来自购物结果或 SERP |
| boolean | 请求更多商店 | |
| string | 使用前一次响应中的 |
返回一个 productResults 对象,包含 title、brand、rating、reviews、priceRange、一个包含每个卖家及其价格和链接的 stores 数组,以及 variants、reviewsImages、userReviews、topInsights、aboutTheProduct 和 discussionsAndForums。这是将单个列表转化为整个跨商店全景的唯一一次调用。
{
"productResults": {
"title": "Men's Nike Alphafly 3",
"brand": "Nike",
"rating": 4.4,
"reviews": 1077,
"priceRange": "$221-$295",
"stores": [ { "name": "eBay", "link": "https://www.ebay.com/itm/…", "price": "$221" } ],
"storesNextPageToken": "Mw=="
}
}将 storesNextPageToken 作为 nextPageToken 参数传回,即可翻页浏览商店。
Google 短视频
hasdata_google_serp_short_videos_getShortVideosSearchResults
Google 针对某个查询展示的短视频结果。
参数 | 类型 | 必填 | 说明 |
| string | 是 | 查询词 |
| string | 国家、语言和内容区域代码 | |
| array | 一个或多个语言限制 | |
| number | 结果页 | |
| string |
|
返回 shortVideos,每条包含 position、title、link、source、sourceLogo、profileName、duration、clip 和 thumbnail。
错误与失败路径
你的客户端几乎不会从工具调用中看到 HTTP 错误码。MCP 层返回 200,并将失败信息放在结果中,isError 设置为 true,原因以文本形式给出。智能体会读取一条消息,而你原本可能期望的是一个状态行。
错误的密钥会以工具输出的形式出现,而不是连接失败。 列出工具接受任何非空密钥,客户端完成握手并显示绿色。第一次工具调用随后返回 isError: true 和文本 HasData API error: 401 Unauthorized。请注意这个字符串,因为流程中更早的阶段不会报告该问题。
唯一真正的 HTTP 错误是缺少密钥。授权在任何工具之前运行,连接本身会以 401 失败。
破坏 schema 的参数会在成为搜索之前被拒绝。 没有 q 的搜索会返回 isError: true 和文本 MCP error -32602: Input validation error,并指明字段名称。不会获取任何内容,也不会产生任何费用。
过期的 AI Overview token 会以错误形式失败。 SERP 响应 token 的有效期约为 4 分钟。展开你之前存储的 token 会返回 isError: true 和文本 HasData API error: 400 Bad Request,与错误密钥的形式相同。捕获它并重新运行 SERP 以获取新 token。
Google 未显示的模块是缺失的,而不是空的。 没有 AI Overview、没有购物面板或没有 People Also Ask 的查询会返回不包含这些键的响应,而不是包含空键的响应。在读取之前请先测试键是否存在。
携带数据的结果还包含一个 requestMetadata.id,在支持工单中值得引用,以及指向该次确切调用存储工件的 html 和 json 链接。
定价、免费额度和限制
积分按工具计算。完整 SERP、AI Mode、News、Shopping 和短视频每次调用消耗 10 积分。SERP Light、沉浸式产品和 AI Overview 工具为 5 积分。SERP 响应中内联的 AI Overview 是免费的,属于那 10 积分调用的一部分,但使用 AI Overview 工具展开 token(包括每个 People Also Ask token)是单独的 5 积分调用。响应大小不会改变价格。
免费试用为 30 天内 1,000 积分,无需信用卡,即 100 次完整 SERP 调用或 200 次 5 积分调用。之后,活跃账户在余额低于 100 时每天自动补充 100 积分,因此低流量智能体可以无限期地在免费层级上运行。
付费计划起价为 每月 $49,包含 200,000 积分。每积分价格随用量增加而下降,当前数字见定价页面。
你的计划还设定了并发数。免费试用允许同时 1 个请求,Startup 为 15,Business 为 30,Growth 为 50,高流量计划从 200 到 1,500 不等。并发是唯一的限制。没有单独的每分钟请求数上限。在任何无人值守的场景中,请防御性地处理溢出情况,因为跨查询扇出的智能体会比你更早达到上限。
工具选择
?apis=google_serp 暴露了这八个工具。该参数接受列表,?apis=google_serp,google_maps 会在搜索之外添加 Google Maps 工具。去掉该参数,你会得到 HasData 暴露的所有工具,目前是 57 个。
窄列表通常是更好的默认选择。在八个工具中做选择的模型比在五十七个中做选择的模型更常选对,而且工具描述本身在每一轮都会消耗上下文。
对比
Google 不再提供通用搜索 API。官方途径是 Custom Search JSON API,它回答的问题与这个不同。
Custom Search JSON API 搜索你配置的 Programmable Search Engine,范围是你列出的网站,或者如果你开启的话,也可以是整个网络索引。它每天免费查询上限为 100 次,之后按千次计费,直到每日上限,并且返回的结果集是精简的。它不返回 AI Overview、People Also Ask、本地包、购物、新闻或短视频,因为这些是实时结果页面的功能,而不是 API 的功能。当你想搜索自己的网站或一组固定的网站,并保持在 Google 官方条款范围内时,它是正确的工具。
这个服务器返回访问者所见的实时 Google 结果页面,并已解析。无需配置任何内容,查询针对整个 Google 运行,而不是一个精选引擎,AI Overview、People Also Ask、购物等以结构化模块的形式返回。
Custom Search JSON API | 本服务器 | |
搜索范围 | 你配置的 Programmable Search Engine | 实时 Google 结果页面 |
设置 | 一个 Cloud 项目和搜索引擎 | 一个 API 密钥 |
AI Overview 和 People Also Ask | 不返回 | 内联,或通过 token |
购物、新闻、短视频、本地 | 不返回 | 专用工具 |
免费额度 | 每天 100 次查询 | 30 天内 1,000 积分,之后每日补充 |
两行就能决定。如果你只需要搜索自己的网站,并希望使用 Google 的官方 API,Custom Search JSON API 是合适的选择。如果你需要真实的 SERP、其 AI Overview,或 Google 向搜索者展示的任何面板,官方 API 不返回这些,而这个可以。
此服务器不做什么。 不抓取结果背后的页面,不记录排名历史,也不做任何写入操作。它只返回解析后的结果页面。
常见问题
什么是 Google Search MCP 服务器?
一种将 Google 搜索结果以工具形式提供给 AI 客户端调用的服务器。客户端通过 Model Context Protocol 发送工具调用,服务器获取结果页面并返回结构化 JSON,模型直接处理结果而无需面对 HTML 页面。本服务器提供八个只读工具并远程运行,客户端只需连接 URL,无需启动任何本地进程。
这里的 SERP 和 Google Search 是一回事吗?
是的。SERP 即搜索引擎结果页面。这些工具返回的是 Google 的结果页面,因此在本仓库中 "SERP API" 和 "Google Search API" 含义相同。
有官方的 Google Search MCP 服务器吗?
Google 没有发布 MCP 服务器,也没有通用的搜索 API。最接近的官方产品是 Custom Search JSON API,它搜索你配置的 Programmable Search Engine。包括本服务器在内的多个社区 MCP 服务器,则直接返回实时结果页面。
如何获取 AI Overview?
执行一次 SERP 调用。aiOverview 通常内联包含其 textBlocks 和 references。当它以 pageToken 形式返回时,以及对于每个 People Also Ask 问题,将该 token 传递给 AI Overview 工具即可获取答案。Token 会很快过期,因此请从新的调用中展开它们。
我需要 Google Cloud 项目或 Programmable Search Engine 吗?
不需要。唯一的凭证是你的 HasData 密钥。无需在 Google Cloud 中创建任何内容,也无需管理每个 API 的配额。
API 密钥会过期吗?
不会。密钥不会过期。需要时随时可以在控制台中轮换它。
数据是实时的还是缓存的?
实时的。每次调用都会在请求时获取结果页面,并携带自己的 requestMetadata.id。两次相同的调用是两次独立的获取,而不是对存储副本的重放。
这与 Google 有关联吗?
没有。HasData 是独立服务,与 Google 无关联,未获得 Google 的认可或赞助。Google 是其各自所有者的商标。这些工具仅处理公开可用的数据,你有责任按照 Google 的条款和适用的法律使用结果。
HasData 链接
产品页面和请求构建器 | |
服务器文档 | |
一个服务器中的全部 57 个工具 | |
客户端教程 | |
我们解析的其他页面 | |
套餐和积分费用 | |
密钥和使用情况 | |
npm 上的 Node 启动器 | |
PyPI 上的 Python 启动器 |
开发
本仓库是远程服务器的配置和文档。没有构建步骤,也没有需要容器化的内容。
它确实带有一个契约测试。README 记录了八个具有特定参数的工具,而上游工具列表可能在没有此处提交的情况下发生变化,这会让本文件悄悄误导你。该测试断言文档中记录的工具以所声称的参数存在,并在 CI 中每周运行以及每次推送时运行。
HASDATA_API_KEY=your_key_here npm test在 PowerShell 中:
$env:HASDATA_API_KEY = "your_key_here"; npm test最后一项检查会进行真实搜索并消耗 10 个积分,这是金丝雀测试的代价,它可能因正确的原因而失败。列出工具只需任何非空密钥即可成功,因此仅列出工具的测试即使密钥被吊销也会保持绿色。
贡献
对工具表格和响应示例的修正是最有价值的贡献,因为这些部分最容易漂移。请附上你发出的调用和收到的响应。来自 fork 的拉取请求会在没有密钥的情况下运行测试套件,实时检查会跳过而不是变红。
许可证
MIT。参见 LICENSE。
Available Tools
10 toolshasdata_google_serp_ai_mode_getAiModeResponsegoogle_serp_ai_mode: GET /AInspect
Get AI Mode SERP Results
Captures Gemini-powered AI Mode answers from Google Search. Returns the conversational response text, cited source links, subtopic breakdowns, follow-up suggestions, and a subsequentRequestToken for multi-turn continuation. Use for next-gen search interfaces, AI-answer monitoring, citation tracking, content research agents, building question-answering pipelines grounded in live Google results, and person/company data enrichment — e.g. asking Who is the CEO of HasData?, What is Roman Milyushkevich's LinkedIn?, HasData founder email, HasData Instagram handle to get a synthesized answer plus source URLs in one call, ideal for lead enrichment, sales research, people search, and filling in contact/attribute gaps for CRM records.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Specify the search term for which you want to scrape the SERP. | |
| gl | No | The two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`. | |
| hl | No | The two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`. | |
| uule | No | The encoded location parameter. | |
| location | No | Google canonical location for the search. | |
| continuable | No | Whether to continue an existing AI Mode conversation. | |
| subsequentRequestToken | No | Token used to continue a previous AI Mode request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description clearly explains the output and the continuation mechanism, making behavior transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed and informative, though slightly verbose with repeated examples; it is still well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully explains what the tool does, its output, and its multi-turn continuation feature, making it complete for the given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions; the tool description does not add additional meaning beyond the schema, so a neutral score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets AI Mode SERP results from Google, distinguishing from other Google SERP tools like AI Overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases and examples, but does not explicitly compare with alternative tools, so slightly less than perfect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_google_serp_ai_overview_getAiOverviewResponsegoogle_serp_ai_overview: GET /AInspect
Get AI Overview Results
Fetches the lazy-loaded Google AI Overview block via a pageToken returned by the Google SERP API (token valid for 4 minutes). Returns the AI-generated answer text, referenced source URLs, and expanded subtopic sections. Use as a follow-up call to Google SERP for tracking AI citations in SEO, fact-checking answers against sources, and LLM retrieval pipelines grounded in live Google results.
| Name | Required | Description | Default |
|---|---|---|---|
| pageToken | Yes | Token from `aiOverview` block in Google SERP API. Valid for 4 minutes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the block is lazy-loaded, the token is valid for only 4 minutes, and it returns specific content. While it doesn't explicitly state read-only behavior, the description implies a safe fetch operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear title line, a brief explanation of what is fetched, the returned contents, and explicit use cases. No redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one parameter, no nested objects) and no output schema, the description is complete. It explains the purpose, parameter source and validity, expected return contents, and appropriate use cases, giving the agent everything needed to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter, pageToken, is fully described in the input schema ('Token from aiOverview block... Valid for 4 minutes'), and the tool description repeats this same information without adding new meaning. Since schema coverage is 100%, baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Get AI Overview Results') and resource (Google AI Overview block), distinguishes it from sibling tools by specifying it's a follow-up using a pageToken, and details the returned data (answer text, source URLs, subtopic sections).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides use cases: 'tracking AI citations in SEO, fact-checking answers against sources, and LLM retrieval pipelines grounded in live Google results.' It also implies the prerequisite of having a pageToken from a prior SERP call, making it clear when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_google_serp_events_getEventInformationgoogle_serp_events: GET /AInspect
Get Google Events Results
Scrapes the Google Events vertical for a query plus location (or uule) with date filters (today, tomorrow, this/next week, weekend, this/next month), virtual-event toggle, domain/country/language targeting, and pagination. Returns event title, start date/time, venue name and address, ticket/source links, description, and thumbnail. Use for event-discovery chatbots, local aggregators, calendar sync, competitive monitoring of event listings, and pulling upcoming shows/conferences for a region.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Specify the search term for which you want to scrape the SERP. | |
| gl | No | The two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`. | |
| hl | No | The two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`. | |
| uule | No | The encoded location parameter. | |
| start | No | This parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 0 (default) indicates the first page of results, 10 refers to the second page, and 20 to the third page. | |
| domain | No | Google domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`. | |
| htichips | No | Filter parameter for refining event search results. Supports various filters for events. Multiple filters can be passed using a comma. The available filters are: - `date:today`: Today's Events - `date:tomorrow`: Tomorrow's Events - `date:week`: This Week's Events - `date:weekend`: This Weekend's Events - `date:next_week`: Next Week's Events - `date:month`: This Month's Events - `date:next_month`: Next Month's Events - `event_type:Virtual-Event`: Online Events For example, to filter for today's online events, use: `event_type:Virtual-Event,date:today`. | |
| location | No | Google canonical location for the search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool 'scrapes' data, implying a read-only operation, but does not mention rate limits, authentication, or potential blocks. The description is adequate but not fully transparent about operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, starting with a brief summary, followed by functional details and use cases. It avoids excessive verbosity while covering essential aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description provides sufficient context about functionality, parameters, and intended use cases. It does not describe return values, but no output schema is provided, so that is not required. It is complete enough for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all 8 parameters, including detailed explanation of htichips filters. The tool description adds no additional parameter semantics beyond what is already in the schema, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scrapes the Google Events vertical, listing specific filters and use cases. This distinguishes it from generic search and other vertical tools, such as general SERP or image search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly mentions use cases like event-discovery chatbots and local aggregators, implying when to use this tool. It does not name alternative tools, but the context makes it clear this is for event-specific searches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_google_serp_immersive_product_getImmersive_e29f691177google_serp_immersive_product: GET /AInspect
Get Immersive Product Information
Expands the Google Shopping Immersive Product pop-up given an immersiveProductPageToken from the Google Shopping API, with optional moreStores (up to ~13 merchants instead of 3–5) and nextPageToken for paginating stores. Returns multi-store offers (merchant, price, shipping, condition, URL), product specs, images, ratings, and the nextPageToken. Use for price-comparison bots, merchant discovery, dropshipping research, and aggregating full offer lists per product.
| Name | Required | Description | Default |
|---|---|---|---|
| pageToken | Yes | Token for displaying more product info in the Google immersive pop-up, available in the Google Shopping API response as the `immersiveProductPageToken` property. | |
| moreStores | No | Fetch additional store results in a single search. By default it returns 3–5 stores, and when true it returns up to 13 or the maximum available for the product. | |
| nextPageToken | No | Token used to retrieve the next page of store results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It describes the read-like behavior (expands, returns) and mentions pagination and optional store expansion, but it does not explicitly state that it is a read-only operation or disclose any potential side effects, auth requirements, or rate limits. The description is informative but not fully explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the core purpose front-loaded. It includes a useful list of return fields and use cases without excessive verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains what is returned (offers, specs, images, ratings, nextPageToken). It also covers key parameters and use cases. It does not mention error handling or token lifecycle, but these are not critical for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds minor context (e.g., moreStores expands from 3–5 to up to 13, nextPageToken paginates) but largely repeats what the schema says. It adds value but not significantly beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: it expands the Google Shopping Immersive Product pop-up given a token. It distinguishes itself by focusing on the immersive product view, but it does not explicitly name sibling tools or contrast with them, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear use cases (price-comparison bots, merchant discovery, dropshipping research) but does not explicitly state when to avoid it or name alternatives. The context is clear but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_google_serp_news_getGoogleNewsgoogle_serp_news: GET /AInspect
Get Google News Results
Retrieves Google News results by free-text query, topicToken (World, Business, Technology, etc.), sectionToken, publicationToken (e.g. CNN, BBC), or storyToken (full-coverage cluster with sort by relevance/date). Returns article title, snippet, source publisher, published date, thumbnail, and URL, plus tokens for navigating topics, sub-sections, and story clusters. Use for news monitoring, brand/PR tracking, topical aggregators, publisher-specific feeds, and drilling into full story coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text query as used on news.google.com. Not allowed with `topicToken`, `storyToken`, or `publicationToken`. | |
| gl | No | The two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`. | |
| hl | No | The two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`. | |
| so | No | Sort order for articles in a story. Use only with storyToken. | |
| storyToken | No | Token for a single news story cluster (the “Full coverage” page). | |
| topicToken | No | Token for a Google News topic such as World, Business, or Technology. Not allowed with `q`, `storyToken`, or `publicationToken`. | |
| sectionToken | No | Token for a sub-section under a topic, for example Business → Economy. Use only when `topicToken` or `publicationToken` is present. | |
| publicationToken | No | Token for a specific publisher such as CNN or BBC. Not allowed with `q`, `storyToken`, or `topicToken`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It transparently describes the return payload (title, snippet, source publisher, published date, thumbnail, URL) and the navigation tokens, and notes that storyToken supports sorting by relevance/date. It does not mention limits, errors, or rate restrictions, but for a read-oriented GET endpoint the description provides solid behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and every sentence adds useful information about retrieval modes, output, and use cases. It is dense but not bloated, and it avoids unnecessary repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 8-parameter schema with full descriptions and no output schema, the description adequately covers what the tool returns, the main input modes, and appropriate usage scenarios. It does not cover pagination or result limits, but the schema and stated output fields give an agent enough to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter has a meaningful description with mutual-exclusion constraints. The tool description adds value by grouping the parameter types and explaining the story-cluster sort, but it mostly paraphrases what the schema already documents. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Retrieves Google News results') and resource, listing the distinct retrieval modes (free-text query, topicToken, sectionToken, publicationToken, storyToken) and the returned fields. It distinguishes itself from the general google_serp_serp_getSearchResults sibling by focusing specifically on Google News and its token-based navigation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly enumerates intended use cases: 'news monitoring, brand/PR tracking, topical aggregators, publisher-specific feeds, and drilling into full story coverage.' It does not explicitly name a sibling as an alternative or state when not to use this tool, but the use-case framing gives an agent clear selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_google_serp_product_getProductInformationgoogle_serp_product: GET /AInspect
Get Product Information
Pulls detailed product data from Google Shopping by productId with searchType (offers, specs, reviews) and rich filters (free shipping, used-condition, sort by price/total price/deals/seller rating, reviews count). Returns product title, images, price, ratings, specs, merchant offers (seller, shipping, condition, total price), and review text depending on searchType. Use for price intelligence, catalog enrichment, review mining, competitor spec comparison, and building shopping assistants that surface the cheapest or highest-rated offer.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | The two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`. | |
| hl | No | The two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`. | |
| uule | No | The encoded location parameter. | |
| start | No | This parameter specifies the number of search results to skip and is used for pagination. For example, a value of 0 (default) indicates the first page of results, 10 refers to the second page, and 20 to the third page. This parameter is applicable only when `searchType=offers` is specified. For reviews pagination use `filter` parameter. | |
| domain | No | Google domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`. | |
| filter | No | Filter parameter for refining search results. Supports various filters for offers and reviews. Multiple filters can be passed using a comma. The available filters are: Offers filters: - `freeship:1`: Show only products with free shipping. - `ucond:1`: Show only used products. - `scoring:p`: Sort by base price. - `scoring:tp`: Sort by total price. - `scoring:cpd`: Sort by current promotion deals (special offers). - `scoring:mrd`: Sort by seller's rating. Reviews filters: - `rnum:{number}`: Number of results (100 is max). | |
| location | No | Google canonical location for the search. | |
| productId | Yes | The product ID to get results for. | |
| searchType | No | Parameter for fetching specific product information, such as 'offers', 'specs', or 'reviews'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly frames the operation as read-only ('Pulls') and discloses searchType-dependent return content: title, images, price, ratings, specs, merchant offers, and review text. It does not cover rate limits, auth, or errors, but the core behavioral contract is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a one-line summary, then the detailed behavior, then use cases. Every sentence contributes value, and there is no meaningful fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description provides a strong high-level output contract and common use cases, while the schema covers parameter details. The main gap is that optional searchType has no documented default behavior, and pagination guidance relies entirely on the schema rather than the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains filters, pagination, enums, and parameter constraints. The description paraphrases searchType and filters but adds no new parameter-level semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Pulls detailed product data from Google Shopping by productId' with searchType variants and filters. This clearly distinguishes it from sibling search tools like shopping_getSearchResults, which are search-oriented rather than product-ID lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists task-based use cases: price intelligence, catalog enrichment, review mining, competitor spec comparison, and building shopping assistants. It does not name exclusions or alternative sibling tools, but it gives clear context for when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_google_serp_serp_getSearchResultsgoogle_serp_serp: GET /AInspect
Get Google Search Results
Full-featured Google Search scraper with location/uule, country (gl), language (hl, lr), domain, device type, safesearch, time/date filters (qdr, cdr), knowledge-graph IDs, and tbm vertical selection (images, videos, news, shopping, local), plus offset/num pagination. Returns organic results (title, link, snippet, position), ads, knowledge graph, related searches, People Also Ask, local pack, featured snippets, AI Overview pageToken, and rich SERP features. Use for SEO rank tracking, keyword research, SERP-feature monitoring, competitor analysis, grounding LLMs with fresh location-aware search data, and especially for person/company data enrichment — e.g. finding a person's LinkedIn/Instagram/Twitter profile (Roman Milyushkevich LinkedIn, HasData Instagram), a company's CEO/founder/leadership (HasData CEO, HasData founder), contact emails (Roman Milyushkevich HasData email), phone numbers, GitHub profiles, press mentions, or any public attribute of a person or business by running a targeted query and parsing the top organic results.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Specify the search term for which you want to scrape the SERP. | |
| gl | No | The two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`. | |
| hl | No | The two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`. | |
| lr | No | The 'lr' parameter specifies the language of the websites to return results from. This parameter filters results based on the language of the web content. | |
| si | No | Google Cached Search Parameters ID. | |
| num | No | Number of results per page, ranging from 10 to 100. | |
| tbm | No | Specify the type of search. | |
| tbs | No | This parameter supports various filters that can be combined by separating them with a comma. Here are examples of these filters: - Specific Time Range: `cdr:1,cd_min:10/17/2018,cd_max:3/8/2021` - Filter results to show only those within the defined date range. - Sort by Date: `sbd:1` - Results are sorted by date, from the most recent to the oldest. - Sort by Relevance: `sbd:0` - Results are sorted by relevance to the search query. - Sites with Images: `img:1` - Only show results from webpages that contain images. Quick Date Range (qdr): - `qdr:h` - Show results from the past hour. - `qdr:d` - Limit results to the past day. - `qdr:w` - Filter results from the week. - `qdr:m` - Display results from the past month. - `qdr:y` - Show results from the past year. - `qdr:h10`, `qdr:d10`, `qdr:w10`, `qdr:m10`, `qdr:y10` - Specify a number to show results from the last 10 hours, days, weeks, months, or years respectively. These filters enhance the control over search results, allowing for precise retrieval of information based on specific criteria. | |
| lsig | No | Additional Google Place ID. | |
| nfpr | No | Controls if auto-corrected results are shown. 0 includes them (default), 1 shows only the original query. Google may still return auto-corrected results if no others are available. | |
| safe | No | Adult Content Filtering option. | |
| uule | No | The encoded location parameter. | |
| kgmid | No | Google Knowledge Graph ID. | |
| start | No | This parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 0 (default) indicates the first page of results, 10 refers to the second page, and 20 to the third page. For Google Local Results, the start value must be in multiples of 20, such as 20 for the second page, 40 for the third page, etc. | |
| domain | No | Google domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`. | |
| filter | No | Defines whether to enable or disable the filters for 'Similar Results' and 'Omitted Results'. Set to 1 (default) to enable these filters, or 0 to disable them. | |
| ludocid | No | The Google Place ID for a specific location. | |
| location | No | Google canonical location for the search. | |
| deviceType | No | Specify the device type for the search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does disclose that this is a scraper, enumerates filtering capabilities, and lists returned elements including organic results, ads, knowledge graph, People Also Ask, local pack, and AI Overview pageToken. However, it does not mention operational caveats such as rate limits, authentication needs, blocking risks, or pagination limits beyond offset/num.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-line summary and then organized into capability, return-value, and use-case sections. It is long, but the length is justified by the tool's 19 parameters and rich feature set; the examples are concrete rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 19-parameter tool with no annotations and no output schema, the description is fairly complete: it explains what the tool returns and gives practical invocation examples. It does not discuss alternatives or limitations, but an agent has enough information to select and call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 19 parameters are already documented in the input schema. The description only groups them into capability families like location/uule, country, language, tbm, and offset/num pagination, adding no parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the operation ('Get Google Search Results') and identifies the tool as a 'full-featured Google Search scraper', listing parameter families and returned SERP components. It clearly conveys that this is the generic Google web-search endpoint rather than an image, news, or shopping variant, though it does not explicitly distinguish itself from the sibling serp_light tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete use cases: SEO rank tracking, keyword research, SERP-feature monitoring, competitor analysis, grounding LLMs, and person/company data enrichment with example queries. It does not explicitly state when not to use it or when to prefer serp_light, google_images, or AI-overview siblings, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_google_serp_serp_light_getSearchResultsgoogle_serp_serp_light: GET /AInspect
Get Google Light Search Results
Lightweight Google Search scraper that returns only organic results and basic pagination, omitting AI Overview, knowledge graph, PAA, and other rich SERP blocks for faster, cheaper responses. Supports location/uule, country (gl), language (hl/lr), domain, safesearch, and time/date filters (qdr, cdr) with offset/num pagination. Returns title, link, snippet, and position per result. Use for high-volume keyword monitoring, bulk rank tracking, backlink discovery, and any workflow where only the ten blue links matter.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Specify the search term for which you want to scrape the SERP. | |
| gl | No | The two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`. | |
| hl | No | The two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`. | |
| lr | No | The 'lr' parameter specifies the language of the websites to return results from. This parameter filters results based on the language of the web content. | |
| num | No | Number of results per page, ranging from 10 to 100. | |
| tbs | No | This parameter supports various filters that can be combined by separating them with a comma. Here are examples of these filters: - Specific Time Range: `cdr:1,cd_min:10/17/2018,cd_max:3/8/2021` - Filter results to show only those within the defined date range. - Sort by Date: `sbd:1` - Results are sorted by date, from the most recent to the oldest. - Sort by Relevance: `sbd:0` - Results are sorted by relevance to the search query. - Sites with Images: `img:1` - Only show results from webpages that contain images. Quick Date Range (qdr): - `qdr:h` - Show results from the past hour. - `qdr:d` - Limit results to the past day. - `qdr:w` - Filter results from the week. - `qdr:m` - Display results from the past month. - `qdr:y` - Show results from the past year. - `qdr:h10`, `qdr:d10`, `qdr:w10`, `qdr:m10`, `qdr:y10` - Specify a number to show results from the last 10 hours, days, weeks, months, or years respectively. These filters enhance the control over search results, allowing for precise retrieval of information based on specific criteria. | |
| safe | No | Adult Content Filtering option. | |
| uule | No | The encoded location parameter. | |
| start | No | This parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 0 (default) indicates the first page of results, 10 refers to the second page, and 20 to the third page. For Google Local Results, the start value must be in multiples of 20, such as 20 for the second page, 40 for the third page, etc. | |
| domain | No | Google domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`. | |
| filter | No | Defines whether to enable or disable the filters for 'Similar Results' and 'Omitted Results'. Set to 1 (default) to enable these filters, or 0 to disable them. | |
| location | No | Google canonical location for the search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose key traits: it omits rich blocks, returns only organic results, and supports specific filters. However, it doesn't mention error handling, rate limits, or potential staleness of data—common concerns for scraping tools. It adds value but isn't exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: it states the core purpose, then omissions, capabilities, return format, and use cases. Every sentence contributes value, but it's slightly long given the detailed schema already available. Still, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 12 parameters, detailed schema, and no output schema, the description covers the essential decision-making info: what it returns, key filtering options, and typical use cases. It doesn't explicitly explain pagination mechanics (though schema does) or edge cases, but the provided context is sufficient for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description groups parameters into meaningful categories (location/uule, country, language, filters, pagination), giving agents a high-level understanding of how they combine. It adds conceptual clarity beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a lightweight Google Search scraper that returns only organic results, explicitly listing what it omits (AI Overview, knowledge graph, PAA, etc.) and what it returns (title, link, snippet, position). This makes it readily distinguishable from siblings like serp_getSearchResults or news/shopping tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit use cases are given: high-volume keyword monitoring, bulk rank tracking, backlink discovery, and any workflow where only the ten blue links matter. This implies when not to use it (when rich SERP blocks are needed), though it doesn't explicitly name the alternative tool like hasdata_google_serp_serp_getSearchResults. Clear context but no formal exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_google_serp_shopping_getSearchResultsgoogle_serp_shopping: GET /AInspect
Get Shopping Search Results
Scrapes Google Shopping listings for a query with location/uule, country/language/domain, time/date filters, device type, shoprs filter-helper IDs, and offset pagination. Returns product title, price, merchant/source, rating, reviews count, thumbnail, product link, productId, immersiveProductPageToken, and filter chips with hasdata_link for refining by brand/price/condition/promotions. Use for e-commerce price tracking, catalog building, promotion discovery, and feeding productIds into the Product API or tokens into the Immersive Product API for deeper data.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Specify the search term for which you want to scrape the SERP. | |
| gl | No | The two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`. | |
| hl | No | The two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`. | |
| tbs | No | This parameter supports various filters that can be combined by separating them with a comma. Here are examples of these filters: - Specific Time Range: `cdr:1,cd_min:10/17/2018,cd_max:3/8/2021` - Filter results to show only those within the defined date range. - Sort by Date: `sbd:1` - Results are sorted by date, from the most recent to the oldest. - Sort by Relevance: `sbd:0` - Results are sorted by relevance to the search query. - Sites with Images: `img:1` - Only show results from webpages that contain images. Quick Date Range (qdr): - `qdr:h` - Show results from the past hour. - `qdr:d` - Limit results to the past day. - `qdr:w` - Filter results from the week. - `qdr:m` - Display results from the past month. - `qdr:y` - Show results from the past year. - `qdr:h10`, `qdr:d10`, `qdr:w10`, `qdr:m10`, `qdr:y10` - Specify a number to show results from the last 10 hours, days, weeks, months, or years respectively. These filters enhance the control over search results, allowing for precise retrieval of information based on specific criteria. | |
| uule | No | The encoded location parameter. | |
| start | No | This parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 0 (default) indicates the first page of results, 40 refers to the second page, and 80 to the third page. | |
| domain | No | Google domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`. | |
| shoprs | No | Specifies the helper ID for applying search filters. Must be used with the updated `q` parameter, which includes the selected filter (e.g., Coffee sale). To apply filters, use the `hasdata_link` from `filters[index].options[index]` in the JSON. Apply multiple filters by following each `hasdata_link` one by one. To remove a filter, follow its specific `hasdata_link`. | |
| location | No | Google canonical location for the search. | |
| deviceType | No | Specify the device type for the search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full responsibility for disclosing behavioral traits. It does not explicitly state whether the operation is read-only or if there are side effects, rate limits, or permissions. The phrasing 'Scrapes Google Shopping listings' implies a passive retrieval, but it lacks an explicit statement about non-destructiveness or data handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear opening statement, a summary of output, and a list of use cases. It avoids redundancy and stays focused, making it easy for users to quickly grasp the tool's function and applications. The structure is efficient with no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description compensates by enumerating the expected return fields (e.g., product title, price, merchant) and explaining how to apply filters via 'hasdata_link'. It also covers parameter interactions for shoprs and pagination. Given the tool's moderate complexity, the description provides a complete picture for invocation without leaving critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides detailed descriptions for all 10 parameters, covering their semantics thoroughly. The tool description does not add significant extra meaning beyond summarizing the overall purpose and mentioning a few output fields. Since schema coverage is 100%, the baseline score of 3 is appropriate, as the description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool scrapes Google Shopping listings for a search query and returns detailed product information. It explicitly mentions the output fields, such as product title, price, and merchant, making the tool's purpose unambiguous. The name 'Get Shopping Search Results' further reinforces its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides specific use cases like e-commerce price tracking, catalog building, and promotion discovery, which guide when to employ the tool. It also hints at integration with other tools by mentioning feeding product IDs into the Product API or tokens into the Immersive Product API. However, it does not explicitly contrast it with sibling tools, leaving a small gap in direct alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_google_serp_short_videos_getShortVideosSearchResultsgoogle_serp_short_videos: GET /AInspect
Get Short Videos Search Results
Scrapes the Google Short Videos carousel (TikTok, YouTube Shorts, Instagram Reels, etc.) for a query with location/uule, country (gl/cr), language (hl/lr), device type, and page-based pagination. Returns video title, thumbnail, duration, source platform, channel/creator, publish date, and direct video URL. Use for short-form content discovery, viral-trend monitoring, influencer research, cross-platform video aggregation, and sourcing short clips to summarize or embed in LLM responses.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query term for retrieving short videos results. | |
| cr | No | The country code for the country you want to limit the search to. Provide one exact documented value (237 allowed), e.g. `countryAF`, `countryAL`. | |
| gl | No | The two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`. | |
| hl | No | The two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`. | |
| lr | No | The 'lr' parameter specifies the language of the websites to return results from. This parameter filters results based on the language of the web content. | |
| page | No | Page number for paginated results, where 0 is the first page. | |
| uule | No | The encoded location parameter. | |
| location | No | Google canonical location for the search. | |
| deviceType | No | Specify the device type for the search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It explains that the tool scrapes a live Google carousel and returns specific fields, implying a read-only network operation. It does not mention rate limits, auth, or failure modes, but these are less critical for this non-mutating scraper.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably short and front-loaded, with the core scraping behavior in the first sentence and output fields and use cases following. The opening heading repeats the tool name and the use-case list is slightly expansive, but the overall text is efficient and relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description compensates by listing return fields and mentioning pagination plus location/country/language options. It does not specify result count, maximum page, or exact response structure, but the schema fully documents the parameters and required query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes 100% of the parameters, so the baseline is 3. The description adds only high-level grouping such as 'country (gl/cr), language (hl/lr), device type' without clarifying relationships, formats, or usage beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('scrapes') and a specific resource ('Google Short Videos carousel'), and names the content sources (TikTok, YouTube Shorts, Instagram Reels). This clearly distinguishes it from sibling SERP tools like general search or news results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases such as 'short-form content discovery, viral-trend monitoring, influencer research, cross-platform video aggregation' and sourcing clips for LLM responses. However, it does not explicitly contrast with sibling tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.0.0- First observed
hasdata_google_serp_ai_mode_getAiModeResponse - First observed
hasdata_google_serp_ai_overview_getAiOverviewResponse - First observed
hasdata_google_serp_events_getEventInformation - First observed
hasdata_google_serp_immersive_product_getImmersive_e29f691177 - First observed
hasdata_google_serp_news_getGoogleNews - First observed
hasdata_google_serp_product_getProductInformation - First observed
hasdata_google_serp_serp_getSearchResults - First observed
hasdata_google_serp_serp_light_getSearchResults - First observed
hasdata_google_serp_shopping_getSearchResults - First observed
hasdata_google_serp_short_videos_getShortVideosSearchResults
TDQS
Scored across 10 tools
Each tool addresses a distinct Google Search vertical (web, shopping, news, events, short videos, AI mode/overview) with clear boundaries. Even where two tools are similar (full vs. light SERP, shopping search vs. product info), their purposes are explicitly differentiated.
All tools follow the pattern `hasdata_google_serp_<category>_<Action>`, with snake_case categories and camelCase actions. The only deviation is the immersive product tool's hash suffix (`getImmersive_e29f691177`), which breaks the clean convention but does not obscure intent.
With 10 tools, the server covers all major Google Search verticals without redundancy or bloat. Each tool serves a distinct scraping need, making the count well-scoped for its purpose.
The tool surface covers web search (both full and lightweight), shopping (search, product details, immersive offers), news, events, short videos, and AI-generated responses. Minor gaps like a dedicated maps/images tool are mitigated by the full SERP tool's `tbm` parameter, making the coverage strong overall.
Maintenance
Related MCP Connectors
Live AI-native web search with citations. One tool for every MCP client. Flat per-request pricing.
Google SERP API MCP: live Google, Bing, AI Overview and Google Maps results as JSON. Pay per call. Live search engine results pages as structured JSON: Google organic results with SERP features and AI Overview sources, Bing results, Google Maps local results, and live Google rank checks for a domain across up to 10 keywords. Use when an agent needs live Google or Bing search results for a keyword, country, language and device. This is a focused subset of SEO Data, not an additional required connection or a scheduled monitoring service. Billing: paid data calls use API credits; get_api_credit_balance is free. The focused connections and SEO Data use the same balance and prices. Example prompts: - Show the top ten Google results and SERP features for 'trail running shoes' in the US, after I approve the API-credit spend. - Compare Google and Bing results for my keyword in the same market, within my approved API-credit budget. - After confirming the API-credit cost, report which source URLs Google's AI Overview cites for my keyword. If none is present, say so. Docs: https://docs.crakseo.com/mcp-servers/serp-api
17 data tools in one MCP server, run on Apify: Google Shopping, Flights, Hotels, News, Images, Videos, Ads Transparency, Jobs and Trends; YouTube transcripts; AI visibility checks; Google Maps leads; App Store and Google Play reviews. Pay per result. Sign in with Apify (OAuth) or an API token.
Your agent needs the Google results page as it actually renders — organic and paid, the AI overview, maps, images, news, jobs and the finance panel — not a scraped guess. **What you can ask for** • "What does the SERP for this keyword look like in Germany, on mobile?" • "Does this query trigger an AI overview, and what does it say?" • "Who is advertising against our brand name?" • "Find local results and the map pack for this phrase." • "Search Google by this image and tell me where else it appears." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-serp/mcp and sign in with OAuth — there is no key to create or paste. 38 tools across Google's surfaces: organic, ads and advertisers, AI mode, autocomplete, images, news, maps and local, events, jobs, datasets, scholar, finance quotes and markets, plus Semrush's organic and paid result sets. **Why this rather than the source** Location and language are parameters, so you can read the page a customer in another country sees. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Read the SERP here, then ask the same agent who links to the winner or how much traffic they get — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Yahoo, Baidu, Naver, Seznam and YouTube. https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.
Related MCP Servers
AlicenseAqualityAmaintenanceDirect access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.6321MIT- AlicenseAqualityAmaintenanceA hosted MCP server that returns DuckDuckGo search results as structured JSON, with ranked organic results, separate ads, AI answers, and 37 region/language targets for any MCP client.1114 npm36 PyPI7MIT
- AlicenseAqualityCmaintenanceEnables AI agents to run live Google searches and retrieve organic results, snippets, sitelinks, People Also Ask, related searches, and Google's AI Overview with citations via a zero-dependency MCP server.2MIT
- AlicenseAqualityAmaintenanceEnables Bing searches with geo, market, and language targeting, returning organic results, ad blocks, and Copilot answers as structured JSON to any MCP client.149 npm28 PyPI9MIT