🌐 DNS Propagation Checker avatar

🌐 DNS Propagation Checker

Pricing

$8.00 / 1,000 dns propagation results

Go to Apify Store
🌐 DNS Propagation Checker

🌐 DNS Propagation Checker

Check DNS propagation across major resolvers. No API key / no login. Open Input β†’ leave defaults β†’ Start (1 domain + A record β‰ˆ USD 0.008/row): https://console.apify.com/actors/pvcDIZpUh0AOsE0iF/input

Pricing

$8.00 / 1,000 dns propagation results

Rating

0.0

(0)

Developer

naoki anzai

naoki anzai

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

0

Monthly active users

4 days ago

Last modified

Share

What you get: one row per domain and record type with the answer from each of 8 public resolvers (Google, Cloudflare, OpenDNS, Quad9, Comodo, Verisign) and an isConsistent flag that tells you whether a DNS change has reached all of them.

Sample output from a real run (2026-10-18, default input: example.com + google.com, A and MX, 4 rows):

domainrecordTypeisConsistentinconsistenciesanswer at Google 8.8.8.8
example.comAtrue–104.20.23.154, 172.66.147.243
example.comMXtrue–0 (null MX)
google.comAfalse6 different answer sets across 8 resolvers192.178.155.100, 192.178.155.101, …
google.comMXtrue–10 smtp.google.com

That run was 4 result rows Γ— $0.008 = $0.032 (there is no separate start fee).

Open Input (leave defaults β†’ Start) Paid first run β‰ˆ USD 0.008/row (1 domain + A record). Keep reports, exports, and movement options off for the first run. Open Console Input (deep link above) and run this JSON.

{
"domains": [
"example.com"
],
"recordTypes": [
"A"
],
"dryRun": false
}

Paste domain and Start.

Query up to 200 domains across 8 global resolvers to extract structured A, MX, TXT, NS, and SOA records for bulk domain auditing and configuration monitoring. Managing large portfolios of websites requires robust tools to ensure fundamental infrastructure settings remain correct across all regions. This DNS propagation checker automates the process of validating nameserver updates across primary networks like Google (8.8.8.8), Cloudflare (1.1.1.1), and Quad9. Instead of performing tedious manual lookups in your browser or terminal, you can run automated jobs to scrape vital domain details and confirm that updates have successfully propagated worldwide. The tool is highly effective for identifying regional caching delays that might prevent users from accessing the latest deployment. By detecting inconsistencies in TTL values across different DNS servers, operations teams can confidently schedule runs to monitor nameserver changes during large-scale hosting migrations. Collect the exact data you need to verify global availability and maintain domain health. Easily track NS record shifts, validate A record IPs, and extract historical logs of your DNS states over time, ensuring your web properties are consistently accessible to all international traffic and preventing costly routing outages.

Store Quickstart

Start with the Quickstart template (3 domains, A records). For multi-record audits, use Full DNS Audit (A, AAAA, MX, TXT, CNAME, NS).

Use with Apify MCP

Exact actor: taroyamada/dns-propagation-checker

Sample input JSON:

{
"domains": [
"example.com"
],
"recordTypes": [
"A"
]
}

Key Features

  • 🌐 8 global DNS resolvers β€” Google, Cloudflare, Quad9, OpenDNS, Cisco Umbrella, Level3, Verisign, Dyn
  • πŸ“‹ 7 record types β€” A, AAAA, MX, TXT, CNAME, NS, SOA
  • ⚠️ Inconsistency detection β€” Instantly spots resolvers that disagree
  • ⏱️ TTL reporting β€” See caching behavior across resolvers
  • πŸ“¦ Bulk domains β€” Check up to 200 domains per run
  • πŸ”‘ No API key needed β€” Uses Node.js built-in dns.Resolver

Use Cases

WhoWhy
DNS administratorsVerify DNS changes propagated globally before changing URLs
Hosting migrationsConfirm nameserver switch completed at all resolvers
Email deliverabilityCheck MX, SPF, DKIM TXT records consistency
Security teamsDetect DNS hijacking via inconsistent resolver responses
DevOps teamsPre-deploy DNS verification for production cutover

Input

