Every address belongs to someone. Find out who.
Resolve an IP address to the autonomous system that announces it, the prefix it sits inside, the registry that allocated it and the records that point at it — one JSON API over a dataset rebuilt from public routing data every six hours — with RPKI origin validation on every answer.
IPv4 & IPv6 · RPKI validation · PeeringDB · live DNS · bulk resolution
Try a lookup
Live dataEnter a domain, IP address or AS number. This hits the same endpoint and the same dataset every other client uses — nothing here is mocked.
Four questions about any address
Who announces it
The AS number and holder originating the covering prefix, with the exact CIDR the address falls inside — not a guess from a stale WHOIS block.
Where it came from
Which registry allocated the AS number, when, and to which country — read from the RIRs' own delegation statistics rather than inferred.
How large the network is
Announced prefix counts for both families and the full prefix list, so you can tell a single-homed office from a tier-one backbone.
Whether it should be there
Route origin validation against the RPKI: is this network actually authorised to announce this prefix, or is the announcement more specific than the ROA permits?
One fetch, typed JSON
Enrich a request with the client's network before deciding how to serve it — hosting range, mobile carrier or residential ISP, without leaving the request path.
const ip = request.headers.get("cf-connecting-ip");
const r = await fetch(`https://asndns.com/v1/ip/${ip}`);
const net = await r.json();
// {
// asn: 13335,
// holder: "CLOUDFLARENET",
// prefix: "1.1.1.0/24",
// rir: "APNIC",
// country: "AU"
// }
if (net.asn === 16509) return serveLightweight();
Free while we are small
The API is open during early access — no key, no signup, sixty requests a minute per address. If you need more than that, or want a commitment behind it, write to us and we will work something out.
Twelve endpoints, no key
Everything is GET except bulk resolution. Responses are JSON; errors carry an HTTP status and a detail string. The machine-readable schema is at /v1/openapi.json.
| Endpoint | Returns |
|---|---|
| GET /v1/lookup?q= | Detects whether the argument is an address, an AS number or a name, then dispatches. Use this when you do not know what you are holding. |
| GET /v1/ip/{ip} | AS number, holder, covering prefix, registry, allocation date, country, PTR record and the registered abuse contact. IPv4 and IPv6. |
| GET /v1/asn/{asn} | Holder, registry, allocation date, announced prefix counts for both families, total announced IPv4 space. Accepts 15169 or AS15169. |
| GET /v1/asn/{asn}/prefixes | The full announced prefix list. ?family=v4|v6|all, ?limit= up to 5000. |
| GET /v1/search?q= | Networks whose holder name matches, largest first. ?country= narrows by two-letter code. For when you know the operator but not the number. |
| GET /v1/domain/{name} | A, AAAA, NS, MX, TXT and DS records resolved live, plus the network behind the first A record. |
| GET /v1/domain/{name}/registration | Registrar, registration and expiry dates, delegated nameservers and DNSSEC status, from the registry's own RDAP service. |
| POST /v1/bulk | Up to 100 addresses in one round trip. Body {"ips": ["1.1.1.1", "8.8.8.8"]}. Invalid entries return an error field rather than failing the batch. |
| GET /v1/rpki/{prefix}?asn= | RFC 6811 route origin validation: valid, invalid or not-found, with the covering ROAs and a plain-language reason. IP lookups carry the same verdict inline. |
| GET /v1/asn/{asn}/peering | Where a network interconnects: exchange presence with port speeds, total capacity, facility count, peering policy and traffic profile, from PeeringDB. |
| GET /v1/rpki-stats | Size of the loaded ROA set, distinct authorised origins and the breakdown by trust anchor. |
| GET /v1/stats | Row counts, per-registry breakdown, largest networks and the dataset build timestamp. |
A worked example
$ curl -s https://asndns.com/v1/ip/8.8.4.4
{
"query": "8.8.4.4",
"type": "ip",
"announced": true,
"asn": 15169,
"holder": "GOOGLE",
"prefix": "8.8.4.0/24",
"rir": "ARIN",
"country": "US",
"allocated": "2000-03-08",
"ptr": "dns.google",
"rpki": "valid"
}
$ curl -s 'https://asndns.com/v1/rpki/1.1.1.0/24?asn=13335'
{"state": "valid", "covering_roas": 1, ... }
$ curl -s https://asndns.com/v1/search?q=ntt&country=JP
$ curl -s -X POST https://asndns.com/v1/bulk \
-H 'content-type: application/json' \
-d '{"ips": ["1.1.1.1", "9.9.9.9", "203.0.113.1"]}'
Limits and errors
Sixty a minute
Per source address, no key required. Remaining budget comes back in x-ratelimit-remaining; exceeding it returns 429 with retry-after.
404 means unallocated
An AS number with no delegation record returns 404. An address outside the global routing table returns 200 with announced: false — absence of a route is an answer, not an error.
502 means upstream
RDAP and DNS are resolved live. If a registry's RDAP service is down you get 502 for that lookup rather than a silently incomplete record.
Public data, rebuilt every six hours
None of the underlying data is proprietary and we do not pretend otherwise. The work is in the assembly: five registries and a global routing table normalised into one shape, indexed for a fast answer, and rebuilt often enough to stay current. The figures below are read live from the running build.
Where it comes from
| Source | Provides | Terms |
|---|---|---|
| iptoasn.com | IP range to AS number mapping, holder name, country | CC0 |
| ARIN | AS delegations for North America | Public statistics |
| RIPE NCC | AS delegations for Europe, Middle East, Central Asia | Public statistics |
| APNIC | AS delegations for Asia Pacific | Public statistics |
| LACNIC | AS delegations for Latin America and the Caribbean | Public statistics |
| AFRINIC | AS delegations for Africa | Public statistics |
| RDAP | Registered holder, abuse contact, domain registration | Live, cached 24h |
| RPKI validated ROA payloads | Route origin authorisations for validation | Public, refreshed with the build |
| PeeringDB | Exchange presence, port capacity, peering policy | CC-BY, live, cached 24h |
| Public resolvers | A, AAAA, NS, MX, TXT, DS and PTR records | Live, uncached |
Prefix counts and announced address space are derived from the routing table itself rather than taken from a third party. Sources whose licences restrict redistribution are deliberately avoided, so what you get back from the API is yours to use.
Largest networks by announced IPv4 prefixes
| ASN | Holder | Country | Prefixes |
|---|---|---|---|
| Loading… | |||
One layer of the stack
ASNDNS LLC is a California company working in one narrow place: the relationship between an address, the network that announces it, and the names that point at it. We do not sell compute, storage, or a bundle you have to grow into. The whole product is described on the API page, and there is nothing behind a sales call that is not written there.
Small on purpose
One service, no roadmap slides. If something on this site is described as working, it works today — and if it does not exist yet, it is not on the site.
Your data leaves as easily as it arrives
Plain JSON, documented fields, no proprietary export format. The underlying sources are public and named on the data page, so you are never locked to us for data you could assemble yourself.
Documented before shipped
An endpoint reaches the public API only once its behaviour, error codes and limits are written down. There is no undocumented surface.
At a glance
| Legal entity | ASNDNS LLC |
| Jurisdiction | California, United States |
| Founded | March 2026 |
| D-U-N-S | 14-463-1730 |
| Focus | Network intelligence data and lookup services |
| Contact | support@asndns.com |
Write to a person
Technical questions reach an engineer, not a queue. Include the address, AS number or API response you are asking about and you will get a specific answer.
support@asndns.com — API, access, data questions
abuse@asndns.com — abuse and takedown
billing@asndns.com — invoices
Registered office
ASNDNS LLC611 Wilshire Blvd
Los Angeles, CA 90017-2928
United States
Postal address for legal notice. Technical matters are handled by email.