{
  "generated_at": "2026-06-21",
  "operators": [
    {
      "name": "GPTBot",
      "vendor": "OpenAI",
      "token": "GPTBot",
      "purpose": "AI training crawler",
      "rangeSrc": "https://openai.com/gptbot.json",
      "asOf": "2025-10-30",
      "ranges": [
        "132.196.86.0/24",
        "172.182.202.0/25",
        "172.182.204.0/24",
        "172.182.207.0/25",
        "172.182.214.0/24",
        "172.182.215.0/24",
        "20.125.66.80/28",
        "20.171.206.0/24",
        "20.171.207.0/24",
        "4.227.36.0/25",
        "52.230.152.0/24",
        "74.7.175.128/25",
        "74.7.227.0/25",
        "74.7.227.128/25",
        "74.7.228.0/25",
        "74.7.230.0/25",
        "74.7.241.0/25",
        "74.7.241.128/25",
        "74.7.242.0/25",
        "74.7.243.128/25",
        "74.7.244.0/25"
      ]
    },
    {
      "name": "ChatGPT-User",
      "vendor": "OpenAI",
      "token": "ChatGPT-User",
      "purpose": "On-demand fetch (user prompt)",
      "rangeSrc": "https://openai.com/chatgpt-user.json",
      "asOf": "2026-06-16",
      "ranges": null
    },
    {
      "name": "OAI-SearchBot",
      "vendor": "OpenAI",
      "token": "OAI-SearchBot",
      "purpose": "Search index",
      "rangeSrc": "https://openai.com/searchbot.json",
      "asOf": "2026-01-02",
      "ranges": [
        "104.210.140.128/28",
        "135.234.64.0/24",
        "172.182.193.224/28",
        "172.182.193.80/28",
        "172.182.194.144/28",
        "172.182.194.32/28",
        "172.182.195.48/28",
        "172.182.209.208/28",
        "172.182.211.192/28",
        "172.182.213.192/28",
        "172.182.224.0/28",
        "172.203.190.128/28",
        "20.14.99.96/28",
        "20.168.18.32/28",
        "20.169.6.224/28",
        "20.169.7.48/28",
        "20.169.77.0/25",
        "20.171.123.64/28",
        "20.171.53.224/28",
        "20.25.151.224/28",
        "20.42.10.176/28",
        "4.227.36.0/25",
        "40.67.175.0/25",
        "40.90.214.16/28",
        "51.8.102.0/24",
        "74.7.175.128/25",
        "74.7.228.0/25",
        "74.7.228.128/25",
        "74.7.229.0/25",
        "74.7.229.128/25",
        "74.7.230.0/25",
        "74.7.241.128/25",
        "74.7.242.128/25",
        "74.7.243.0/25",
        "74.7.244.0/25"
      ]
    },
    {
      "name": "PerplexityBot",
      "vendor": "Perplexity",
      "token": "PerplexityBot",
      "purpose": "Search index",
      "rangeSrc": "https://www.perplexity.com/perplexitybot.json",
      "asOf": "2025-02-07",
      "ranges": [
        "107.20.236.150/32",
        "3.224.62.45/32",
        "18.210.92.235/32",
        "3.222.232.239/32",
        "3.211.124.183/32",
        "3.231.139.107/32",
        "18.97.1.228/30",
        "18.97.9.96/29"
      ]
    },
    {
      "name": "Claude-User",
      "vendor": "Anthropic",
      "token": "Claude-User",
      "purpose": "On-demand fetch (web search/fetch)",
      "rangeSrc": "https://docs.anthropic.com/en/api/ip-addresses",
      "asOf": "2026-06-20",
      "ranges": [
        "160.79.104.0/21"
      ],
      "note": "Anthropic's published OUTBOUND range, used for web fetch/search tool calls."
    },
    {
      "name": "ClaudeBot",
      "vendor": "Anthropic",
      "token": "ClaudeBot",
      "purpose": "AI training crawler",
      "rangeSrc": null,
      "asOf": null,
      "ranges": null,
      "note": "Anthropic publishes API/fetch IPs but not a confirmed ClaudeBot crawler range list."
    },
    {
      "name": "Claude-SearchBot",
      "vendor": "Anthropic",
      "token": "Claude-SearchBot",
      "purpose": "Search index (new 2026)",
      "rangeSrc": null,
      "asOf": null,
      "ranges": null
    },
    {
      "name": "Googlebot",
      "vendor": "Google",
      "token": "Googlebot",
      "purpose": "Search index",
      "rangeSrc": "https://developers.google.com/search/apis/ipranges/googlebot.json",
      "asOf": "2026-06-19",
      "ranges": null
    },
    {
      "name": "Google-Extended",
      "vendor": "Google",
      "token": "Google-Extended",
      "purpose": "AI training token (Gemini)",
      "rangeSrc": "https://developers.google.com/search/apis/ipranges/special-crawlers.json",
      "asOf": "2026-06-19",
      "ranges": null
    },
    {
      "name": "Bingbot",
      "vendor": "Microsoft",
      "token": "bingbot",
      "purpose": "Search index (powers Copilot)",
      "rangeSrc": "https://www.bing.com/toolbox/bingbot.json",
      "asOf": "2024-01-03",
      "ranges": [
        "157.55.39.0/24",
        "207.46.13.0/24",
        "40.77.167.0/24",
        "13.66.139.0/24",
        "13.66.144.0/24",
        "52.167.144.0/24",
        "13.67.10.16/28",
        "13.69.66.240/28",
        "13.71.172.224/28",
        "139.217.52.0/28",
        "191.233.204.224/28",
        "20.36.108.32/28",
        "20.43.120.16/28",
        "40.79.131.208/28",
        "40.79.186.176/28",
        "52.231.148.0/28",
        "20.79.107.240/28",
        "51.105.67.0/28",
        "20.125.163.80/28",
        "40.77.188.0/22",
        "65.55.210.0/24",
        "199.30.24.0/23",
        "40.77.202.0/24",
        "40.77.139.0/25",
        "20.74.197.0/28",
        "20.15.133.160/27",
        "40.77.177.0/24",
        "40.77.178.0/23"
      ]
    },
    {
      "name": "Applebot",
      "vendor": "Apple",
      "token": "Applebot",
      "purpose": "Search index / Apple Intelligence",
      "rangeSrc": "https://search.developer.apple.com/applebot.json",
      "asOf": "2023-10-27",
      "ranges": [
        "17.241.208.160/27",
        "17.241.193.160/27",
        "17.241.200.160/27",
        "17.22.237.0/24",
        "17.22.245.0/24",
        "17.22.253.0/24",
        "17.241.75.0/24",
        "17.241.219.0/24",
        "17.241.227.0/24",
        "17.246.15.0/24",
        "17.246.19.0/24",
        "17.246.23.0/24"
      ]
    },
    {
      "name": "Bytespider",
      "vendor": "ByteDance",
      "token": "Bytespider",
      "purpose": "AI training crawler",
      "rangeSrc": null,
      "asOf": null,
      "ranges": null
    },
    {
      "name": "Meta-ExternalAgent",
      "vendor": "Meta",
      "token": "Meta-ExternalAgent",
      "purpose": "AI training crawler",
      "rangeSrc": null,
      "asOf": null,
      "ranges": null
    },
    {
      "name": "CCBot",
      "vendor": "Common Crawl",
      "token": "CCBot",
      "purpose": "Open web corpus",
      "rangeSrc": null,
      "asOf": null,
      "ranges": null,
      "method": "dns",
      "note": "Common Crawl publishes no IP ranges; verify by reverse DNS (FCrDNS) to *.commoncrawl.org."
    },
    {
      "name": "Amazonbot",
      "vendor": "Amazon",
      "token": "Amazonbot",
      "purpose": "Search / Alexa / AI",
      "rangeSrc": null,
      "asOf": null,
      "ranges": null,
      "method": "dns",
      "note": "No Amazonbot-specific CIDR list exists (the AWS ip-ranges file is all of AWS, not Amazonbot). Verify by reverse DNS to *.crawl.amazon."
    }
  ]
}
