GET/api/v2/reverse-dns
Reverse DNS API
An IP address's PTR names, whether they point back (FCrDNS), who runs its reverse zone, and the mail providers' PTR rules.
- 20 calls a minute per IP
- Same engine as the Reverse DNS Lookup tool
{
"query": {
"ip": "8.8.8.8"
},
"ip": "8.8.8.8",
"reverseName": "8.8.8.8.in-addr.arpa",
"specialUse": null,
"verdict": "confirmed",
"role": "resolver",
"ptr": [
{
"name": "dns.google",
"ttl": 86400,
"forwardConfirmed": true,
"ipv4": [
"8.8.8.8",
"8.8.4.4"
],
"ipv6": [
"2001:4860:4860::8844",
"2001:4860:4860::8888"
],
"kind": "named"
}
],
"forwardConfirmed": true,
"answer": {
"source": "authoritative",
"server": "ns2.google.com",
"ip": "216.239.34.10",
"viaCloudflare": false,
"status": "ok",
"rcode": "NOERROR",
"authoritative": true,
"negativeTtl": null,
"cnameChain": []
},
"zone": {
"name": "8.8.8.in-addr.arpa",
"operator": {
"kind": "holder",
"id": "google",
"name": "Google"
}
},
"delegation": [
{
"zone": ".",
"server": "b.root-servers.net",
"ip": "170.247.170.2",
"outcome": "referral",
"operator": {
"kind": "root",
"id": "root",
"name": "Root"
},
"nsTtl": 172800,
"leg": 1
},
{
"zone": "in-addr.arpa",
"server": "f.in-addr-servers.arpa",
"ip": "193.0.9.1",
"outcome": "referral",
"operator": {
"kind": "iana",
"id": "iana",
"name": "IANA"
},
"nsTtl": 86400,
"leg": 1
},
{
"zone": "8.in-addr.arpa",
"server": "arin.authdns.ripe.net",
"ip": "193.0.9.10",
"outcome": "referral",
"operator": {
"kind": "rir",
"id": "arin",
"name": "ARIN"
},
"nsTtl": 86400,
"leg": 1
},
{
"zone": "8.8.8.in-addr.arpa",
"server": "ns2.google.com",
"ip": "216.239.34.10",
"outcome": "authoritative",
"operator": {
"kind": "holder",
"id": "google",
"name": "Google"
},
"nsTtl": null,
"leg": 1
}
],
"network": {
"asn": 15169,
"name": "Google",
"asName": "GOOGLE - Google LLC, US",
"prefix": "8.8.8.0/24",
"country": "US",
"registry": "arin",
"allocated": "2023-12-28"
},
"mail": {
"name": "dns.google",
"pass": 3,
"providers": [
{
"id": "gmail",
"ptr": "pass",
"fcrdns": "pass",
"notGeneric": "not_required",
"pass": true,
"unknown": false
},
{
"id": "yahoo",
"ptr": "pass",
"fcrdns": "pass",
"notGeneric": "pass",
"pass": true,
"unknown": false
},
{
"id": "outlook",
"ptr": "pass",
"fcrdns": "not_required",
"notGeneric": "pass",
"pass": true,
"unknown": false
}
]
},
"crawler": null,
"ptrProvider": null,
"copies": [
{
"source": "google",
"status": "ok",
"names": [
"dns.google"
],
"ttl": 1040,
"tookMs": 33
},
{
"source": "cloudflare",
"status": "ok",
"names": [
"dns.google"
],
"ttl": 79471,
"tookMs": 1
}
],
"issues": [],
"tookMs": 2314
}How it works
Walks the reverse zone down from a root server (IANA, then the Regional Internet Registry, then the block's holder), asks the zone's own nameservers for the PTR beside Google's and Cloudflare's copies, and follows RFC 2317 classless delegations. Every PTR name is looked up forward: a name that resolves back to the address is forward-confirmed (FCrDNS); a forward lookup that didn't finish is unknown, never "doesn't point back".
mail reads the answer against Gmail's, Yahoo Mail's and Outlook.com's published PTR rules, and generic names (the address's digits, ISP pool words, a cloud's default) are told apart from a name of your own. Crawler names (Googlebot, Bingbot, Applebot…) are verified the way their operators document: the PTR's domain plus the forward lookup, or the published IP lists.
Private and other special-use addresses have no public reverse DNS and are refused (422). The address itself is never connected to; the IP to Hostname page's certificate and HTTP probes aren't part of the API.
Answers kept: Kept for the PTR record's TTL, 30 seconds to 5 minutes (30 seconds when a part failed), shared with the Reverse DNS page. A kept answer carries an `Age` header, and the resolvers' TTLs are counted down.
Query parameters
ipstringrequiredAn IPv4 or IPv6 address in any usual notation, or its in-addr.arpa / ip6.arpa name. An IPv4-mapped or NAT64 address is looked up as the IPv4 address it carries.
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.
queryobjectalwaysWhat was looked up, normalised (lower case, no trailing dot, IDNs as Punycode).ipstringalwaysThe address as given, normalised (IPv6 compressed, RFC 5952).
ipstringalwaysThe address looked up: the one given, or the IPv4 address inside an IPv4-mapped or NAT64 one.reverseNamestring or nullalwaysIts reverse name: in-addr.arpa, or all 32 nibbles under ip6.arpa.specialUseobject or nullalwaysThe IANA special-purpose block it is in, when it is in one that still has public reverse DNS.cidrstringalwaysThe block.namestringalwaysIts name in IANA's registry.rfcstringalwaysThe RFC that reserves it.
verdictstringalwaysconfirmed(a PTR that points back),generic(it points back, but it is the provider's generic name),not_confirmed(no PTR name resolves back),unverified(a forward lookup didn't finish),crawler(a verified crawler),fake_crawler,google_cloud,no_ptr,broken(the reverse zone answers SERVFAIL or REFUSED),no_answer,unreadableorspecial_use.one of
"confirmed","generic","not_confirmed","unverified","crawler","fake_crawler","google_cloud","no_ptr","broken","no_answer","unreadable","special_use"rolestringalwaysWhat the address is, from its names and network: a publicresolver, acrawler(orcrawler_fake,crawler_unverified),google_cloud,mail,cloud(a cloud's default name),cdn, an ISPpool,as112,infra,named,genericornone.one of
"resolver","crawler","crawler_fake","crawler_unverified","google_cloud","mail","cloud","cdn","pool","as112","infra","named","generic","none"ptrarray of objectsalwaysThe PTR records of the answer that counts.Show 6 fields
namestringalwaysThe name, lower case.ttlintegeralwaysThe record's TTL, in seconds.forwardConfirmedboolean or nullalwaysThe name resolves back to the address; null when the forward lookup didn't finish or wasn't made (past the first 10 names).ipv4array of stringsalwaysThe name's A records.ipv6array of stringsalwaysThe name's AAAA records.kindstringalwaysnamed(a name of its own),generic(a provider's default),crawler(a crawler's documented domain) orinfra(network infrastructure).one of
"named","generic","crawler","infra"
forwardConfirmedboolean or nullalwaysAt least one PTR name points back (FCrDNS passes); false when every name was checked and none does; null when it couldn't be settled or there is no PTR.answerobject or nullalwaysThe PTR answer that counts: the reverse zone's own, unless it couldn't be had; then a resolver's.Show 9 fields
sourcestringalwaysWho answered:authoritative(the zone's own nameserver, the fresh truth),google(Google Public DNS's cached copy) orcloudflare(Cloudflare 1.1.1.1's).one of
"authoritative","google","cloudflare"serverstring or nullalwaysThe server that answered.ipstring or nullalwaysIts address.viaCloudflarebooleanalwaysThe reverse zone is on Cloudflare's nameservers: this is 1.1.1.1's answer.statusstringalwaysThe answer:ok(records came back),nodata(the name exists without them),nxdomain(no such name),servfail,refused,timeout,errororunreadable(an answer our decoder refuses).one of
"ok","nodata","nxdomain","servfail","refused","timeout","error","unreadable"rcodestring or nullalwaysThe response code.authoritativeboolean or nullalwaysThe AA flag.negativeTtlinteger or nullalwaysFor no PTR: how long the miss is cached, in seconds.cnameChainarray of objectsalwaysThe CNAMEs the answer followed, in order.Show 3 fields
namestringalwaysThe alias.targetstringalwaysThe name it points to.ttlintegeralwaysThe record's TTL, in seconds.
zoneobject or nullalwaysThe reverse zone that answered and who runs it.namestringalwaysThe zone, e.g.8.8.8.in-addr.arpa.operatorobject or nullalwaysWho runs it: the root, IANA, a Regional Internet Registry, or the address block's holder.Show 3 fields
kindstringalwaysroot,iana,rirorholder.one of
"root","iana","rir","holder"idstringalwaysA stable id:iana,arin,ripe,apnic,lacnic,afrinic, or the holder's.namestringalwaysIts name.
delegationarray of objectsalwaysThe path down from the root to the reverse zone.Show 7 fields
zonestringalwaysThe zone this server answers for (.for a root server).serverstringalwaysThe server asked.ipstring or nullalwaysIts address.outcomestringalwaysreferral(sent us one level down),authoritative,nxdomain,blocked(on Cloudflare's network),ipv6(IPv6-only servers),lame,timeoutorerror.one of
"referral","authoritative","nxdomain","blocked","ipv6","lame","timeout","error"operatorobject or nullalwaysWho runs it: the root, IANA, a Regional Internet Registry, or the address block's holder.Show 3 fields
kindstringalwaysroot,iana,rirorholder.one of
"root","iana","rir","holder"idstringalwaysA stable id:iana,arin,ripe,apnic,lacnic,afrinic, or the holder's.namestringalwaysIts name.
nsTtlinteger or nullalwaysThe referral's NS TTL, in seconds.legintegeralways1 for the reverse name's walk; 2 and on for each RFC 2317 CNAME followed.
networkobject or nullalwaysThe network that announces the address (Team Cymru); null when unknown.Show 7 fields
asnintegeralwaysThe AS number that announces the address.namestringalwaysThe network's name, cleaned ("Google", "Amazon.com").prefixstringalwaysThe announced prefix the address is in, e.g.8.8.8.0/24.countrystringalwaysThe network's registration country (ISO 3166-1 alpha-2), as Team Cymru has it.asNamestringalwaysThe AS name as registered.registrystringalwaysThe RIR that allocated the block (arin,ripe,apnic,lacnic,afrinic).allocatedstring or nullalwaysWhen the block was allocated (YYYY-MM-DD).
mailobjectalwaysThe answer against the big mailbox providers' published PTR rules.namestring or nullalwaysThe name a receiver sees first (a forward-confirmed one when there is one).passintegeralwaysProviders whose rules all pass (of 3).providersarray of objectsalwaysGmail, Yahoo Mail and Outlook.com.Show 6 fields
idstringalwaysThe provider.one of
"gmail","yahoo","outlook"ptrstringalwaysA PTR exists:pass,fail,warn,not_required(not part of this provider's rules) orunknown(the lookup couldn't settle it).one of
"pass","fail","warn","not_required","unknown"fcrdnsstringalwaysIt points back:pass,fail,warn,not_required(not part of this provider's rules) orunknown(the lookup couldn't settle it).one of
"pass","fail","warn","not_required","unknown"notGenericstringalwaysIt isn't a generic or pool name:pass,fail,warn,not_required(not part of this provider's rules) orunknown(the lookup couldn't settle it).one of
"pass","fail","warn","not_required","unknown"passbooleanalwaysEvery rule passes.unknownbooleanalwaysNo rule fails, but one couldn't be checked.
crawlerobject or nullalwaysThe crawler check, when a PTR name claims a crawler's domain or the address is in a crawler's published list; null otherwise.Show 6 fields
idstringalwaysThe crawler's id, e.g.googlebot,bingbot.namestringalwaysIts name.statusstringalwaysverified,fake(claims the domain, fails both checks),unverified(a check couldn't finish) orcloud(a googleusercontent.com name: any Google Cloud VM).one of
"verified","fake","unverified","cloud"methodstringalwaysHow it was decided:ptr(domain + forward lookup),list(published IP list) orboth.one of
"ptr","list","both"domainstring or nullalwaysThe documented domain the name ends in.liststring or nullalwaysThe published list the address is in.
ptrProviderobject or nullalwaysThe cloud or ISP to set the PTR at, with its guide, when the address has none, a generic one, or one that doesn't point back.idstringalwaysA stable id, e.g.aws.namestringalwaysIts name.docsstringalwaysIts guide to setting reverse DNS.
copiesarray of objectsalwaysGoogle's and Cloudflare's cached copies (TTLs are the time left).Show 5 fields
sourcestringalwaysgoogleorcloudflare.one of
"google","cloudflare"statusstringalwaysThe answer:ok(records came back),nodata(the name exists without them),nxdomain(no such name),servfail,refused,timeout,errororunreadable(an answer our decoder refuses).one of
"ok","nodata","nxdomain","servfail","refused","timeout","error","unreadable"namesarray of stringsalwaysIts PTR names.ttlinteger or nullalwaysThe TTL left, in seconds (the miss's, for no PTR).tookMsintegeralwaysHow long that answer took, in milliseconds.
issuesarray of objectsalwaysProblems found in the target's configuration, worst first. Empty when there are none.severitystringalwayserrorbreaks something,warningrisks it,infois worth knowing.one of
"error","warning","info"codestringalwaysStable machine-readable code.messagestringalwaysThe problem and what to do about it, in plain English.
Errors
422target_not_allowedA private or other special-use address (RFC 1918, loopback, link-local, documentation ranges…), which has no public reverse DNS.
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/reverse-dns?ip=8.8.8.8"const params = new URLSearchParams({ ip: "8.8.8.8" });
const res = await fetch(`https://dnsrobot.net/api/v2/reverse-dns?${params}`);
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);
console.log(data.ptr);import requests
r = requests.get(
"https://dnsrobot.net/api/v2/reverse-dns",
params={"ip": "8.8.8.8"},
timeout=30,
)
data = r.json()
if not r.ok:
raise RuntimeError(data["error"]["message"])
print(data["ptr"])package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
q := url.Values{"ip": {"8.8.8.8"}}
res, err := http.Get("https://dnsrobot.net/api/v2/reverse-dns?" + 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["ptr"])
}<?php
$query = http_build_query(["ip" => "8.8.8.8"]);
$context = stream_context_create(["http" => ["ignore_errors" => true, "timeout" => 30]]);
$data = json_decode(file_get_contents("https://dnsrobot.net/api/v2/reverse-dns?" . $query, false, $context), true);
if (isset($data["error"])) {
throw new RuntimeException($data["error"]["message"]);
}
print_r($data["ptr"]);require "net/http"
require "json"
uri = URI("https://dnsrobot.net/api/v2/reverse-dns")
uri.query = URI.encode_www_form(ip: "8.8.8.8")
data = JSON.parse(Net::HTTP.get(uri))
raise data["error"]["message"] if data["error"]
puts data["ptr"]// 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/reverse-dns?ip=8.8.8.8")?;
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["ptr"]);
Ok(())
}using System.Text.Json;
using var http = new HttpClient();
var res = await http.GetAsync("https://dnsrobot.net/api/v2/reverse-dns?ip=8.8.8.8");
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("ptr"));8.8.8.8: dns.google
GET /api/v2/reverse-dns?ip=8.8.8.8{
"query": {
"ip": "8.8.8.8"
},
"ip": "8.8.8.8",
"reverseName": "8.8.8.8.in-addr.arpa",
"specialUse": null,
"verdict": "confirmed",
"role": "resolver",
"ptr": [
{
"name": "dns.google",
"ttl": 86400,
"forwardConfirmed": true,
"ipv4": [
"8.8.8.8",
"8.8.4.4"
],
"ipv6": [
"2001:4860:4860::8844",
"2001:4860:4860::8888"
],
"kind": "named"
}
],
"forwardConfirmed": true,
"answer": {
"source": "authoritative",
"server": "ns2.google.com",
"ip": "216.239.34.10",
"viaCloudflare": false,
"status": "ok",
"rcode": "NOERROR",
"authoritative": true,
"negativeTtl": null,
"cnameChain": []
},
"zone": {
"name": "8.8.8.in-addr.arpa",
"operator": {
"kind": "holder",
"id": "google",
"name": "Google"
}
},
"delegation": [
{
"zone": ".",
"server": "b.root-servers.net",
"ip": "170.247.170.2",
"outcome": "referral",
"operator": {
"kind": "root",
"id": "root",
"name": "Root"
},
"nsTtl": 172800,
"leg": 1
},
{
"zone": "in-addr.arpa",
"server": "f.in-addr-servers.arpa",
"ip": "193.0.9.1",
"outcome": "referral",
"operator": {
"kind": "iana",
"id": "iana",
"name": "IANA"
},
"nsTtl": 86400,
"leg": 1
},
{
"zone": "8.in-addr.arpa",
"server": "arin.authdns.ripe.net",
"ip": "193.0.9.10",
"outcome": "referral",
"operator": {
"kind": "rir",
"id": "arin",
"name": "ARIN"
},
"nsTtl": 86400,
"leg": 1
},
// … 1 more item
],
"network": {
"asn": 15169,
"name": "Google",
"asName": "GOOGLE - Google LLC, US",
"prefix": "8.8.8.0/24",
"country": "US",
"registry": "arin",
"allocated": "2023-12-28"
},
"mail": {
"name": "dns.google",
"pass": 3,
"providers": [
{
"id": "gmail",
"ptr": "pass",
"fcrdns": "pass",
"notGeneric": "not_required",
"pass": true,
"unknown": false
},
{
"id": "yahoo",
"ptr": "pass",
"fcrdns": "pass",
"notGeneric": "pass",
"pass": true,
"unknown": false
},
{
"id": "outlook",
"ptr": "pass",
"fcrdns": "not_required",
"notGeneric": "pass",
"pass": true,
"unknown": false
}
]
},
"crawler": null,
"ptrProvider": null,
"copies": [
{
"source": "google",
"status": "ok",
"names": [
"dns.google"
],
"ttl": 1040,
"tookMs": 33
},
{
"source": "cloudflare",
"status": "ok",
"names": [
"dns.google"
],
"ttl": 79471,
"tookMs": 1
}
],
"issues": [],
"tookMs": 2314
}Shortened for the page: long lists show their first items.
A Googlebot address, verified
GET /api/v2/reverse-dns?ip=66.249.66.1{
"query": {
"ip": "66.249.66.1"
},
"ip": "66.249.66.1",
"reverseName": "1.66.249.66.in-addr.arpa",
"specialUse": null,
"verdict": "crawler",
"role": "crawler",
"ptr": [
{
"name": "crawl-66-249-66-1.googlebot.com",
"ttl": 86400,
"forwardConfirmed": true,
"ipv4": [
"66.249.66.1"
],
"ipv6": [],
"kind": "crawler"
}
],
"forwardConfirmed": true,
"answer": {
"source": "authoritative",
"server": "ns2.google.com",
"ip": "216.239.34.10",
"viaCloudflare": false,
"status": "ok",
"rcode": "NOERROR",
"authoritative": true,
"negativeTtl": null,
"cnameChain": []
},
"zone": {
"name": "66.249.66.in-addr.arpa",
"operator": {
"kind": "holder",
"id": "google",
"name": "Google"
}
},
"delegation": [
{
"zone": ".",
"server": "c.root-servers.net",
"ip": "192.33.4.12",
"outcome": "referral",
"operator": {
"kind": "root",
"id": "root",
"name": "Root"
},
"nsTtl": 172800,
"leg": 1
},
{
"zone": "in-addr.arpa",
"server": "c.in-addr-servers.arpa",
"ip": "196.216.169.10",
"outcome": "referral",
"operator": {
"kind": "iana",
"id": "iana",
"name": "IANA"
},
"nsTtl": 86400,
"leg": 1
},
{
"zone": "66.in-addr.arpa",
"server": "arin.authdns.ripe.net",
"ip": "193.0.9.10",
"outcome": "referral",
"operator": {
"kind": "rir",
"id": "arin",
"name": "ARIN"
},
"nsTtl": 86400,
"leg": 1
},
// … 1 more item
],
"network": {
"asn": 15169,
"name": "Google",
"asName": "GOOGLE - Google LLC, US",
"prefix": "66.249.64.0/20",
"country": "US",
"registry": "arin",
"allocated": "2004-03-05"
},
"mail": {
"name": "crawl-66-249-66-1.googlebot.com",
"pass": 3,
"providers": [
{
"id": "gmail",
"ptr": "pass",
"fcrdns": "pass",
"notGeneric": "not_required",
"pass": true,
"unknown": false
},
{
"id": "yahoo",
"ptr": "pass",
"fcrdns": "pass",
"notGeneric": "pass",
"pass": true,
"unknown": false
},
{
"id": "outlook",
"ptr": "pass",
"fcrdns": "not_required",
"notGeneric": "pass",
"pass": true,
"unknown": false
}
]
},
"crawler": {
"id": "googlebot",
"name": "Googlebot",
"status": "verified",
"method": "both",
"domain": "googlebot.com",
"list": "common-crawlers"
},
"ptrProvider": null,
"copies": [
{
"source": "google",
"status": "ok",
"names": [
"crawl-66-249-66-1.googlebot.com"
],
"ttl": 4993,
"tookMs": 43
},
{
"source": "cloudflare",
"status": "ok",
"names": [
"crawl-66-249-66-1.googlebot.com"
],
"ttl": 84702,
"tookMs": 1
}
],
"issues": [],
"tookMs": 1580
}Shortened for the page: long lists show their first items.
Cloudflare's resolver over IPv6
GET /api/v2/reverse-dns?ip=2606%3A4700%3A4700%3A%3A1111{
"query": {
"ip": "2606:4700:4700::1111"
},
"ip": "2606:4700:4700::1111",
"reverseName": "1.1.1.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.7.4.0.0.7.4.6.0.6.2.ip6.arpa",
"specialUse": null,
"verdict": "confirmed",
"role": "resolver",
"ptr": [
{
"name": "one.one.one.one",
"ttl": 1800,
"forwardConfirmed": true,
"ipv4": [
"1.0.0.1",
"1.1.1.1"
],
"ipv6": [
"2606:4700:4700::1111",
"2606:4700:4700::1001"
],
"kind": "named"
}
],
"forwardConfirmed": true,
"answer": {
"source": "authoritative",
"server": "one.one.one.one",
"ip": "1.1.1.1",
"viaCloudflare": true,
"status": "ok",
"rcode": "NOERROR",
"authoritative": false,
"negativeTtl": null,
"cnameChain": []
},
"zone": {
"name": "0.0.7.4.6.0.6.2.ip6.arpa",
"operator": {
"kind": "holder",
"id": "cloudflare",
"name": "Cloudflare"
}
},
"delegation": [
{
"zone": ".",
"server": "d.root-servers.net",
"ip": "199.7.91.13",
"outcome": "referral",
"operator": {
"kind": "root",
"id": "root",
"name": "Root"
},
"nsTtl": 172800,
"leg": 1
},
{
"zone": "ip6.arpa",
"server": "f.ip6-servers.arpa",
"ip": "193.0.9.2",
"outcome": "referral",
"operator": {
"kind": "iana",
"id": "iana",
"name": "IANA"
},
"nsTtl": 86400,
"leg": 1
},
{
"zone": "0.6.2.ip6.arpa",
"server": "u.arin.net",
"ip": "204.61.216.50",
"outcome": "referral",
"operator": {
"kind": "rir",
"id": "arin",
"name": "ARIN"
},
"nsTtl": 1800,
"leg": 1
},
// … 1 more item
],
"network": {
"asn": 13335,
"name": "Cloudflare",
"asName": "CLOUDFLARENET - Cloudflare, Inc., US",
"prefix": "2606:4700:4700::/48",
"country": "US",
"registry": "arin",
"allocated": "2011-11-01"
},
"mail": {
"name": "one.one.one.one",
"pass": 3,
"providers": [
{
"id": "gmail",
"ptr": "pass",
"fcrdns": "pass",
"notGeneric": "not_required",
"pass": true,
"unknown": false
},
{
"id": "yahoo",
"ptr": "pass",
"fcrdns": "pass",
"notGeneric": "pass",
"pass": true,
"unknown": false
},
{
"id": "outlook",
"ptr": "pass",
"fcrdns": "not_required",
"notGeneric": "pass",
"pass": true,
"unknown": false
}
]
},
"crawler": null,
"ptrProvider": null,
"copies": [
{
"source": "google",
"status": "ok",
"names": [
"one.one.one.one"
],
"ttl": 727,
"tookMs": 38
},
{
"source": "cloudflare",
"status": "ok",
"names": [
"one.one.one.one"
],
"ttl": 1800,
"tookMs": 258
}
],
"issues": [],
"tookMs": 471
}Shortened for the page: long lists show their first items.