# Google Autocomplete — Zapi reference > Google's suggestion lists across five surfaces — web, YouTube, Images, local and Scholar. The same endpoint returns a different universe per surface. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a free key at https://zpi.web.id/dashboard/keys. **Response envelope:** `{ status, message, content }` **Rate limit:** 60 req/min on free tier. **Related:** - Detail page: https://zpi.web.id/api/autocomplete/google - Endpoint catalog: https://zpi.web.id/category/autocomplete - Concise index: https://zpi.web.id/llms.txt - Full reference: https://zpi.web.id/llms-full.txt --- ## Google Autocomplete **Category:** autocomplete · **Slug:** `google` **Detail page:** https://zpi.web.id/api/autocomplete/google Google's suggestion lists across five surfaces — web, YouTube, Images, local and Scholar. The same endpoint returns a different universe per surface. **Tags:** google, suggest, keyword-research, seo, youtube ### Web Web search autocomplete, with relevance scores. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/autocomplete:google/web` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | yes | Seed text to complete | | `lang` | string | query | no | UI language, two letters. Default id | | `region` | string | query | no | Country bias, two letters. Default ID | | `count` | number | query | no | Cap the list. Default: everything the upstream returns | **cURL:** ```bash curl "https://api.zpi.web.id/v1/autocomplete:google/web?q=cara%20membuat&lang=id®ion=ID&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/autocomplete:google/web?q=cara%20membuat&lang=id®ion=ID&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/autocomplete:google/web?q=cara%20membuat&lang=id®ion=ID&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 15, "items": [ { "text": "cara membuat cv", "relevance": 601 }, { "text": "cara membuat npwp online", "relevance": 600 }, { "text": "cara membuat cv lamaran kerja", "relevance": 562 }, { "text": "cara membuat email baru", "relevance": 561 }, { "text": "cara membuat npwp", "relevance": 560 }, { "text": "cara membuat daftar isi otomatis", "relevance": 559 }, { "text": "cara membuat martabak manis", "relevance": 558 }, { "text": "cara membuat cireng", "relevance": 557 } ], "query": "cara membuat", "locale": "id-ID", "surface": "web", "provider": "google" } ``` --- ### YouTube Video search autocomplete. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/autocomplete:google/youtube` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | yes | Seed text to complete | | `lang` | string | query | no | UI language, two letters. Default id | | `count` | number | query | no | Cap the list. Default: everything the upstream returns | **cURL:** ```bash curl "https://api.zpi.web.id/v1/autocomplete:google/youtube?q=cara%20membuat&lang=id&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/autocomplete:google/youtube?q=cara%20membuat&lang=id&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/autocomplete:google/youtube?q=cara%20membuat&lang=id&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 14, "items": [ { "text": "cara membuat layangan" }, { "text": "cara membuat daftar isi otomatis word" }, { "text": "cara membuat donat" }, { "text": "cara membuat slime" }, { "text": "cara membuat cireng" }, { "text": "cara membuat bolu pisang" }, { "text": "cara membuat pesawat dari kertas" }, { "text": "cara membuat cilok" } ], "query": "cara membuat", "locale": "id", "surface": "youtube", "provider": "google" } ``` --- ### Images Image search autocomplete. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/autocomplete:google/images` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | yes | Seed text to complete | | `lang` | string | query | no | UI language, two letters. Default id | | `count` | number | query | no | Cap the list. Default: everything the upstream returns | **cURL:** ```bash curl "https://api.zpi.web.id/v1/autocomplete:google/images?q=kucing&lang=id&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/autocomplete:google/images?q=kucing&lang=id&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/autocomplete:google/images?q=kucing&lang=id&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 10, "items": [ { "text": "kucing" }, { "text": "kucing persia", "highlighted": "kucing persia" }, { "text": "kucing lucu", "highlighted": "kucing lucu" }, { "text": "kucing anggora", "highlighted": "kucing anggora" }, { "text": "kucing munchkin", "highlighted": "kucing munchkin" }, { "text": "kucing hutan", "highlighted": "kucing hutan" }, { "text": "kucing bengal", "highlighted": "kucing bengal" }, { "text": "kucing siam", "highlighted": "kucing siam" } ], "query": "kucing", "locale": "id", "surface": "images", "provider": "google" } ``` --- ### Local Places and local search autocomplete. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/autocomplete:google/local` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | yes | Seed text to complete | | `lang` | string | query | no | UI language, two letters. Default id | | `count` | number | query | no | Cap the list. Default: everything the upstream returns | **cURL:** ```bash curl "https://api.zpi.web.id/v1/autocomplete:google/local?q=restoran&lang=id&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/autocomplete:google/local?q=restoran&lang=id&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/autocomplete:google/local?q=restoran&lang=id&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 10, "items": [ { "text": "restoran jakarta", "highlighted": "restoran jakarta" }, { "text": "restoran jakarta selatan", "highlighted": "restoran jakarta selatan" }, { "text": "restoran terdekat", "highlighted": "restoran terdekat" }, { "text": "restoran" }, { "text": "restoran terdekat dari lokasi saya", "highlighted": "restoran terdekat dari lokasi saya" }, { "text": "restoran jakarta timur", "highlighted": "restoran jakarta timur" }, { "text": "restoran kelapa gading", "highlighted": "restoran kelapa gading" }, { "text": "restoran di grand indonesia", "highlighted": "restoran di grand indonesia" } ], "query": "restoran", "locale": "id", "surface": "local", "provider": "google" } ``` --- ### Scholar Academic search autocomplete. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/autocomplete:google/scholar` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | yes | Seed text to complete | | `lang` | string | query | no | UI language, two letters. Default id | | `count` | number | query | no | Cap the list. Default: everything the upstream returns | **cURL:** ```bash curl "https://api.zpi.web.id/v1/autocomplete:google/scholar?q=machine%20learning&lang=id&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/autocomplete:google/scholar?q=machine%20learning&lang=id&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/autocomplete:google/scholar?q=machine%20learning&lang=id&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 10, "items": [ { "text": "machine learning algorithms" }, { "text": "machine learning approach" }, { "text": "machine learning techniques" }, { "text": "machine learning models" }, { "text": "machine learning methods" }, { "text": "machine learning applications" }, { "text": "machine learning review" }, { "text": "machine learning classification" } ], "query": "machine learning", "locale": "id", "surface": "scholar", "provider": "google" } ``` --- ### Expand Expand one seed into the many real queries people type — the seed with every letter, question word and preposition appended, deduplicated. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/autocomplete:google/expand` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | yes | Seed to expand | | `surface` | enum(web|youtube|images|local|scholar) | query | no | Which Google suggestion universe to expand. Default web | | `modifiers` | enum(all|alphabet|questions|prepositions|digits) | query | no | Which modifier sets to append. Default all | | `lang` | enum(id|en) | query | no | Language for the question and preposition sets. Default id | | `count` | number | query | no | Cap the returned list. Default: every unique query found | **cURL:** ```bash curl "https://api.zpi.web.id/v1/autocomplete:google/expand?q=cara%20membuat&surface=web&modifiers=all&lang=id&count=200" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/autocomplete:google/expand?q=cara%20membuat&surface=web&modifiers=all&lang=id&count=200", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/autocomplete:google/expand?q=cara%20membuat&surface=web&modifiers=all&lang=id&count=200", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "seed": "cara membuat", "count": 558, "items": [ { "via": "alphabet", "text": "cara membuat akun google" }, { "via": "alphabet", "text": "cara membuat akun" }, { "via": "alphabet", "text": "cara membuat akun spmb" }, { "via": "alphabet", "text": "cara membuat akun google baru" }, { "via": "alphabet", "text": "cara membuat anak" }, { "via": "alphabet", "text": "cara membuat ayam kecap" }, { "via": "alphabet", "text": "cara membuat akta kelahiran" }, { "via": "alphabet", "text": "cara membuat asinan buah" } ], "locale": "id", "surface": "web", "provider": "google", "modifiers": "all", "truncated": false, "variantsTried": 44, "variantsFailed": 0 } ``` --- _Generated: 2026-08-02T14:21:43.981Z_