---
title: Domain registration APIs compared
slug: domain-api-providers
url: "https://toolweight.dev/compare/domain-api-providers"
question: Which registrar has the best API for registering domains programmatically?
tools: 15
fields: 26
last_verified: 2026-07-23
freshness: 31%
verify_cadence: 30d
license: CC-BY-4.0
---

# Domain registration APIs

> **Which registrar has the best API for registering domains programmatically?**
>
> Porkbun, Name.com and NameSilo hand you a working key for nothing. Namecheap wants US$50 in the account before production calls succeed, GoDaddy wants ten domains or a paid club membership, and OpenSRS, Hexonet and Synergy Wholesale want a signed reseller agreement first. Route 53 and Vercel are the fastest to wire up and the dearest per domain.

## At a glance

|  |  |
| --- | --- |
| Canonical | https://toolweight.dev/compare/domain-api-providers |
| Tools compared | 15 |
| Fields compared | 26 |
| Last verified | 2026-07-23 (today) |
| Verify cadence | 30d |
| Freshness | 31% (mean cell confidence) |
| Killer field | min_spend_to_api |
| Scoring | Weighted, re-rankable |
| Licence | CC-BY-4.0 — https://creativecommons.org/licenses/by/4.0/ |

## Ranking — default weights

| # | Tool | Score | Coverage | One-liner |
| --- | --- | --- | --- | --- |
| 1 | [Hexonet](https://toolweight.dev/tools/hexonet) | 80.4 | 92% | Wholesale platform with 1,000+ TLDs, bulk checks and a free OT&E on signup |
| 2 | [Gandi](https://toolweight.dev/tools/gandi) | 77.8 | 96% | European registrar with huge TLD breadth and post-2023 premium pricing. |
| 3 | [Name.com](https://toolweight.dev/tools/name-com) | 76.7 | 92% | Clean REST API with streaming search, a dev environment and auth-code retrieval |
| 4 | [Netim](https://toolweight.dev/tools/netim) | 75.4 | 80% | French registrar with unusually deep ccTLD coverage and corporate controls. |
| 5 | [OpenSRS](https://toolweight.dev/tools/opensrs) | 74.1 | 92% | Tucows' wholesale platform — deep API, real OT&E, signed contract required |
| 6 | [Internet.bs](https://toolweight.dev/tools/internetbs) | 72.9 | 88% | Old-school reseller API with published test credentials and no onboarding gate |
| 7 | [NameSilo](https://toolweight.dev/tools/namesilo) | 72.2 | 96% | Flat renewals, free privacy and portfolio tooling for people holding hundreds. |
| 8 | [AWS Route 53 Domains](https://toolweight.dev/tools/route53-domains) | 71.4 | 96% | SigV4 domain registration inside AWS, with no sandbox and hard throttling |
| 9 | [Dynadot](https://toolweight.dev/tools/dynadot) | 68.7 | 88% | Domainer-oriented registrar with strong bulk tools and a built-in marketplace. |
| 10 | [Synergy Wholesale](https://toolweight.dev/tools/synergy-wholesale) | 65.2 | 92% | Australian wholesale registrar — near-cost .au if you can open an account. |
| 11 | [GoDaddy](https://toolweight.dev/tools/godaddy) | 64.7 | 100% | The default registrar for people who have never compared registrars. |
| 12 | [Direct EPP (own accreditation)](https://toolweight.dev/tools/direct-epp) | 63.3 | 92% | Become the registrar: ICANN accreditation plus an EPP client per registry |
| 13 | [Namecheap](https://toolweight.dev/tools/namecheap) | 56.5 | 100% | The mainstream cheap registrar: heavy first-year discounts, higher renewals. |
| 14 | [Vercel Domains](https://toolweight.dev/tools/vercel-domains) | 51.0 | 96% | Buy a domain with the token that runs your deploys — narrow list, high prices |
| 15 | [Porkbun](https://toolweight.dev/tools/porkbun) | 48.1 | 96% | Near-cost pricing with free privacy, SSL and forwarding, and a clean exit. |

Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.dev/mcp`.

## Comparison

### Access & onboarding

| Tool | Spend to first call ( up front) | Sandbox / OTE | Reseller contract | Min prepaid balance ( float) | ICANN accredited | API auth |
| --- | --- | --- | --- | --- | --- | --- |
| Hexonet | $0  up front | ● | ● | — | ● | user-password |
| Gandi | $0  up front | ● | ○ | $0  float | ● | bearer-token |
| Name.com | $0  up front | ● | ○ | $0  float | ● | basic-auth |
| Netim | — | — | ◐ | — | ● | api-key |
| OpenSRS | $500  up front | ● | ● | — | ● | api-key-ip-allowlist |
| Internet.bs | $0  up front | ● | ○ | $0  float | ● | api-key |
| NameSilo | $0  up front | ● | ○ | $0  float | ● | api-key |
| AWS Route 53 Domains | $0  up front | ○ | ○ | $0  float | ◐ | sigv4 |
| Dynadot | $0  up front | ○ | ○ | — | ● | api-key |
| Synergy Wholesale | $0  up front | ○ | ● | — | ◐ | api-key-ip-allowlist |
| GoDaddy | $30  up front | ● | ◐ | $0  float | ● | api-key |
| Direct EPP (own accreditation) | $7,500  up front | ● | ○ | — | ● | epp-xml |
| Namecheap | $50  up front | ● | ○ | $50  float | ● | api-key-ip-allowlist |
| Vercel Domains | $0  up front | ○ | ○ | $0  float | ○ | bearer-token |
| Porkbun | $0  up front | ○ | ○ | $0  float | ● | api-key |

### API surface

| Tool | TLDs offered ( TLDs) | .au support | Register endpoint | Bulk availability | Suggestion API | Transfer in/out | DNS record API | EPP code via API | Auto-renew control | Webhooks / events | Contact model | Privacy via API | Rate limit ( req/min) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Hexonet | 1,000  TLDs | ● | ● | ● | ◐ | ● | ● | ● | ● | ◐ | reusable-handles | paid-addon | — |
| Gandi | 750  TLDs | ◐ | ● | ◐ | ◐ | ● | ● | ● | ● | ○ | reusable-handles | free-and-default | — |
| Name.com | 500  TLDs | — | ● | ● | ● | ● | ● | ● | ● | ○ | inline-per-order | paid-addon | — |
| Netim | 1,000  TLDs | ◐ | ● | ● | — | ● | ● | ● | ● | ○ | reusable-handles | paid-addon | — |
| OpenSRS | 800  TLDs | ● | ● | ◐ | ● | ● | ● | ● | ● | ◐ | reusable-handles | paid-addon | — |
| Internet.bs | 400  TLDs | — | ● | ◐ | ○ | ● | ● | ● | ● | ○ | inline-per-order | free-and-default | — |
| NameSilo | 500  TLDs | ○ | ● | ● | ○ | ● | ● | ◐ | ● | ○ | reusable-handles | free-and-default | — |
| AWS Route 53 Domains | 180  TLDs | ◐ | ● | ○ | ● | ● | ● | ● | ● | ◐ | inline-per-order | free-toggle-api | — |
| Dynadot | 550  TLDs | — | ● | ● | ○ | ● | ◐ | ● | ● | ○ | reusable-handles | free-toggle-api | — |
| Synergy Wholesale | 300  TLDs | ● | ● | ● | ○ | ● | ● | ● | ● | ○ | inline-per-order | paid-addon | — |
| GoDaddy | 400  TLDs | ◐ | ● | ● | ● | ● | ● | ○ | ● | ○ | inline-per-order | paid-addon | 60  req/min |
| Direct EPP (own accreditation) | — | ● | ● | ◐ | ○ | ● | ○ | ● | ● | ◐ | reusable-handles | not-in-api | 600  req/min |
| Namecheap | 400  TLDs | ○ | ● | ● | ○ | ● | ◐ | ○ | ◐ | ○ | inline-per-order | free-toggle-api | 20  req/min |
| Vercel Domains | 50  TLDs | ○ | ● | ○ | ○ | ◐ | ● | ○ | ◐ | ◐ | account-default | free-and-default | — |
| Porkbun | 500  TLDs | ○ | — | ○ | ○ | ○ | ● | ○ | ○ | ○ | account-default | free-and-default | 6  req/min |

### Pricing

| Tool | Pricing basis | Renewal price in API | .com renewal (/yr) |
| --- | --- | --- | --- |
| Hexonet | wholesale | ● | $11.3 /yr |
| Gandi | retail | ● | $24 /yr |
| Name.com | retail | ● | $14.99 /yr |
| Netim | wholesale-tiered | ● | $12 /yr |
| OpenSRS | wholesale-tiered | ● | $11.5 /yr |
| Internet.bs | retail | — | $12.5 /yr |
| NameSilo | retail | ● | $13.95 /yr |
| AWS Route 53 Domains | retail | ● | $13 /yr |
| Dynadot | retail | ● | $12.99 /yr |
| Synergy Wholesale | wholesale | ● | $11 /yr |
| GoDaddy | retail-premium | ◐ | $21.99 /yr |
| Direct EPP (own accreditation) | wholesale | ○ | $10.98 /yr |
| Namecheap | retail | ● | $15.98 /yr |
| Vercel Domains | retail-premium | ◐ | $20 /yr |
| Porkbun | retail | ● | $11.06 /yr |

### Agentic

| Tool | MCP server | Machine-readable spec |
| --- | --- | --- |
| Hexonet | ○ | ◐ |
| Gandi | ○ | ◐ |
| Name.com | ○ | ◐ |
| Netim | ○ | ◐ |
| OpenSRS | ○ | ○ |
| Internet.bs | ○ | ○ |
| NameSilo | ○ | ○ |
| AWS Route 53 Domains | ◐ | ● |
| Dynadot | ○ | ○ |
| Synergy Wholesale | ○ | ○ |
| GoDaddy | ○ | ● |
| Direct EPP (own accreditation) | ○ | ○ |
| Namecheap | ○ | ○ |
| Vercel Domains | ● | ● |
| Porkbun | ○ | ○ |

### Traction

| Tool | API since |
| --- | --- |
| Hexonet | 1999 |
| Gandi | 2007 |
| Name.com | 2015 |
| Netim | 2010 |
| OpenSRS | 1999 |
| Internet.bs | 2008 |
| NameSilo | 2012 |
| AWS Route 53 Domains | 2014 |
| Dynadot | 2008 |
| Synergy Wholesale | 2011 |
| GoDaddy | 2015 |
| Direct EPP (own accreditation) | 2004 |
| Namecheap | 2008 |
| Vercel Domains | 2018 |
| Porkbun | 2019 |

### Positioning

| Tool | Positioning |
| --- | --- |
| Hexonet | High-coverage wholesale platform within Team Internet, aimed at resellers and registries. |
| Gandi | European registrar with a genuinely modern REST API and premium pricing to match. |
| Name.com | Developer-facing retail registrar; the API is treated as a product, not a support burden. |
| Netim | French registrar selling breadth of extensions, including ccTLDs needing local presence. |
| OpenSRS | The incumbent wholesale platform for hosts and platforms reselling domains at scale. |
| Internet.bs | Long-running reseller-oriented registrar with an open, evaluate-before-you-sign API. |
| NameSilo | Low-margin retail registrar that treats API access and free privacy as table stakes. |
| AWS Route 53 Domains | Domain registration as an AWS service — IAM, CloudTrail and one bill, not a registrar product. |
| Dynadot | Value registrar with a long-lived, unglamorous API aimed at bulk domain investors. |
| Synergy Wholesale | Australian wholesale provider for hosts and agencies reselling .au and hosting together. |
| GoDaddy | Mass-market registrar whose API is now positioned as a benefit for larger customers. |
| Direct EPP (own accreditation) | The reference point: registry cost with no margin, in exchange for becoming a regulated party. |
| Namecheap | Retail registrar with a long-standing reseller-flavoured API and a hard IP allowlist. |
| Vercel Domains | Domain purchase as a convenience inside a deployment platform, not a registrar business. |
| Porkbun | Cheap retail registrar whose API exists mainly so developers can automate DNS. |

## Field registry

| Field | id | Group | Type | Unit | Better | Default weight | Definition |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | `min_spend_to_api` | access | currency | up front | lower | 10 | Lowest total USD outlay standing between a new signup and an authenticated call the live registration endpoint will accept: account-balance minimums, opening deposits, mandatory memberships, accreditation fees. Excludes the price of the domain. Where a free sandbox exists but production is gated, the production figure is used. |
| Sandbox / OTE | `sandbox_env` | access | tristate | — | higher | 8 | Is there a separate test environment where a registration call succeeds against a fake registry and costs nothing? Partial means a limited test host that cannot exercise registration, transfer and renewal end to end. |
| Reseller contract | `reseller_contract` | access | tristate | — | lower | 7 | Must a reseller or partner agreement be applied for and countersigned before production API access is granted? Partial means an application form and manual approval but no negotiated contract. Lower is better. |
| Min prepaid balance | `min_prepaid_balance` | access | currency | float | lower | 6 | Smallest documented account float the provider requires you to hold before the API will complete a registration. Zero means registrations bill a stored card or an invoice. Null means the provider is prepaid but publishes no minimum. |
| ICANN accredited | `icann_accredited` | access | tristate | — | higher | 4 | Is the entity behind the API an ICANN-accredited registrar in its own right, rather than a reseller sitting on someone else's accreditation? Partial means accredited for part of the catalogue only. Determines who your registrant relationship is actually with when things go wrong. |
| API auth | `api_auth` | access | enum | — | higher | 5 | How the API authenticates callers, ranked by how well it survives ephemeral infrastructure. A bearer token or plain key beats anything that pins you to a static IP allowlist, which beats raw EPP over mutual TLS. |
| TLDs offered | `tld_count` | features | number | TLDs | higher | 6 | Approximate count of top-level domains registrable through the API, as advertised by the provider. Treat as an order of magnitude, not a precise figure — every provider counts differently and registry-only access inflates the number. |
| .au support | `au_support` | features | tristate | — | higher | 7 | Can .com.au and direct .au names be registered through the API with the auDA eligibility data — ABN or ACN, registrant ID type, eligibility reason — carried in the call? Partial means the TLD is sold but the eligibility fields are undocumented, manual, or .com.au only. |
| Register endpoint | `register_api` | features | tristate | — | higher | 9 | Can a brand-new domain be purchased and registered end to end from an API call, with no dashboard step? Partial means registration exists but needs manual approval, a pre-created order, or an undocumented endpoint. |
| Bulk availability | `bulk_availability` | features | tristate | — | higher | 6 | Does one availability call accept many names, or stream results? Partial means several names per call but a low cap, or a bulk path that drops premium and pricing data. |
| Suggestion API | `suggestion_api` | features | tristate | — | higher | 4 | Is there an endpoint that returns alternative available names for a query — spins, synonyms, other TLDs — rather than a yes/no on one string? |
| Transfer in/out | `transfer_api` | features | tristate | — | higher | 6 | Can an inbound transfer be initiated with an auth code and its status polled through the API? Partial means transfer-in only, or an endpoint that creates an order still needing dashboard confirmation. |
| DNS record API | `dns_record_api` | features | tristate | — | higher | 6 | Can individual DNS records be created, updated and deleted through the API on the provider's own nameservers? Partial means whole-zone replacement only, which forces read-modify-write and races under concurrency. |
| EPP code via API | `epp_code_api` | features | tristate | — | higher | 7 | Does an API call return the domain's authorisation code, so it can be handed to a customer who is leaving? Partial means an endpoint that triggers an email to the registrant instead of returning the code in the response. |
| Auto-renew control | `auto_renew_api` | features | tristate | — | higher | 5 | Can auto-renew be switched on and off per domain through the API, and can an explicit renewal be triggered? Partial means one of the two, typically renew-now with no auto-renew flag. |
| Webhooks / events | `webhook_events` | features | tristate | — | higher | 5 | Does the provider push lifecycle events — registration completed, transfer approved, expiry approaching — to a URL you own? Partial means a pollable event queue, or generic platform webhooks with thin domain coverage. |
| Contact model | `contact_model` | features | enum | — | higher | 6 | How registrant contacts are supplied. Reusable handles means contact objects created once and referenced by ID. Inline means a full contact block on every create. Account-default means the domain inherits your account details, so you cannot register on a customer's behalf. |
| Privacy via API | `privacy_api` | features | enum | — | higher | 4 | Whether WHOIS/RDAP privacy can be controlled from the API and what it costs at your tier. Free-and-default means applied on registration with no call and no charge; paid-addon means a billable line item you must toggle yourself. |
| Rate limit | `rate_limit` | features | number | req/min | higher | 5 | Documented sustained request ceiling per key, normalised to requests per minute, using the tightest published figure where several apply. Null where the provider publishes nothing credible — which is most of them. |
| Pricing basis | `pricing_basis` | pricing | enum | — | higher | 7 | What the API charges you. Wholesale means registry cost plus a flat reseller margin for everyone; wholesale-tiered means the margin falls with volume; retail means you pay what a walk-in customer pays; retail-premium means visibly above the retail market. |
| Renewal price in API | `renewal_price_api` | pricing | tristate | — | higher | 8 | Does an endpoint return the renewal price for a TLD at your tier, separate from the registration price? Partial means a single price field that silently conflates the two, which is how first-year discounts end up in customer-facing quotes. |
| .com renewal | `com_renewal_usd` | pricing | currency | /yr | lower | 7 | Approximate USD price the API returns to renew a .com for one year at the entry tier, ex-tax, mid-2026. Approximate by nature — every figure tracks Verisign's annual wholesale step plus the provider's margin, so read it as a ranking, not a quote. |
| MCP server | `mcp_server` | agentic | tristate | — | higher | 3 | Is there a first-party MCP server exposing these endpoints to coding agents? Partial means the domain operations are reachable through a broader platform MCP server not specific to domains. |
| Machine-readable spec | `openapi_spec` | agentic | tristate | — | higher | 4 | Does the provider publish an OpenAPI, Swagger or equivalent machine-readable schema you can generate a typed client from? Partial means an incomplete or unofficial spec, or a service model that needs translating first. |
| API since | `api_since` | traction | number | — | n/a | 1 | Year the provider first shipped a public programmatic domain interface. Older is not automatically better — several of the oldest here are still XML over HTTP — but it does indicate how unlikely the endpoints are to move under you. |
| Positioning | `positioning` | marketing | text | — | n/a | 0 | Who the provider builds this API for, in its own framing: hobbyist automation, platform reseller, or a convenience for an existing customer base. |

## Presets

| Preset | id | What it optimises for | Weights | Ranked URL |
| --- | --- | --- | --- | --- |
| Cheapest wholesale | `cheapest-wholesale` | Lowest cost per name once you are past the contract, with pricing readable from the API. | com_renewal_usd:10, pricing_basis:9, renewal_price_api:7, privacy_api:3, tld_count:3, min_spend_to_api:2, min_prepaid_balance:2 | https://toolweight.dev/compare/domain-api-providers?w=com_renewal_usd:10,pricing_basis:9,renewal_price_api:7,privacy_api:3,tld_count:3,min_spend_to_api:2,min_prepaid_balance:2 |
| Best .au support | `best-au` | Registering .com.au and direct .au from code, eligibility fields and all. | au_support:10, register_api:6, contact_model:6, epp_code_api:4, transfer_api:3, renewal_price_api:3, sandbox_env:3 | https://toolweight.dev/compare/domain-api-providers?w=au_support:10,register_api:6,contact_model:6,epp_code_api:4,transfer_api:3,renewal_price_api:3,sandbox_env:3 |
| No contract required | `no-contract` | Key today, first registration today. No application, no deposit, no countersignature. | min_spend_to_api:10, reseller_contract:9, min_prepaid_balance:7, sandbox_env:5, api_auth:4, openapi_spec:3 | https://toolweight.dev/compare/domain-api-providers?w=min_spend_to_api:10,reseller_contract:9,min_prepaid_balance:7,sandbox_env:5,api_auth:4,openapi_spec:3 |
| Widest TLD coverage | `widest-tlds` | One integration that can register almost anything, including the awkward ccTLDs. | tld_count:10, register_api:6, au_support:5, transfer_api:4, bulk_availability:4, contact_model:3, suggestion_api:3 | https://toolweight.dev/compare/domain-api-providers?w=tld_count:10,register_api:6,au_support:5,transfer_api:4,bulk_availability:4,contact_model:3,suggestion_api:3 |

## Verdict

This category splits cleanly in two, and the split is contractual rather than technical. On one side sit the retail registrars that bolt an API onto a consumer account — Porkbun, NameSilo, Name.com, Dynadot, Namecheap, Internet.bs. You sign up, click a toggle, get a key, and you are calling the registration endpoint the same afternoon. On the other sit the wholesale platforms — OpenSRS, Hexonet, Synergy Wholesale, and Netim's reseller tier — where an application, a countersigned agreement and a funded prepaid balance stand between you and your first successful create. The APIs on the wholesale side are markedly better: reusable contact handles, renewal pricing per TLD per tier, event queues, auth codes returned inline. You pay for that in onboarding weeks.

The .au question decides this page for a lot of Australian teams, and it decides it early. Registering .com.au or a direct .au from code needs auDA accreditation somewhere in the chain plus eligibility data — an ABN or ACN, a registrant ID type, a declared connection to the name — carried through the registration call. Synergy Wholesale models all of it properly and is the obvious default if you are AU-based and already have an ABN. Tucows' OpenSRS is the credible international alternative. GoDaddy sells .au retail but its documented Domains API schema does not carry the eligibility fields, so the automation stops short of the thing you actually needed. Porkbun, Namecheap and Vercel do not sell it at all. Do not design around a provider until you have registered one AU name through its API by hand.

Sandboxes are scarcer than the marketing suggests. Namecheap, GoDaddy, Name.com, Gandi, OpenSRS and Hexonet run genuine test environments where a create call returns a fake domain and costs nothing. Route 53, Vercel, Porkbun and Synergy Wholesale do not — every integration test is a real registration at a real price, with only a registry grace period to save you if you notice fast. That asymmetry rarely appears on any comparison table and it is the single thing most likely to embarrass a build budget. Assume a hundred dollars of throwaway names if you pick a provider without an OTE.

For most teams shipping a signup flow that offers a domain, the honest answer is Name.com or NameSilo: free key, real availability and pricing endpoints, auth codes retrievable, contact handling that supports registering on someone else's behalf. If domains are the product rather than a feature, go wholesale — the per-name margin and the pricing API pay back the contract inside a few hundred registrations. Use Route 53 only when the domains are yours, they are few, and everything else already lives in AWS. Use Vercel Domains only when the point is that a customer never leaves your onboarding. Both are conveniences priced as conveniences.

## The gate is the contract, not the code

Every one of these APIs is an afternoon's work. Reading the docs, writing a client, handling the create-and-poll dance for asynchronous registrations — none of it is hard, and half the providers ship an SDK. What takes weeks is being allowed to call it in production.

The retail tier gates on money already spent. Namecheap wants US$50 sitting in the account, or twenty domains under management, before it will flip production access on. That is cheap, but it catches teams that built happily against the sandbox and then watched identical code fail live. GoDaddy's mid-2024 change was sharper: ten domains or a paid Discount Domain Club membership, applied to endpoints that had been open for years, and a lot of small integrations died overnight.

The wholesale tier gates on a signature. OpenSRS, Hexonet and Synergy Wholesale all want an application describing what you are building, a countersigned reseller agreement, and a prepaid balance funded before the first live create. None of them publish the opening deposit; it comes from sales, it varies by market, and it is routinely three or four figures. Synergy is the interesting exception in that the real barrier is an ABN rather than a cheque — Australian businesses are often approved the same day. Budget calendar time either way, and start the paperwork on day one of the project rather than the week before launch.

## Testing without burning money

A registration is irreversible in a way that most API calls are not. There is no DELETE that gives you your money back, only a registry grace period that some providers honour and some quietly do not.

Where an OT&E exists, use it properly. Namecheap, GoDaddy, Name.com, Gandi, OpenSRS and Hexonet will all let you register nonsense against a fake registry, and OpenSRS and Hexonet let you exercise transfers and renewals as well, which is where the real bugs live. Sandbox pricing usually does not mirror production, so never assert on prices returned by a test host.

Where no OT&E exists — Route 53, Vercel, Porkbun, Synergy Wholesale — your test plan is real money. Register short-lived names in the cheapest TLD your provider carries, keep them in a dedicated account so the noise stays out of production, and confirm the deletion grace window before you start rather than after. Test the failure paths deliberately too: an unavailable name, a rejected contact, a registry timeout that leaves the operation pending. Those are the branches that hurt at 3am, and they are exactly the branches an OT&E is good at reproducing.

## Availability search is the part that does not scale

Almost every integration in this category starts as a search box, and almost every one of them hits a rate limit before it hits a product decision. The registration endpoint is called rarely. The availability endpoint is called on every keystroke unless you stop it.

The spread is enormous. GoDaddy accepts arrays of names in a single availability POST and ships a separate suggestion endpoint. Name.com streams search results, which is genuinely the nicest developer experience here. Hexonet and OpenSRS both do bulk checks with premium and suggestion data attached. At the other end, Porkbun allows roughly one check every ten seconds, Route 53 checks one name per call and throttles the caller aggressively, and Vercel exposes a single-name status endpoint with nothing bulk behind it.

The usual fix is to stop asking the registrar. Keep a local zone-file-derived or RDAP-backed first pass for the obvious rejections, cache negative results briefly, and only spend a registrar call when the user is close to committing. That also decouples you from the provider, which matters more than it sounds — availability logic is the piece you will want to keep when you switch registrars for price.

## This page is about the API, not the shopfront

Everything ranked above is measured through the developer surface: endpoints, auth, sandboxes, rate limits, wholesale cost, contract terms. Nothing here reflects what the control panel looks like, how loud the checkout is, or what a single name costs a person buying one by hand. Those are different questions with different winners, and a provider that scores badly on this table can be a perfectly good place to park your own domains.

Just buying a domain by hand? → /compare/domain-registrars

## Provenance — every cell, every source

### Hexonet {#hexonet}

Wholesale platform with 1,000+ TLDs, bulk checks and a free OT&E on signup

|  |  |
| --- | --- |
| Site | https://www.hexonet.net |
| Docs | https://wiki.hexonet.net/wiki/API |
| Company | Team Internet Group |
| Founded | 1999 |
| Profile | https://toolweight.dev/tools/hexonet |
| Score (default weights) | 80.4 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Inferred | — | — | Signup gives immediate OT&E access at no cost. A live account needs approval and a funded prepaid balance; no minimum deposit is published, so the true production figure may be higher. | #hexonet-min_spend_to_api |
| Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://wiki.hexonet.net/wiki/API | Free OT&E with the full command set. | #hexonet-sandbox_env |
| Reseller contract | ● | Inferred | — | — | — | #hexonet-reseller_contract |
| Min prepaid balance | — | Unknown | — | — | — | #hexonet-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #hexonet-icann_accredited |
| API auth | user-password | Vendor-claimed | 2026-07-23 | https://wiki.hexonet.net/wiki/API | Login and password parameters on a command-style HTTP interface, with optional IP restriction and role accounts. | #hexonet-api_auth |
| TLDs offered | 1,000  TLDs | Vendor-claimed | 2026-07-23 | https://wiki.hexonet.net/wiki/API | — | #hexonet-tld_count |
| .au support | ● | Inferred | — | — | AU extensions are carried with their eligibility attributes as registry-specific parameters. | #hexonet-au_support |
| Register endpoint | ● | Inferred | — | — | — | #hexonet-register_api |
| Bulk availability | ● | Inferred | — | — | — | #hexonet-bulk_availability |
| Suggestion API | ◐ | Inferred | — | — | — | #hexonet-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #hexonet-transfer_api |
| DNS record API | ● | Inferred | — | — | — | #hexonet-dns_record_api |
| EPP code via API | ● | Inferred | — | — | — | #hexonet-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #hexonet-auto_renew_api |
| Webhooks / events | ◐ | Inferred | — | — | Status events are polled from a queue rather than pushed to a URL. | #hexonet-webhook_events |
| Contact model | reusable-handles | Inferred | — | — | — | #hexonet-contact_model |
| Privacy via API | paid-addon | Inferred | — | — | — | #hexonet-privacy_api |
| Rate limit | — | Unknown | — | — | — | #hexonet-rate_limit |
| Pricing basis | wholesale | Inferred | — | — | — | #hexonet-pricing_basis |
| Renewal price in API | ● | Inferred | — | — | — | #hexonet-renewal_price_api |
| .com renewal | $11.3 /yr | Inferred | — | — | Approximate wholesale. | #hexonet-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #hexonet-mcp_server |
| Machine-readable spec | ◐ | Inferred | — | — | No OpenAPI document, but official open-source SDKs exist for most languages. | #hexonet-openapi_spec |
| API since | 1999 | Inferred | — | — | — | #hexonet-api_since |
| Positioning | High-coverage wholesale platform within Team Internet, aimed at resellers and registries. | Inferred | — | — | — | #hexonet-positioning |

**Verdict.** The widest TLD coverage here, with bulk checks, contact handles and a free OT&E from day one — the lowest-friction way into wholesale. The command-and-parameter API style is idiosyncratic and the wiki assumes you already know the domain lifecycle.

**Pick it when**

- Registering unusual ccTLDs through one integration
- Evaluating a wholesale platform before signing anything
- Teams that want official SDKs rather than hand-rolled clients

### Gandi {#gandi}

European registrar with huge TLD breadth and post-2023 premium pricing.

|  |  |
| --- | --- |
| Site | https://www.gandi.net/en |
| Docs | https://api.gandi.net/docs/ |
| Company | Total Webhosting Solutions |
| Founded | 1999 |
| Open source | No |
| Profile | https://toolweight.dev/tools/gandi |
| Score (default weights) | 77.8 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | Personal access tokens are created free from the account; the sandbox uses a separate free account. | #gandi-min_spend_to_api |
| Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | — | #gandi-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | A separate reseller tier exists with better pricing, but the standard API is open. | #gandi-reseller_contract |
| Min prepaid balance | $0  float | Inferred | — | — | — | #gandi-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #gandi-icann_accredited |
| API auth | bearer-token | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | Personal access tokens with scoped permissions replaced the older API keys. | #gandi-api_auth |
| TLDs offered | 750  TLDs | Inferred | — | — | — | #gandi-tld_count |
| .au support | ◐ | Inferred | — | — | AU extensions appear in the catalogue, but eligibility handling in the API is not clearly documented. | #gandi-au_support |
| Register endpoint | ● | Inferred | — | — | — | #gandi-register_api |
| Bulk availability | ◐ | Inferred | — | — | Availability takes one name and expands it across extensions rather than accepting a list. | #gandi-bulk_availability |
| Suggestion API | ◐ | Inferred | — | — | — | #gandi-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #gandi-transfer_api |
| DNS record API | ● | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | LiveDNS supports per-record CRUD and zone snapshots. | #gandi-dns_record_api |
| EPP code via API | ● | Inferred | — | — | — | #gandi-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #gandi-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #gandi-webhook_events |
| Contact model | reusable-handles | Inferred | — | — | Organisation and contact objects can be reused across domains via sharing IDs. | #gandi-contact_model |
| Privacy via API | free-and-default | Inferred | — | — | — | #gandi-privacy_api |
| Rate limit | — | Unknown | — | — | — | #gandi-rate_limit |
| Pricing basis | retail | Inferred | — | — | — | #gandi-pricing_basis |
| Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | The billing price endpoint quotes per process, so renewal is separable from creation. | #gandi-renewal_price_api |
| .com renewal | $24 /yr | Inferred | — | — | Approximate, and among the highest here after the 2023 restructuring. | #gandi-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #gandi-mcp_server |
| Machine-readable spec | ◐ | Inferred | — | — | — | #gandi-openapi_spec |
| API since | 2007 | Inferred | — | — | — | #gandi-api_since |
| Positioning | European registrar with a genuinely modern REST API and premium pricing to match. | Inferred | — | — | — | #gandi-positioning |

**Verdict.** The nicest REST surface of the European registrars — scoped tokens, a real sandbox, LiveDNS, separable renewal pricing. The 2023 price rises under new ownership put .com renewals near the top of this table, which undoes a lot of that goodwill at volume.

**Pick it when**

- European teams wanting an EU-based registrar with a modern API
- Zone-heavy workloads that benefit from LiveDNS
- Small portfolios where per-name price is not the deciding factor

### Name.com {#name-com}

Clean REST API with streaming search, a dev environment and auth-code retrieval

|  |  |
| --- | --- |
| Site | https://www.name.com |
| Docs | https://docs.name.com/ |
| Company | Identity Digital |
| Founded | 2003 |
| Profile | https://toolweight.dev/tools/name-com |
| Score (default weights) | 76.7 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | Token is generated from the account; the development environment needs a separate free account. | #name-com-min_spend_to_api |
| Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | A dedicated development host mirrors the production API. | #name-com-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | A separate reseller programme exists, but the standard API is open to any account. | #name-com-reseller_contract |
| Min prepaid balance | $0  float | Inferred | — | — | — | #name-com-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #name-com-icann_accredited |
| API auth | basic-auth | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | HTTP Basic with username and API token. No IP allowlist requirement. | #name-com-api_auth |
| TLDs offered | 500  TLDs | Inferred | — | — | — | #name-com-tld_count |
| .au support | — | Unknown | — | — | Not confident .com.au is in the catalogue, and no eligibility-field documentation was found either way. | #name-com-au_support |
| Register endpoint | ● | Inferred | — | — | — | #name-com-register_api |
| Bulk availability | ● | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | Multiple names per availability call, plus a streaming search endpoint that returns results as they resolve. | #name-com-bulk_availability |
| Suggestion API | ● | Inferred | — | — | — | #name-com-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #name-com-transfer_api |
| DNS record API | ● | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | Per-record CRUD, not whole-zone replacement. | #name-com-dns_record_api |
| EPP code via API | ● | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | A dedicated endpoint returns the auth code to the caller. | #name-com-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #name-com-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #name-com-webhook_events |
| Contact model | inline-per-order | Inferred | — | — | — | #name-com-contact_model |
| Privacy via API | paid-addon | Inferred | — | — | — | #name-com-privacy_api |
| Rate limit | — | Unknown | — | — | — | #name-com-rate_limit |
| Pricing basis | retail | Inferred | — | — | — | #name-com-pricing_basis |
| Renewal price in API | ● | Inferred | — | — | — | #name-com-renewal_price_api |
| .com renewal | $14.99 /yr | Inferred | — | — | Approximate. | #name-com-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #name-com-mcp_server |
| Machine-readable spec | ◐ | Inferred | — | — | — | #name-com-openapi_spec |
| API since | 2015 | Inferred | — | — | — | #name-com-api_since |
| Positioning | Developer-facing retail registrar; the API is treated as a product, not a support burden. | Inferred | — | — | — | #name-com-positioning |

**Verdict.** The best free-tier developer experience here by a clear margin: streaming search, per-record DNS, auth codes returned to the caller, a working dev environment and no allowlist. You pay for it in retail pricing, which is fine until domains become the margin.

**Pick it when**

- Products with a domain search box in the onboarding flow
- Teams needing auth-code retrieval without a reseller contract
- Prototyping before committing to a wholesale platform

### Netim {#netim}

French registrar with unusually deep ccTLD coverage and corporate controls.

|  |  |
| --- | --- |
| Site | https://www.netim.com/en |
| Company | NETIM SARL |
| Founded | 2003 |
| Open source | No |
| Profile | https://toolweight.dev/tools/netim |
| Score (default weights) | 75.4 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | — | Unknown | — | — | Netim sells direct and through a reseller tier with different onboarding for each. No opening figure is published for either. | #netim-min_spend_to_api |
| Sandbox / OTE | — | Unknown | — | — | — | #netim-sandbox_env |
| Reseller contract | ◐ | Inferred | — | — | Direct accounts are self-serve; the wholesale tier requires an agreement. | #netim-reseller_contract |
| Min prepaid balance | — | Unknown | — | — | — | #netim-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #netim-icann_accredited |
| API auth | api-key | Inferred | — | — | REST with a session and token flow; a legacy SOAP interface is still supported. | #netim-api_auth |
| TLDs offered | 1,000  TLDs | Inferred | — | — | — | #netim-tld_count |
| .au support | ◐ | Inferred | — | — | AU extensions are listed, typically with trustee or local-presence handling layered underneath rather than raw eligibility fields. | #netim-au_support |
| Register endpoint | ● | Inferred | — | — | — | #netim-register_api |
| Bulk availability | ● | Inferred | — | — | — | #netim-bulk_availability |
| Suggestion API | — | Unknown | — | — | — | #netim-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #netim-transfer_api |
| DNS record API | ● | Inferred | — | — | — | #netim-dns_record_api |
| EPP code via API | ● | Inferred | — | — | — | #netim-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #netim-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #netim-webhook_events |
| Contact model | reusable-handles | Inferred | — | — | — | #netim-contact_model |
| Privacy via API | paid-addon | Inferred | — | — | — | #netim-privacy_api |
| Rate limit | — | Unknown | — | — | — | #netim-rate_limit |
| Pricing basis | wholesale-tiered | Inferred | — | — | — | #netim-pricing_basis |
| Renewal price in API | ● | Inferred | — | — | — | #netim-renewal_price_api |
| .com renewal | $12 /yr | Inferred | — | — | Approximate. | #netim-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #netim-mcp_server |
| Machine-readable spec | ◐ | Inferred | — | — | — | #netim-openapi_spec |
| API since | 2010 | Inferred | — | — | — | #netim-api_since |
| Positioning | French registrar selling breadth of extensions, including ccTLDs needing local presence. | Inferred | — | — | — | #netim-positioning |

**Verdict.** Chosen for reach rather than developer experience: the trustee services under the awkward ccTLDs are the product and the API is the delivery mechanism. Documentation and onboarding transparency lag the other wholesale platforms badly, hence the number of unknowns in this row.

**Pick it when**

- Portfolios needing ccTLDs with local-presence requirements
- European teams wanting one contract across many registries
- Trustee-backed registrations you would otherwise handle manually

### OpenSRS {#opensrs}

Tucows' wholesale platform — deep API, real OT&E, signed contract required

|  |  |
| --- | --- |
| Site | https://opensrs.com |
| Docs | https://domains.opensrs.guide/docs |
| Company | Tucows |
| Founded | 1999 |
| Funding | Public (NASDAQ: TCX) |
| Profile | https://toolweight.dev/tools/opensrs |
| Score (default weights) | 74.1 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $500  up front | Community-reported | — | — | The OT&E sandbox is free on signup. A live reseller account needs an approved application and a funded balance; integrators commonly report an opening deposit around US$500. It is quoted by sales, never published, and varies by market. | #opensrs-min_spend_to_api |
| Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | Full OT&E covering registration, transfer and renewal against a test registry. | #opensrs-sandbox_env |
| Reseller contract | ● | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | — | #opensrs-reseller_contract |
| Min prepaid balance | — | Unknown | — | — | Prepaid, but the required float is set per account during onboarding. | #opensrs-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #opensrs-icann_accredited |
| API auth | api-key-ip-allowlist | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | Signed XML over HTTPS with a reseller username and key, and calls restricted to allowlisted IPs. Direct EPP is also offered. | #opensrs-api_auth |
| TLDs offered | 800  TLDs | Inferred | — | — | — | #opensrs-tld_count |
| .au support | ● | Inferred | — | — | Tucows is auDA accredited and OpenSRS carries the AU eligibility fields on registration. | #opensrs-au_support |
| Register endpoint | ● | Inferred | — | — | — | #opensrs-register_api |
| Bulk availability | ◐ | Inferred | — | — | Lookup is per name; the suggestion and premium search calls return sets but are not a straight bulk check. | #opensrs-bulk_availability |
| Suggestion API | ● | Inferred | — | — | — | #opensrs-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #opensrs-transfer_api |
| DNS record API | ● | Inferred | — | — | — | #opensrs-dns_record_api |
| EPP code via API | ● | Inferred | — | — | — | #opensrs-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #opensrs-auto_renew_api |
| Webhooks / events | ◐ | Inferred | — | — | A pollable event queue rather than pushed webhooks — you acknowledge events as you consume them. | #opensrs-webhook_events |
| Contact model | reusable-handles | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | — | #opensrs-contact_model |
| Privacy via API | paid-addon | Inferred | — | — | — | #opensrs-privacy_api |
| Rate limit | — | Unknown | — | — | — | #opensrs-rate_limit |
| Pricing basis | wholesale-tiered | Inferred | — | — | — | #opensrs-pricing_basis |
| Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | Cost calls return your tier's registration, renewal and transfer price per TLD. | #opensrs-renewal_price_api |
| .com renewal | $11.5 /yr | Inferred | — | — | Approximate entry-tier wholesale; falls with volume. | #opensrs-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #opensrs-mcp_server |
| Machine-readable spec | ○ | Inferred | — | — | XML API with hand-written client libraries; no machine-readable schema. | #opensrs-openapi_spec |
| API since | 1999 | Inferred | — | — | — | #opensrs-api_since |
| Positioning | The incumbent wholesale platform for hosts and platforms reselling domains at scale. | Inferred | — | — | — | #opensrs-positioning |

**Verdict.** If domains are your product rather than a feature, this is the serious choice: proper contact handles, tiered wholesale pricing readable from the API, a real OT&E, and among the best ccTLD and .au coverage. The XML surface is dated and the opening deposit is deliberately opaque.

**Pick it when**

- Hosting platforms reselling domains at volume
- Products needing .com.au alongside broad international coverage
- Teams that must test transfers and renewals before launch

### Internet.bs {#internetbs}

Old-school reseller API with published test credentials and no onboarding gate

|  |  |
| --- | --- |
| Site | https://internetbs.net |
| Company | Internet.bs Corp |
| Founded | 2008 |
| Profile | https://toolweight.dev/tools/internetbs |
| Score (default weights) | 72.9 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Community-reported | — | — | Test credentials are published in the documentation, so the entire API can be exercised before an account exists. | #internetbs-min_spend_to_api |
| Sandbox / OTE | ● | Community-reported | — | — | Separate test host with shared public credentials. | #internetbs-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | — | #internetbs-reseller_contract |
| Min prepaid balance | $0  float | Inferred | — | — | A prepaid balance funds registrations; no minimum is documented. | #internetbs-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #internetbs-icann_accredited |
| API auth | api-key | Inferred | — | — | API key and password passed as request parameters. | #internetbs-api_auth |
| TLDs offered | 400  TLDs | Inferred | — | — | — | #internetbs-tld_count |
| .au support | — | Unknown | — | — | — | #internetbs-au_support |
| Register endpoint | ● | Inferred | — | — | — | #internetbs-register_api |
| Bulk availability | ◐ | Inferred | — | — | — | #internetbs-bulk_availability |
| Suggestion API | ○ | Inferred | — | — | — | #internetbs-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #internetbs-transfer_api |
| DNS record API | ● | Inferred | — | — | — | #internetbs-dns_record_api |
| EPP code via API | ● | Inferred | — | — | The domain info call returns the transfer auth code directly. | #internetbs-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #internetbs-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #internetbs-webhook_events |
| Contact model | inline-per-order | Inferred | — | — | — | #internetbs-contact_model |
| Privacy via API | free-and-default | Inferred | — | — | — | #internetbs-privacy_api |
| Rate limit | — | Unknown | — | — | — | #internetbs-rate_limit |
| Pricing basis | retail | Inferred | — | — | — | #internetbs-pricing_basis |
| Renewal price in API | — | Unknown | — | — | — | #internetbs-renewal_price_api |
| .com renewal | $12.5 /yr | Inferred | — | — | Approximate. | #internetbs-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #internetbs-mcp_server |
| Machine-readable spec | ○ | Inferred | — | — | — | #internetbs-openapi_spec |
| API since | 2008 | Inferred | — | — | — | #internetbs-api_since |
| Positioning | Long-running reseller-oriented registrar with an open, evaluate-before-you-sign API. | Inferred | — | — | — | #internetbs-positioning |

**Verdict.** Publishing working test credentials is a genuinely good idea nobody else copies — you can evaluate the whole surface in ten minutes. Everything else about the platform feels its age, and the documentation leaves several billing questions unanswered.

**Pick it when**

- Evaluating a registrar API before creating an account
- Auth-code retrieval without a reseller contract
- Free privacy on a prepaid, no-minimum account

### NameSilo {#namesilo}

Flat renewals, free privacy and portfolio tooling for people holding hundreds.

|  |  |
| --- | --- |
| Site | https://www.namesilo.com/ |
| Docs | https://www.namesilo.com/api-reference |
| Company | NameSilo LLC |
| Founded | 2009 |
| Open source | No |
| Profile | https://toolweight.dev/tools/namesilo |
| Score (default weights) | 72.2 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | Key is issued immediately from the account page with no spend condition. | #namesilo-min_spend_to_api |
| Sandbox / OTE | ● | Community-reported | — | — | A sandbox host with separate credentials is available; parity with production is not complete. | #namesilo-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | — | #namesilo-reseller_contract |
| Min prepaid balance | $0  float | Inferred | — | — | Registrations draw on account funds; no minimum float is documented. | #namesilo-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #namesilo-icann_accredited |
| API auth | api-key | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | Key passed in the query string, so it ends up in access and proxy logs unless you proxy carefully. | #namesilo-api_auth |
| TLDs offered | 500  TLDs | Inferred | — | — | — | #namesilo-tld_count |
| .au support | ○ | Inferred | — | — | — | #namesilo-au_support |
| Register endpoint | ● | Inferred | — | — | — | #namesilo-register_api |
| Bulk availability | ● | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | Comma-separated list of names in one call, returning available and unavailable sets. | #namesilo-bulk_availability |
| Suggestion API | ○ | Inferred | — | — | — | #namesilo-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #namesilo-transfer_api |
| DNS record API | ● | Inferred | — | — | — | #namesilo-dns_record_api |
| EPP code via API | ◐ | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | The retrieval call emails the code to the administrative contact instead of returning it in the response. | #namesilo-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #namesilo-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #namesilo-webhook_events |
| Contact model | reusable-handles | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | Contacts are account objects created once and associated with domains afterwards. | #namesilo-contact_model |
| Privacy via API | free-and-default | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | — | #namesilo-privacy_api |
| Rate limit | — | Unknown | — | — | — | #namesilo-rate_limit |
| Pricing basis | retail | Inferred | — | — | — | #namesilo-pricing_basis |
| Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | A prices call returns registration, renewal and transfer per TLD. | #namesilo-renewal_price_api |
| .com renewal | $13.95 /yr | Inferred | — | — | Approximate. | #namesilo-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #namesilo-mcp_server |
| Machine-readable spec | ○ | Inferred | — | — | — | #namesilo-openapi_spec |
| API since | 2012 | Inferred | — | — | — | #namesilo-api_since |
| Positioning | Low-margin retail registrar that treats API access and free privacy as table stakes. | Inferred | — | — | — | #namesilo-positioning |

**Verdict.** The most complete no-contract API on the list: reusable contacts, free privacy by default, near-wholesale pricing, no access gate. Held back by a key in the query string and an auth-code flow that goes via email rather than the response body.

**Pick it when**

- Registering on behalf of customers without a reseller contract
- Cost-sensitive bulk portfolios
- Teams that want free WHOIS privacy applied automatically

### AWS Route 53 Domains {#route53-domains}

SigV4 domain registration inside AWS, with no sandbox and hard throttling

|  |  |
| --- | --- |
| Site | https://aws.amazon.com/route53/ |
| Docs | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html |
| Company | Amazon Web Services |
| Founded | 2014 |
| Profile | https://toolweight.dev/tools/route53-domains |
| Score (default weights) | 71.4 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | Any AWS account with the right IAM permissions can call it. With no sandbox, the first successful create is a real purchase. | #route53-domains-min_spend_to_api |
| Sandbox / OTE | ○ | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | — | #route53-domains-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | — | #route53-domains-reseller_contract |
| Min prepaid balance | $0  float | Inferred | — | — | — | #route53-domains-min_prepaid_balance |
| ICANN accredited | ◐ | Inferred | — | — | Amazon Registrar is accredited and is registrar of record for the common gTLDs; other extensions are fulfilled through a partner registrar. | #route53-domains-icann_accredited |
| API auth | sigv4 | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | Standard SigV4 with IAM policies, roles and CloudTrail auditing — the best access-control story in the category. | #route53-domains-api_auth |
| TLDs offered | 180  TLDs | Inferred | — | — | — | #route53-domains-tld_count |
| .au support | ◐ | Inferred | — | — | com.au and net.au are supported with eligibility data on the contact, but direct .au is not clearly covered. | #route53-domains-au_support |
| Register endpoint | ● | Inferred | — | — | — | #route53-domains-register_api |
| Bulk availability | ○ | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | One name per availability call, and throttled hard enough that sweeping a candidate list is impractical. | #route53-domains-bulk_availability |
| Suggestion API | ● | Inferred | — | — | — | #route53-domains-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #route53-domains-transfer_api |
| DNS record API | ● | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | Through the separate Route 53 hosted-zone API, not the domains API — different service, different limits. | #route53-domains-dns_record_api |
| EPP code via API | ● | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | RetrieveDomainAuthCode returns the code directly. | #route53-domains-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #route53-domains-auto_renew_api |
| Webhooks / events | ◐ | Inferred | — | — | No domain webhooks; operations return an ID you poll, with CloudTrail and EventBridge as the async path. | #route53-domains-webhook_events |
| Contact model | inline-per-order | Inferred | — | — | — | #route53-domains-contact_model |
| Privacy via API | free-toggle-api | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | — | #route53-domains-privacy_api |
| Rate limit | — | Unknown | — | — | AWS publishes no figure for this API, but it throttles noticeably sooner than most Route 53 endpoints. | #route53-domains-rate_limit |
| Pricing basis | retail | Inferred | — | — | — | #route53-domains-pricing_basis |
| Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | ListPrices returns registration, renewal, transfer, restoration and change-ownership prices per TLD. | #route53-domains-renewal_price_api |
| .com renewal | $13 /yr | Inferred | — | — | Approximate. | #route53-domains-com_renewal_usd |
| MCP server | ◐ | Inferred | — | — | No domains-specific MCP server, but AWS's general-purpose API MCP servers reach these operations. | #route53-domains-mcp_server |
| Machine-readable spec | ● | Inferred | — | — | Published service models generate typed clients in every AWS SDK. | #route53-domains-openapi_spec |
| API since | 2014 | Inferred | — | — | — | #route53-domains-api_since |
| Positioning | Domain registration as an AWS service — IAM, CloudTrail and one bill, not a registrar product. | Inferred | — | — | — | #route53-domains-positioning |

**Verdict.** Worth it only because the domains land inside IAM, CloudTrail and your existing bill. As a registrar API it is slow, unbulkable, sandbox-free and mid-priced, with the narrowest TLD list of the serious options. Right for infrastructure domains, wrong for a customer-facing search box.

**Pick it when**

- Domains that belong to infrastructure and should be governed by IAM
- Teams needing auth-code retrieval and audit logs in one place
- Small numbers of registrations where throttling never bites

### Dynadot {#dynadot}

Domainer-oriented registrar with strong bulk tools and a built-in marketplace.

|  |  |
| --- | --- |
| Site | https://www.dynadot.com/ |
| Docs | https://www.dynadot.com/domain/api3.html |
| Company | Dynadot LLC |
| Founded | 2002 |
| Open source | No |
| Profile | https://toolweight.dev/tools/dynadot |
| Score (default weights) | 68.7 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Inferred | — | — | Key is generated from account settings. Registrations then fail until the prepaid balance covers them. | #dynadot-min_spend_to_api |
| Sandbox / OTE | ○ | Inferred | — | — | — | #dynadot-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | — | #dynadot-reseller_contract |
| Min prepaid balance | — | Unknown | — | — | Dynadot bills API registrations from account credit but publishes no minimum float. | #dynadot-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #dynadot-icann_accredited |
| API auth | api-key | Vendor-claimed | 2026-07-23 | https://www.dynadot.com/domain/api3.html | Key passed as a request parameter on the older interface; the newer REST version uses a header. | #dynadot-api_auth |
| TLDs offered | 550  TLDs | Inferred | — | — | — | #dynadot-tld_count |
| .au support | — | Unknown | — | — | The catalogue is broad and may include .com.au, but AU eligibility handling in the API is undocumented. | #dynadot-au_support |
| Register endpoint | ● | Inferred | — | — | — | #dynadot-register_api |
| Bulk availability | ● | Inferred | — | — | — | #dynadot-bulk_availability |
| Suggestion API | ○ | Inferred | — | — | — | #dynadot-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #dynadot-transfer_api |
| DNS record API | ◐ | Community-reported | — | — | DNS is set as a whole record list per domain rather than record by record. | #dynadot-dns_record_api |
| EPP code via API | ● | Inferred | — | — | — | #dynadot-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #dynadot-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #dynadot-webhook_events |
| Contact model | reusable-handles | Inferred | — | — | Contacts are created as account objects and referenced by ID on registration. | #dynadot-contact_model |
| Privacy via API | free-toggle-api | Inferred | — | — | — | #dynadot-privacy_api |
| Rate limit | — | Unknown | — | — | — | #dynadot-rate_limit |
| Pricing basis | retail | Inferred | — | — | — | #dynadot-pricing_basis |
| Renewal price in API | ● | Inferred | — | — | — | #dynadot-renewal_price_api |
| .com renewal | $12.99 /yr | Inferred | — | — | Approximate. | #dynadot-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #dynadot-mcp_server |
| Machine-readable spec | ○ | Inferred | — | — | — | #dynadot-openapi_spec |
| API since | 2008 | Inferred | — | — | — | #dynadot-api_since |
| Positioning | Value registrar with a long-lived, unglamorous API aimed at bulk domain investors. | Inferred | — | — | — | #dynadot-positioning |

**Verdict.** Built for domainers rather than product teams, and it shows: strong bulk and contact handling, weak DNS granularity, no sandbox, thin documentation. Prices are keen and the prepaid model means a runaway loop stops rather than empties a card.

**Pick it when**

- Bulk registration and portfolio automation
- Teams that want a hard spending ceiling via prepaid credit
- Scripts where a query-string API is a feature, not a flaw

### Synergy Wholesale {#synergy-wholesale}

Australian wholesale registrar — near-cost .au if you can open an account.

|  |  |
| --- | --- |
| Site | https://synergywholesale.com/ |
| Docs | https://synergywholesale.com/api-documentation/ |
| Company | Synergy Wholesale Pty Ltd |
| Founded | 2011 |
| Open source | No |
| Profile | https://toolweight.dev/tools/synergy-wholesale |
| Score (default weights) | 65.2 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Inferred | — | — | The real barrier is an ABN and a signed reseller agreement rather than a deposit. Applications from Australian businesses are often approved same-day, but funds must clear before the first register call. | #synergy-wholesale-min_spend_to_api |
| Sandbox / OTE | ○ | Community-reported | — | — | No OT&E. Integration testing happens against live registrations at live prices. | #synergy-wholesale-sandbox_env |
| Reseller contract | ● | Inferred | — | — | — | #synergy-wholesale-reseller_contract |
| Min prepaid balance | — | Unknown | — | — | Prepaid account; the required float is set during onboarding and not published. | #synergy-wholesale-min_prepaid_balance |
| ICANN accredited | ◐ | Inferred | — | — | auDA accredited for the AU space; gTLDs are fulfilled through upstream accreditation. | #synergy-wholesale-icann_accredited |
| API auth | api-key-ip-allowlist | Inferred | — | — | Reseller ID and API key with calls restricted to allowlisted IPs. The interface is SOAP-flavoured. | #synergy-wholesale-api_auth |
| TLDs offered | 300  TLDs | Inferred | — | — | — | #synergy-wholesale-tld_count |
| .au support | ● | Inferred | — | — | The auDA eligibility model — ABN or ACN, registrant ID type, eligibility reason — is carried as first-class fields on registration, direct .au included. | #synergy-wholesale-au_support |
| Register endpoint | ● | Inferred | — | — | — | #synergy-wholesale-register_api |
| Bulk availability | ● | Inferred | — | — | — | #synergy-wholesale-bulk_availability |
| Suggestion API | ○ | Inferred | — | — | — | #synergy-wholesale-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #synergy-wholesale-transfer_api |
| DNS record API | ● | Inferred | — | — | Managed DNS with per-record control, hosted in Australia. | #synergy-wholesale-dns_record_api |
| EPP code via API | ● | Inferred | — | — | — | #synergy-wholesale-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #synergy-wholesale-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #synergy-wholesale-webhook_events |
| Contact model | inline-per-order | Inferred | — | — | Contacts are supplied per registration together with the AU eligibility fields. | #synergy-wholesale-contact_model |
| Privacy via API | paid-addon | Inferred | — | — | Moot for .au — the registry publishes the registrant name regardless. | #synergy-wholesale-privacy_api |
| Rate limit | — | Unknown | — | — | — | #synergy-wholesale-rate_limit |
| Pricing basis | wholesale | Inferred | — | — | — | #synergy-wholesale-pricing_basis |
| Renewal price in API | ● | Inferred | — | — | — | #synergy-wholesale-renewal_price_api |
| .com renewal | $11 /yr | Inferred | — | — | Approximate USD equivalent of the AUD wholesale price; FX moves this. | #synergy-wholesale-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #synergy-wholesale-mcp_server |
| Machine-readable spec | ○ | Inferred | — | — | SOAP WSDL rather than OpenAPI. | #synergy-wholesale-openapi_spec |
| API since | 2011 | Inferred | — | — | — | #synergy-wholesale-api_since |
| Positioning | Australian wholesale provider for hosts and agencies reselling .au and hosting together. | Inferred | — | — | — | #synergy-wholesale-positioning |

**Verdict.** If you need .com.au or direct .au from code and you have an ABN, this is the answer and the alternatives are worse. The API models auDA eligibility properly, which nothing international does as cleanly. The absence of any test environment is the real cost.

**Pick it when**

- Australian platforms registering .com.au for customers
- Agencies bundling AU domains, DNS and hosting
- Anyone needing eligibility fields inside the registration call

### GoDaddy {#godaddy}

The default registrar for people who have never compared registrars.

|  |  |
| --- | --- |
| Site | https://www.godaddy.com/ |
| Docs | https://developer.godaddy.com/doc |
| Company | GoDaddy Inc. |
| Founded | 1997 |
| Funding | Public (NYSE: GDDY) |
| Open source | No |
| Profile | https://toolweight.dev/tools/godaddy |
| Score (default weights) | 64.7 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $30  up front | Community-reported | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | Since mid-2024 production access requires ten or more domains under management or an active Discount Domain Club membership, roughly US$30 a year for the entry plan. The OTE sandbox stayed free. | #godaddy-min_spend_to_api |
| Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | Separate OTE host with its own keys. | #godaddy-sandbox_env |
| Reseller contract | ◐ | Inferred | — | — | No contract for the standard API, but the eligibility gate functions as one. A separate reseller programme exists. | #godaddy-reseller_contract |
| Min prepaid balance | $0  float | Inferred | — | — | — | #godaddy-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #godaddy-icann_accredited |
| API auth | api-key | Vendor-claimed | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | An sso-key header carrying a key and secret pair. | #godaddy-api_auth |
| TLDs offered | 400  TLDs | Inferred | — | — | — | #godaddy-tld_count |
| .au support | ◐ | Inferred | — | — | GoDaddy retails .com.au and .au, but the documented Domains API schema does not carry the auDA eligibility fields, so programmatic registration is not a clean path. | #godaddy-au_support |
| Register endpoint | ● | Inferred | — | — | — | #godaddy-register_api |
| Bulk availability | ● | Vendor-claimed | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | An array of names in a single POST, with a fast/accurate mode switch. | #godaddy-bulk_availability |
| Suggestion API | ● | Inferred | — | — | — | #godaddy-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #godaddy-transfer_api |
| DNS record API | ● | Inferred | — | — | — | #godaddy-dns_record_api |
| EPP code via API | ○ | Inferred | — | — | — | #godaddy-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | — | #godaddy-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #godaddy-webhook_events |
| Contact model | inline-per-order | Inferred | — | — | — | #godaddy-contact_model |
| Privacy via API | paid-addon | Inferred | — | — | — | #godaddy-privacy_api |
| Rate limit | 60  req/min | Community-reported | — | — | Undocumented; 429s are commonly reported around one call per second per key. | #godaddy-rate_limit |
| Pricing basis | retail-premium | Inferred | — | — | — | #godaddy-pricing_basis |
| Renewal price in API | ◐ | Inferred | — | — | Purchase schemas return a price for the term requested; there is no clean separate renewal figure per TLD. | #godaddy-renewal_price_api |
| .com renewal | $21.99 /yr | Inferred | — | — | Approximate. | #godaddy-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #godaddy-mcp_server |
| Machine-readable spec | ● | Vendor-claimed | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | — | #godaddy-openapi_spec |
| API since | 2015 | Inferred | — | — | — | #godaddy-api_since |
| Positioning | Mass-market registrar whose API is now positioned as a benefit for larger customers. | Inferred | — | — | — | #godaddy-positioning |

**Verdict.** Technically one of the better surfaces — OpenAPI schema, OTE, bulk checks, suggestions — attached to the least trustworthy access policy in the category. The 2024 gate proved GoDaddy will change the terms under working integrations, and the pricing is the worst here.

**Pick it when**

- Accounts already holding ten or more domains
- High-volume availability search and name suggestions
- Teams that want a generated client from a published schema

### Direct EPP (own accreditation) {#direct-epp}

Become the registrar: ICANN accreditation plus an EPP client per registry

|  |  |
| --- | --- |
| Site | https://www.icann.org/resources/pages/accreditation-2012-02-25-en |
| Company | Direct EPP (own accreditation) |
| Profile | https://toolweight.dev/tools/direct-epp |
| Score (default weights) | 63.3 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $7,500  up front | Vendor-claimed | 2026-07-23 | https://www.icann.org/resources/pages/accreditation-2012-02-25-en | US$3,500 non-refundable application plus US$4,000 a year in accreditation fees, before registry deposits, letters of credit, insurance and the cost of building an EPP client. Registry security deposits are the larger number and vary per registry. | #direct-epp-min_spend_to_api |
| Sandbox / OTE | ● | Inferred | — | — | Every registry runs an OT&E, and passing its certification test is mandatory before production credentials are issued. | #direct-epp-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | No reseller agreement — you sign a registry-registrar agreement with each registry instead, which is considerably more onerous. | #direct-epp-reseller_contract |
| Min prepaid balance | — | Unknown | — | — | Set per registry; commonly a deposit or letter of credit sized to your projected volume. | #direct-epp-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #direct-epp-icann_accredited |
| API auth | epp-xml | Inferred | — | — | EPP over TLS with client certificates and IP allowlisting, one persistent session per registry. | #direct-epp-api_auth |
| TLDs offered | — | Unknown | — | — | Unbounded in principle, one contract at a time in practice. | #direct-epp-tld_count |
| .au support | ● | Inferred | — | — | Requires separate auDA accreditation on top of ICANN, with its own fees and Australian presence requirements. | #direct-epp-au_support |
| Register endpoint | ● | Inferred | — | — | — | #direct-epp-register_api |
| Bulk availability | ◐ | Inferred | — | — | The EPP check command accepts several names, but registries cap it and watch check-to-create ratios. | #direct-epp-bulk_availability |
| Suggestion API | ○ | Inferred | — | — | — | #direct-epp-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #direct-epp-transfer_api |
| DNS record API | ○ | Inferred | — | — | EPP sets nameservers; running DNS is a separate system you build or buy. | #direct-epp-dns_record_api |
| EPP code via API | ● | Inferred | — | — | — | #direct-epp-epp_code_api |
| Auto-renew control | ● | Inferred | — | — | Renewal is an explicit command; auto-renew is a policy you implement yourself. | #direct-epp-auto_renew_api |
| Webhooks / events | ◐ | Inferred | — | — | The EPP message queue is poll-based and must be drained or the registry complains. | #direct-epp-webhook_events |
| Contact model | reusable-handles | Inferred | — | — | — | #direct-epp-contact_model |
| Privacy via API | not-in-api | Inferred | — | — | Privacy is a service you operate, not a flag you set. | #direct-epp-privacy_api |
| Rate limit | 600  req/min | Inferred | — | — | Registry-imposed per-session command limits. Check commands are watched closely and abusive ratios attract warnings. | #direct-epp-rate_limit |
| Pricing basis | wholesale | Inferred | — | — | — | #direct-epp-pricing_basis |
| Renewal price in API | ○ | Inferred | — | — | Registries publish price lists contractually, not through EPP. | #direct-epp-renewal_price_api |
| .com renewal | $10.98 /yr | Inferred | — | — | Verisign wholesale plus the US$0.18 ICANN transaction fee. Approximate, and it steps up again each September. | #direct-epp-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #direct-epp-mcp_server |
| Machine-readable spec | ○ | Inferred | — | — | EPP is specified by RFC rather than by a schema you can generate a client from — though the RFCs are precise, which is arguably better. | #direct-epp-openapi_spec |
| API since | 2004 | Inferred | — | — | — | #direct-epp-api_since |
| Positioning | The reference point: registry cost with no margin, in exchange for becoming a regulated party. | Inferred | — | — | — | #direct-epp-positioning |

**Verdict.** Included so the convenience premium above is visible, not as a recommendation. Below roughly a hundred thousand names under management, the accreditation fees, escrow, abuse handling and compliance load cost more than every reseller margin on this page combined.

**Pick it when**

- Operators already carrying six figures of domains under management
- Registries and large hosts building their own registrar
- Understanding what the margin above actually pays for

### Namecheap {#namecheap}

The mainstream cheap registrar: heavy first-year discounts, higher renewals.

|  |  |
| --- | --- |
| Site | https://www.namecheap.com/domains/ |
| Docs | https://www.namecheap.com/support/api/intro/ |
| Company | Namecheap Inc. |
| Founded | 2000 |
| Open source | No |
| Profile | https://toolweight.dev/tools/namecheap |
| Score (default weights) | 56.5 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $50  up front | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | Production needs twenty domains in the account, US$50 of account balance, or US$50 spent in the last two years. The sandbox is free and unconditional. | #namecheap-min_spend_to_api |
| Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | A separate sandbox host mirrors the production API with its own credentials. | #namecheap-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | — | #namecheap-reseller_contract |
| Min prepaid balance | $50  float | Inferred | — | — | The same US$50 that unlocks production also funds registrations, since API purchases draw on account balance. | #namecheap-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #namecheap-icann_accredited |
| API auth | api-key-ip-allowlist | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | ApiUser, ApiKey and a ClientIp that must be on the allowlist. Painful from serverless or autoscaled workers. | #namecheap-api_auth |
| TLDs offered | 400  TLDs | Inferred | — | — | — | #namecheap-tld_count |
| .au support | ○ | Inferred | — | — | Namecheap does not sell .com.au or .au. | #namecheap-au_support |
| Register endpoint | ● | Inferred | — | — | — | #namecheap-register_api |
| Bulk availability | ● | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | The check command accepts a comma-separated list, capped around fifty names. | #namecheap-bulk_availability |
| Suggestion API | ○ | Inferred | — | — | — | #namecheap-suggestion_api |
| Transfer in/out | ● | Inferred | — | — | — | #namecheap-transfer_api |
| DNS record API | ◐ | Community-reported | — | — | setHosts replaces the entire record set. Concurrent updates silently clobber each other unless you serialise. | #namecheap-dns_record_api |
| EPP code via API | ○ | Inferred | — | — | The auth code is emailed to the registrant rather than returned by a call. | #namecheap-epp_code_api |
| Auto-renew control | ◐ | Inferred | — | — | An explicit renew command exists; the auto-renew flag is a dashboard setting. | #namecheap-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #namecheap-webhook_events |
| Contact model | inline-per-order | Inferred | — | — | — | #namecheap-contact_model |
| Privacy via API | free-toggle-api | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | WhoisGuard is included and enabled through its own API commands. | #namecheap-privacy_api |
| Rate limit | 20  req/min | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | Also capped at roughly 700 per hour and 8,000 per day. | #namecheap-rate_limit |
| Pricing basis | retail | Inferred | — | — | — | #namecheap-pricing_basis |
| Renewal price in API | ● | Inferred | — | — | — | #namecheap-renewal_price_api |
| .com renewal | $15.98 /yr | Inferred | — | — | Approximate. | #namecheap-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #namecheap-mcp_server |
| Machine-readable spec | ○ | Inferred | — | — | XML request and response with no published schema; every client here is hand-written. | #namecheap-openapi_spec |
| API since | 2008 | Inferred | — | — | — | #namecheap-api_since |
| Positioning | Retail registrar with a long-standing reseller-flavoured API and a hard IP allowlist. | Inferred | — | — | — | #namecheap-positioning |

**Verdict.** The sandbox and the documentation are better than the API. Whole-zone DNS replacement, no auth-code retrieval and a mandatory IP allowlist make it a poor fit for anything on ephemeral compute, and the US$50 production gate catches teams late.

**Pick it when**

- Teams that must test registration flows against a real sandbox
- Workloads with a stable egress IP or NAT gateway
- Bulk availability search at moderate volume

### Vercel Domains {#vercel-domains}

Buy a domain with the token that runs your deploys — narrow list, high prices

|  |  |
| --- | --- |
| Site | https://vercel.com/docs/domains |
| Docs | https://vercel.com/docs/rest-api/reference/endpoints/domains |
| Company | Vercel Inc. |
| Founded | 2015 |
| Funding | Series F |
| Profile | https://toolweight.dev/tools/vercel-domains |
| Score (default weights) | 51.0 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | The same bearer token that deploys projects can buy domains. There is no sandbox, so the first successful buy is a real purchase. | #vercel-domains-min_spend_to_api |
| Sandbox / OTE | ○ | Inferred | — | — | — | #vercel-domains-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | — | #vercel-domains-reseller_contract |
| Min prepaid balance | $0  float | Inferred | — | — | — | #vercel-domains-min_prepaid_balance |
| ICANN accredited | ○ | Inferred | — | — | Vercel resells through an accredited registrar rather than holding accreditation itself. | #vercel-domains-icann_accredited |
| API auth | bearer-token | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | — | #vercel-domains-api_auth |
| TLDs offered | 50  TLDs | Inferred | — | — | A short list skewed to the popular gTLDs. Check your extension before designing around it. | #vercel-domains-tld_count |
| .au support | ○ | Inferred | — | — | — | #vercel-domains-au_support |
| Register endpoint | ● | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | Buy, price and status endpoints, with the purchased domain wired straight into project configuration. | #vercel-domains-register_api |
| Bulk availability | ○ | Inferred | — | — | One name per status call. | #vercel-domains-bulk_availability |
| Suggestion API | ○ | Inferred | — | — | — | #vercel-domains-suggestion_api |
| Transfer in/out | ◐ | Inferred | — | — | Transfer-in only. | #vercel-domains-transfer_api |
| DNS record API | ● | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | — | #vercel-domains-dns_record_api |
| EPP code via API | ○ | Inferred | — | — | — | #vercel-domains-epp_code_api |
| Auto-renew control | ◐ | Inferred | — | — | — | #vercel-domains-auto_renew_api |
| Webhooks / events | ◐ | Inferred | — | — | Platform webhooks include domain creation, but nothing for expiry, renewal failure or transfer state. | #vercel-domains-webhook_events |
| Contact model | account-default | Inferred | — | — | The registrant is your account or team, so you cannot register on a customer's behalf. | #vercel-domains-contact_model |
| Privacy via API | free-and-default | Inferred | — | — | — | #vercel-domains-privacy_api |
| Rate limit | — | Unknown | — | — | — | #vercel-domains-rate_limit |
| Pricing basis | retail-premium | Inferred | — | — | — | #vercel-domains-pricing_basis |
| Renewal price in API | ◐ | Inferred | — | — | The price endpoint quotes a term rather than exposing a distinct renewal figure. | #vercel-domains-renewal_price_api |
| .com renewal | $20 /yr | Inferred | — | — | Approximate. | #vercel-domains-com_renewal_usd |
| MCP server | ● | Community-reported | — | — | Vercel's platform MCP server exposes the REST API, domains included. | #vercel-domains-mcp_server |
| Machine-readable spec | ● | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | — | #vercel-domains-openapi_spec |
| API since | 2018 | Inferred | — | — | — | #vercel-domains-api_since |
| Positioning | Domain purchase as a convenience inside a deployment platform, not a registrar business. | Inferred | — | — | — | #vercel-domains-positioning |

**Verdict.** Buying a domain in the same request flow that configures the project is a real product advantage, and the MCP server makes it the easiest option for an agent to drive. It is also the narrowest catalogue, the least portable registrant model, and priced accordingly.

**Pick it when**

- Onboarding flows that end with a live site on a custom domain
- Agent-driven workflows already holding a Vercel token
- Teams that value one bill over per-name price

### Porkbun {#porkbun}

Near-cost pricing with free privacy, SSL and forwarding, and a clean exit.

|  |  |
| --- | --- |
| Site | https://porkbun.com/ |
| Docs | https://porkbun.com/api/json/v3/documentation |
| Company | Top Level Design |
| Founded | 2014 |
| Open source | No |
| Profile | https://toolweight.dev/tools/porkbun |
| Score (default weights) | 48.1 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Spend to first call | $0  up front | Vendor-claimed | 2026-07-23 | https://porkbun.com/api/json/v3/documentation | Key and secret are generated free from account settings. API access must then be enabled per domain before domain-level calls work. | #porkbun-min_spend_to_api |
| Sandbox / OTE | ○ | Inferred | — | — | There is a ping endpoint for checking credentials, nothing that simulates a registration. | #porkbun-sandbox_env |
| Reseller contract | ○ | Inferred | — | — | — | #porkbun-reseller_contract |
| Min prepaid balance | $0  float | Inferred | — | — | — | #porkbun-min_prepaid_balance |
| ICANN accredited | ● | Inferred | — | — | — | #porkbun-icann_accredited |
| API auth | api-key | Vendor-claimed | 2026-07-23 | https://porkbun.com/api/json/v3/documentation | apikey plus secretapikey in the JSON body of every request. | #porkbun-api_auth |
| TLDs offered | 500  TLDs | Inferred | — | — | — | #porkbun-tld_count |
| .au support | ○ | Inferred | — | — | The catalogue is wide but does not carry .au, and there is no eligibility-field support anywhere in the API. | #porkbun-au_support |
| Register endpoint | — | Unknown | — | — | The documented v3 surface covers pricing, availability, nameservers, DNS, URL forwarding and SSL. A create/register endpoint is not clearly documented and is widely reported as absent — confirm before designing around it. | #porkbun-register_api |
| Bulk availability | ○ | Community-reported | — | — | One name per check call, and the call is throttled to roughly one every ten seconds. | #porkbun-bulk_availability |
| Suggestion API | ○ | Inferred | — | — | — | #porkbun-suggestion_api |
| Transfer in/out | ○ | Inferred | — | — | — | #porkbun-transfer_api |
| DNS record API | ● | Vendor-claimed | 2026-07-23 | https://porkbun.com/api/json/v3/documentation | Per-record create, edit and delete, including retrieval by type and subdomain. The strongest part of the API. | #porkbun-dns_record_api |
| EPP code via API | ○ | Inferred | — | — | — | #porkbun-epp_code_api |
| Auto-renew control | ○ | Inferred | — | — | — | #porkbun-auto_renew_api |
| Webhooks / events | ○ | Inferred | — | — | — | #porkbun-webhook_events |
| Contact model | account-default | Inferred | — | — | Registrant details come from the account; there is no contact-object model for registering on someone else's behalf. | #porkbun-contact_model |
| Privacy via API | free-and-default | Vendor-claimed | 2026-07-23 | https://porkbun.com/api/json/v3/documentation | — | #porkbun-privacy_api |
| Rate limit | 6  req/min | Community-reported | — | — | Reflects the availability check, which is the binding limit at roughly one call per ten seconds. Other endpoints are looser but undocumented. | #porkbun-rate_limit |
| Pricing basis | retail | Inferred | — | — | — | #porkbun-pricing_basis |
| Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://porkbun.com/api/json/v3/documentation | The pricing endpoint needs no authentication and returns registration, renewal and transfer prices for the whole catalogue. | #porkbun-renewal_price_api |
| .com renewal | $11.06 /yr | Inferred | — | — | Approximate. | #porkbun-com_renewal_usd |
| MCP server | ○ | Inferred | — | — | — | #porkbun-mcp_server |
| Machine-readable spec | ○ | Inferred | — | — | — | #porkbun-openapi_spec |
| API since | 2019 | Inferred | — | — | — | #porkbun-api_since |
| Positioning | Cheap retail registrar whose API exists mainly so developers can automate DNS. | Inferred | — | — | — | #porkbun-positioning |

**Verdict.** The best free pricing and DNS API in the category, attached to a registration story that may not exist. Superb as a price oracle and as DNS control for names you already own; verify the create path before you build a signup flow on it.

**Pick it when**

- Automating DNS records for domains you bought by hand
- A free, unauthenticated source of TLD pricing data
- Small projects where one registration a month can be manual

## Methodology

Every cell here was read off the provider's own developer documentation, its reseller onboarding pages, or — where those are silent, which is often — from what integrators consistently report. Values are dated and carry a confidence marker. Anything we could not stand behind is null and renders as an em dash rather than a guess; that applies to most published rate limits and to several undisclosed opening deposits, which are quoted by sales and nowhere else.

The killer field, minimum spend to a working key, is the lowest total US-dollar outlay standing between a fresh signup and an authenticated call the live registration endpoint will actually accept. It counts account-balance minimums, opening deposits, mandatory memberships and accreditation fees. It excludes the price of the domain itself. Where a provider runs a free sandbox but gates production, the production figure is reported and the sandbox noted on the cell. It is the number every one of these vendors buries, and it reorders the table completely.

## FAQ

### Which domain API can I start using today with no contract and no deposit?

Porkbun, NameSilo, Name.com, Dynadot, Internet.bs and Gandi all issue a key from a normal account at zero cost. Route 53 and Vercel need only an existing AWS or Vercel account. Namecheap issues a sandbox key free but will not enable production until the account holds US$50 or twenty domains, and GoDaddy now requires ten domains under management or a paid Discount Domain Club membership.

### Can I register a .com.au domain through an API?

Yes, but the list is short. Synergy Wholesale is the strongest option and models the auDA eligibility fields — ABN or ACN, registrant ID type, eligibility reason — directly in the registration call. OpenSRS carries them too. Route 53 accepts .com.au with eligibility data attached to the contact. Porkbun, Namecheap and Vercel do not sell .au at all, so no amount of integration work will help.

### Do I need to be an ICANN-accredited registrar to register domains from code?

No. Every provider on this page is either accredited itself or resells someone who is, and their API is the point of that arrangement. Becoming accredited yourself costs US$3,500 to apply plus US$4,000 a year, before registry deposits, insurance and building an EPP client. That only makes sense above roughly a hundred thousand names under management, which is why the baseline row exists as a reference rather than a recommendation.

### Which registrar APIs have a real sandbox?

Namecheap runs a sandbox host, GoDaddy runs an OTE environment, Name.com has a development host, and Gandi, OpenSRS and Hexonet all run proper OT&E systems where registrations are free and fake. Route 53, Vercel Domains, Porkbun and Synergy Wholesale have none. Against those you test with real registrations at real prices, so pick a cheap TLD and delete inside the grace window.

### How do I retrieve a domain's EPP or auth code through an API?

Name.com, Route 53, Hexonet, OpenSRS, Internet.bs and Synergy Wholesale return the code to an API call. NameSilo has a retrieval endpoint but emails the code to the admin contact rather than returning it. Namecheap, Porkbun, GoDaddy and Vercel expect a human in a dashboard or an inbox. If you are building anything that hands domains back to customers, treat this as a blocking requirement.

### Do these APIs expose renewal prices, or only registration prices?

The wholesale platforms all expose renewal separately, because their resellers need it for billing: OpenSRS, Hexonet, Synergy Wholesale and Netim return per-TLD registration, renewal and transfer cost at your tier. Among the retail APIs, Porkbun's pricing endpoint is public and unauthenticated, and NameSilo, Name.com, Namecheap, Gandi and Route 53 all return renewal figures. GoDaddy and Vercel are the notable gaps.

### What rate limits should I expect on availability checks?

Assume they are the binding constraint. Namecheap documents roughly twenty calls a minute, 700 an hour and 8,000 a day. Porkbun throttles domain checks to about one every ten seconds. Route 53 throttles hard enough that sweeping a candidate list is not viable. Only GoDaddy, Hexonet and Name.com make bulk or streaming search practical, so design search flows around the provider rather than the other way round.

## Recent changes

| Date | Kind | Event | Tools | Source |
| --- | --- | --- | --- | --- |
| 2024-06-14 | deprecation | **GoDaddy gates production API access** — GoDaddy restricted its Domains API to accounts holding at least ten domains or an active Discount Domain Club membership. Integrations that had run for years on small accounts started returning authorisation errors with no migration path, and because the OTE environment stayed open, the failures only appeared in production. | godaddy | https://developer.godaddy.com/doc/endpoint/domains |
| 2024-09-01 | pricing | **Verisign raises .com wholesale to US$10.26** — The annual contractual increase moved the .com wholesale price up seven per cent. Every retail and wholesale figure on this page inherits it, which is why comparing registrars on .com price alone is a moving target rather than a decision. | direct-epp | — |
| 2024-11-01 | other | **Gandi completes the move to personal access tokens** — Gandi retired the long-standing v5 API key in favour of scoped personal access tokens with per-organisation permissions. Clients that hard-coded the old key header stopped authenticating. The upside is that tokens can now be scoped to domain operations without also granting billing access. | gandi | https://api.gandi.net/docs/domains/ |
| 2025-09-01 | pricing | **Verisign's next .com step lands** — A second seven per cent increase in as many years took .com wholesale to roughly US$10.98 before the ICANN transaction fee. Providers passed it through at different speeds — the wholesale platforms almost immediately, several retail registrars a quarter later while absorbing the difference. | direct-epp, opensrs, hexonet | — |

## Sources

| Source | Last verified |
| --- | --- |
| https://porkbun.com/api/json/v3/documentation | 2026-07-23 |
| https://www.namecheap.com/support/api/intro/ | 2026-07-23 |
| https://docs.name.com/ | 2026-07-23 |
| https://www.dynadot.com/domain/api3.html | 2026-07-23 |
| https://developer.godaddy.com/doc/endpoint/domains | 2026-07-23 |
| https://www.namesilo.com/api-reference | 2026-07-23 |
| https://domains.opensrs.guide/docs | 2026-07-23 |
| https://wiki.hexonet.net/wiki/API | 2026-07-23 |
| https://api.gandi.net/docs/domains/ | 2026-07-23 |
| https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | 2026-07-23 |
| https://vercel.com/docs/rest-api/reference/endpoints/domains | 2026-07-23 |
| https://www.icann.org/resources/pages/accreditation-2012-02-25-en | 2026-07-23 |

## Related comparisons

- [Domain registrars](https://toolweight.dev/compare/domain-registrars) — Which domain registrar is cheapest to renew with, and which ones make it hard to leave?
- [Vercel alternatives](https://toolweight.dev/compare/vercel-alternatives) — Which Vercel alternative should I use, and what happens to my bill if my site goes viral?
- [Email APIs](https://toolweight.dev/compare/email-sending-apis) — Which email sending API is best for developers?
- [AU SMS APIs](https://toolweight.dev/compare/sms-api-providers-australia) — Which SMS API provider should I use to send text messages to Australian mobile numbers?

## Licence and attribution

Data from toolweight (https://toolweight.dev), licensed CC-BY-4.0.

- Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/)
- Canonical HTML: https://toolweight.dev/compare/domain-api-providers
- Machine-readable: https://toolweight.dev/compare/domain-api-providers.md · https://toolweight.dev/api/v1 · https://toolweight.dev/mcp
- toolweight takes no affiliate revenue and sells no placements. Corrections: https://toolweight.dev/suggest
