Google API
Google web search, knowledge panels and query suggestions with stable schemas.
Base URL: https://api.endpointry.com/v1/google. All endpoints require Bearer authentication and return the standard response envelope. This reference is generated from the same schemas the gateway enforces at runtime.
GET/v1/google/web-search
Search the web
Returns ranked web results, exactly `per_page` per response (up to 10) until the result set ends. Pagination continues while results remain — typically 100–250 per query — and stops with `meta.pagination.next_page: null`. Each result carries its absolute position, so ranking is stable across pages. Results reflect a globally neutral locale; country and language targeting are not yet available.
| query* | string |
| page* | integer |
| per_page* | integer |
| results* | array<object> |
| position* | integer |
| url* | string · uri |
| domain* | string |
| title* | string |
| snippet* | string | null |
| published_at* | string · date-time | null |
curl "https://api.endpointry.com/v1/google/web-search" \
-H "Authorization: Bearer sk_live_..."const res = await fetch("https://api.endpointry.com/v1/google/web-search", {
headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) {
const problem = await res.json();
throw new Error(`${problem.code}: ${problem.detail} (${problem.request_id})`);
}
const { data, meta } = await res.json();import os, requests
res = requests.get(
"https://api.endpointry.com/v1/google/web-search",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
timeout=15,
)
body = res.json()
if res.status_code != 200:
raise RuntimeError(f"{body['code']}: {body['detail']} ({body['request_id']})")
data, meta = body["data"], body["meta"]{
"meta": {
"request_id": "req_7729f93d3facf68ff83e5c50",
"as_of": "2026-07-31T12:00:00.000Z",
"pagination": {
"page": 1,
"next_page": 2,
"limit": 10,
"returned": 10
}
},
"data": {
"results": [
{
"position": 1,
"url": "https://www.salesforce.com/crm/best-crm/",
"domain": "www.salesforce.com",
"title": "Best CRM Software: Everything To Consider",
"snippet": "Learn what to look for when comparing CRM platforms, from pipeline management to reporting and automation.",
"published_at": null
},
{
"position": 2,
"url": "https://www.pipedrive.com/en/crm/compare/crm-tool",
"domain": "www.pipedrive.com",
"title": "Compare CRM Tools",
"snippet": "A side-by-side comparison of popular CRM tools for sales teams.",
"published_at": "2026-01-27T00:00:00.000Z"
}
]
}
}GET/v1/google/knowledge-panel
Get the knowledge panel for a query
Returns structured entity data — name, type, summary, image and attributes — for queries that resolve to a known entity. Returns `404 NOT_FOUND` when the query has no panel. Sharing a warm result set with `/web-search`, so a lookup after a search is served from cache.
| query* | string |
| name* | string |
| label* | string | null |
| description* | object | null |
| text* | string |
| source_url* | string · uri | null |
| source_name* | string | null |
| image* | object | null |
| url* | string · uri |
| width* | integer | null |
| height* | integer | null |
| page_url* | string · uri | null |
| attributes* | array<object> |
| label* | string |
| values* | array<string> |
curl "https://api.endpointry.com/v1/google/knowledge-panel" \
-H "Authorization: Bearer sk_live_..."const res = await fetch("https://api.endpointry.com/v1/google/knowledge-panel", {
headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) {
const problem = await res.json();
throw new Error(`${problem.code}: ${problem.detail} (${problem.request_id})`);
}
const { data, meta } = await res.json();import os, requests
res = requests.get(
"https://api.endpointry.com/v1/google/knowledge-panel",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
timeout=15,
)
body = res.json()
if res.status_code != 200:
raise RuntimeError(f"{body['code']}: {body['detail']} ({body['request_id']})")
data, meta = body["data"], body["meta"]{
"meta": {
"request_id": "req_7729f93d3facf68ff83e5c50",
"as_of": "2026-07-31T12:00:00.000Z"
},
"data": {
"name": "Claude",
"label": "Language model",
"description": {
"text": "Claude is a family of large language models developed by Anthropic.",
"source_url": "https://en.wikipedia.org/wiki/Claude_(language_model)",
"source_name": "Wikipedia"
},
"image": {
"url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:UQV8oMkcm41-NM",
"width": 268,
"height": 188,
"page_url": "https://www.anthropic.com"
},
"attributes": [
{
"label": "Developer",
"values": [
"Anthropic"
]
}
]
}
}GET/v1/google/autocomplete
Get query suggestions
Returns the suggestions Google offers for a partial query, in rank order, plus a spelling correction when the input looks misspelled. Each suggestion is provided as plain text and with highlight markup, and carries entity details when the suggestion maps to one. Useful for keyword research and search-as-you-type experiences.
| query* | string |
| suggestions* | array<object> |
| position* | integer |
| keyword* | string |
| keyword_html* | string |
| entity* | object | null |
| title* | string |
| label* | string | null |
| image_url* | string · uri | null |
| spelling_suggestion* | string | null |
curl "https://api.endpointry.com/v1/google/autocomplete" \
-H "Authorization: Bearer sk_live_..."const res = await fetch("https://api.endpointry.com/v1/google/autocomplete", {
headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) {
const problem = await res.json();
throw new Error(`${problem.code}: ${problem.detail} (${problem.request_id})`);
}
const { data, meta } = await res.json();import os, requests
res = requests.get(
"https://api.endpointry.com/v1/google/autocomplete",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
timeout=15,
)
body = res.json()
if res.status_code != 200:
raise RuntimeError(f"{body['code']}: {body['detail']} ({body['request_id']})")
data, meta = body["data"], body["meta"]{
"meta": {
"request_id": "req_7729f93d3facf68ff83e5c50",
"as_of": "2026-07-31T12:00:00.000Z"
},
"data": {
"suggestions": [
{
"position": 1,
"keyword": "anthropic claude",
"keyword_html": "anthropic<b> claude</b>",
"entity": {
"title": "Anthropic",
"label": "Artificial intelligence company",
"image_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTCbP0WqDxmPhD2"
}
},
{
"position": 2,
"keyword": "anthropic api pricing",
"keyword_html": "anthropic<b> api pricing</b>",
"entity": null
}
],
"spelling_suggestion": "anthropic"
}
}