Serper gives the agent live Google results: web, news, maps and local business listings. It is the fastest way to check a fact, find a company's real domain, or pull local firms in a city before anything expensive runs.
Serper is cheap recall at the front of the pipeline. It narrows things down before a credit-costing tool touches them.
Ask for the outcome and your agent composes the run itself. Or start from a skill, a whole pipeline it already knows end to end.
browse all skills →Every tool ships with a written playbook, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.
Read the Serper docs →HOW in lib/serper.py. Cheap, fast Google recall — strong first step before structured extraction/enrichment.
https://google.serper.dev · Scrape base: https://scrape.serper.dev · Auth: header X-API-KEY (env SERPER_API_KEY; never hardcode).{q, gl, hl, num, page, location, tbs, autocorrect}.search, news, images, places (local businesses), maps, scholar, reviews, autocomplete, scrape(url). Anything else → generic request().
Discovery/recall layer. Use search/places/maps to find companies/people/signals, scrape to pull a page → hand to enrichment (Apollo/Lusha/…) or research. Note: places/maps cover the "Google Maps" use case for local sourcing.
Field-shape note: these are vendor-native operational notes. The client returns the raw vendor JSON and uses the method names in this file — read field shapes accordingly (no normalized-wrapper /
result.data.prefix).
search for broad web research, newsy/changing facts, finding an entity before enrichment, or collecting candidate URLs to hand to extraction. maps for local business discovery, location-aware lookups, and phone/address/rating/website/CID retrieval.lib/serper.pyImport: from lib.serper import Serper → instantiate Serper() (reads key from env). Base: https://google.serper.dev. Generic passthrough: request(method, path, *, params, json).
autocomplete(query: str, **opts) -> dictimages(query: str, **opts) -> dictmaps(query: str, **opts) -> dict — POST /maps — Google Maps results.news(query: str, **opts) -> dictplaces(query: str, **opts) -> dict — POST /places — Google Places results (local businesses).reviews(query: str, **opts) -> dictscholar(query: str, **opts) -> dictscrape(url: str, *, include_markdown: bool = True) -> dict — POST scrape.serper.dev — fetch & parse a web page (text/markdown).search(query: str, **opts) -> dict — POST /search — Google web search. opts: gl, hl, num, page, location, tbs, autocorrect.