GET/api/v2/domain-ip

Domain to IP API

Every IPv4 and IPv6 address a name resolves to, with each address's network, reverse name, CDN and city, the CNAME chain and five resolvers' answers.

GEThttps://dnsrobot.netBase URL/api/v2Version/domain-ipEndpoint?domain=&resolver=Parameters
200 OKRecorded 2026-10-25. Send it to run the request live.
{
  "query": {
    "domain": "github.com",
    "resolver": "google"
  },
  "status": "ok",
  "zone": "github.com",
  "resolver": {
    "id": "google",
    "name": "Google Public DNS",
    "ip": "8.8.8.8",
    "protocol": "tcp",
    "timeMs": 68
  },
  "cname": [],
  "ttl": {
    "a": 40,
    "aaaa": null
  },
  "addresses": [
    {
      "ip": "140.82.114.3",
      "version": 4,
      "ttl": 40,
      "ptr": "lb-140-82-114-3-iad.github.com",
      "network": {
        "asn": 36459,
        "name": "GitHub",
        "asName": "GITHUB - GitHub, Inc., US",
        "prefix": "140.82.114.0/24",
        "registry": "arin",
        "country": "US"
      },
      "cdn": null,
      "location": {
        "city": "San Francisco (South Beach)",
        "region": "California",
        "country": "US",
        "latitude": 37.782,
        "longitude": -122.391
      },
      "special": null,
      "seenBy": [
        "google"
      ]
    }
  ],
  "cdn": null,
  "twin": {
    "name": "www.github.com",
    "status": "ok",
    "ipv4": [
      "140.82.112.4"
    ],
    "ipv6": [],
    "cname": [
      "github.com"
    ],
    "sameAddresses": false,
    "networks": [
      "GitHub"
    ],
    "cdn": null
  },
  "resolvers": [
    {
      "id": "google",
      "name": "Google Public DNS",
      "ip": "8.8.8.8",
      "protocol": "tcp",
      "timeMs": 68,
      "status": "ok",
      "ipv4": [
        "140.82.114.3"
      ],
      "ipv6": [],
      "withheld": 0,
      "ttl": 40,
      "agrees": true
    },
    {
      "id": "cloudflare",
      "name": "Cloudflare 1.1.1.1",
      "ip": "1.1.1.1",
      "protocol": "doh",
      "timeMs": 2,
      "status": "ok",
      "ipv4": [
        "20.207.73.82"
      ],
      "ipv6": [],
      "withheld": 0,
      "ttl": 35,
      "agrees": false
    },
    {
      "id": "quad9",
      "name": "Quad9",
      "ip": "9.9.9.9",
      "protocol": "tcp",
      "timeMs": 42,
      "status": "ok",
      "ipv4": [
        "20.207.73.82"
      ],
      "ipv6": [],
      "withheld": 0,
      "ttl": 41,
      "agrees": false
    },
    {
      "id": "opendns",
      "name": "OpenDNS",
      "ip": "208.67.222.222",
      "protocol": "tcp",
      "timeMs": 65,
      "status": "ok",
      "ipv4": [
        "140.82.112.4"
      ],
      "ipv6": [],
      "withheld": 0,
      "ttl": 60,
      "agrees": false
    },
    {
      "id": "adguard",
      "name": "AdGuard DNS",
      "ip": "94.140.14.14",
      "protocol": "tcp",
      "timeMs": 501,
      "status": "ok",
      "ipv4": [
        "20.207.73.82"
      ],
      "ipv6": [],
      "withheld": 0,
      "ttl": 29,
      "agrees": false
    }
  ],
  "blocked": false,
  "truncated": 0,
  "issues": [
    {
      "severity": "info",
      "code": "no_ipv6",
      "message": "github.com has no AAAA record, so IPv6-only clients can't reach it."
    }
  ],
  "checkedAt": "2026-10-25T08:13:13.439Z",
  "tookMs": 1150
}

How it works

Resolves the name the way a browser's resolver does: one round of A and AAAA queries (with the CNAME chain and TTLs) to the chosen public resolver (Google, Cloudflare, Quad9, OpenDNS or AdGuard), and the other four asked the same at once, so rotating answers, geo-DNS and a filtering resolver's block show up in resolvers. www and the bare domain are asked together (twin).

Each address gets the network that announces it (Team Cymru), its reverse name (PTR) and, for a server's own address, DB-IP's city. An address of a CDN or security proxy is shared with other sites: it gets no city, and an address of the twin or another resolver that skips the CDN is never returned (withheld counts them, the twin names only their network). When an address's network can't be looked up, the same withholding applies, as if the name were behind a CDN.

