{
 "slug": "adsbot-google",
 "name": "AdsBot-Google",
 "operator": "Google",
 "operator_slug": "google",
 "category": "tool",
 "category_label": "Tools and frameworks",
 "robots_token": "AdsBot-Google",
 "user_agent_substring": "AdsBot-Google",
 "user_agent_example": "AdsBot-Google (+http://www.google.com/adsbot.html)",
 "respects_robots_txt": "own-token-only",
 "respects_robots_txt_label": "ignores the * group; obeys rules named for its own token",
 "verification_method": "published-ranges",
 "verification_label": "published IP ranges",
 "published_ip_ranges_url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
 "ip_ranges_endpoint": "https://www.pathwren.workers.dev/ip-ranges/google-special.json",
 "ipv4_prefix_count": 136,
 "ipv6_prefix_count": 136,
 "what_it_is": "Checks the quality of desktop landing pages for Google Ads. Google documents that it ignores the robots.txt * group with the ad publisher's permission, and obeys a group named for its own token.",
 "cost_of_blocking": "Google Ads cannot score your landing pages, which lowers Ad Rank on the ads pointing at them. If you do not buy ads, blocking it costs nothing but bandwidth savings.",
 "operator_docs": "https://developers.google.com/search/docs/crawling-indexing/google-special-case-crawlers",
 "html_url": "https://www.pathwren.workers.dev/crawler/adsbot-google.html",
 "json_url": "https://www.pathwren.workers.dev/crawler/adsbot-google.json",
 "last_reviewed": "2026-09-01",
 "links": [
  {
   "rel": "self",
   "href": "https://www.pathwren.workers.dev/crawler/adsbot-google.json",
   "type": "application/json"
  },
  {
   "rel": "changes",
   "href": "https://www.pathwren.workers.dev/changes.json?since=105",
   "type": "application/json",
   "title": "What changed since your cursor — poll this instead of re-downloading this document",
   "cursor_param": "since",
   "head_cursor": 105,
   "min_poll_seconds": 21600,
   "how": "Read `cursor` from the response and send it back as `since`. It advances only when something really changed, so an unchanged answer is proof rather than luck — about 700 bytes, or a 304 with no body if you send back the ETag."
  },
  {
   "rel": "related",
   "href": "https://www.pathwren.workers.dev/data/agents.json",
   "type": "application/json",
   "title": "Every crawler record in one file"
  },
  {
   "rel": "related",
   "href": "https://www.pathwren.workers.dev/crawler/adsbot-google.md",
   "type": "text/markdown"
  },
  {
   "rel": "related",
   "href": "https://www.pathwren.workers.dev/ip-ranges/google-special.json",
   "type": "application/json"
  },
  {
   "rel": "service-desc",
   "href": "https://www.pathwren.workers.dev/openapi.json",
   "type": "application/json",
   "title": "Every read endpoint, described formally"
  }
 ]
}