Google User Agents & Googlebot Verification Guide

A Google user-agent string identifies what a client claims to be; it does not prove the request came from Google. Use the string to classify the crawler, then verify the source with forward-confirmed reverse DNS or by matching the client IP against the correct Google-published CIDR list.

Crawler request traced from a server log through DNS and IP range verification
Reliable Googlebot identification starts with the client IP in a trusted log—not with a copied user-agent string.

GOOGLEBOT VERIFICATION

Three signals, only two verification methods

User-agentClaim onlyUseful for classification, easy to spoof
DNSReverse + forwardThe original IP must resolve back
IP rangesCIDR matchUse the list for the claimed crawler class

Google crawler and fetcher reference

Google currently groups its clients into three categories: common crawlers, special-case crawlers, and user-triggered fetchers. These groups have different purposes, robots.txt behavior, reverse-DNS patterns and IP lists.[1][2]

Category Typical examples Automatic robots.txt behavior Verification source
Common crawlers Googlebot, Googlebot-Image, Googlebot-Video, Googlebot-News, GoogleOther, Storebot-Google Respect robots.txt for automatic crawls Googlebot/common crawler IP ranges or forward-confirmed DNS under googlebot.com
Special-case crawlers AdsBot and product-specific or abuse-related fetchers May or may not follow the global rules because access depends on the product context Special-crawler IP list or documented google.com DNS pattern
User-triggered fetchers Google Site Verifier and product features that fetch a URL after a user action May ignore robots.txt because the user initiated the request The applicable user-triggered fetcher or agent list

Useful user-agent tokens

The following tokens are useful when filtering access logs, WAF events or crawl reports. They are not authentication:

Token Primary purpose Operational note
Googlebot Google Search web crawling Googlebot primarily crawls with the smartphone user agent for mobile-first indexing; the token remains the stable identifier.
Googlebot-Image Google Images Image requests can appear separately from page crawling.
Googlebot-Video Video-related crawling Do not infer video indexing from one request.
Googlebot-News Google News crawling controls Use specific robots.txt rules only when the editorial requirement is clear.
GoogleOther Generic crawler used by Google product teams for non-search purposes It is not a replacement for the primary Googlebot token.
GoogleOther-Image / GoogleOther-Video Image or video fetching outside the main Search crawler Classify separately in logs.
Storebot-Google Product and shopping-related crawling Verify before granting special WAF treatment.
AdsBot-Google Google Ads landing-page checks It belongs to the special-case category.
Google-Site-Verification User-triggered site verification A verification fetch does not mean a page is indexed.

Google can update exact user-agent strings and technical details. Use the official crawler overview as the current reference rather than copying a browser-version string permanently into firewall logic.

How to verify Googlebot correctly

Method 1: reverse DNS, then forward DNS

  1. Read the actual client IP from the origin or trusted CDN log.
  2. Run a reverse lookup on that IP.
  3. Check the hostname against the pattern Google documents for that category. A lookalike such as googlebot.com.attacker.example is not valid.
  4. Resolve the returned hostname forward.
  5. Confirm that the original client IP appears among the returned IPv4 or IPv6 addresses.
# Replace with the client IP from your trusted log
IP="66.249.66.1"

# Reverse DNS
host "$IP"
# or
dig -x "$IP" +short

# Forward DNS: use the hostname returned above
HOSTNAME="crawl-66-249-66-1.googlebot.com"
host "$HOSTNAME"
# or
dig "$HOSTNAME" A +short
dig "$HOSTNAME" AAAA +short

The forward result must include the same original IP. Reverse DNS alone is not sufficient. Google’s current common-crawler patterns include hostnames under googlebot.com and geo.googlebot.com; special and user-triggered categories use different documented patterns.[2]

Method 2: match the IP against Google’s published ranges

For automation, download the list for the relevant category and perform real IPv4/IPv6 CIDR membership checks. Searching the JSON for an exact IP string is wrong because the files contain network prefixes, not every individual address.

