is_ai28 sourcesAI crawlers & agents
Training crawlers, AI search and retrieval fetchers, and agent egress from operators that publish their addresses.
IPAPI.GR · IP intelligence API GET fast.ipapi.gr/api/lookup/{ip|domain}
Geolocation, ISP and ASN for any IPv4, IPv6 address or domain — plus AI, crawler and scanner flags built only from IP ranges and reverse-DNS records the operators publish themselves.
Example addresses · every source we use
66.249.66.0/27 listed in Google’s common-crawlers.json ✓ match
is_crawlertrue
20.171.206.0/24 listed in openai.com/gptbot.json ✓ match
is_aitrue
baiduspider-220-181-108-75.crawl.baidu.com → 220.181.108.75 ✓ forward-confirmed
is_crawlertrue
162.142.125.0/24 listed in docs.censys.com ✓ match
is_scannertrue
{ "ip": "8.8.8.8", "country": "United States", "country_code": "US", "region": "California", "city": "Mountain View", "latitude": 37.4056, "longitude": -122.0775, "timezone": "America/Los_Angeles", "isp": "Google LLC", "organization": "Google LLC", "asn": "15169", "zipcode": "94043", "risk": { "is_ai": false, "is_crawler": false, "is_scanner": false } }
Live figures from the running service.
01 — The response
Every lookup returns the same predictable shape, merged from independent providers and normalized — ISO country codes, IANA timezones, clean ASNs.
{ "ip": "8.8.8.8", "country": "United States", "country_code": "US", "region": "California", "city": "Mountain View", "zipcode": "94043", "latitude": 37.4056, "longitude": -122.0775, "timezone": "America/Los_Angeles", "isp": "Google LLC", "organization": "Google LLC", "asn": "15169", "risk": { "is_ai": false, "is_crawler": false, "is_scanner": false } }
02 — Bot signals
Three yes/no flags tell you when traffic comes from automated infrastructure. No third-party blocklists, no guesswork: each flag traces back to IP ranges or DNS records the operator itself publishes.
is_ai28 sourcesTraining crawlers, AI search and retrieval fetchers, and agent egress from operators that publish their addresses.
is_crawler49 sourcesSearch engines, SEO and site-audit tools, and archives — verified against published ranges or forward-confirmed reverse DNS.
is_scanner66 projectsResearch and attack-surface scanning projects that probe the whole internet, refreshed continuously from their own publications.
03 — Under the hood
Validate the input. Domains are resolved to their address.
Query 11 independent providers, with circuit breakers and automatic failover.
Combine answers and normalize country codes, timezones and ASNs.
Match against the AI, crawler and scanner catalogues held in memory.
Cache the result, so repeats return in about 1 ms.
04 — Integrate
One endpoint, one query parameter. Create up to 20 API keys per account — one per app or server — all sharing your daily allowance.
GET https://fast.ipapi.gr/api/lookup/{ip-or-domain}?key=YOUR_API_KEY
curl "https://fast.ipapi.gr/api/lookup/8.8.8.8?key=YOUR_API_KEY"
const res = await fetch(
"https://fast.ipapi.gr/api/lookup/8.8.8.8?key=" + process.env.IPAPI_KEY
);
const data = await res.json();
console.log(data.country_code, data.asn, data.risk?.is_ai);
import os, requests
r = requests.get(
"https://fast.ipapi.gr/api/lookup/8.8.8.8",
params={"key": os.environ["IPAPI_KEY"]},
timeout=5,
)
data = r.json()
print(data["country_code"], data["asn"])
resp, err := http.Get(
"https://fast.ipapi.gr/api/lookup/8.8.8.8?key=" + os.Getenv("IPAPI_KEY"),
)
if err != nil { log.Fatal(err) }
defer resp.Body.Close()
var data map[string]any
json.NewDecoder(resp.Body).Decode(&data)
fmt.Println(data["country_code"], data["asn"])
$key = getenv('IPAPI_KEY');
$json = file_get_contents("https://fast.ipapi.gr/api/lookup/8.8.8.8?key={$key}");
$data = json_decode($json, true);
echo $data['country_code'], ' ', $data['asn'];
05 — Use cases
risk.is_ai
Detect AI crawlers
Spot GPTBot, ClaudeBot, PerplexityBot and AI agents by address, not by a user agent anyone can copy.
risk.is_crawler
Verify search bots
Tell real Googlebot and Bingbot from scrapers that borrow their names.
risk.is_scanner
Filter internet scanners
Keep Shodan, Censys and research scans out of your alerts and analytics.
country · city · asn
Geolocate visitors
Localise content, default currency and timezone, and enrich logs. Free plan.
06 — Plans
$0/ month
$9.99/ month
is_ai, is_crawler and is_scanner flags07 — Questions
More in the FAQ and the documentation, or see how we compare.
Any public IPv4 or IPv6 address, or a domain name — domains are resolved and the resulting address is looked up.
Only from first-party evidence: IP ranges an operator publishes, or reverse-DNS names the operator documents and that resolve back to the same address. If an operator publishes nothing verifiable, we don't guess.
Lookups are cached for speed. Bot catalogues refresh continuously from the operators' own publications, and the flags are re-evaluated on every response — even when the location comes from cache.
Yes. Create up to 20 keys in your dashboard, each with its own description. They share your account's daily allowance, and deleting one stops it immediately.
Requests above the limit are refused until the allowance resets at midnight UTC. Pro raises the limit to 40,000,000 requests a day.