Google organic search results for a query
serpapi.google.serp.organicLive Google organic results for a keyword — position, title, URL, snippet, by location
- Price
- $0.015/successAt provider cost
- Success rate
- 92.2%Last 30 days · 14,168 calls
- Latency p50
- 1.7 sp95 58 s
- Last verified
- Jul 28, 2026Verified working
GEThttps://toolswitch.dev/v1/tools/serpapi.google.serp.organic?q=coffee&engine=googlePreview- Uses platform quota
- Synchronous response
- Reads public data
Parameters
Answers arrive in `organic_results`; the same response may also carry `knowledge_graph`, `local_results`, `related_questions`, `related_searches` and `pagination`. `num` IS NOT DOCUMENTED for this engine — Google dropped it upstream and SerpApi's google parameter list does not include it. Page with `start`, not `num`; sending `num` is not a supported way to widen a page.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| Query parameters | ||||
q | string | Required | the search query; Google search operators work here | coffee |
cr | string | Optional | restrict to countries, e.g. countryUS; multiple joined by | | |
gl | string | Optional | country code for the search, e.g. us, uk | us |
hl | string | Optional | interface language code, e.g. en | en |
lr | string | Optional | restrict to languages, e.g. lang_en; multiple joined by | | |
lat | number | Optional | latitude; requires lon and a matching gl | |
lon | number | Optional | longitude; requires lat | |
tbm | string | Optional | switches the Google vertical: isch (images), vid, nws, shop, lcl, pts | |
tbs | string | Optional | advanced Google filters, e.g. date range | |
nfpr | string | Optional | 1 disables Google's auto-correction to a different spelling | |
safe | string | Optional | active | off | |
uule | string | Optional | Google's encoded location, as an alternative to `location` | |
start | integer | Optional | result offset for pagination — 0, 10, 20 … This is how you page; see the note about `num` | 0 |
device | string | Optional | desktop (default) | tablet | mobile | |
engine | string | Required | the engine selector — must be this literal string | google |
filter | string | Optional | 0 turns off Google's similar-results and omitted-results filters | |
radius | integer | Optional | metres around lat/lon; 1-199 on desktop, 1-1000 on mobile | |
location | string | Optional | city-level origin of the search, e.g. "Austin, Texas, United States". Mutually exclusive with uule and with lat/lon | |
google_domain | string | Optional | default google.com; e.g. google.co.uk | |
- Query parameters
qstringRequiredthe search query; Google search operators work here
Example:
coffeecrstringOptionalrestrict to countries, e.g. countryUS; multiple joined by |
glstringOptionalcountry code for the search, e.g. us, uk
Example:
ushlstringOptionalinterface language code, e.g. en
Example:
enlrstringOptionalrestrict to languages, e.g. lang_en; multiple joined by |
latnumberOptionallatitude; requires lon and a matching gl
lonnumberOptionallongitude; requires lat
tbmstringOptionalswitches the Google vertical: isch (images), vid, nws, shop, lcl, pts
tbsstringOptionaladvanced Google filters, e.g. date range
nfprstringOptional1 disables Google's auto-correction to a different spelling
safestringOptionalactive | off
uulestringOptionalGoogle's encoded location, as an alternative to `location`
startintegerOptionalresult offset for pagination — 0, 10, 20 … This is how you page; see the note about `num`
Example:
0devicestringOptionaldesktop (default) | tablet | mobile
enginestringRequiredthe engine selector — must be this literal string
Example:
googlefilterstringOptional0 turns off Google's similar-results and omitted-results filters
radiusintegerOptionalmetres around lat/lon; 1-199 on desktop, 1-1000 on mobile
locationstringOptionalcity-level origin of the search, e.g. "Austin, Texas, United States". Mutually exclusive with uule and with lat/lon
google_domainstringOptionaldefault google.com; e.g. google.co.uk
Code samples
Replace $TOOLSWITCH_KEY with the key you created in the console.
curl -X GET 'https://toolswitch.dev/v1/tools/serpapi.google.serp.organic?q=coffee&engine=google' \
-H "X-Toolswitch-Key: $TOOLSWITCH_KEY"import os
import requests
response = requests.request(
"GET",
"https://toolswitch.dev/v1/tools/serpapi.google.serp.organic?q=coffee&engine=google",
headers={"X-Toolswitch-Key": os.environ["TOOLSWITCH_KEY"]},
)
response.raise_for_status()
print(response.text)const response = await fetch("https://toolswitch.dev/v1/tools/serpapi.google.serp.organic?q=coffee&engine=google", {
method: "GET",
headers: {
"X-Toolswitch-Key": process.env.TOOLSWITCH_KEY ?? "",
},
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
console.log(await response.text());This gateway API is in preview; its URL and authentication may change. The example parameters are sample data. Calls are billed at $0.015/success, including the service fee.