Skip to content

API Documentation

Integrate WHOIS lookups, DNS checks, blacklist monitoring, and batch domain analysis into your applications with our REST API.

Base URL https://api.whoiswolf.app

Quick Start

Get up and running with the WHOIS Wolf API in under a minute. All responses are returned in JSON format.

Your First Request

Run a WHOIS lookup for any domain with a single HTTP request:

# Look up WHOIS data for any domain
curl "https://api.whoiswolf.app/whois?domain=google.com"
const response = await fetch('https://api.whoiswolf.app/whois?domain=google.com');
const data = await response.json();
console.log(data);
import requests

response = requests.get('https://api.whoiswolf.app/whois', params={'domain': 'google.com'})
data = response.json()
print(data)
No API key required for free tier. You can make up to 1,000 lookups per month without authentication. For higher limits, upgrade your plan and include your API key in request headers.

Authentication

Free-tier requests (up to 1,000 lookups/month) require no authentication. For Pro plans and above, include your API key in the request headers:

# Include your API key in the Authorization header
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.whoiswolf.app/whois?domain=example.com"

Getting Your API Key

  1. Sign in at whoiswolf.app using Google or email
  2. Subscribe to a Pro plan or higher
  3. Your API key is available in your account dashboard after subscribing
Keep your API key secret. Do not expose it in client-side JavaScript or public repositories. Use environment variables or a backend proxy for browser-based applications.

Base URL

All API requests should be made to:

https://api.whoiswolf.app

All endpoints return JSON. Responses include appropriate HTTP status codes. HTTPS is required for all requests.

Endpoint Reference

GET /whois?domain={domain}

Retrieve WHOIS registration data for a domain, including registrar, registrant, dates, name servers, and status codes with health warnings.

Parameters

ParameterTypeDescription
domain required string The domain name to look up (e.g., google.com)
curl "https://api.whoiswolf.app/whois?domain=google.com"
const response = await fetch('https://api.whoiswolf.app/whois?domain=google.com');
const data = await response.json();
console.log(data.registrar, data.expires);
import requests

response = requests.get('https://api.whoiswolf.app/whois', params={'domain': 'google.com'})
data = response.json()
print(f"Registrar: {data['registrar']}")
print(f"Expires: {data['expires']}")
Example Response
{
  "domain": "google.com",
  "available": false,
  "registrar": "MarkMonitor Inc.",
  "registrant": "Google LLC",
  "created": "1997-09-15T04:00:00Z",
  "updated": "2019-09-09T15:39:04Z",
  "expires": "2028-09-14T04:00:00Z",
  "status": [
    "clientDeleteProhibited",
    "clientTransferProhibited",
    "clientUpdateProhibited",
    "serverDeleteProhibited",
    "serverTransferProhibited",
    "serverUpdateProhibited"
  ],
  "nameservers": [
    "ns1.google.com",
    "ns2.google.com",
    "ns3.google.com",
    "ns4.google.com"
  ]
}
GET /dns/{domain}

Check DNS propagation status for a domain across multiple global resolvers including Google, Cloudflare, OpenDNS, and Quad9.

Path Parameters

ParameterTypeDescription
domain required string The domain name to check (e.g., example.com)
curl "https://api.whoiswolf.app/dns/example.com"
const response = await fetch('https://api.whoiswolf.app/dns/example.com');
const data = await response.json();
console.log(data.resolvers);
import requests

response = requests.get('https://api.whoiswolf.app/dns/example.com')
data = response.json()
for resolver in data['resolvers']:
    print(f"{resolver['name']}: {resolver['ip']}")
Example Response
{
  "domain": "example.com",
  "propagated": true,
  "resolvers": [
    {
      "name": "Google",
      "ip": "8.8.8.8",
      "resolved": true,
      "address": "93.184.216.34",
      "responseTime": 12
    },
    {
      "name": "Cloudflare",
      "ip": "1.1.1.1",
      "resolved": true,
      "address": "93.184.216.34",
      "responseTime": 8
    },
    {
      "name": "OpenDNS",
      "ip": "208.67.222.222",
      "resolved": true,
      "address": "93.184.216.34",
      "responseTime": 15
    },
    {
      "name": "Quad9",
      "ip": "9.9.9.9",
      "resolved": true,
      "address": "93.184.216.34",
      "responseTime": 18
    }
  ]
}
GET /dns/{domain}/records

Retrieve detailed DNS records for a domain including A, AAAA, MX, TXT, NS, and SOA records with TTL values.

Path Parameters

ParameterTypeDescription
domain required string The domain name to query (e.g., example.com)
curl "https://api.whoiswolf.app/dns/example.com/records"
const response = await fetch('https://api.whoiswolf.app/dns/example.com/records');
const data = await response.json();
console.log(data.records);
import requests

response = requests.get('https://api.whoiswolf.app/dns/example.com/records')
data = response.json()
for record in data['records']:
    print(f"{record['type']}: {record['value']} (TTL: {record['ttl']})")