A name that doesn't exist, has no A/AAAA record or whose DNS fails (SERVFAIL) is a finding (status), not an error; only the chosen resolver not answering at all is a 504.

Query parameters

  • domainstringrequired
    The host name to resolve; a URL, a trailing dot or a Unicode name (IDN) is fine. www. is kept: www.example.com often points somewhere else than example.com.
  • resolverstringoptionaldefault google
    The public resolver whose answer is the main one; the other four are asked beside it.

    one of google, cloudflare, quad9, opendns, adguard

Response fields

200 with this JSON object, plus tookMs, and incomplete with warnings when a source failed. Fields marked optional appear only when they apply.

  • queryobjectalways
    What was looked up, normalised (lower case, no trailing dot, IDNs as Punycode).
    • domainstringalways
      The name resolved: lower case, Punycode, no trailing dot.
    • resolverstringalways
      The chosen resolver.

      one of "google", "cloudflare", "quad9", "opendns", "adguard"

  • statusstringalways
    The chosen resolver's answer: addresses (ok), no such name (nxdomain), the name exists without A/AAAA records (no_address), or its DNS failed (servfail).

    one of "ok", "nxdomain", "no_address", "servfail"

  • zonestringalways
    The registrable domain (example.co.uk for www.example.co.uk).
  • resolverobjectalways
    The chosen resolver and how it answered.
    Show 5 fields
    • idstringalways
      Its id.

      one of "google", "cloudflare", "quad9", "opendns", "adguard"

    • namestringalways
      Its name (Google Public DNS).
    • ipstringalways
      Its address.
    • protocolstringalways
      How it was asked: DNS over TCP, or DNS over HTTPS (Cloudflare, or when TCP failed).

      one of "tcp", "doh"

    • timeMsintegeralways
      Its answer time from our server, queueing included.
  • cnamearray of objectsalways
    The CNAMEs followed from the name to its addresses, in order.
    • namestringalways
      The alias.
    • targetstringalways
      Where it points.
    • ttlintegeralways
      Seconds the resolver may still keep it.
  • ttlobjectalways
    The address sets' TTLs (the lowest), in seconds.
    • ainteger or nullalways
      The A set's TTL, null without A records.
    • aaaainteger or nullalways
      The AAAA set's TTL, null without AAAA records.
  • addressesarray of objectsalways
    The chosen resolver's addresses, IPv4 first, in its order (at most 64 per family).
    Show 9 fields
    • ipstringalways
      The address.
    • versionintegeralways
      IP version.

      one of 4, 6

    • ttlintegeralways
      Seconds the resolver may still keep the record.
    • ptrstring or nullalways
      Its reverse DNS name, null when there is none (looked up for the first 24 addresses).
    • networkobject or nullalways
      The network that announces it (Team Cymru); null for private space or when the lookup didn't answer.
      Show 6 fields
      • asnintegeralways
        The AS number.
      • namestringalways
        The operator as people write it (Google).
      • asNamestringalways
        The AS name as registered (GOOGLE - Google LLC, US).
      • prefixstringalways
        The routed block.
      • registrystringalways
        The RIR that holds the block, as Team Cymru writes it (arin, ripencc, apnic, lacnic, afrinic).
      • countrystring or nullalways
        Where the block is registered (ISO 3166-1 alpha-2): the organization's country, not the server's.
    • cdnobject or nullalways
      The CDN or security proxy the address belongs to (by its network, reverse name or the CNAME chain), null when none.
      Show 2 fields
      • idstringalways
        Stable lower-case id of the company or product, e.g. google-workspace.
      • namestringalways
        Its name as people write it.
    • locationobject or nullalways
      DB-IP's city for a server's own address; null for a CDN's address (it answers from many places), private space, or no data.
      Show 5 fields
      • citystring or nullalways
        City.
      • regionstring or nullalways
        Region or state.
      • countrystring or nullalways
        Country (ISO 3166-1 alpha-2).
      • latitudenumberalways
        Approximate latitude (city level).
      • longitudenumberalways
        Approximate longitude (city level).
    • specialstring or nullalways
      Special-purpose space the address is in; unspecified is 0.0.0.0 or ::, a resolver's way of blocking. null for a public address.

      one of "private", "cgnat", "loopback", "link-local", "documentation", "multicast", "reserved", "unspecified", null

    • seenByarray of stringsalways
      The resolvers that returned it.
  • cdnobject or nullalways
    The CDN or security proxy the name is behind, null when none.
    • idstringalways
      Stable CDN id (cloudflare, akamai, fastly, cloudfront…).
    • namestringalways
      Its name.
    • detectedBystringalways
      How it was recognised: the addresses' network, a CNAME target, or a reverse name.

      one of "network", "cname", "ptr"

  • twinobject or nullalways
    The www name for a bare domain, or the bare domain for a www name; null for deeper names or when the lookup stopped.
    Show 8 fields
    • namestringalways
      The twin's name.
    • statusstringalways
      What the twin resolved to.

      one of "ok", "empty", "nxdomain", "error"

    • ipv4array of strings or nullalways
      Its IPv4 addresses; null when they are withheld (they skip the CDN the name is behind).
    • ipv6array of strings or nullalways
      Its IPv6 addresses; null when withheld.
    • cnamearray of stringsalways
      Its CNAME targets in order (empty when withheld).
    • sameAddressesbooleanalways
      It resolves to exactly the same addresses as the name.
    • networksarray of stringsalways
      Where it points instead, by network name, when its addresses differ.
    • cdnobject or nullalways
      The CDN it is behind, null when none.
      Show 2 fields
      • idstringalways
        Stable lower-case id of the company or product, e.g. google-workspace.
      • namestringalways
        Its name as people write it.
  • resolversarray of objectsalways
    Every resolver's answer for the name, the chosen one first. The other four are a comparison: one that takes over 2.2 s is reported as timeout.
    Show 11 fields
    • idstringalways
      Its id.

      one of "google", "cloudflare", "quad9", "opendns", "adguard"

    • namestringalways
      Its name.
    • ipstringalways
      Its address.
    • protocolstringalways
      How it was asked.

      one of "tcp", "doh"

    • timeMsintegeralways
      Its answer time from our server.
    • statusstringalways
      Its answer; blocked is a filtering resolver's block (0.0.0.0, a block page, or Quad9's NXDOMAIN while the others resolve the name).

      one of "ok", "empty", "nxdomain", "servfail", "timeout", "blocked"

    • ipv4array of stringsalways
      Its IPv4 addresses (any that skip the name's CDN left out).
    • ipv6array of stringsalways
      Its IPv6 addresses (any that skip the name's CDN left out).
    • withheldintegeralways
      Addresses left out because they skip the CDN the name is behind (they may be the origin).
    • ttlinteger or nullalways
      Its lowest TTL, null without records.
    • agreesbooleanalways
      It returned the same address set as the chosen resolver (only the families it answered count).
  • blockedbooleanalways
    The chosen resolver answered 0.0.0.0, :: or a block page instead of the name's addresses.
  • truncatedintegeralways
    Address records past 64 per family, left out.
  • issuesarray of objectsalways
    Problems found in the target's configuration, worst first. Empty when there are none.
    • severitystringalways
      error breaks something, warning risks it, info is worth knowing.

      one of "error", "warning", "info"

    • codestringalways
      Stable machine-readable code.
    • messagestringalways
      The problem and what to do about it, in plain English.
  • checkedAtstringalways
    When the sources were asked (ISO 8601 UTC). A kept answer is older than the request.

Errors

  • 422 target_not_allowed A private or special-use name (.local, .internal, .test…).
  • 504 timeout The chosen resolver didn't answer in time; retry, or pick another resolver.

Plus the errors every endpoint can return: 400 for a missing or unreadable parameter, 429 past the limit, 503 when every source failed.

Code samples

curl "https://dnsrobot.net/api/v2/domain-ip?domain=github.com"
const params = new URLSearchParams({ domain: "github.com" });
const res = await fetch(`https://dnsrobot.net/api/v2/domain-ip?${params}`);
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);
console.log(data.addresses);
import requests

r = requests.get(
    "https://dnsrobot.net/api/v2/domain-ip",
    params={"domain": "github.com"},
    timeout=30,
)
data = r.json()
if not r.ok:
    raise RuntimeError(data["error"]["message"])
print(data["addresses"])
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
)

