Documentation sections

    Developer platform

    DomainListener API

    Build domain workflows with personal API keys, anonymous WHOIS lookup, public monitor status, and a remote MCP server.

    Authentication

    Use a scoped bearer key.

    Create personal keys in Settings and select only the scopes an integration needs. Keys are shown once, so store them in a server-side environment variable. Public WHOIS and monitor-status endpoints do not require a key.

    First request

    Verify your key with a read.

    Give the key domains:read, then list tracked domains. Successful v1 responses use a data envelope.

    cURL
    curl --request GET https://domainlistener.com/api/v1/domains \
      --header "Authorization: Bearer $DOMAINLISTENER_API_KEY"

    Workspace API

    Tenant-scoped v1 resources

    The base URL is https://domainlistener.com/api/v1. All operations are bound to the API key's owner and scopes.

    ResourceReadWriteScopes
    DomainsGET /api/v1/domainsPOST /api/v1/domainsdomains:read, domains:write
    Domain groupsGET /api/v1/groupsPOST /api/v1/groupsgroups:read, groups:write
    MonitorsGET /api/v1/monitorsPOST /api/v1/monitorsmonitors:read, monitors:write
    Research queueGET /api/v1/research-queuePOST /api/v1/research-queueresearch-queue:read, research-queue:write
    Create a domain
    curl --request POST https://domainlistener.com/api/v1/domains \
      --header "Authorization: Bearer $DOMAINLISTENER_API_KEY" \
      --header "Content-Type: application/json" \
      --data '{"name":"example.com"}'

    Public endpoints

    Lookup and status, without an API key.

    These endpoints are public by design. They expose no workspace management operations.

    WHOIS lookup

    Inspect a public registry record.

    Pass one fully qualified domain name using the required domain parameter. The response includes availability, dates, registrar, nameservers, status values, and DNSSEC data.

    cURL
    curl "https://domainlistener.com/api/whois?domain=example.com"

    Rate limit: 10 requests per minute per IP by default. Inspect RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset.

    400 invalid domain · 422 unavailable TLD data · 429 rate limit · 503 temporary service failure

    Public monitor status

    Read a monitor's public health data.

    A monitor owner must enable public status and configure a slug. The response provides isUp, last check time, active incidents, uptime summaries, response-time series, and recent checks. Unknown or private slugs return 404.

    cURL
    curl "https://domainlistener.com/api/status/your-public-monitor-slug"

    Code examples

    Use your service runtime.

    JavaScript
    const response = await fetch("https://domainlistener.com/api/v1/domains", {
      headers: {
        Authorization: `Bearer ${process.env.DOMAINLISTENER_API_KEY}`,
      },
    });
    
    if (!response.ok) throw new Error(await response.text());
    const { data } = await response.json();
    Python
    import os
    import requests
    
    response = requests.get(
        "https://domainlistener.com/api/v1/domains",
        headers={"Authorization": f"Bearer {os.environ['DOMAINLISTENER_API_KEY']}"},
        timeout=15,
    )
    response.raise_for_status()
    domains = response.json()["data"]

    MCP

    Connect a remote MCP client.

    Use the Streamable HTTP server at https://www.domainlistener.com/api/mcp. Claude discovers the OAuth connection automatically; authenticate in your client and approve its read-only access request.

    MCP client configuration
    {
      "mcpServers": {
        "domainlistener": {
          "type": "http",
          "url": "https://www.domainlistener.com/api/mcp"
        }
      }
    }

    No desktop client secret is needed: public OAuth clients use PKCE. Personal API-key headers remain available for advanced automation, with reads limited to 120 requests per minute and writes to 30.