FieldTypeDefaultDescription
domainsstring[](required)Domains to check (max 200)
recordTypesstring[]["A"]A, AAAA, MX, TXT, CNAME, NS, SOA

Input Example

{
"domains": ["example.com", "api.example.com"],
"recordTypes": ["A", "MX", "TXT"]
}

Input Examples

Example: Single domain global check

{
"domains": [
"example.com"
],
"recordTypes": [
"A",
"AAAA"
]
}

Example: After-change propagation watch

Re-run (or schedule) this until every row shows isConsistent: true.

{
"domains": [
"example.com"
],
"recordTypes": [
"A",
"MX",
"TXT"
]
}

Example: Multi-domain audit

{
"domains": [
"example.com",
"google.com",
"github.com"
],
"recordTypes": [
"A"
]
}

Output

One dataset row per domain Γ— record type.

FieldTypeDescription
domainstringDomain queried
recordTypestringDNS record type (A, AAAA, MX, TXT, CNAME, NS, SOA)
resolversobject[]One entry per resolver: name, ip, values, ttl, error
isConsistentbooleantrue when all resolvers returned the same answer
inconsistenciesstring[]Why the answers differ, if they do
checkedAttimestampWhen the check ran

Output Example

Row from the real run above (resolver list shortened to 3 of 8):

{
"domain": "example.com",
"recordType": "A",
"resolvers": [
{
"name": "Google",
"ip": "8.8.8.8",
"values": [
"104.20.23.154",
"172.66.147.243"
],
"ttl": null,
"error": null
},
{
"name": "Cloudflare",
"ip": "1.1.1.1",
"values": [
"104.20.23.154",
"172.66.147.243"
],
"ttl": null,
"error": null
},
{
"name": "Quad9",
"ip": "9.9.9.9",
"values": [
"104.20.23.154",
"172.66.147.243"
],
"ttl": null,
"error": null
}
],
"isConsistent": true,
"inconsistencies": [],
"checkedAt": "2026-10-18T11:43:00.446Z"
}

API Usage

Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console β†’ Settings β†’ Integrations.

cURL

curl -X POST "https://api.apify.com/v2/acts/taroyamada~dns-propagation-checker/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "domains": ["example.com", "api.example.com"], "recordTypes": ["A", "MX", "TXT"] }'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("taroyamada/dns-propagation-checker").call(run_input={
"domains": ["example.com", "api.example.com"],
"recordTypes": ["A", "MX", "TXT"]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('taroyamada/dns-propagation-checker').call({
"domains": ["example.com", "api.example.com"],
"recordTypes": ["A", "MX", "TXT"]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Security cluster β€” Adjacent actors

Most defensive-security audits cover multiple layers on the same domains. The actors below pair naturally with this one:

Tips & Limitations

  • Compare results across resolvers (8.8.8.8, 1.1.1.1, 208.67.222.222) to verify propagation.
  • Use after a DNS change to confirm global rollout before pointing production traffic.
  • Query MX + TXT records together to audit email configuration in one run.
  • Low TTLs (<300s) propagate fast; high TTLs (>3600s) may take hours globally.

FAQ

Why use 8 resolvers?

DNS caching varies by resolver. Checking multiple reveals which have updated after a change.

What's a typical propagation time?

TTL-dependent. Most DNS changes propagate globally within 1-24 hours.

Does it check geographic propagation?

No β€” all resolvers queried are major public ones. For geographic checks, use specialized tools.

Can I check private DNS?

No, only public DNS. Internal/private domains return NXDOMAIN.

Does this support DNSSEC validation?

Not currently β€” DNSSEC chain verification is on the roadmap.

Why do different resolvers return different values?

DNS propagation isn't instant. Different resolvers cache records based on TTL.

Cost

Pay Per Event (current Store prices):

  • Result row: $0.008 per row written to the default dataset (no separate start fee)

Example: 1,000 rows = 1,000 Γ— $0.008 = $8.00

No subscription required β€” you only pay for what you use.

⭐ Was this helpful?

If this actor saved you time, please leave a β˜… rating on Apify Store. It takes 10 seconds, helps other developers discover it, and keeps updates free.

Bug report or feature request? Open an issue on the Issues tab of this actor.