func main() {
	q := url.Values{"domain": {"github.com"}}
	res, err := http.Get("https://dnsrobot.net/api/v2/domain-ip?" + q.Encode())
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	var data map[string]any
	if err := json.NewDecoder(res.Body).Decode(&data); err != nil {
		panic(err)
	}
	if res.StatusCode != http.StatusOK {
		panic(data["error"])
	}
	fmt.Println(data["addresses"])
}
<?php
$query = http_build_query(["domain" => "github.com"]);
$context = stream_context_create(["http" => ["ignore_errors" => true, "timeout" => 30]]);
$data = json_decode(file_get_contents("https://dnsrobot.net/api/v2/domain-ip?" . $query, false, $context), true);
if (isset($data["error"])) {
    throw new RuntimeException($data["error"]["message"]);
}
print_r($data["addresses"]);
require "net/http"
require "json"

uri = URI("https://dnsrobot.net/api/v2/domain-ip")
uri.query = URI.encode_www_form(domain: "github.com")
data = JSON.parse(Net::HTTP.get(uri))
raise data["error"]["message"] if data["error"]
puts data["addresses"]
// Cargo.toml: reqwest = { version = "0.13", features = ["blocking", "json"] }, serde_json = "1"
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let res = reqwest::blocking::get("https://dnsrobot.net/api/v2/domain-ip?domain=github.com")?;
    let ok = res.status().is_success();
    let data: serde_json::Value = res.json()?;
    if !ok {
        return Err(data["error"]["message"].to_string().into());
    }
    println!("{}", data["addresses"]);
    Ok(())
}
using System.Text.Json;

