{
  "_meta": {
    "description": "Machine-readable companion to /domain-registrar-api-access/. For each registrar this records whether a public domain API exists, the auth model, whether scoped tokens / OAuth / webhooks are supported, the sandbox and OpenAPI URLs, the rate limit, any account-size gating, and the access TIER. The factual API fields mirror Open Domain Data's registrar_api_capabilities dataset (sourced from each registrar's own documentation); the access-tier classification (ungated / account-gated / no-public-api) is Best-Domain-Registrars' editorial interpretation on top of those facts. Registrars on this site without a verified record in that dataset are listed under not_yet_covered rather than guessed.",
    "site": "https://www.best-domain-registrars.com",
    "generated_for": "/data/api-access.json",
    "page_url": "https://www.best-domain-registrars.com/domain-registrar-api-access/",
    "last_updated": "2026-08-19",
    "methodology_url": "https://www.best-domain-registrars.com/methodology/",
    "source_dataset": {
      "publisher": "Open Domain Data",
      "id": "registrar_api_capabilities",
      "version": "2026.06",
      "last_checked": "2026-06-28",
      "url": "https://opendomaindata.org/datasets/registrar-api-capabilities",
      "json": "https://opendomaindata.org/api/registrar_api_capabilities.json"
    },
    "tier_definitions": [
      {
        "tier": "ungated",
        "label": "Ungated",
        "description": "A public API any account can use without an account-size or plan gate."
      },
      {
        "tier": "account-gated",
        "label": "Account-gated",
        "description": "A public API whose production access depends on account size or plan tier."
      },
      {
        "tier": "no-public-api",
        "label": "No public API",
        "description": "No public domain API is offered."
      }
    ],
    "field_notes": {
      "tier": "Editorial classification of the barrier to GETTING production API access.",
      "gating": "Account-size or plan requirement on production access; null when ungated.",
      "rate_limit": "Throughput ceiling once access is granted, per the registrar's docs.",
      "live_tested": "true when api_available was confirmed against a live endpoint by Open Domain Data (independently_tested), not just read from docs."
    }
  },
  "counts": {
    "total": 7,
    "with_public_api": 6,
    "by_tier": {
      "ungated": 5,
      "account-gated": 1,
      "no-public-api": 1
    },
    "with_scoped_tokens": 1,
    "with_sandbox": 3,
    "with_oauth": 0,
    "with_webhooks": 0
  },
  "registrars": [
    {
      "registrar_id": "cloudflare-registrar",
      "name": "Cloudflare Registrar",
      "profile_url": "https://www.best-domain-registrars.com/registrars/cloudflare-registrar/",
      "tier": "ungated",
      "tier_label": "Ungated",
      "api_available": true,
      "auth_model": "API key + scoped API tokens",
      "scoped_tokens": true,
      "oauth": false,
      "webhooks": false,
      "sandbox": null,
      "openapi": "https://developers.cloudflare.com/api/",
      "rate_limit": "1,200 requests / 5 min per account",
      "gating": null,
      "live_tested": false,
      "docs_url": "https://developers.cloudflare.com/registrar/",
      "note": "The most agent-ready API in the set: the only registrar here with scoped, revocable API tokens and a published OpenAPI reference, on a generous account-wide limit. No sandbox — you test against the live account.",
      "sources": [
        "https://developers.cloudflare.com/registrar/",
        "https://developers.cloudflare.com/fundamentals/api/get-started/create-token/",
        "https://developers.cloudflare.com/api/",
        "https://developers.cloudflare.com/fundamentals/api/reference/limits/"
      ]
    },
    {
      "registrar_id": "porkbun",
      "name": "Porkbun",
      "profile_url": "https://www.best-domain-registrars.com/registrars/porkbun/",
      "tier": "ungated",
      "tier_label": "Ungated",
      "api_available": true,
      "auth_model": "API key (key + secret pair)",
      "scoped_tokens": false,
      "oauth": false,
      "webhooks": false,
      "sandbox": null,
      "openapi": null,
      "rate_limit": "10 requests / 10s",
      "gating": null,
      "live_tested": true,
      "docs_url": "https://porkbun.com/api/json/v3/documentation",
      "note": "A clean REST API open to any account, with a public pricing endpoint that returns data on an unauthenticated request — confirmed live on 2026-06-28. The trade-off is a tight rate limit and no sandbox.",
      "sources": [
        "https://porkbun.com/api/json/v3/documentation",
        "https://api.porkbun.com/api/json/v3/pricing/get"
      ]
    },
    {
      "registrar_id": "namecheap",
      "name": "Namecheap",
      "profile_url": "https://www.best-domain-registrars.com/registrars/namecheap/",
      "tier": "ungated",
      "tier_label": "Ungated",
      "api_available": true,
      "auth_model": "API key (+ IP allowlist)",
      "scoped_tokens": false,
      "oauth": false,
      "webhooks": false,
      "sandbox": "https://api.sandbox.namecheap.com",
      "openapi": null,
      "rate_limit": "20 requests / min per IP",
      "gating": null,
      "live_tested": false,
      "docs_url": "https://www.namecheap.com/support/api/intro/",
      "note": "Open to any account and one of the few with a real sandbox, but you must allowlist the calling server's IP before the key works, and the per-IP limit is modest.",
      "sources": [
        "https://www.namecheap.com/support/api/intro/"
      ]
    },
    {
      "registrar_id": "spaceship",
      "name": "Spaceship",
      "profile_url": "https://www.best-domain-registrars.com/registrars/spaceship/",
      "tier": "ungated",
      "tier_label": "Ungated",
      "api_available": true,
      "auth_model": "API key",
      "scoped_tokens": false,
      "oauth": false,
      "webhooks": false,
      "sandbox": null,
      "openapi": null,
      "rate_limit": "Per-endpoint (e.g. 300 requests / 300s per user for DNS record listing)",
      "gating": null,
      "live_tested": false,
      "docs_url": "https://docs.spaceship.dev/",
      "note": "A newer API documented per-endpoint rather than with one global ceiling; API-key auth, no sandbox or scoped tokens yet.",
      "sources": [
        "https://docs.spaceship.dev/"
      ]
    },
    {
      "registrar_id": "dynadot",
      "name": "Dynadot",
      "profile_url": "https://www.best-domain-registrars.com/registrars/dynadot/",
      "tier": "ungated",
      "tier_label": "Ungated",
      "api_available": true,
      "auth_model": "API key",
      "scoped_tokens": false,
      "oauth": false,
      "webhooks": false,
      "sandbox": "https://api-sandbox.dynadot.com",
      "openapi": null,
      "rate_limit": "One concurrent request per account",
      "gating": null,
      "live_tested": false,
      "docs_url": "https://www.dynadot.com/domain/api",
      "note": "Open to any account and offers a sandbox, but the throughput is the tightest in the set: a single concurrent request per account, so high-volume automation has to serialise calls.",
      "sources": [
        "https://www.dynadot.com/domain/api"
      ]
    },
    {
      "registrar_id": "godaddy",
      "name": "GoDaddy",
      "profile_url": "https://www.best-domain-registrars.com/registrars/godaddy/",
      "tier": "account-gated",
      "tier_label": "Account-gated",
      "api_available": true,
      "auth_model": "API key (key + secret)",
      "scoped_tokens": false,
      "oauth": false,
      "webhooks": false,
      "sandbox": "https://api.ote-godaddy.com",
      "openapi": null,
      "rate_limit": "Documented per endpoint",
      "gating": "Production access to the Availability API requires 50+ domains; the Management and DNS APIs require 1+ domain or a Domain Pro Plan",
      "live_tested": false,
      "docs_url": "https://developer.godaddy.com/doc/endpoint/domains",
      "note": "The only registrar in the set that gates production API access by account size: the domain-Availability API is limited to accounts with 50 or more domains, while Management and DNS need at least one domain or a Domain Pro Plan. An OTE sandbox is available for development.",
      "sources": [
        "https://developer.godaddy.com/doc/endpoint/domains",
        "https://developer.godaddy.com/getstarted"
      ]
    },
    {
      "registrar_id": "squarespace-domains",
      "name": "Squarespace Domains",
      "profile_url": "https://www.best-domain-registrars.com/registrars/squarespace-domains/",
      "tier": "no-public-api",
      "tier_label": "No public API",
      "api_available": false,
      "auth_model": "None — no public domain API",
      "scoped_tokens": false,
      "oauth": false,
      "webhooks": false,
      "sandbox": null,
      "openapi": null,
      "rate_limit": "n/a — no public domain API",
      "gating": null,
      "live_tested": false,
      "docs_url": "https://support.squarespace.com/hc/en-us/sections/360001172391-Domains",
      "note": "No public domain API. Domains registered here are managed only through the Squarespace dashboard, so programmatic or agent-driven management is not possible.",
      "sources": [
        "https://support.squarespace.com/hc/en-us/sections/360001172391-Domains"
      ]
    }
  ],
  "not_yet_covered": [
    {
      "registrar_id": "namesilo",
      "name": "NameSilo",
      "reason": "On this site but without a verified record in Open Domain Data's registrar_api_capabilities dataset at this version; omitted rather than guessed."
    }
  ]
}