Free tool — Bot verification

Is this IP really ClaudeBot?

Anyone can send a crawler’s user agent. Paste the IP and we check it against what 143 operators — OpenAI, Anthropic, Google, Bing, Perplexity and more — publish about their own bots: IP range files and forward-confirmed reverse DNS.

Or paste the user agent from your logs

We read the bot name from it. A bot picked in the list above wins.

How Anthropic Claude bots is verified

A published IP range file

Shared ClaudeBot, Claude-SearchBot and Claude-User published egress.

Operator page: Anthropic Claude bots

Sets
risk.is_ai · risk.is_crawler
Catalogue id
anthropic-bots

01 — Why the IP, not the name

User agents are a claim. IP addresses are evidence.

A user agent is a header the client writes itself. curl -A "Googlebot/2.1" is all it takes to borrow a name a site trusts. Real operators make their bots checkable instead, in one of two ways.

Published range

The operator lists its IP blocks

OpenAI, Anthropic, Google, Bing, Perplexity, Apple and others publish JSON or text files of CIDR blocks. We re-fetch each file at least hourly, and its evidence expires within 24 hours if refreshes fail. An address is verified only while it sits inside a currently published block.

e.g. openai.com/gptbot.json · claude.com/crawling/bots.json

Verified rDNS

The operator documents a hostname

Baidu, Yandex, Sogou, Coc Coc and others tell you to check reverse DNS. The PTR name must end in their domain and resolve back to the same address. A PTR record alone is worthless: whoever owns the IP block can set it to anything.

e.g. baiduspider-220-181-108-75.crawl.baidu.com → 220.181.108.75

Every operator and source we use is on Bot signals. Deep dives:

02 — Questions

About this check.

Why can’t I trust the user agent?

A user agent is a free-text header the client chooses. Anyone can send “Googlebot” or “GPTBot” with one command, so scrapers routinely borrow the names of crawlers that sites allow. Only the IP address, checked against what the operator itself publishes, tells you who really sent the request.

How do bot operators publish their IP addresses?

In one of two ways. Most publish a range file: a JSON or text list of CIDR blocks at a fixed URL (for example openai.com/gptbot.json or Google’s common-crawlers.json). Others document a reverse-DNS convention: the address’s PTR hostname must end in their domain, and that hostname must resolve back to the same address.

What does “forward-confirmed reverse DNS” mean?

We look up the PTR record of the address, check that the hostname ends in a domain the operator documents, then resolve that hostname and require the original address in the answer. A PTR record alone proves nothing, because whoever controls an IP block can set its PTR to any name.

Is this the same answer the API gives?

Yes. The verdict is read from the same in-memory catalogue that sets risk.is_ai, risk.is_crawler and risk.is_scanner in the lookup API, covering 143 operators. One difference: the API can also match a few scanner networks by the ASN its geolocation providers return; this tool does not run a provider lookup.

Why do I get “unknown”?

Either the reverse-DNS check timed out or failed, or the operator’s published list is currently unavailable to us. We never fall back to an old copy: every source is re-fetched at least hourly and its evidence expires within 24 hours if refreshes keep failing. Try again in a minute.

Does “not listed” mean the visitor is human?

No. It means no operator we track claims the address. Plenty of automated traffic comes from cloud and residential networks that nobody publishes.

API

Get this answer on every request.

The lookup API returns risk.is_ai, risk.is_crawler and risk.is_scanner from the same catalogue, next to geolocation and ASN.

Free to use · 60 checks per hour per address