# DNS Record & Whois Lookup (`onescales/dns-record-whois-lookup`) Actor

Bulk DNS lookup for all 13 record types (A, MX, TXT, NS, SOA, CAA, TLSA & more) + WHOIS data. Check registrar, expiry & DNS config for thousands of domains instantly.

- **URL**: https://apify.com/onescales/dns-record-whois-lookup.md
- **Developed by:** [One Scales](https://apify.com/onescales) (community)
- **Categories:** Developer tools, SEO tools, Automation
- **Stats:** 5 total users, 4 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

**DNS Record & Whois Lookup** instantly retrieves all DNS records and WHOIS registration data for any domain. Whether you're auditing infrastructure, verifying a migration, checking domain ownership, or building bulk domain intelligence pipelines — this tool gives you everything in one row per domain.

Unlike tools that only check one or two record types, this actor queries all 13 DNS record types (A, AAAA, MX, CNAME, TXT, NS, PTR, SOA, SRV, CAA, NAPTR, DS, TLSA) and pairs each domain with full WHOIS data — registrar, registrant, admin contacts, dates, status, and nameservers — in a single run.

[![Watch the video](https://img.youtube.com/vi/uNXSXheJZ3w/maxresdefault.jpg)](https://www.youtube.com/watch?v=uNXSXheJZ3w)

**Use cases include:**
- **Domain audits** — check all DNS records and registration details for hundreds or thousands of domains at once
- **Migration verification** — confirm DNS records are correctly set after a domain or hosting migration
- **Email deliverability checks** — verify MX and TXT (SPF/DKIM/DMARC) records are correctly configured
- **Security audits** — identify missing CAA records, check DNSSEC (DS/TLSA), and detect misconfigurations
- **Domain expiry monitoring** — bulk-check WHOIS expiry dates to catch domains about to lapse
- **Ownership & contact research** — look up registrant and admin contact details for any domain list
- **Competitive research** — quickly look up the full DNS and registration profile behind any list of domains

---

### Features

- **13 DNS record types** — A, AAAA, MX, CNAME, TXT, NS, PTR, SOA, SRV, CAA, NAPTR, DS, TLSA — all checked automatically
- **Full WHOIS data** — registrar, IANA ID, abuse contacts, dates, status, nameservers, registrant, and admin contacts
- **SOA flattened** — SOA record returned as a single readable string (mname, rname, serial, refresh, retry, expire, minttl)
- **DS & TLSA with silent fallback** — DNSSEC and DANE records attempted; silently skipped if not supported or not present
- **URL-tolerant input** — input `https://www.example.com/page` and it automatically extracts `example.com`
- **Deduplication** — duplicate domains in input are silently deduplicated before processing
- **Bulk-ready** — handles 1 to 50,000+ domains efficiently with concurrency control and budget capping
- **Minimal dependencies** — uses Node.js built-in `dns/promises` for DNS; `whoiser` for WHOIS parsing

---

### How to Use

#### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `domains` | String list | Yes | Domains to check (e.g. `example.com`). URLs like `https://www.example.com/page` are automatically cleaned to bare domain. |

**Example input:**

```json
{
    "domains": [
        "onescales.com"
    ]
}
````

#### Output

One row per domain. Every row includes:

**DNS columns (one per record type):**

| Field | Description |
|---|---|
| `dns_a` | A records (IPv4 addresses) |
| `dns_aaaa` | AAAA records (IPv6 addresses) |
| `dns_mx` | MX records (priority + exchange) |
| `dns_cname` | CNAME records |
| `dns_txt` | TXT records (SPF, DKIM, DMARC, etc.) |
| `dns_ns` | NS records |
| `dns_ptr` | PTR records (reverse DNS) |
| `dns_soa` | SOA record (flattened: mname, rname, serial, refresh, retry, expire, minttl) |
| `dns_srv` | SRV records (priority, weight, port, target) |
| `dns_caa` | CAA records (certificate authority authorization) |
| `dns_naptr` | NAPTR records |
| `dns_ds` | DS records (DNSSEC delegation signer) |
| `dns_tlsa` | TLSA records (DANE certificate association) |

**WHOIS — Registrar:**

| Field | Description |
|---|---|
| `whois_registrar` | Registrar name |
| `whois_iana_id` | Registrar IANA ID |
| `whois_registrar_url` | Registrar website |
| `whois_registrar_abuse_email` | Registrar abuse contact email |
| `whois_registrar_abuse_phone` | Registrar abuse contact phone |

**WHOIS — Domain:**

| Field | Description |
|---|---|
| `whois_created` | Domain creation date |
| `whois_expires` | Domain expiry date |
| `whois_updated` | Last updated date |
| `whois_status` | Domain status flags (e.g. clientTransferProhibited) |
| `whois_nameservers` | Registered nameservers |

**WHOIS — Registrant:**

| Field | Description |
|---|---|
| `whois_registrant_name` | Registrant name |
| `whois_registrant_org` | Registrant organization |
| `whois_registrant_address` | Registrant address (street, city, state, postal — comma-joined) |
| `whois_registrant_country` | Registrant country |
| `whois_registrant_phone` | Registrant phone |

**WHOIS — Admin Contact:**

| Field | Description |
|---|---|
| `whois_admin_name` | Admin contact name |
| `whois_admin_org` | Admin contact organization |
| `whois_admin_email` | Admin contact email |
| `whois_admin_country` | Admin contact country |

**Meta:**

| Field | Description |
|---|---|
| `domain` | The input domain |
| `checkedAt` | ISO 8601 scan timestamp |
| `error` | Error message if the entire domain lookup failed |

**Example output row:**

```json
  {
    "domain": "onescales.com",
    "checkedAt": "2026-05-12T07:56:20.623Z",
    "dns_a": "23.227.38.65",
    "dns_aaaa": "",
    "dns_mx": "1 aspmx.l.google.com | 10 alt3.aspmx.l.google.com | 10 alt4.aspmx.l.google.com | 5 alt1.aspmx.l.google.com | 5 alt2.aspmx.l.google.com",
    "dns_cname": "",
    "dns_txt": "pinterest-site-verification=5f70be70e48c31b017fad538d924767e | v=spf1 include:_spf.hostedemail.com include:_spf.google.com ~all | apple-domain-verification=I7MvaXQQ7pwZC7MWa9SgCvFqNva8I955BY-KkRsxpIw | openai-domain-verification=dv-Y9cDXv64Bj8Z6h43mpki1rgt",
    "dns_ns": "carter.ns.cloudflare.com | bonnie.ns.cloudflare.com",
    "dns_ptr": "",
    "dns_soa": "mname=bonnie.ns.cloudflare.com rname=dns.cloudflare.com serial=2403632311 refresh=10000 retry=2400 expire=604800 minttl=1800",
    "dns_srv": "",
    "dns_caa": "",
    "dns_naptr": "",
    "dns_ds": "",
    "dns_tlsa": "",
    "whois_registrar": "Cloudflare, Inc.",
    "whois_iana_id": "1910",
    "whois_registrar_url": "http://www.cloudflare.com",
    "whois_registrar_abuse_email": "registrar-abuse@cloudflare.com",
    "whois_registrar_abuse_phone": "+1.6503198930",
    "whois_created": "2022-10-11T10:20:28Z",
    "whois_expires": "2028-10-11T10:20:28Z",
    "whois_updated": "2023-02-13T02:38:06Z",
    "whois_status": "clientTransferProhibited",
    "whois_nameservers": "bonnie.ns.cloudflare.com | carter.ns.cloudflare.com",
    "whois_registrant_name": "",
    "whois_registrant_org": "",
    "whois_registrant_address": "",
    "whois_registrant_country": "",
    "whois_registrant_phone": "",
    "whois_admin_name": "",
    "whois_admin_org": "",
    "whois_admin_email": "",
    "whois_admin_country": ""
  }
```

***

### Support

For bugs, feature requests, or questions — reach us at https://docs.google.com/forms/d/e/1FAIpQLSfsKyzZ3nRED7mML47I4LAfNh\_mBwkuFMp1FgYYJ4AkDRgaRw/viewform?usp=dialog

### Related Keywords

DNS, DNS query, DNS lookup, actor, admin contact, AI, API, apify, at scale, auditor, automated, automation, batch, bulk, CAA, checker, CNAME, converter, crawler, cron, CSV, DANE, dataset, detector, DNS, DNS checker, DNS lookup, DNS records, DNSSEC, domain, domain checker, domain expiry, domain owner, downloader, DS, Excel, export, exporter, extractor, fetcher, finder, free tool, generator, Google Sheets, HTML, ifttt, instant, JSON, lookup, make, make.com, maker, mass, MCP, monitor, MX, n8n, nameserver, NAPTR, no-code, no API key required, NS, parser, PDF, pipeline, PTR, record, registrant, registrar, report, scanner, schedule, scheduled, scraper, SOA, spreadsheet, SRV, TLSA, tool, TXT, validator, verifier, webhook, WHOIS, whois lookup, workflow, XML, zapier

# Actor input Schema

## `domains` (type: `array`):

Domains to check (e.g. example.com). Do not include https:// or paths.

## Actor input object example

```json
{
  "domains": [
    "onescales.com"
  ]
}
```

# Actor output Schema

## `dnsResults` (type: `string`):

All DNS and WHOIS lookup results.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "domains": [
        "onescales.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("onescales/dns-record-whois-lookup").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "domains": ["onescales.com"] }

# Run the Actor and wait for it to finish
run = client.actor("onescales/dns-record-whois-lookup").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "domains": [
    "onescales.com"
  ]
}' |
apify call onescales/dns-record-whois-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=onescales/dns-record-whois-lookup",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "DNS Record & Whois Lookup",
        "description": "Bulk DNS lookup for all 13 record types (A, MX, TXT, NS, SOA, CAA, TLSA & more) + WHOIS data. Check registrar, expiry & DNS config for thousands of domains instantly.",
        "version": "1.0",
        "x-build-id": "Odjzjx4gBa5RvgPHZ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/onescales~dns-record-whois-lookup/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-onescales-dns-record-whois-lookup",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/onescales~dns-record-whois-lookup/runs": {
            "post": {
                "operationId": "runs-sync-onescales-dns-record-whois-lookup",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/onescales~dns-record-whois-lookup/run-sync": {
            "post": {
                "operationId": "run-sync-onescales-dns-record-whois-lookup",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "domains"
                ],
                "properties": {
                    "domains": {
                        "title": "Domains",
                        "type": "array",
                        "description": "Domains to check (e.g. example.com). Do not include https:// or paths.",
                        "items": {
                            "type": "string",
                            "maxLength": 253
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