using var http = new HttpClient();
var res = await http.GetAsync("https://dnsrobot.net/api/v2/domain-ip?domain=github.com");
var data = JsonDocument.Parse(await res.Content.ReadAsStringAsync()).RootElement;
if (!res.IsSuccessStatusCode)
    throw new Exception(data.GetProperty("error").GetProperty("message").GetString());
Console.WriteLine(data.GetProperty("addresses"));

github.com

GET /api/v2/domain-ip?domain=github.com
200 OKRecorded 2026-10-25
{
  "query": {
    "domain": "github.com",
    "resolver": "google"
  },
  "status": "ok",
  "zone": "github.com",
  "resolver": {
    "id": "google",
    "name": "Google Public DNS",
    "ip": "8.8.8.8",
    "protocol": "tcp",
    "timeMs": 68
  },
  "cname": [],
  "ttl": {
    "a": 40,
    "aaaa": null
  },
  "addresses": [
    {
      "ip": "140.82.114.3",
      "version": 4,
      "ttl": 40,
      "ptr": "lb-140-82-114-3-iad.github.com",
      "network": {
        "asn": 36459,
        "name": "GitHub",
        "asName": "GITHUB - GitHub, Inc., US",
        "prefix": "140.82.114.0/24",
        "registry": "arin",
        "country": "US"
      },
      "cdn": null,
      "location": {
        "city": "San Francisco (South Beach)",
        "region": "California",
        "country": "US",
        "latitude": 37.782,
        "longitude": -122.391
      },
      "special": null,
      "seenBy": [
        "google"
      ]
    }
  ],
  "cdn": null,
  "twin": {
    "name": "www.github.com",
    "status": "ok",
    "ipv4": [
      "140.82.112.4"
    ],
    "ipv6": [],
    "cname": [
      "github.com"
    ],
    "sameAddresses": false,
    "networks": [
      "GitHub"
    ],
    "cdn": null
  },
  "resolvers": [
    {
      "id": "google",
      "name": "Google Public DNS",
      "ip": "8.8.8.8",
      "protocol": "tcp",
      "timeMs": 68,
      "status": "ok",
      "ipv4": [
        "140.82.114.3"
      ],
      "ipv6": [],
      "withheld": 0,
      "ttl": 40,
      "agrees": true
    },
    {
      "id": "cloudflare",
      "name": "Cloudflare 1.1.1.1",
      "ip": "1.1.1.1",
      "protocol": "doh",
      "timeMs": 2,
      "status": "ok",
      "ipv4": [
        "20.207.73.82"
      ],
      "ipv6": [],
      "withheld": 0,
      "ttl": 35,
      "agrees": false
    },
    {
      "id": "quad9",
      "name": "Quad9",
      "ip": "9.9.9.9",
      "protocol": "tcp",
      "timeMs": 42,
      "status": "ok",
      "ipv4": [
        "20.207.73.82"
      ],
      "ipv6": [],
      "withheld": 0,
      "ttl": 41,
      "agrees": false
    },
    // … 2 more items
  ],
  "blocked": false,
  "truncated": 0,
  "issues": [
    {
      "severity": "info",
      "code": "no_ipv6",
      "message": "github.com has no AAAA record, so IPv6-only clients can't reach it."
    }
  ],
  "checkedAt": "2026-10-25T08:13:13.439Z",
  "tookMs": 1150
}

