DNS Tools - Domain Age, WHOIS, Expiry & DNS Records Checker
Pricing
from $0.80 / 1,000 domain checkeds
DNS Tools - Domain Age, WHOIS, Expiry & DNS Records Checker
Everything about a domain in one run. Paste your domains, tick what you want to know — age, expiration date, last update, availability, owner, registrar, DNSSEC, the full WHOIS record, DNS records — and get one clean row per domain, ready to export as JSON, CSV, or Excel.
Pricing
from $0.80 / 1,000 domain checkeds
Rating
0.0
(0)
Developer
VeroAPIs
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
DNS Tools — WHOIS lookup, domain age, expiry, availability & DNS records in one run
Paste a list of domains, tick what you want to know, and get one clean row per domain. Age, expiration date, last update, availability, owner, registrar, DNSSEC, the full WHOIS record, and live DNS records — for one domain or a thousand. Checking a brand name? Add the name once and check it across every extension you care about.
What you can do
- See how old a domain is, to the day:
31 years, 1 month, 5 days. - Catch expiring domains before they lapse, with days-to-expiry you can sort on.
- List only the domains expiring in the next 30, 60 or 90 days, expired ones included.
- Check whether a name is still available to register.
- Check one name across many extensions at once (
brightpixelon .com, .io, .ai, .co…) and list only the free ones. - Find out who owns a domain and which registrar it was bought through.
- Confirm DNSSEC is switched on and see the DS records.
- Pull the complete WHOIS record — status codes, name servers, every contact, raw text.
- Read the live DNS records: A, AAAA, CNAME, MX, NS, TXT, SOA, and CAA.
- Works across .com, .org, .io, .app, .dev, .co.uk, .de, .fr and hundreds more extensions.
Why use it
- Domain buying and SEO vetting — see a domain's true age, registrar and history before you buy it or link to it.
- Expired-domain hunting — find names that are about to drop, or already have.
- Brand naming — check a shortlist of names across every extension in one run and keep only the free ones.
- Portfolio renewals — paste every domain you own and sort by days to expiry.
- Lead enrichment — add company age, registrar, mail servers and SPF records to a list of company websites.
- Security audits — check DNSSEC, CAA, name servers and transfer locks across many domains at once.
How to use it
- Paste your domains — one per line. Full URLs are fine too.
- Or, to check names across extensions, add the names under Check names across extensions (without the extension, like
brightpixel) and pick the extensions. - Tick the checks you want. Everything is on by default.
- Optional: turn on Only available domains, or set Expiring within to a number of days.
- Click Start.
- Download your results as JSON, CSV, or Excel.
Input example
Check three domains with every tool:
{"domains": ["example.com", "wikipedia.org", "bbc.co.uk"]}
Find which extensions are still free for two brand names:
{"names": ["brightpixel", "pixelforge"],"tlds": ["com", "io", "ai", "co"],"tools": ["availability"],"onlyAvailable": true}
List the domains in your portfolio that expire within 60 days:
{"domains": ["example.com", "wikipedia.org", "bbc.co.uk"],"tools": ["age", "expiration", "registrar"],"expiringWithinDays": 60}
What you get
One row per domain, ready to filter in a spreadsheet:
| domain | isAvailable | age | expiresIn | registrar.name | dnssec.enabled |
|---|---|---|---|---|---|
| example.com | false | 31 years, 2 months, 10 days | 9 months, 19 days | RESERVED-Internet Assigned Numbers Authority | true |
| wikipedia.org | false | 25 years, 9 months, 12 days | 2 months, 18 days | MarkMonitor Inc. | false |
| bbc.co.uk | false | 31 years, 10 months, 11 days | 8 years, 1 month, 18 days | British Broadcasting Corporation | false |
| some-name-nobody-took-yet.com | true |
{"domain": "example.com","registrableDomain": "example.com","checkedAt": "2026-10-25T01:17:49.362Z","isAvailable": false,"registeredAt": "1995-08-14T04:00:00.000Z","age": "31 years, 2 months, 10 days","ageDays": 11394,"expiresAt": "2027-08-13T04:00:00.000Z","expiresIn": "9 months, 19 days","expiresInDays": 292,"isExpired": false,"updatedAt": "2026-08-14T08:01:43.000Z","updatedAgo": "2 months, 10 days","owner": null,"registrar": { "name": "RESERVED-Internet Assigned Numbers Authority", "ianaId": "376", "url": null, "email": null, "phone": null },"dnssec": { "enabled": true, "dsRecords": [{ "keyTag": 2371, "algorithm": 13, "digestType": 2, "digest": "C988EC…" }] },"whois": { "source": "rdap", "server": "https://rdap.verisign.com/com/v1/", "statuses": ["clientDeleteProhibited", "clientTransferProhibited", "clientUpdateProhibited"], "nameservers": ["elliott.ns.cloudflare.com", "hera.ns.cloudflare.com"], "contacts": [], "raw": "…" },"dns": { "a": ["104.20.23.154", "172.66.147.243"], "mx": [{ "priority": 0, "exchange": "." }], "ns": ["elliott.ns.cloudflare.com", "hera.ns.cloudflare.com"], "txt": ["v=spf1 -all"] }}
Only the checks you tick appear in the row. A run that only asks for expiration dates gives you the domain, when it was checked, and the four expiry columns: expiry date, time left in words, days left, and whether it has expired. Once a domain has expired, "Expires in" reads like expired 3 days ago and the days count goes negative.
A domain is listed under Domains we couldn't check in the Output tab, with the reason, when the line isn't a domain name or when the details you picked didn't come back, for example from a registry that took too long to answer. These are never charged, so you can run them again for free.
Two cases still give you a row, with a Note saying what's missing:
- .es, .ch and .li domains — these registries never share registration details, so you get the domain's live DNS records (when you picked DNS records and the domain has some).
- Name servers that don't answer — you still get the registration details you picked; only the DNS records are missing.
What each registry shares
Every registry decides what it publishes, so some columns stay empty for some extensions:
- .com, .net, .org, .io, .app, .dev, .co.uk, .fr and most others — the full record: dates, registrar, status codes, name servers, DNSSEC.
- .nl — everything except the expiry date, which the .nl registry doesn't publish.
- .de — availability, status, name servers, last change date and DNSSEC. The .de registry publishes no registration or expiry dates.
- .eu and .au — availability, registrar and name servers, without registration or expiry dates.
- .es, .ch and .li — these registries don't share registration details publicly. You still get the domain's live DNS records, and the row's Note says the registration part isn't available.
Run it from your code
Start a run and get the rows back in one call:
curl -X POST "https://api.apify.com/v2/acts/vero-api~dns-tools/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"domains": ["example.com", "wikipedia.org"], "tools": ["age", "expiration", "registrar"]}'
From JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('vero-api/dns-tools').call({domains: ['example.com', 'wikipedia.org'],tools: ['age', 'expiration', 'registrar'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((row) => `${row.domain}: ${row.age}, expires in ${row.expiresIn}`));
From Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("vero-api/dns-tools").call(run_input={"domains": ["example.com", "wikipedia.org"],"tools": ["age", "expiration", "registrar"],})for row in client.dataset(run.default_dataset_id).iterate_items():print(row["domain"], row["age"], row["expiresIn"])
Use it from your AI assistant (MCP)
Ask Claude, Cursor, VS Code, or any assistant that supports MCP about domains in plain words. Add this server to its MCP settings:
{"mcpServers": {"dns-tools": {"url": "https://mcp.apify.com?tools=vero-api/dns-tools"}}}
Then just ask, for example:
- "How old is stripe.com and when does it expire?"
- "Is brightpixel free on .com, .io or .ai?"
- "Which of these 20 domains expire in the next 60 days?"
Integrations
Send results straight to Google Sheets, Slack, Airtable, or your own webhook with Apify integrations, or connect the actor to Make, Zapier, and n8n. Schedule a weekly run over your portfolio with Expiring within set, and you get a renewal list before anything lapses.
Pricing
You pay only for the domains you get results for — no subscriptions, no surprises. A line that isn't a domain name, a domain we couldn't check, and a domain a filter leaves out are never charged. The run stops right at the spending limit you set.
FAQ
Where does the data come from? Straight from the official registry of each extension, live at the moment you ask. Nothing is cached, so you always see today's record.
Can I check subdomains? Yes. Registration details come from the parent domain, and DNS records come from the exact host you entered — so www.example.com shows its own CNAME.
Why is the owner empty for some domains? Many registries hide personal details for privacy. Hidden fields come back empty and Details hidden is true, so you can tell a private owner from a missing one. You still get the registrar, the dates, and everything else.
Why are the dates empty for my .de domain? The .de registry doesn't publish registration or expiry dates for anyone. You still get availability, status, name servers, the last change date and DNSSEC.
What happens with .es or .ch domains? Those registries don't share registration details publicly, so you get the live DNS records with a note saying so. If you only asked for registration details, the domain is listed under Domains we couldn't check and isn't charged.
How do I check one name on many extensions? Add it under Names without the extension (brightpixel, not brightpixel.com), pick the extensions, and every pair is checked — 5 names on 6 extensions is 30 domains. Turn on Only available domains to keep just the free ones.
Can I find domains that are about to expire? Yes. Set Expiring within to a number of days and only those domains are listed, expired ones included. Domains whose registry publishes no expiry date are left out.
How fast is it? Ten domains are checked at once. A list of 500 finishes in a minute or two, a thousand in under five.
Do I need an API key? No. Paste your domains and run it — there is nothing to sign up for.
Can I call it from my app? Yes — start a run through the Apify API and read the rows from its dataset. See Run it from your code above.
More tools from us
- Email Validator — check whether email addresses are real and can receive mail.
- Website Screenshot Generator — full-page screenshots of any list of websites.
- Google Ads Transparency Scraper — every ad a company runs on Google, YouTube and Search.
- Phone Number Carrier Lookup — carrier, line type, country and time zone for phone numbers.
- Telegram Username Checker — see which Telegram usernames are taken by profiles, channels, groups or bots.