Google DNS API: Get DNS records
Looks up DNS records for a domain or pasted website link and summarizes its SPF record, DMARC policy and mail servers. A missing record type yields an empty records list.
Unofficial. Not affiliated with or endorsed by Google DNS.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Domain, required
domain Domain name or pasted website link, for example example.com or https://example.com/about.
example.com
- Record Type optional
record_type Which DNS records to return, for example MX. Defaults to all.
all (default)
One of
all,A,AAAA,MX,TXT,NS,CNAME,SOA,CAA.
Input as JSON
{ "domain": "example.com"}Output
{ "records": [ { "name": "example.com", "value": "172.66.147.243", "priority": null, "page_link": "https://dns.google/resolve?name=example.com&type=A" , "record_type": "A", "time_to_live_seconds": 300 }, { "name": "example.com", "value": "104.20.23.154", "priority": null, "page_link": "https://dns.google/resolve?name=example.com&type=A" , "record_type": "A", "time_to_live_seconds": 300 }, { "name": "example.com", "value": "2606:4700:10::6814:179a", "priority": null, "page_link": "https://dns.google/resolve?name=example.com&type=AAAA" , "record_type": "AAAA", "time_to_live_seconds": 300 } ], "email_setup": { "spf_record": "v=spf1 -all", "dmarc_policy": "reject", "has_mail_servers": false }}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"dns.google/get_dns_records","input":{"domain":"example.com"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "dns.google/get_dns_records" , "input": { "domain": "example.com" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "dns.google/get_dns_records" , "input": { "domain": "example.com" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run dns.google/get_dns_records# with {"domain":"example.com"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "domain" ], "properties": { "domain": { "type": "string", "description": "Domain name or pasted website link, for example example.com or https://example.com/about." }, "record_type": { "enum": [ "all", "A", "AAAA", "MX", "TXT", "NS", "CNAME", "SOA", "CAA" ], "type": "string", "default": "all", "description": "Which DNS records to return, for example MX. Defaults to all." } }}Output schema
{ "type": "object", "required": [ "records", "email_setup" ], "properties": { "records": { "type": "array", "items": { "type": "object", "required": [ "record_type", "name", "value", "time_to_live_seconds", "priority", "page_link" ], "properties": { "name": { "type": "string", "description": "Name owning the record." }, "value": { "type": "string", "description": "DNS record value." }, "priority": { "type": [ "integer", "null" ], "description": "MX priority; null for other record types." }, "page_link": { "type": "string", "description": "Public DNS lookup for this record name and type." }, "record_type": { "type": "string", "description": "DNS record type." }, "time_to_live_seconds": { "type": "integer", "description": "Time this answer may be cached, in seconds." } } }, "description": "DNS records matching the chosen record type." }, "email_setup": { "type": "object", "required": [ "spf_record", "dmarc_policy", "has_mail_servers" ], "properties": { "spf_record": { "type": [ "string", "null" ], "description": "SPF record text, or null if missing." }, "dmarc_policy": { "enum": [ "none", "quarantine", "reject", "missing" ], "type": "string", "description": "DMARC policy in words or missing." }, "has_mail_servers": { "type": "boolean", "description": "Whether usable MX mail servers are configured." } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
dns.google/get_dns_records- Returns
- DNS records (type, name, value, TTL, MX priority, lookup link) and email setup (SPF, DMARC policy, mail servers)
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method dns.google/get_dns_records with the inputs above.
Ask your agent
- Can you pull the MX records for mycompany.io so I can see which mail servers handle its email?
- What's the SPF and DMARC setup for brightlabs.org? I want to know if their email is locked down.
- Look up all DNS records for https://shop.example-store.net/checkout and summarize them.
- I need the TXT records for newsroom-daily.com to check for domain verification entries.
- Which nameservers are authoritative for 203-cloud.dev? Also show the TTL values if you can.
See more
Gets a website's worldwide popularity bucket, exact rank when shown, categories, and recent weekly rank history from Cloudflare Radar. Historical rank points are available only for top-100 domains; other ranked domains have an empty history.
radar.cloudflare.com/get_domain_rankFinds certificates issued for a domain and its subdomains on crt.sh, with the DNS names each certificate covers. Expired certificates are excluded unless requested.
crt.sh/search_certificatesChecks a website's HTTPS setup with SSL Labs: overall grade, per-server grades, certificate issuer and expiry, supported protocols and known weaknesses. Reuses cached reports from the last 72 hours unless a fresh test is requested.
ssllabs.com/check_ssl_certificateGets the technologies shown in a website's free BuiltWith profile, grouped in the order BuiltWith displays them. A company name is matched to its official website through a public web search.
builtwith.com/get_website_technologiesLooks up a public Google Maps place by name and location and returns its profile: address, rating, hours, phone, website and photos.
google.com/get_placeFinds a verified advertiser in the Google Ads Transparency Center by company name or website domain and returns its Google ads with dates, regions, previews and ad pages. Counts may be approximate; regions and media previews are read for the first 40 ads.
adstransparency.google.com/get_company_adsFinds a place on Google Maps by name and location and returns its public reviews in the chosen order.
google.com/get_place_reviewsLists major stock market indexes on Google Finance with their current levels, changes and quote times. Quotes may be delayed, and indexes Google does not show are left out.
google.com/list_market_indexes