Google Search results.
Structured JSON.
Ready instantly.
One POST request returns a complete SERP response — organic results, ads, featured snippets, PAA, shopping, news, local, images, videos, and more. No scraping setup. No HTML parsing.
curl --request POST \
--url https://cetta-serp-api.p.rapidapi.com/search/google \
--header 'Content-Type: application/json' \
--data '{"q":"sushi"}'
{
"error": false,
"code": "OK",
"data": {
"meta": {
"query": "sushi", "country_code": "AU",
"page": 1, "device_type": "desktop",
"total_results": 168, "search_time_sec": 0.2
},
"serp": {
"organic": [
{
"rank": 1,
"title": "THE BEST Sushi in Melbourne (2026)",
"url": "https://www.tripadvisor.com.au/...",
"source": "Tripadvisor"
}
// ...9 more results
],
"local_business": [
{ "rank": 1, "title": "Izakaya Domo", "rating": 4.8 }
// ...2 more
],
"people_also_ask": [
{ "question": "Is sushi healthy or junk?" }
// ...3 more
],
"related_searches": [ /* 8 items */ ],
"featured_snippet": null,
"ads": {}, "news": {}, "shopping": {}
},
"pagination": { "current_page": 1, "next_page": 2 }
}
}
Every part of the SERP. One response.
All arrays are always present — [] when empty, never null. Only featured_snippet can be null.
The natural, non-paid search results Google ranks by relevance. Each entry includes rank position, title, URL, snippet, favicon, display URL, and nested sitelinks.
Paid Google Ads appearing at the top and bottom of the SERP. Returns position, headline, display URL, destination URL, and ad sitelinks.
The highlighted answer box Google surfaces at position zero — above all organic results. Can be a paragraph, list, or table, with the source URL included.
Related questions Google surfaces based on the query — each with its question text, Google's answer, and source URL. Great for content gap analysis and AI grounding.
The local map pack results Google shows for location-based queries. Returns business name, rating, review count, address, category tags, Maps link, and business website.
Google Shopping product listings shown for commercial queries. Returns product title, current price, original price (if on sale), store name, star rating, review count, and product image.
Top news articles Google surfaces for the query, typically for trending or time-sensitive searches. Each item includes headline, publisher name, publish date, excerpt, and thumbnail.
Visual results embedded in the SERP. Images include thumbnail, source site, and original URL. Videos additionally include duration and publish date.
Send a keyword. Get back everything.
{
"q": "best laptops 2026",
"country": "us",
"lang": "en",
"page": 1,
"device_type": "desktop"
}
{
"error": false,
"code": "OK",
"data": {
"meta": {
"query": "best laptops 2026",
"page": 1,
"device_type": "desktop",
"total_results": 382000000,
"search_time_sec": 0.42
},
"serp": {
"organic": [
{
"rank": 1,
"title": "Best Laptops (2026) — Wired",
"url": "https://www.wired.com/...",
"snippet": "We tested over 80 laptops...",
"source": "Wired"
}
],
"featured_snippet": { ... },
"people_also_ask": [ ... ],
"shopping": [ ... ],
"news": [ ... ]
},
"pagination": {
"current_page": 1,
"next_page": 2
}
}
}
| Field | Required | Type | Description |
|---|---|---|---|
| q | ✅ yes | string | Search query, 1–512 chars |
| country | optional | string | ISO 3166-1 alpha-2 — e.g. us, id, gb |
| lang | optional | string | ISO 639-1 — e.g. en, id, de |
| page | optional | integer | 1–10, defaults to 1 |
| device_type | optional | string | desktop, mobile, tablet — or random if omitted |
| tbm | optional | string | news, shopping, images — Google vertical |
| tbs | optional | string | Recency filter — qdr:h qdr:d qdr:w qdr:m |
| uule | optional | string | City-level geotargeting string (max 256 chars) |
Who builds with Cetta SERP API.
Stop building scrapers. Start building products.
const res = await fetch(
'https://cetta-serp-api.p.rapidapi.com/search/google',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-RapidAPI-Key': 'YOUR_KEY'
},
body: JSON.stringify({
q: 'best coffee maker',
country: 'us', lang: 'en'
})
}
);
const { data } = await res.json();
console.log(data.serp.organic);
Common questions.
No. POST /search/google accepts a JSON body only. Sending query-string parameters returns 400 BAD_REQUEST immediately.
Yes. Every array in serp is always present — it returns [] when empty, never null. Only featured_snippet can be null.
total_results return 0?Google only surfaces total_results and search_time_sec on desktop. Mobile and tablet device types return 0 for both — this is expected behavior, not a bug.
Send "tbm": "shopping" or "tbm": "news" in your request body. Combine with "tbs": "qdr:d" to filter news to the last 24 hours.
Yes. Set lang to the appropriate ISO 639-1 code (e.g. id for Indonesian) and the q field accepts any language without restrictions.
429 or 504 errors?Both are transient. 429 means rate limit — wait a few seconds and retry with exponential backoff. 504 means timeout — retry the same request.
Simple, usage-based pricing.
Start free. Scale as you grow. No hidden fees.
- Always free 100 req/month
- then $0.0021/req
- No subscription required
Stop scraping. Start shipping.
Your product needs clean, structured Google search data. Cetta SERP API is the fastest path to get there.