import ipaddress
import json
from urllib.request import urlopen

url = "https://developers.google.com/static/crawling/ipranges/common-crawlers.json"
data = json.load(urlopen(url))
client_ip = ipaddress.ip_address("66.249.66.1")

verified = any(
    client_ip in ipaddress.ip_network(item.get("ipv4Prefix") or item["ipv6Prefix"])
    for item in data["prefixes"]
)
print(verified)

In production, set a timeout, cache the last valid response, parse both address families, refresh periodically and fail safely if retrieval or parsing fails. Do not silently replace a valid cached list with an empty or malformed response.

Official Google crawler IP lists

These files change. Store the source URL, retrieval time and upstream creationTime with your local copy so an incident can be audited against the version used at that moment.

A practical server-log workflow

  1. Preserve evidence: timestamp, client IP, host, method, path, status, bytes, user-agent and request ID.
  2. Identify the trusted client-IP field: behind Cloudflare, a load balancer or another reverse proxy, the origin socket may show the proxy. Trust forwarded headers only from proxies you control and have configured.
  3. Classify the claimed client: map the user-agent token to common, special-case or user-triggered.
  4. Verify independently: use DNS for a one-off check or CIDR matching at scale.
  5. Evaluate behavior: rate, path pattern, status codes, robots.txt access and cache behavior. A verified Google request can still expose a server problem.
  6. Separate crawl from index diagnosis: a 200 response in a Googlebot log does not prove indexing. Check canonical, robots directives, renderability and Search Console’s URL Inspection.
Signal What it supports What it does not prove
User-agent contains Googlebot The client claimed that identity That the client belongs to Google
Reverse and forward DNS agree The IP maps to the documented Google hostname and back That the requested URL is indexed
IP belongs to the correct published CIDR list The source is in Google’s current range for that category That the page response was useful or indexable
Search Console reports a crawl Google processed information about the URL Guaranteed indexation or ranking

User agents and robots.txt behavior

Use the documented robots.txt token—not a full browser-like string—when you need a crawler-specific group:

User-agent: Googlebot-Image
Disallow: /private-image-path/

Common automatic crawlers respect robots.txt. Special-case and user-triggered clients can behave differently because the product or user initiated the fetch. Read the relevant crawler documentation before assuming a global User-agent: * rule controls every Google request.[1]

Robots.txt controls crawling, not guaranteed removal from search. For indexing decisions, use the noindex, canonical and robots.txt decision guide.

Common Googlebot verification mistakes

  • Allowlisting by user-agent: any script can copy the text.
  • Checking only PTR: a reverse record must resolve forward to the original address.
  • Using the wrong range list: an AdsBot or user-triggered request is not classified with the common-crawler list.
  • Comparing exact strings instead of CIDR: the published prefixes represent networks.
  • Reading the proxy IP: validate the client-IP chain before running DNS checks.
  • Hard-coding IPs forever: fetch and validate refreshed lists on a controlled schedule.
  • Equating crawl with indexation: a request says nothing by itself about canonical selection, noindex or ranking.
  • Serving different content after verification: verification is for security and traffic handling, not for cloaking search engines.

Quick FAQ

Can Googlebot’s user agent be spoofed?

Yes. It is plain request-header text. Verify the connecting IP through Google’s documented DNS flow or IP ranges.

Should I block every unverified Googlebot request?

Not automatically. Failed verification means the identity is unverified, not necessarily that the request is malicious. Apply your normal security controls using rate, reputation, paths and behavior.

Does a verified Googlebot visit mean the page is indexed?

No. The response may redirect, fail, contain noindex, canonicalize elsewhere or be excluded for another reason. Inspect the URL in Search Console and audit the live response.

Which Google IP list should I use?

Choose the list matching the documented crawler class: common, special-case, or the relevant user-triggered category. Do not merge them blindly if the distinction matters to your policy.

Official sources

Checked October 11, 2026. User-agent strings, crawler behavior and IP ranges can change.