Network intelligence API

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 data

Enter a domain, IP address or AS number. This hits the same endpoint and the same dataset every other client uses — nothing here is mocked.

GET /v1/lookup?q=1.1.1.1
What it answers

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?

From your edge

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.

Every endpoint and field →

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.

API reference

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.

EndpointReturns
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}/prefixesThe 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}/registrationRegistrar, registration and expiry dates, delegated nameservers and DNSSEC status, from the registry's own RDAP service.
POST /v1/bulkUp 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}/peeringWhere a network interconnects: exchange presence with port speeds, total capacity, facility count, peering policy and traffic profile, from PeeringDB.
GET /v1/rpki-statsSize of the loaded ROA set, distinct authorised origins and the breakdown by trust anchor.
GET /v1/statsRow 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.

The dataset

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.

Loading dataset figures…

Where it comes from

SourceProvidesTerms
iptoasn.comIP range to AS number mapping, holder name, countryCC0
ARINAS delegations for North AmericaPublic statistics
RIPE NCCAS delegations for Europe, Middle East, Central AsiaPublic statistics
APNICAS delegations for Asia PacificPublic statistics
LACNICAS delegations for Latin America and the CaribbeanPublic statistics
AFRINICAS delegations for AfricaPublic statistics
RDAPRegistered holder, abuse contact, domain registrationLive, cached 24h
RPKI validated ROA payloadsRoute origin authorisations for validationPublic, refreshed with the build
PeeringDBExchange presence, port capacity, peering policyCC-BY, live, cached 24h
Public resolversA, AAAA, NS, MX, TXT, DS and PTR recordsLive, 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

ASNHolderCountryPrefixes
Loading…
About

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 entityASNDNS LLC
JurisdictionCalifornia, United States
FoundedMarch 2026
D-U-N-S14-463-1730
FocusNetwork intelligence data and lookup services
Contactsupport@asndns.com
Contact

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.

Email

support@asndns.com — API, access, data questions
abuse@asndns.com — abuse and takedown
billing@asndns.com — invoices

Registered office

ASNDNS LLC
611 Wilshire Blvd
Los Angeles, CA 90017-2928
United States

Postal address for legal notice. Technical matters are handled by email.

Send a message