Google Search URL Parameters: Complete 2026 Reference

TL;DR
Google’s search URL accepts dozens of undocumented parameters that control results, date filters, language, location, and output format. this is the working reference for 2026, sourced from reverse-engineering and official documentation.

the base url structure

every Google search starts at https://www.google.com/search. the query string carries all the search configuration. the minimum required parameter is q (the query). everything else is optional but powerful.

for scraping purposes, always target google.com with explicit gl and hl parameters rather than country-specific domains. the gl parameter gives you cleaner, more predictable results and avoids regional redirect chains.

core parameters

q: query

the search query. URL-encode it. spaces become + or %20. use urllib.parse.quote_plus() in Python. advanced operators (site:, intitle:, filetype:) go inside q.

num: results per page

valid values: 10 (default), 20, 30, 50, 100. setting num=100 gives you the full first page in one request, which is essential for efficient scraping. SERP quality degrades beyond position 30; positions 31-100 are often thin or duplicate content.

start: pagination offset

zero-indexed. start=0 is page 1, start=10 is page 2 (with default num=10). combine with num: num=100&start=0 fetches 100 results in one shot.

gl: geolocation country

two-letter country code. gl=us, gl=gb, gl=sg. for rank tracking, always fix gl so results are consistent across requests.

hl: interface language

hl=en forces English interface. if you omit this, Google infers language from IP location, which breaks scraping consistency when you rotate proxies across regions.

lr: language restrict

restricts results to pages in a specific language. format: lr=lang_en, lr=lang_zh-TW. different from hl: hl controls the UI language, lr controls the language of pages returned.

date and freshness parameters

tbs: time-based search

values: tbs=qdr:h (past hour), tbs=qdr:d (past 24 hours), tbs=qdr:w (past week), tbs=qdr:m (past month), tbs=qdr:y (past year), tbs=cdr:1,cd_min:1/1/2025,cd_max:12/31/2025 (custom date range). for news monitoring pipelines, tbs=qdr:h pairs with tbm=nws for news-specific results.

result type parameters

tbm: type of search

  • tbm=nws – Google News
  • tbm=isch – Google Images
  • tbm=vid – Google Videos
  • tbm=shop – Google Shopping
  • tbm=bks – Google Books

output and format parameters

filter

filter=0 disables duplicate filtering and the omitted similar results cluster. always set this when scraping for comprehensive results. filter=1 (default) silently drops results Google considers duplicates.

nfpr

nfpr=1 disables automatic query corrections, which is critical for rank tracking exact queries.

a working python scraping example

import urllib.parse
from curl_cffi import requests as cffi_requests

def google_serp(query, num=10, gl="us", tbs=None):
    params = {"q": query, "num": str(num), "gl": gl, "hl": "en", "filter": "0", "nfpr": "1"}
    if tbs:
        params["tbs"] = tbs
    url = "https://www.google.com/search?" + urllib.parse.urlencode(params)
    s = cffi_requests.Session(impersonate="chrome120")
    return s.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36", "Accept-Language": "en-US,en;q=0.9"}).text

html = google_serp("web scraping python", num=100, gl="us", tbs="qdr:m")

parameters to avoid

some parameters seen in older guides no longer work or actively trigger bot detection. pws=0 (disable personalization) was removed in 2021. as_sitesearch works but is slower than using site: inside q. complete=0 has no effect on server-side responses.

sources and further reading

related guides

last updated: April 1, 2026

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top
message me on telegram

Resources

Proxy Signals Podcast
Operator-level insights on mobile proxies and access infrastructure.

Multi-Account Proxies: Setup, Types, Tools & Mistakes (2026)