lookup

Bun

Symbol

dns.lookup

function lookup(hostname: string, options?: { backend: 'libc' | 'c-ares' | 'system' | 'getaddrinfo'; family: 0 | 4 | 6 | 'IPv4' | 'IPv6' | 'any'; flags: number; port: number; socketType: 'udp' | 'tcp' }): Promise<DNSLookup[]>

Lookup the IP address for a hostname

Uses non-blocking APIs by default

@param hostname

The hostname to lookup

@param options

Options for the lookup

Example

const [{ address }] = await Bun.dns.lookup('example.com');

Filter results to IPv4:

import { dns } from 'bun';
const [{ address }] = await dns.lookup('example.com', {family: 4});
console.log(address); // "123.122.22.126"

Filter results to IPv6:

import { dns } from 'bun';
const [{ address }] = await dns.lookup('example.com', {family: 6});
console.log(address); // "2001:db8::1"

DNS resolver client

Bun supports three DNS resolvers:

  • c-ares - Uses the c-ares library to perform DNS resolution. This is the default on Linux.
  • system - Uses the system's non-blocking DNS resolver API if available, falls back to getaddrinfo. This is the default on macOS and the same as getaddrinfo on Linux.
  • getaddrinfo - Uses the posix standard getaddrinfo function. Will cause performance issues under concurrent loads.

To customize the DNS resolver, pass a backend option to dns.lookup:

import { dns } from 'bun';
const [{ address }] = await dns.lookup('example.com', {backend: 'getaddrinfo'});
console.log(address); // "19.42.52.62"

Referenced types

interface DNSLookup

  • address: string

    The IP address of the host as a string in IPv4 or IPv6 format.

    "127.0.0.1"
    
  • family: 4 | 6
  • ttl: number

    Time to live in seconds

    Only supported when using the c-ares DNS resolver via "backend" option to dns.lookup. Otherwise, it's 0.