Skip to main content

Function signature

function getDnsRecords(
  name: string,
  type?: DnsRecordType,
  resolver?: string
): Promise<DnsRecord[]>
Get DNS records of a given type for a FQDN (fully qualified domain name).

Parameters

name
string
required
Fully qualified domain name, like example.com or mail.google.com (no protocol or path)
type
DnsRecordType
DNS record type: A, AAAA, TXT, CNAME, MX, NS, SOA, PTR, SRV, NAPTR, DS, DNSKEY, CAA, etc.If not specified, the behavior depends on the resolver. The node-dns resolver will query multiple types (A, AAAA, CNAME), while DNS-over-HTTPS resolvers may default to A records.
resolver
string
default:"auto"
Which DNS resolver to use for DNS lookup. Options:
  • cloudflare-dns - Use Cloudflare DNS over HTTPS
  • google-dns - Use Google DNS over HTTPS
  • node-dns - Use Node.js built-in DNS resolver
  • node-dig - Use Node.js dig command
  • deno-dns - Use Deno DNS resolver (not yet implemented)
If not specified, the best DNS resolver for the current runtime will be automatically selected.

Returns

records
Promise<DnsRecord[]>
A promise that resolves to an array of discovered DnsRecord objects.Each DnsRecord contains:
  • name (string): Fully qualified domain name
  • type (DnsRecordType): Record type (A, AAAA, CNAME, etc.)
  • ttl (number): Time to live in seconds
  • data (string): Record data (IP for A/AAAA, FQDN for CNAME, etc.)

Examples

Get TXT records for example.com

import { getDnsRecords } from '@layered/dns-records'

const txtRecords = await getDnsRecords('example.com', 'TXT')

Get MX records from Google DNS resolver

import { getDnsRecords } from '@layered/dns-records'

const mxRecords = await getDnsRecords('android.com', 'MX', 'google-dns')

Get all A records with automatic resolver selection

import { getDnsRecords } from '@layered/dns-records'

const aRecords = await getDnsRecords('example.com', 'A')
// Automatically uses node-dns in Node.js, cloudflare-dns in Cloudflare Workers, etc.

Build docs developers (and LLMs) love