The Autom Web Search API walks search engines in order and returns the first organic results it gets. With engines=auto it tries Google, then Brave, Bing, DuckDuckGo, Yahoo and Baidu; pass a comma-separated list to choose the order.
- Search API — One call walks engines in order and returns the first organic results.
Use it for LLM grounding and AI agents that need one reliable search call instead of one integration per engine.
| Endpoint | Request | Credits |
|---|---|---|
| Search API | GET /v1/search |
1 |
- How it works
- Search API
- Code examples in other languages
- Use cases
- Why Autom?
- FAQ
- Related repositories
- Support
- Create a Autom account and copy your API key from the dashboard.
- Call
https://api.autom.devwith the headerx-api-key: YOUR_API_KEY. - Use the result in your app — no infrastructure to run.
export AUTOM_API_KEY="your-api-key"
pip install requests # Python
# TypeScript: Node.js 18+ (native fetch), run with `npx tsx file.ts`One call walks engines in order and returns the first organic results. engines=auto tries Google, then Brave, Bing, DuckDuckGo, Yahoo, and Baidu. Omitted gl is us and omitted hl is en. There is no page parameter: the response is always page 1. An empty query returns 400. If every engine misses, the call returns 404. Send header x-api-key. 1 credit on HTTP 200.
GET https://api.autom.dev/v1/search · 1 credit per request · API reference
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
query |
query | string | ✅ | Search query. |
engines |
query | string | — | Engine order. Default auto tries google, brave, bing, duckduckgo, yahoo, then baidu. A comma-separated list is followed as given. ddg and duck mean duckduckgo. Unknown names are ignored. |
gl |
query | string | — | Country code. Defaults to us when omitted. For example us, fr, gb, de. |
hl |
query | string | — | Language code. Defaults to en when omitted. For example en, fr, de. |
import os
import requests
API_KEY = os.environ["AUTOM_API_KEY"]
HEADERS = {"x-api-key": API_KEY}
response = requests.get(
"https://api.autom.dev/v1/search",
headers=HEADERS,
params={
"query": "openai",
},
timeout=120,
)
response.raise_for_status()
data = response.json()
print(data)type SearchApi = {
organic_results?: {
link?: string;
title?: string;
domain?: string;
snippet?: string;
position?: number;
displayed_link?: string;
}[];
search_parameters?: {
q?: string;
gl?: string;
hl?: string;
page?: number;
engine?: string;
engines?: string[];
};
};
const headers = { "x-api-key": process.env.AUTOM_API_KEY!, "Content-Type": "application/json" };
const params = new URLSearchParams({
"query": "openai",
});
const response = await fetch(`https://api.autom.dev/v1/search?${params}`, { headers });
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const data = (await response.json()) as SearchApi;
console.log(data);Example response from the API reference, abridged.
{
"organic_results": [
{
"link": "https://openai.com/",
"title": "OpenAI",
"domain": "openai.com",
"snippet": "OpenAI is an AI research and deployment company.",
"position": 1,
"displayed_link": "https://openai.com"
}
],
"search_parameters": {
"q": "openai",
"gl": "us",
"hl": "en",
"page": 1,
"engine": "google",
"engines": [
"google",
"brave"
]
}
}| Field | Type | Description |
|---|---|---|
organic_results[] |
object[] | |
organic_results[].link |
string | |
organic_results[].title |
string | |
organic_results[].domain |
string | |
organic_results[].snippet |
string | |
organic_results[].position |
integer | |
organic_results[].displayed_link |
string | |
search_parameters |
object | |
search_parameters.q |
string | |
search_parameters.gl |
string | |
search_parameters.hl |
string | |
search_parameters.page |
integer | |
search_parameters.engine |
string | |
search_parameters.engines |
string[] |
Ready-to-run examples live in examples/; each reads your key from AUTOM_API_KEY.
| Language | search |
|---|---|
| cURL (Bash) | search.sh |
| PHP | search.php |
| C# | Search.cs |
| Go | search.go |
| Java | SearchExample.java |
| Ruby | search.rb |
| Node.js | search.mjs |
- LLM grounding — One search call for agents, with automatic engine fallback.
- Resilient pipelines — Keep getting results when one engine misses.
- Custom engine order — Pick and order engines with
engines.
- Every SERP in one API — Google Search, AI Mode, Maps, News, Shopping, Images, Videos, Jobs, Autocomplete, plus Bing and Brave.
- Structured JSON — documented fields instead of brittle HTML parsing.
- Geo & language targeting — search like a user from the country and language you need.
- One API key, one header —
x-api-keyon every request. - Copy-paste examples — Python and TypeScript in each README, 7 more languages in
examples/.
Create an account on Autom, copy your API key and send it in the x-api-key header of every request to https://api.autom.dev.
Credits per call: /v1/search 1. See Autom pricing.
With engines=auto (default): Google, then Brave, Bing, DuckDuckGo, Yahoo and Baidu. A comma-separated list is followed as given; ddg and duck mean DuckDuckGo.
No. There is no page parameter: the response is always page 1. Use the engine-specific APIs for pagination.
The call returns 404. An empty query returns 400. 1 credit is charged on HTTP 200.
Any language that can make an HTTP request. This README shows Python and TypeScript; the examples/ folder contains cURL, PHP, C#, Go, Java, Ruby and Node.js.
- Google Search API
- Google AI Mode API
- Google Maps API
- Google News API
- Google Shopping API
- Google Images API
- Google Videos API
- Google Jobs API
- All Autom repositories
- 💬 Join the Discord to ask questions and share what you build.
- 📚 Read the API reference.
- 🔑 Get your API key.
Built by Autom. Examples are released under the MIT license.
