# How to connect SerpApi to Hermes Agent (paste one key, 48 tools)

> Connect SerpApi to Hermes with ClawLink: paste your SerpApi key once and 48 tools work from chat. No MCP server to run, nothing stored on your machine.

Web version: https://claw-link.dev/hermes/serpapi

Most guides for giving Hermes Agent SerpApi access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical SerpApi setup: pair once in the browser and your always-on Hermes agent can act on SerpApi for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

**Start here — paste this into Hermes to set up ClawLink:**

> Set up ClawLink for Hermes and tell me when it's ready.
> 1. Install the plugin: `hermes plugins install ClawLink-HQ/hermes-plugin --enable`
> 2. Start pairing with `hermes clawlink begin`. It prints an approval link, so show me the link and stop, don't wait.
> 3. I'll approve it in my browser, then reply "approved".
> 4. When I say approved, finish setup: `hermes clawlink finish`
> 5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

## Setup

It takes three steps to connect Hermes to SerpApi.

1. **Install ClawLink** — add the plugin to Hermes Agent once.
2. **Connect SerpApi** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask Hermes Agent in plain English.

**Alternative for any agent (no plugin needed):** if the Hermes Agent plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect serpapi  # connect SerpApi (browser OAuth)
npx -y @useclawlink/cli actions serpapi  # list available actions
npx -y @useclawlink/cli run serpapi <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

```bash
hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test
```