Shortened for the page: long lists show their first items.

Behind a CDN (www.cloudflare.com)

GET /api/v2/domain-ip?domain=www.cloudflare.com
200 OKRecorded 2026-10-25
{
  "query": {
    "domain": "www.cloudflare.com",
    "resolver": "google"
  },
  "status": "ok",
  "zone": "cloudflare.com",
  "resolver": {
    "id": "google",
    "name": "Google Public DNS",
    "ip": "8.8.8.8",
    "protocol": "tcp",
    "timeMs": 93
  },
  "cname": [],
  "ttl": {
    "a": 300,
    "aaaa": 300
  },
  "addresses": [
    {
      "ip": "104.16.123.96",
      "version": 4,
      "ttl": 300,
      "ptr": null,
      "network": {
        "asn": 13335,
        "name": "Cloudflare",
        "asName": "CLOUDFLARENET - Cloudflare, Inc., US",
        "prefix": "104.16.112.0/20",
        "registry": "arin",
        "country": "US"
      },
      "cdn": {
        "id": "cloudflare",
        "name": "Cloudflare"
      },
      "location": null,
      "special": null,
      "seenBy": [
        "google",
        "cloudflare",
        "quad9",
        // … 2 more items
      ]
    },
    {
      "ip": "104.16.124.96",
      "version": 4,
      "ttl": 300,
      "ptr": null,
      "network": {
        "asn": 13335,
        "name": "Cloudflare",
        "asName": "CLOUDFLARENET - Cloudflare, Inc., US",
        "prefix": "104.16.112.0/20",
        "registry": "arin",
        "country": "US"
      },
      "cdn": {
        "id": "cloudflare",
        "name": "Cloudflare"
      },
      "location": null,
      "special": null,
      "seenBy": [
        "google",
        "cloudflare",
        "quad9",
        // … 2 more items
      ]
    },
    {
      "ip": "2606:4700::6810:7c60",
      "version": 6,
      "ttl": 300,
      "ptr": null,
      "network": {
        "asn": 13335,
        "name": "Cloudflare",
        "asName": "CLOUDFLARENET - Cloudflare, Inc., US",
        "prefix": "2606:4700::/44",
        "registry": "arin",
        "country": "US"
      },
      "cdn": {
        "id": "cloudflare",
        "name": "Cloudflare"
      },
      "location": null,
      "special": null,
      "seenBy": [
        "google",
        "cloudflare",
        "quad9",
        // … 2 more items
      ]
    },
    // … 1 more item
  ],
  "cdn": {
    "id": "cloudflare",
    "name": "Cloudflare",
    "detectedBy": "network"
  },
  "twin": {
    "name": "cloudflare.com",
    "status": "ok",
    "ipv4": [
      "104.16.133.229",
      "104.16.132.229"
    ],
    "ipv6": [
      "2606:4700::6810:85e5",
      "2606:4700::6810:84e5"
    ],
    "cname": [],
    "sameAddresses": false,
    "networks": [
      "Cloudflare"
    ],
    "cdn": {
      "id": "cloudflare",
      "name": "Cloudflare"
    }
  },
  "resolvers": [
    {
      "id": "google",
      "name": "Google Public DNS",
      "ip": "8.8.8.8",
      "protocol": "tcp",
      "timeMs": 93,
      "status": "ok",
      "ipv4": [
        "104.16.123.96",
        "104.16.124.96"
      ],
      "ipv6": [
        "2606:4700::6810:7c60",
        "2606:4700::6810:7b60"
      ],
      "withheld": 0,
      "ttl": 300,
      "agrees": true
    },
    {
      "id": "cloudflare",
      "name": "Cloudflare 1.1.1.1",
      "ip": "1.1.1.1",
      "protocol": "doh",
      "timeMs": 1,
      "status": "ok",
      "ipv4": [
        "104.16.124.96",
        "104.16.123.96"
      ],
      "ipv6": [
        "2606:4700::6810:7b60",
        "2606:4700::6810:7c60"
      ],
      "withheld": 0,
      "ttl": 190,
      "agrees": true
    },
    {
      "id": "quad9",
      "name": "Quad9",
      "ip": "9.9.9.9",
      "protocol": "tcp",
      "timeMs": 447,
      "status": "ok",
      "ipv4": [
        "104.16.123.96",
        "104.16.124.96"
      ],
      "ipv6": [
        "2606:4700::6810:7b60",
        "2606:4700::6810:7c60"
      ],
      "withheld": 0,
      "ttl": 289,
      "agrees": true
    },
    // … 2 more items
  ],
  "blocked": false,
  "truncated": 0,
  "issues": [],
  "checkedAt": "2026-10-25T08:13:14.812Z",
  "tookMs": 1289
}

