{
 "generated_at": "2026-09-03T02:42:02+00:00",
 "checked_at": "2026-09-03T06:29:54+00:00",
 "sources_total": 15,
 "sources_ok": 15,
 "sources_failed": 0,
 "unique_ipv4_prefixes": 1984,
 "unique_ipv6_prefixes": 1062,
 "crawlers_indexed": 150,
 "operators_indexed": 74,
 "policies": 8,
 "sources": [
  {
   "slug": "openai-gptbot",
   "operator": "openai",
   "url": "https://openai.com/gptbot.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:41:55+00:00",
   "source_created": "2025-10-30T11:00:00.000000",
   "ipv4_count": 21,
   "ipv6_count": 0,
   "sha256": "be778b84e1b5436be6ab9d6139ba2b3d6a98c1f581e038ec386e3a7d44cbfe50",
   "changed_since_last_fetch": false
  },
  {
   "slug": "openai-searchbot",
   "operator": "openai",
   "url": "https://openai.com/searchbot.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:41:55+00:00",
   "source_created": "2026-01-02T11:00:00.000000",
   "ipv4_count": 35,
   "ipv6_count": 0,
   "sha256": "e757b3ed5b84ac71976c02f17d9a77385e7acaf5b50e17c7b60f7e5a9876f102",
   "changed_since_last_fetch": false
  },
  {
   "slug": "openai-chatgpt-user",
   "operator": "openai",
   "url": "https://openai.com/chatgpt-user.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:41:55+00:00",
   "source_created": "2026-08-14T20:03:38.055838",
   "ipv4_count": 204,
   "ipv6_count": 0,
   "sha256": "812f11df46d6fcac5779082dba32f7e2d571673f72b3e63b10ef706a25420996",
   "changed_since_last_fetch": false
  },
  {
   "slug": "google-googlebot",
   "operator": "google",
   "url": "https://developers.google.com/static/search/apis/ipranges/googlebot.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:41:55+00:00",
   "source_created": "2026-09-02T14:45:50.000000",
   "ipv4_count": 170,
   "ipv6_count": 147,
   "sha256": "40d603e9d09deee7a847dc2e1006ae08473e1d9043c6df233cbe48697ee7f85c",
   "changed_since_last_fetch": false
  },
  {
   "slug": "google-special",
   "operator": "google",
   "url": "https://developers.google.com/static/search/apis/ipranges/special-crawlers.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:41:56+00:00",
   "source_created": "2026-09-02T14:45:54.000000",
   "ipv4_count": 136,
   "ipv6_count": 136,
   "sha256": "cd64b03e0f6b549e0a3a683e157d4c2b88ab70035a7628bb18d7f3c630fe8993",
   "changed_since_last_fetch": false
  },
  {
   "slug": "google-user-triggered",
   "operator": "google",
   "url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:00+00:00",
   "source_created": "2026-09-02T14:45:44.000000",
   "ipv4_count": 529,
   "ipv6_count": 529,
   "sha256": "06000eed8672cedfc6471dd62a7d01893192cb28cc7742a8496f42737126a80b",
   "changed_since_last_fetch": false
  },
  {
   "slug": "google-user-triggered-google",
   "operator": "google",
   "url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers-google.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:00+00:00",
   "source_created": "2026-09-02T14:45:50.000000",
   "ipv4_count": 248,
   "ipv6_count": 248,
   "sha256": "a8f6803f2093a5d09549220114a186653d4b7dca801966b9eedd81f6a0c4bab8",
   "changed_since_last_fetch": false
  },
  {
   "slug": "bing-bingbot",
   "operator": "microsoft",
   "url": "https://www.bing.com/toolbox/bingbot.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:01+00:00",
   "source_created": "2024-01-03T10:00:00.121331",
   "ipv4_count": 28,
   "ipv6_count": 0,
   "sha256": "a2d1cf229544205a24c61fb7c459408b1afe18f9fd5b172fe181f0eb73c1594d",
   "changed_since_last_fetch": false
  },
  {
   "slug": "apple-applebot",
   "operator": "apple",
   "url": "https://search.developer.apple.com/applebot.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:01+00:00",
   "source_created": "2026-07-31T10:00:00.000000",
   "ipv4_count": 33,
   "ipv6_count": 0,
   "sha256": "b845bdfb29aae14da031eab82d7f366dd295f8ea4bc4ef5fe3ce850c94b779b8",
   "changed_since_last_fetch": false
  },
  {
   "slug": "duckduckgo-duckduckbot",
   "operator": "duckduckgo",
   "url": "https://duckduckgo.com/duckduckbot.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:01+00:00",
   "source_created": "2026-09-01T12:44:58.000000",
   "ipv4_count": 486,
   "ipv6_count": 0,
   "sha256": "fd9039362dfaaad236d50c07ddd12bf0cc7f0d530fbff59b8feb1b22e0db2459",
   "changed_since_last_fetch": false
  },
  {
   "slug": "perplexity-bot",
   "operator": "perplexity",
   "url": "https://www.perplexity.ai/perplexitybot.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:01+00:00",
   "source_created": "2025-02-07T16:56:00.000000",
   "ipv4_count": 8,
   "ipv6_count": 0,
   "sha256": "2688b50802b42611b412f8ac3bc614248d0eab00d74f4ceda41cb78526bde6b2",
   "changed_since_last_fetch": false
  },
  {
   "slug": "perplexity-user",
   "operator": "perplexity",
   "url": "https://www.perplexity.ai/perplexity-user.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:01+00:00",
   "source_created": "2025-10-17T10:17:00.000000",
   "ipv4_count": 4,
   "ipv6_count": 0,
   "sha256": "23e55350c44ac51a8a6e7ed786d861db8bc62886fd1cfc228dfa467127223e48",
   "changed_since_last_fetch": false
  },
  {
   "slug": "google-user-triggered-agents",
   "operator": "google",
   "url": "https://developers.google.com/static/search/apis/ipranges/user-triggered-agents.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:02+00:00",
   "source_created": "2026-03-03T10:00:00.000000",
   "ipv4_count": 3,
   "ipv6_count": 1,
   "sha256": "c111ff7b1b4e8653f00f75bc4a3c2b02c7c84fb542086988aaf4ffebc8e8779d",
   "changed_since_last_fetch": false
  },
  {
   "slug": "commoncrawl-ccbot",
   "operator": "commoncrawl",
   "url": "https://index.commoncrawl.org/ccbot.json",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:02+00:00",
   "source_created": "2026-08-11T13:40:00Z",
   "ipv4_count": 4,
   "ipv6_count": 1,
   "sha256": "0a4c3b6707326d7f083139a979062604a57edfbb251bd29f23f5a86c5107ea30",
   "changed_since_last_fetch": false
  },
  {
   "slug": "ahrefs-crawler",
   "operator": "ahrefs",
   "url": "https://api.ahrefs.com/v3/public/crawler-ip-ranges",
   "ok": true,
   "http_status": 200,
   "error": null,
   "fetched_at": "2026-09-03T02:42:02+00:00",
   "source_created": null,
   "ipv4_count": 81,
   "ipv6_count": 0,
   "sha256": "4246eee9407d58fb030ee9f12776f974f628db4b4f91f8111847dd565fc63d45",
   "changed_since_last_fetch": false
  }
 ],
 "changes": {
  "url": "https://www.pathwren.workers.dev/changes.json",
  "head_cursor": 111,
  "start_here": "https://www.pathwren.workers.dev/changes.json?since=111",
  "how": "Read `cursor` from the response and send it back as `since`. It advances only when something really changed.",
  "refresh_interval_seconds": 21600,
  "conditional_get": "Strong ETag and Last-Modified on this document and on the feed; If-None-Match and If-Modified-Since both answered with a 304."
 },
 "links": [
  {
   "rel": "self",
   "href": "https://www.pathwren.workers.dev/status.json",
   "type": "application/json"
  },
  {
   "rel": "changes",
   "href": "https://www.pathwren.workers.dev/changes.json?since=111",
   "type": "application/json",
   "title": "What changed since your cursor — poll this instead of re-downloading this document",
   "cursor_param": "since",
   "head_cursor": 111,
   "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 2.5 KB, or a 304 with no body if you send back the ETag."
  },
  {
   "rel": "related",
   "href": "https://www.pathwren.workers.dev/ip-ranges/all.json",
   "type": "application/json",
   "title": "Every operator-published prefix, unioned and grouped by source"
  },
  {
   "rel": "related",
   "href": "https://www.pathwren.workers.dev/data/ip-sources.json",
   "type": "application/json",
   "title": "Which operators publish IP ranges, and where"
  },
  {
   "rel": "service-desc",
   "href": "https://www.pathwren.workers.dev/openapi.json",
   "type": "application/json",
   "title": "Every read endpoint, described formally"
  }
 ]
}