Example Response
{
  "domain": "example.com",
  "records": [
    { "type": "A", "value": "93.184.216.34", "ttl": 3600 },
    { "type": "AAAA", "value": "2606:2800:220:1:248:1893:25c8:1946", "ttl": 3600 },
    { "type": "MX", "value": "0 .", "ttl": 3600 },
    { "type": "NS", "value": "a.iana-servers.net", "ttl": 86400 },
    { "type": "NS", "value": "b.iana-servers.net", "ttl": 86400 },
    { "type": "TXT", "value": "v=spf1 -all", "ttl": 3600 },
    { "type": "SOA", "value": "ns.icann.org hostmaster.icann.org 2024010101 7200 3600 1209600 3600", "ttl": 3600 }
  ]
}
GET /blacklist?domain={domain}

Check a domain's reputation against 16 DNS-based blackhole list (DNSBL) providers. Useful for detecting domains flagged for spam, malware, or phishing.

Parameters

ParameterTypeDescription
domain required string The domain to check against blacklists
curl "https://api.whoiswolf.app/blacklist?domain=example.com"
const response = await fetch('https://api.whoiswolf.app/blacklist?domain=example.com');
const data = await response.json();
console.log(`Listed: ${data.listed}, Clean: ${data.clean}`);
import requests

response = requests.get('https://api.whoiswolf.app/blacklist', params={'domain': 'example.com'})
data = response.json()
print(f"Blacklisted: {data['listed']}/{data['total']} providers")
Example Response
{
  "domain": "example.com",
  "clean": true,
  "listed": 0,
  "total": 16,
  "providers": [
    { "name": "Spamhaus ZEN", "listed": false },
    { "name": "Barracuda", "listed": false },
    { "name": "SURBL", "listed": false },
    { "name": "SpamCop", "listed": false }
  ]
}
POST /batch/check

Check multiple domains in a single request. Returns status information for each domain. Requires authentication for paid plans.

Request Body

FieldTypeDescription
urls required string[] Array of domain names to check (max varies by plan)
curl -X POST "https://api.whoiswolf.app/batch/check" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"urls": ["google.com", "github.com", "example.com"]}'
const response = await fetch('https://api.whoiswolf.app/batch/check', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    urls: ['google.com', 'github.com', 'example.com']
  })
});
const data = await response.json();
console.log(data.results);
import requests

response = requests.post(
    'https://api.whoiswolf.app/batch/check',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={'urls': ['google.com', 'github.com', 'example.com']}
)
data = response.json()
for result in data['results']:
    print(f"{result['domain']}: {result['status']}")
Example Response
{
  "results": [
    {
      "domain": "google.com",
      "status": "registered",
      "available": false,
      "registrar": "MarkMonitor Inc."
    },
    {
      "domain": "github.com",
      "status": "registered",
      "available": false,
      "registrar": "MarkMonitor Inc."
    },
    {
      "domain": "example.com",
      "status": "registered",
      "available": false,
      "registrar": "IANA"
    }
  ]
}

Authentication Endpoints

These endpoints handle user account creation and authentication. Used internally by the WHOIS Wolf web app.

MethodEndpointDescription
POST /auth/google Sign in with Google OAuth. Send the Google ID token in the request body.
POST /auth/email/register Register a new account with email and password.
POST /auth/email/login Sign in with email and password. Returns a session token.
These endpoints are designed for the WHOIS Wolf web application. For programmatic API access, use your API key in the Authorization header as described in the Authentication section.

Rate Limits

API requests are rate-limited based on your subscription tier. Limits reset on the 1st of each calendar month.

Plan Monthly Price Lookups / Month Batch Size
Free $0 1,000 5 domains
Starter $3/mo 10,000 25 domains
Pro $7/mo 75,000 100 domains
Business $19/mo 300,000 250 domains
Enterprise $49/mo 1,500,000 500 domains
Agency $99/mo 5,000,000 1,000 domains

Annual billing is available at a 25% discount. See pricing for details.

Rate limit headers are included in every API response:
X-RateLimit-Limit — your monthly limit
X-RateLimit-Remaining — lookups remaining this month
X-RateLimit-Reset — Unix timestamp when your limit resets

Need More Lookups?

Upgrade your plan to unlock higher limits, batch lookups, and API key access.

View Pricing Plans

Error Codes

The API uses standard HTTP status codes to indicate the success or failure of a request. Error responses include a JSON body with details.

Code Status Description
400 Bad Request Missing or invalid parameters. Check the domain parameter is a valid domain name.
401 Unauthorized Missing or invalid API key. Ensure your Authorization header is correct.
403 Forbidden Your plan does not include access to this endpoint, or your account has been suspended.
404 Not Found The requested domain or resource was not found. Verify the domain name is correct.
429 Too Many Requests Monthly rate limit exceeded. Upgrade your plan for higher limits.
500 Internal Server Error An unexpected error occurred. Try again later or contact support.
Error Response Format
{
  "error": "Rate limit exceeded",
  "code": 429,
  "message": "You have exceeded your monthly lookup limit of 1,000. Upgrade your plan for more lookups."
}