Skip to main content
Glama
Panda Web Security Tools

Panda Web Security Tools

Bulk Domain WHOIS & Expiry Checker (RDAP): Registrar & Dates

bulk_domain_whois_expiry
Read-only

Check many domains at once for registration status, registrar, expiry dates, days to expiry, transfer locks, nameservers and DNSSEC to audit renewals or find available names.

Instructions

Check many domains at once with official RDAP (WHOIS fallback): registered or available, registrar, created/updated/expiry dates, days to expiry, transfer lock and pending-delete status, nameservers, DNS host and DNSSEC. Unlike email_domain_security_checker (SPF/DKIM/DMARC mail security) and company_website_enricher (site content and contacts), this is registration and expiry data for a domain portfolio. Use when you audit a domain portfolio for renewals, check which names are available, or verify registrar and DNS host for vendors or phishing look-alikes. Do not use for website content, uptime or email-auth checks (use email_domain_security_checker). Parameters: domains accepts URLs (scheme, www and paths stripped; duplicates dropped; up to 10,000); rootDomainOnly (default true) reduces subdomains to the registrable domain; expiringWithinDays sets the expiringSoon flag and only=expiringSoon|available|registered returns (and bills) just that subset; sortBy=expiry puts the soonest renewals first; followRegistrar adds registrant org/country when published but is slower; maxResults caps billed domains. Failed lookups are free. Returns per item: agentSummary, domain, registered, available, registrar, registrarIanaId, createdDate, updatedDate, expiresDate, daysToExpiry, ageYears, expiringSoon, statuses, transferLocked, pendingDelete, nameservers, dnsHost, dnssec, registrantOrg, registrantCountry, abuseEmail, source; plus DOMAINS_XLSX/CSV.

Behavior: read-only; runs the Apify Actor pandadad0214/bulk-domain-whois-expiry (https://apify.com/pandadad0214/bulk-domain-whois-expiry) on your own Apify account. Price: $0.001 per domain checked. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "bulk_domain_whois_expiry"
  }
}

Input Schema

NameRequiredDescriptionDefault
onlyNoOnly return. Filter the results (you pay only for returned domains). Choices: all = All domains; expiringSoon = Expiring soon only; available = Not registered (likely available) only; registered = Registered only.all
sortByNoSort by. Order of results. Choices: input = Input order; expiry = Soonest expiry first.input
domainsNoDomains. Up to 10,000 domains or URLs (https://, www. and paths are removed; duplicates dropped).
maxResultsNoMaximum results. You pay per domain returned, so this also caps the cost. Default 1000.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
rootDomainOnlyNoLook up the root domain. blog.example.co.uk -> example.co.uk. Off = look up exactly what you typed.
followRegistrarNoAsk the registrar's RDAP too. Adds registrant org/country when the registrar publishes them (slower).
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
expiringWithinDaysNoExpiring soon = within N days. Flags domains whose expiry is this close. Default 60.
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, open-world, non-destructive, non-idempotent, but the description goes well beyond them: it discloses the underlying Apify Actor and that it runs on the caller's own account, per-domain pricing ($0.001), free failed lookups, a hard spend cap (run_max_charge_usd default $0.50), typical 5-15s latency versus multi-minute large runs, and the 300s timeout ceiling. This is exactly the kind of cost/latency/auth context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage/exclusions, then parameters, then behavior and returns — a logical progression with no filler sentences. It is dense, though, and the parameter recap largely mirrors the 100%-covered schema, so a few clauses could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating every per-item return field plus the XLSX/CSV artifacts and the {actor, count, items} envelope. Combined with cost, billing-subset, timeout and spend-cap behavior, an agent has everything needed to invoke this correctly for a 10-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description adds real cross-parameter semantics: 'only' both filters and bills, 'maxResults caps billed domains', and run_max_items 'fills maxResults when you leave it unset, so setting maxResults higher can bill more than is returned.' It also restates input normalization (URL scheme/www/path stripping, dedupe, 10,000 cap) and rootDomainOnly's registrable-domain reduction, which is partly duplicative of the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource — bulk RDAP/WHOIS registration and expiry lookups for many domains — and enumerates the returned data classes (registrar, created/updated/expiry, days to expiry, transfer lock, nameservers, DNSSEC). It explicitly differentiates itself from email_domain_security_checker (SPF/DKIM/DMARC) and company_website_enricher (site content), so an agent can route without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit use cases (portfolio renewal audits, availability checks, vendor/phishing look-alike registrar verification) and an explicit exclusion with a named alternative: 'Do not use for website content, uptime or email-auth checks (use email_domain_security_checker).' The only minor gap is that uptime monitoring's sibling is not named, but the when/when-not framing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.