benni@hamburg: ~ — zsh ● online
benni@hamburg:~$ whoami

Benjamin Dreier_

builds tiny APIs that do exactly one thing well, then stop.

← cd ../tools
benni@hamburg:~$ man asn

IP Intel live

Give it an IP, get back the owning ASN, a coarse geolocation, and a datacenter-vs-residential verdict with the evidence behind it. All answered offline from local datasets — no per-request calls to anyone.

// try it
// response
// response appears here
GET /v1/lookup https://ip.benjamin-dreier.de
// parameters
ip* text IPv4 or IPv6 address to look up 8.8.8.8
// example request
curl 'https://ip.benjamin-dreier.de/v1/lookup?ip=8.8.8.8'
// example response
{
  "ip": "8.8.8.8",
  "network": "8.8.8.0/24",
  "asn": { "number": 15169, "name": "GOOGLE", "country": "US" },
  "location": { "country": "United States", "city": "Mountain View" },
  "usage_type": {
    "classification": "datacenter",
    "is_datacenter": true,
    "confidence": "medium",
    "evidence": ["AS15169 in hosting-ASN list"]
  }
}

OpenAPI spec → — drop it into your own client or codegen.

// what is asn

IP Intel turns a bare IP address into context: who announces it, roughly where it sits, and — the useful part — whether it belongs to a datacenter/hosting range or a residential connection. Every answer is served from local datasets baked into the service, so there are no per-request calls to third parties and no rate-limit surprises.

It's built for the moments where an IP alone isn't enough: triaging abuse and fraud signups, spotting bots and scrapers arriving from cloud ranges, enriching access logs, or just settling an argument about who owns 8.8.8.8. The datacenter-vs-residential verdict ships with the evidence behind it (the matched hosting-ASN list, for example), so you can decide how far to trust it. Both IPv4 and IPv6 are supported.

// what comes back
asn.number / name the Autonomous System that announces the address
location.city / country coarse, city-level geolocation
usage_type.classification datacenter, residential or unknown
usage_type.is_datacenter boolean shortcut for filtering
usage_type.evidence why it was classified that way
data_versions dataset snapshot dates, so results stay auditable
// examples
8.8.8.8 Google Public DNS — classified datacenter (AS15169 GOOGLE)
1.1.1.1 Cloudflare's resolver — datacenter, AS13335
9.9.9.9 Quad9 DNS — another hosting range
140.82.121.3 GitHub — datacenter / cloud range
2606:4700:4700::1111 an IPv6 address — lookups work identically
208.67.222.222 OpenDNS (Cisco) — datacenter
STATUS: busy LOCATION: Hamburg, DE MAIL: hello@bendre.org FUEL: ▓▓▓▓░ energy drink