Shortened for the page: long lists show their first items.

Asked through Quad9 (wikipedia.org)

GET /api/v2/domain-ip?domain=wikipedia.org&resolver=quad9
200 OKRecorded 2026-10-25
{
  "query": {
    "domain": "wikipedia.org",
    "resolver": "quad9"
  },
  "status": "ok",
  "zone": "wikipedia.org",
  "resolver": {
    "id": "quad9",
    "name": "Quad9",
    "ip": "9.9.9.9",
    "protocol": "tcp",
    "timeMs": 854
  },
  "cname": [],
  "ttl": {
    "a": 70,
    "aaaa": 180
  },
  "addresses": [
    {
      "ip": "103.102.166.224",
      "version": 4,
      "ttl": 70,
      "ptr": "text-lb.eqsin.wikimedia.org",
      "network": {
        "asn": 14907,
        "name": "Wikimedia Foundation",
        "asName": "WIKIMEDIA - Wikimedia Foundation Inc., US",
        "prefix": "103.102.166.0/24",
        "registry": "apnic",
        "country": "US"
      },
      "cdn": null,
      "location": {
        "city": "San Francisco (Financial District)",
        "region": "California",
        "country": "US",
        "latitude": 37.789,
        "longitude": -122.402
      },
      "special": null,
      "seenBy": [
        "quad9",
        "cloudflare",
        "adguard"
      ]
    },
    {
      "ip": "2001:df2:e500:ed1a::1",
      "version": 6,
      "ttl": 180,
      "ptr": "text-lb.eqsin.wikimedia.org",
      "network": {
        "asn": 14907,
        "name": "Wikimedia Foundation",
        "asName": "WIKIMEDIA - Wikimedia Foundation Inc., US",
        "prefix": "2001:df2:e500::/48",
        "registry": "apnic",
        "country": "US"
      },
      "cdn": null,
      "location": {
        "city": "Singapore",
        "region": null,
        "country": "SG",
        "latitude": 1.352,
        "longitude": 103.82
      },
      "special": null,
      "seenBy": [
        "quad9",
        "cloudflare",
        "adguard"
      ]
    }
  ],
  "cdn": null,
  "twin": {
    "name": "www.wikipedia.org",
    "status": "ok",
    "ipv4": [
      "103.102.166.224"
    ],
    "ipv6": [
      "2001:df2:e500:ed1a::1"
    ],
    "cname": [
      "dyna.wikimedia.org"
    ],
    "sameAddresses": true,
    "networks": [],
    "cdn": null
  },
  "resolvers": [
    {
      "id": "quad9",
      "name": "Quad9",
      "ip": "9.9.9.9",
      "protocol": "tcp",
      "timeMs": 854,
      "status": "ok",
      "ipv4": [
        "103.102.166.224"
      ],
      "ipv6": [
        "2001:df2:e500:ed1a::1"
      ],
      "withheld": 0,
      "ttl": 70,
      "agrees": true
    },
    {
      "id": "google",
      "name": "Google Public DNS",
      "ip": "8.8.8.8",
      "protocol": "tcp",
      "timeMs": 105,
      "status": "ok",
      "ipv4": [
        "208.80.154.224"
      ],
      "ipv6": [
        "2620:0:861:ed1a::1"
      ],
      "withheld": 0,
      "ttl": 180,
      "agrees": false
    },
    {
      "id": "cloudflare",
      "name": "Cloudflare 1.1.1.1",
      "ip": "1.1.1.1",
      "protocol": "doh",
      "timeMs": 139,
      "status": "ok",
      "ipv4": [
        "103.102.166.224"
      ],
      "ipv6": [
        "2001:df2:e500:ed1a::1"
      ],
      "withheld": 0,
      "ttl": 171,
      "agrees": true
    },
    // … 2 more items
  ],
  "blocked": false,
  "truncated": 0,
  "issues": [],
  "checkedAt": "2026-10-25T08:13:16.155Z",
  "tookMs": 1263
}

Shortened for the page: long lists show their first items.