Then connect SerpApi in the [ClawLink dashboard](https://claw-link.dev/dashboard) — paste your SerpApi API key once.

Verify the connection by asking Hermes:

> Report your SerpApi usage for the current hour using the Account API fields account_rate_limit_per_hour and this_hour_searches, then run a Google search for \<query> and summarize the top 5 organic results with URLs.

### Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once SerpApi is connected in the dashboard, that agent calls the same 48 SerpApi tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## SerpApi MCP for Hermes

Looking for a SerpApi MCP server for Hermes Agent? ClawLink connects SerpApi to Hermes Agent and exposes 48 SerpApi tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using OpenClaw instead? The [OpenClaw SerpApi integration](https://claw-link.dev/openclaw/serpapi) works the same way.

This connection requires a SerpApi key. There is no keyless mode: Google's own answer to the no-key query states there is no official method to access SerpApi without a key, and the free tier is the closest thing to one. What a key bought through this page gets you is the difference between the two official setups. SerpApi ships its own Hermes plugin with a handful of search paths (web, maps, news, shopping) and an MCP server you register with `hermes mcp add serpapi --url https://mcp.serpapi.com/YOUR_KEY/mcp`. Both are real, both are what Google teaches, and both leave the key and the config on your machine. Here the key goes into a hosted setup page once, Hermes pairs with `hermes clawlink begin` and `hermes clawlink finish`, and the 48 SerpApi tools below, covering search engines well past Google, are callable from chat with the key stored server-side.

## What the Hermes Agent SerpApi integration can do

48 SerpApi tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 48.

### 30 of 48 SerpApi tools for Hermes

| Tool | What it does |
|---|---|
| **Baidu search** `serpapi_baidu_search` | Search Baidu (Chinese search engine) and retrieve search results. Requires a search query string in the 'q' parameter. Returns organic search results, answer boxes, and pagination info in JSON format. |
| **Bing maps** `serpapi_bing_maps` | Tool to scrape Bing Maps results using SerpApi. Use when you need to find local businesses, places, or get detailed location information including addresses, phone numbers, ratings, reviews, and more. |
| **Bing search** `serpapi_bing_search` | Retrieve Bing Search Engine Results via SerpAPI (requires active SerpAPI connection; if unavailable, use the built-in web or news search tools). |
| **Duck duck go light search** `serpapi_duck_duck_go_light_search` | Tool to access the world's fastest DuckDuckGo Search API via SerpApi. Scrapes DuckDuckGo search results in JSON format with critical data for faster response times, without extra-rich results. |
| **Duck duck go maps** `serpapi_duck_duck_go_maps` | Scrapes DuckDuckGo Maps results via SerpApi. Use when searching for location-based information like businesses, restaurants, or services in a specific geographic area. |
| **Duck duck go search** `serpapi_duck_duck_go_search` | Performs a DuckDuckGo search via SerpApi to retrieve SERP data, including organic results, ads, and structured information. Requires a valid SerpApi connection. |
| **Ebay search** `serpapi_ebay_search` | Retrieve eBay Search Results via SerpApi (requires active SerpApi connected account). Supports parameters like nkw (query), location, etc. Returns product SERP data in JSON format. |
| **Event search** `serpapi_event_search` | Searches for events (e.g., concerts, festivals, conferences) by query, retrieving structured data from Google's event search results via the SerpApi Google Events engine. |
| **Finance search** `serpapi_finance_search` | Retrieves structured financial information (e.g., company data, stock details, market trends, news) from Google Finance via SERP API based on a query. Requires active SerpApi credentials. |
| **Get available location options for google searches** `serpapi_get_available_location_options_for_google_searches` | Tool to get available location options for Google searches. Returns location names, codes, and identifiers that can be used in the location parameter. |
| **Get facebook profile** `serpapi_get_facebook_profile` | Tool to retrieve public information from a Facebook profile or page using SerpAPI. Use when you need to fetch profile details, bio, photos, followers, ratings, or contact information. |
| **Get google about this result** `serpapi_get_google_about_this_result` | Tool to get Google 'About this result' information for a website. Use when you need detailed information about a specific URL including company details, social profiles, web citations, and reviews. |
| **Get google hotels autocomplete suggestions** `serpapi_get_google_hotels_autocomplete_suggestions` | Get autocomplete suggestions for Google Hotels destination searches |
| **Get google images related content** `serpapi_get_google_images_related_content` | Get related content for a specific Google Images result |
| **Get google patent details** `serpapi_get_google_patent_details` | Retrieve detailed information about a specific patent or scholar document from Google Patents |
| **Get search archive** `serpapi_get_search_archive` | Retrieve results from a previous async search using its search ID |
| **Google domains list** `serpapi_google_domains_list` | Retrieve the list of supported Google domains for search queries |
| **Google forums search** `serpapi_google_forums_search` | Scrape forum results from Google's Forums Platform using SerpApi |
| **Google jobs search** `serpapi_google_jobs_search` | Retrieve Google Jobs Search Results via SerpApi |
| **Google lens search** `serpapi_google_lens_search` | Performs reverse image search using Google Lens to find visually similar images, products, and |
| **Google light search** `serpapi_google_light_search` | Retrieve Google Light Search Results via SerpApi |
| **Google maps posts** `serpapi_google_maps_posts` | Scrapes Google Maps Posts for a business location via SerpApi |
| **Google maps search** `serpapi_google_maps_search` | Performs a Google Maps search via SERP API |
| **Google play product** `serpapi_google_play_product` | Retrieve detailed Google Play product information using SerpApi |
| **Google scholar author** `serpapi_google_scholar_author` | Scrapes full Google Scholar Author page including articles, citations, metrics, and co-authors |
| **Google scholar cite** `serpapi_google_scholar_cite` | Scrapes full Google Scholar Citations with multiple citation formats |
| **Google videos light** `serpapi_google_videos_light` | Scrape Google Videos results using SerpApi's ultra-fast Google Videos Light API |
| **Hotel search** `serpapi_hotel_search` | Retrieve Google Hotel Search Results |
| **Image search** `serpapi_image_search` | Searches Google Images via SERP API for a given query, returning structured image results |
| **Naver search** `serpapi_naver_search` | Search Naver (South Korea's leading search engine) for Korean web results and content |

## Example prompts

**Check the window first**

> Report your SerpApi usage for the current hour using the Account API fields account_rate_limit_per_hour and this_hour_searches, then run a Google search for \<query> and summarize the top 5 organic results with URLs.

**Local search**

> Use serpapi_google_maps_search for \<business type> near \<city>, and give me the top 10 results as a table with ratings and addresses.

**News monitoring**

> Run a Bing news search for \<company> over the last week and list the headlines with their source domains, then flag anything that mentions the same topic twice.

**Multi-engine check**

> Search for \<query> on Google and DuckDuckGo with serpapi_google_search and serpapi_duck_duck_go_search, and tell me which results appear on both engines.

## How the SerpApi tools behave

Details that decide whether a SerpApi prompt is a quick answer or an exhausted hourly window.

- **Every call is a billed search against your plan's hourly allowance.** The engine list is wide (Google, Bing, DuckDuckGo, Baidu, Naver, eBay, finance, scholar, hotels, jobs and more), and each surface is its own tool, so a multi-engine comparison costs several searches. Plan the calls before the agent fires them.
- **The account window is readable from chat.** The Account API fields `account_rate_limit_per_hour` and `this_hour_searches` are exposed to the agent, so "check the window first" is a real instruction.
- **Search archive is the memory.** `serpapi_get_search_archive` retrieves stored results by search id, which is how an agent re-reads an earlier search without burning a new query.
- **Location and domain tools are the setup for everything else.** `serpapi_get_available_location_options_for_google_searches` and `serpapi_google_domains_list` return the parameters local searches need; inventing a location string fails like a typo.
- **Specialized surfaces are separate tools.** Scholar, patents, hotels, jobs, images, videos, and maps each have their own search tool, so "search for it" is ambiguous until the surface is named.
- **404 on results is the site's problem, not the connection's.** A search that returns fewer results than requested is SerpApi faithfully reporting the engine's output; the agent should say what the engine returned rather than retry for a fuller page.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual API key setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want SerpApi working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Credential handling** | Collect, validate, store, and rotate the SerpApi API key yourself, then make sure every tool call uses the right account. | Users complete the hosted ClawLink setup once and the connected SerpApi account becomes available to the agent without you building credential management. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for SerpApi. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right SerpApi actions to the runtime in a format your agent can reliably use. | 48 tools for SerpApi are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes SerpApi to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect SerpApi in the browser, and the 48 tools above work from chat. There is no SDK and no config file, and the SerpApi key you paste at setup is stored server-side rather than kept in your environment. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### Hermes paired but still can't use SerpApi
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

### Connection succeeds but no tools appear
Reconnect SerpApi from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling SerpApi tools
SerpApi tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every SerpApi call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### SerpApi returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### SerpApi returns 403 or "permission denied" although the account shows as connected
This card used to carry Composio-generic causes that do not exist on this provider: SerpApi has no workspaces, and account access is not a thing a hosted connection can misconfigure. The real semantics, from SerpApi's own error documentation, are: 401 means the key itself is invalid, 403 means the account behind the key was deleted, suspended, or revoked, and 429 is a quota problem that SerpApi can surface with a permissions-shaped message. The classic 403 cause is a wrong provider's key: a Serper or SerpWow key pasted where a SerpApi key belongs authenticates to a different service and fails with 403. So the order is: confirm the pasted key is a real SerpApi key, then check the account's status on serpapi.com, then check the hourly window before assuming anything about the connection.

Ask the agent to diagnose it:

```text
Call serpapi_get_search_archive with the most recent search id if one exists, and quote the exact error code and message from the failed call. Do not retry it yet.
```

### SerpApi starts returning 429 or the agent reports "permission denied" on searches
On this provider a 429 can arrive worded as a permissions error, so before touching the connection, check the hourly window: SerpApi limits by searches per hour per plan (200 on Starter, 1,000 on Developer, 3,000 on Production, 6,000 on Big Data), and an agent that refines a query by re-searching is exactly the shape that exhausts it. The Account API exposes `this_hour_searches`, so the agent can report where it stands rather than guess. The fix is pacing, not reconnecting: wait for the window to roll, batch the queries you actually need, and tell the agent to search once per refinement step.

Ask the agent to diagnose it:

```text
Tell me how many SerpApi searches you have made in the last hour and what you were researching. Quote the exact error text. Do not call SerpApi again until I reply.
```

### SerpApi tools are missing, or one tool name is not found
Two failures share this symptom. If no SerpApi tools appear at all, the connection or pairing is incomplete: confirm the plugin was installed with --enable, that `hermes clawlink begin` and `hermes clawlink finish` both ran, and that SerpApi shows as connected in the dashboard. If most tools work and one name fails, the name is wrong rather than missing, and the error lists the closest real ones. There is also a first-call timing case: schemas load on demand, so the opening SerpApi call in a fresh session can arrive before the catalog and needs one retry. The checklist search results teach for this symptom, a malformed MCP URL or a key inside an `mcpServers` path, belongs to the manual setup and does not apply here.

Ask the agent to diagnose it:

```text
List the SerpApi tools you actually have access to. If there are none, say so plainly and tell me whether SerpApi shows as connected. Do not guess tool names.
```

### API key setup works but results look incomplete
Double-check that the API key for SerpApi has the right scopes or account access. A valid key can still be too limited for some reads or writes.

### Is there a Hermes Agent SerpApi integration?
Yes. ClawLink is the fastest way to connect Hermes to SerpApi: link your SerpApi account once in the browser and Hermes Agent can call the SerpApi API through 48 ready-made tools — no custom code or token handling.

### How do I connect SerpApi to Hermes with ClawLink?
Install the plugin with `hermes plugins install ClawLink-HQ/hermes-plugin --enable`, then pair once: run `hermes clawlink begin`, approve the link in your browser, and run `hermes clawlink finish`. Connect SerpApi in the dashboard and Hermes can use it from the next message — no config files, and the SerpApi key you paste is stored server-side instead of in your environment.

### How long does it take to connect SerpApi to Hermes Agent?
About two minutes. Sign in, click Connect next to SerpApi in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

### Why use ClawLink instead of wiring SerpApi up myself?
The alternative to ClawLink is usually manual API key setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want SerpApi working from chat.

### Is this the same as SerpApi's official Hermes plugin or MCP server?
Same underlying API, different setup and surface. SerpApi's plugin exposes a small set of search paths (web, maps, news, shopping) and their MCP server is registered with `hermes mcp add serpapi --url https://mcp.serpapi.com/YOUR_KEY/mcp`, with the key inside that URL and the config on your machine. This page's route stores the key server-side, exposes 48 named tools, and requires no MCP registration at all. If you already run the official plugin and it covers what you need, it is the simplest possible answer. If you want the wider surface and one place to manage and revoke the key, this is it.

### What can the agent do in SerpApi?
Search engines well past Google: Google search and its specialized surfaces (images, maps, hotels, jobs, patents, shopping-adjacent, scholar, finance, events, forums), Bing, DuckDuckGo, Baidu, Naver, eBay, and more, plus search archive retrieval and location discovery. Every call is a real search under your key, which means the hourly allowance of your plan is the operating budget.

### Is it safe to connect SerpApi to an agent?
The risk framing search results give is key exposure, runaway cost loops, and prompt injection from web results, and all three are worth taking literally. The key here is stored server-side and never pasted into chat, so the exposure surface is the hosted connection rather than every machine that runs the agent. The cost shape is different from most providers: SerpApi bills by plan allowance rather than per-result units, so an agent that loops searches can exhaust the hourly window rather than the wallet. Web results are untrusted text by nature, so the agent should treat extracted page content as data, not as instructions. Those three guardrails, one dashboard revoke, and least-privilege prompts are the whole safety story.

### How many searches per hour can the agent make?
The allowance scales with plan. SerpApi's documented hourly search limits are 200 per hour on Starter, 1,000 on Developer, 3,000 on Production, and 6,000 on Big Data, and the Account API reports live usage via `account_rate_limit_per_hour` and `this_hour_searches`. The agent can read its own position against the window, which is the correct first call in a long research session.

### Hermes paired but still can't use SerpApi
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

## Related

- [Connect Metabase](https://claw-link.dev/hermes/metabase) — Metabase is an open-source business intelligence tool that lets you ask questions about your data and visualize answers as charts, graphs, and dashboards.
- [Twelve Data tools](https://claw-link.dev/hermes/twelve-data) — Twelve Data provides a comprehensive financial data API offering real-time and historical market data for stocks, forex, cryptocurrencies, ETFs, and indices.
- [Hermes Gosquared integration](https://claw-link.dev/hermes/gosquared) — GoSquared provides real-time web analytics and customer engagement tools to help businesses understand and interact with their website visitors.
