Custom Domains API: 8 Options Compared by Cost, Setup and Limits

A custom domains API lets your SaaS customers serve your product from their own hostname, like app.theirbrand.com, while you skip the certificate and DNS plumbing. Which one fits depends on three things: how many customer hostnames you have, where you host, and how much of your customers' DNS setup you want to own.
The short version: if you already live on Cloudflare, start with Cloudflare for SaaS. It is cheaper per hostname at the low end, and we say so below. If you want to ship in an afternoon, you have 20 to a few thousand customer hostnames, and you want your customers' DNS setup handled for you, look at Domainee. We're Domainee, so we're a vendor in this list. Competitor details come from their own pages, from customdomain.ai, or from Domainee's own comparison pages. We have not verified them, and we mark each one.
The short answer: which custom domains API fits which team
| Your situation | Look at first |
|---|---|
| You already run on Cloudflare and want the infrastructure default | Cloudflare for SaaS |
| You want a managed reverse proxy with a dedicated cluster | Approximated |
| You want a managed edge with a REST API | SaaS Custom Domains, customdomain.ai or Domainee |
| You want provider-aware customer setup, webhooks and a hosted MCP server on a free tier | Domainee |
| Your product is a no-code app (Bubble, WeWeb, FlutterFlow) | CoAlias |
| You are buying at enterprise scale and want an enterprise-positioned vendor | Entri |
| You host on Vercel and only on Vercel | Vercel for Platforms |
| You have very high hostname counts, a deep edge stack or special certificate needs | Build it yourself |
Where Domainee fits: you want to ship on a Tuesday afternoon, you have 20 to a few thousand customer hostnames, and you want provider-aware DNS instructions, monitoring and webhooks without building them.
Where Domainee does not fit: wildcard domains are not supported at the moment. If your product needs *.customer.com, look elsewhere or build it.
What a custom domains API actually has to do
This is the short version. The glossary covers the individual terms.
Five jobs:
- Take a hostname from your customer.
- Tell your customer which DNS record to add.
- Verify that DNS.
- Issue and renew SSL.
- Route traffic to your origin.
Each one hides a pile of work: ACME rate limits, edge TLS termination, SNI routing, DNS health checks, certificate rotation. The usual in-house estimate is 2 to 4 months for v1, plus on-call for cert outages. Nobody budgets for the on-call part. That is the part that shows up at 2am.
How we compared them: the criteria that matter
- Cost at your hostname count, with bandwidth included.
- Free tier, and whether a card is required.
- Customer-side setup: how many steps your customer does, and whether instructions are DNS-provider-aware.
- Apex and wildcard support.
- Automation: API, webhooks, monitoring, MCP.
- Lock-in: does it require a specific host?
- Pricing transparency: published numbers or a sales call.
Custom domains API pricing compared at 20, 100 and 1,000 domains
Figures checked October 2026.
Monthly cost, domains only:
| Option | 20 domains | 100 domains | 1,000 domains | Source |
|---|---|---|---|---|
| Domainee | $0 | $16 | $196 | Published pricing |
| Cloudflare for SaaS | $0 | $0 | $90 | Rate per customdomain.ai; unverified; our arithmetic |
| SaaS Custom Domains | $29 (minimum) | $29 | $290 before volume discounts | Rate per Domainee's /alternatives page; unverified; our arithmetic |
How the Domainee numbers work: the first 20 domains are free. After that it's $0.20/domain/month on the Scale plan. 100 domains is 80 × $0.20 = $16. 1,000 domains is 980 × $0.20 = $196. Volume discounts start at 1,001 domains and graduate down to $0.10 at 10,001+ domains, so the 1,000-domain row has no discount.
Bandwidth: Domainee includes 100 GB/month, then charges $0.05/GB. At 500 GB in a month, that is 400 × $0.05 = $20 more. Domains and bandwidth show up as two line items on one monthly Stripe invoice, with proration. The Cloudflare and SaaS Custom Domains figures above cover hostnames only. We did not model their bandwidth or plan fees.
Starting prices for the rest (all per Domainee's /alternatives page, unverified):
| Option | Starting price | Free tier |
|---|---|---|
| Approximated | $20/month minimum | None |
| CoAlias | From $25/month | Yes |
| Entri | From $249/month (600 domains/yr) | None |
| SaaSKevin | Domain-based pricing | Free for 3 domains |
| customdomain.ai | Not captured here | Free for 10 connections/yr |
The honest read: Cloudflare for SaaS is cheaper per hostname than we are. Per customdomain.ai, it gives you 100 free hostnames against our 20, and $0.10 per hostname per month against our $0.20. If price per hostname is your only criterion, Cloudflare wins at the low end. Its standard plans also cap at 50,000 hostnames, per the same source.
What the table doesn't capture: bandwidth and plan fees for the rivals, which we didn't model, and your own integration time, which depends on what you pick and what you already run. Run your own numbers with the custom domain cost calculator.
One more thing about our pricing: every price and limit is published. No contact-sales, no fair-use clauses. A card on file is required before your first domain, and it is charged $0 under the free tier. Without a card, POST /v1/domains returns 402 billing_required, even for the first domain. An enterprise or custom-contract option exists behind "Book a demo". The self-serve numbers above stay published either way.
Customer setup: where custom domain projects really stall
The real cost is your customer failing to add one DNS record. Registrar logins get lost. People paste records into the wrong zone. Someone on the customer side asks what a CNAME is. Your support queue absorbs all of it.
Here is how Domainee handles the customer side:
- One record.
POST /v1/domainsreturns a CNAME for your customer to add. The target isedge.domainee.dev, so the record shows the Domainee name. It is not hidden. Your customers never see Domainee in your UI. They can see it in DNS. - Provider-aware instructions.
GET /v1/domains/{id}/instructionsdetects the DNS provider from public NS records and returns provider-specific steps. - One-click Domain Connect for Cloudflare. GoDaddy is not available.
- Scoped token. Cloudflare or DigitalOcean customers can provide a scoped API token via
POST /v1/domains/{id}/dns/apply. We use it once and never store it. - Apex domains. Where the DNS provider disallows CNAME at the root, we offer two anycast A records.
- Embeddable widget. One script tag (
https://domainee.dev/widget.js,Domainee.mount). It polls every 15 seconds and uses short-lived connect-session tokens (default TTL 1 hour, max 24). There is no theming API yet.
Rivals make their own claims here. customdomain.ai, for example, claims automatic DNS setup across 63 providers. We can't verify that number, so we won't argue with it. Test it with the DNS provider your customers actually use.
Automatic SSL, monitoring and webhooks
SSL. Let's Encrypt certificates are issued on first request (on-demand TLS) and renewed automatically. Forever, as far as you're concerned.
Monitoring. Each domain is re-checked every 5 minutes, or on demand via POST /v1/domains/{id}/check. The monitor states you will see:
unknowndns_not_resolvingdns_incorrectpending_sslactive_sslssl_failedssl_expired
Safety checks. Preflight warns on CAA records that block Let's Encrypt. SSRF protection rejects private, loopback, link-local and reserved origins.
Webhooks. Events include domain.created, domain.verified, domain.failed, domain.expired and domain.monitor_updated. Payloads are signed with HMAC-SHA256 in the x-domainee-signature header. If your endpoint is down, we make six delivery attempts: immediately, then +1 minute, +5 minutes, +30 minutes, +2 hours and +12 hours.
Creating a domain is one call:
curl -X POST https://api.domainee.dev/v1/domains -H "Authorization: Bearer sk_live_..." -H "Content-Type: application/json" -H "Idempotency-Key: demo-001" -d '{"hostname":"docs.acme.com","originUrl":"https://app.example.com"}'
The response gives you the CNAME your customer adds (target edge.domainee.dev), plus status and monitorStatus so you can track progress. Schematically, with placeholders instead of real values (see the quickstart for the exact shape):
{"hostname":"docs.acme.com","status":"<status>","monitorStatus":"<monitor state>"}
The API is REST, JSON only, with Bearer keys. The Idempotency-Key header is honored for 24 hours.
The options, one honest paragraph each
Eight rivals, then us, then the DIY route. Every competitor claim below is attributed and unverified.
Cloudflare for SaaS. The infrastructure default. Per customdomain.ai, the first 100 hostnames are free, then $0.10 per hostname per month. Standard plans cap at 50,000 hostnames, and wildcards, custom certificates and mTLS are Enterprise-only. Read our Domainee vs Cloudflare for SaaS page for the long version. Pick this if you already live on Cloudflare and want the lowest per-hostname price. Skip this if you need wildcards, custom certificates or mTLS and aren't buying Enterprise (per customdomain.ai).
Approximated. A managed reverse proxy. Per customdomain.ai, it creates a dedicated cluster for you with edge servers around the world, and listed customers include Lemon Squeezy, Instantly and Churnkey. Per Domainee's /alternatives page, it starts at a $20/month minimum with no free tier. Pick this if you want a dedicated proxy cluster. Skip this if you want to prototype at $0.
SaaS Custom Domains. A managed network with a REST API and webhooks. It claims 119 locations and 99.999% uptime (its own claims). It starts at $0.29/domain/month with a $29/month minimum, per Domainee's /alternatives page. Pick this if its network claims matter to you and you're past the minimum anyway. Skip this if you have a handful of domains and want to pay $0.
customdomain.ai. A managed edge with a REST API, an embeddable widget and a hosted MCP server. It claims automatic DNS setup across 63 providers and is free for 10 connections/yr, per Domainee's /alternatives page. Pick this if its DNS auto-configuration covers your customers' providers. Skip this if you expect more than 10 connections a year and haven't priced the paid tiers.
CoAlias. White-label and vanity domains aimed at no-code apps like Bubble, WeWeb and FlutterFlow. SaaS products can add or remove domains through its API. Per Domainee's /alternatives page, it starts at $25/month and has a free tier. Pick this if you're building on a no-code stack. Skip this if your product isn't built on one.
Vercel for Platforms. Domain APIs for multi-tenant platforms. It only helps if your product is hosted on Vercel. Per Domainee's /alternatives page, you build your own custom-domain product on Vercel hosting plus engineering time. Pick this if Vercel is your permanent home. Skip this if you might move hosts.
Entri. Positioned for enterprise. Per Domainee's /alternatives page, it starts at $249/month for 600 domains/yr, with a public API and MCP. Pick this if you're buying at enterprise scale. Skip this if that starting price is more than your 30 customers justify.
SaaSKevin. Simple, domain-based pricing, free for 3 domains per Domainee's /alternatives page. Pick this if you have a few domains and want the simplest pricing. Skip this if you need more than 3 domains free.
Domainee. 20 domains and 100 GB/month free, forever. After that, $0.20/domain/month and $0.05/GB above 100 GB. You get provider-aware customer setup, Connect plus Buy (500+ TLDs, wholesale price plus a $1 flat fee, charged through your Stripe account, with the end user as the legal registrant), webhooks, white-label, and a hosted MCP server. We are GDPR compliant, SOC 2 is in process (not achieved), and an uptime SLA exists. Common Ninja, Embeddable and Vidocu run on it in production. Pick this if you want to ship in an afternoon with published prices. Skip this if you need wildcard domains, or you want the lowest per-hostname price at small scale. See all eight Domainee comparison pages.
Build it yourself. Open-source projects such as sireto/custom-domain and build-it-yourself guides on dev.to and elsewhere exist. Pick this if you have a deep edge stack and a reason to own every layer. Skip this if the ongoing care is not in your roadmap. See the build-vs-buy section below.
Do you need an MCP server for a custom domains API?
You don't need one. It's useful if you build with AI tooling. An MCP server lets your agent create, check and debug domains directly, without you pasting curl commands into a chat.
Domainee's MCP server is hosted at https://mcp.domainee.dev/mcp. It uses HTTP transport only (no stdio) and works with Claude Desktop, Cursor, Claude Code, Windsurf, Continue and Cline. It exposes 12 workspace tools, plus free diagnostic tools you can use without a key. The source is on GitHub at CommonNinja/domainee-mcp-server.
We're not the only one. customdomain.ai and Entri also list MCP support. The honest point is that Domainee's MCP is a first-class surface of the product, not a bolt-on. If you ship with Cursor or Claude Code, check that whichever vendor you pick covers the operations you actually need.
Build vs buy: when doing it yourself still wins
The break-even logic has no magic number. It has a shape: build cost is paid once, ongoing care is paid forever. ACME rate limits, cert rotation, DNS health checks and cert-outage on-call don't stop after v1. Most teams budget for the first and forget the second.
In-house still wins when:
- You run very high hostname counts and the per-domain math flips.
- You already operate a deep edge stack and adding custom domains is incremental.
- You have special certificate requirements a managed service won't meet.
Buying wins when custom domains should be the boring part of your roadmap. We did the four months. We're still doing the ongoing care. You get the API.
On proof: Common Ninja, Embeddable and Vidocu run on Domainee in production, and named customers include SendRaven, Brackets and Trofeo.live. These aren't big-brand logos, and we won't pretend they are.
How to evaluate any custom domains API in an afternoon
Run this checklist against every vendor on your shortlist, us included:
- Create a domain with one API call.
- Add the CNAME at a real registrar, the same one your customers use.
- Watch the status change until SSL is active.
- Break the CAA record on purpose and see whether you get a warning or a silent failure.
- Kill the DNS record and confirm your webhooks fire.
- Read the invoice line items. Make sure domains and bandwidth are both visible.
For debugging any provider, Domainee offers 18 free public REST endpoints with no key: DNS lookup, SSL check, WHOIS/RDAP, CNAME, propagation, DMARC and more. Limits are 30 req/min and 500 req/day per IP.
Know the rate limits before you load-test. Domainee defaults to 60 req/min per key. POST /v1/domains allows 100/hour, bulk create allows 5/hour at 100 domains each, and DNS checks allow 600/hour.
Start free
20 custom domains and 100 GB/month, free forever. Create your first domain with one API call from the quickstart, or sign up at domainee.dev/sign-up. A card goes on file first, and it is charged $0 under the free tier.
FAQ
What is a custom domains API?
A custom domains API is a REST API that lets a SaaS product accept and serve traffic on customer-owned hostnames. It handles the DNS record your customer adds, DNS verification, SSL issuance and renewal, and routing to your origin. Domainee is one example.
What is the best custom domains API for SaaS?
It depends on your situation. Cloudflare for SaaS suits teams already on Cloudflare with engineering time, and Vercel for Platforms suits products hosted on Vercel. Domainee suits teams with 20 to a few thousand customer hostnames who want to ship in an afternoon with published prices and provider-aware customer setup.
How much does a custom domains API cost?
On Domainee, the first 20 domains and 100 GB/month are free, then it's $0.20/domain/month and $0.05/GB above 100 GB. That works out to $16/month at 100 domains and $196/month at 1,000, before bandwidth. Volume discounts start at 1,001 domains and graduate down to $0.10 at 10,001+ domains. Competitor prices in the table above are attributed and unverified.
Is Cloudflare for SaaS cheaper than a managed custom domains API?
Per customdomain.ai, Cloudflare for SaaS gives you 100 free hostnames, then $0.10 per hostname per month. That is cheaper per hostname than Domainee's 20 free domains and $0.20/domain/month. We haven't verified Cloudflare's figures, and the table covers hostnames only, not bandwidth or plan fees.
Is there a free custom domains API?
Yes. Domainee's free tier covers up to 20 custom domains and 100 GB/month and never expires. A card goes on file before your first domain and is charged $0 under the free tier. Other vendors list free tiers too, such as SaaSKevin for 3 domains, per Domainee's /alternatives page.
Can a custom domains API handle apex domains like example.com?
Domainee supports apex domains and subdomains. Where a DNS provider disallows a CNAME at the root, Domainee offers two anycast A records instead.
Does Domainee support wildcard domains?
No. Wildcard domains are not supported at the moment. If your product needs *.customer.com, Domainee isn't the right fit today.
How does SSL work for customer custom domains?
Domainee issues Let's Encrypt certificates on first request (on-demand TLS) and renews them automatically. Each domain is re-checked every 5 minutes. Preflight also warns on CAA records that block Let's Encrypt.
What do my customers have to do to connect their domain?
They add one CNAME record, with the target edge.domainee.dev. Domainee detects their DNS provider from public NS records and returns provider-specific steps. Cloudflare customers get one-click Domain Connect, and Cloudflare or DigitalOcean customers can supply a scoped token that is used once and never stored.
Should I build custom domain support in-house?
Build if you have very high hostname counts, a deep existing edge stack, or special certificate requirements. Otherwise the ongoing care is the cost most teams miss: ACME rate limits, cert rotation, DNS health checks and cert-outage on-call continue after v1. The usual in-house estimate for v1 alone is 2 to 4 months.
Can an AI agent manage custom domains through an API?
Yes. Domainee's hosted MCP server at https://mcp.domainee.dev/mcp works with Claude Desktop, Cursor, Claude Code, Windsurf, Continue and Cline over HTTP transport. It exposes 12 workspace tools plus free diagnostic tools usable without a key. customdomain.ai and Entri also list MCP support.
Does a custom domains API work if I'm hosted on Vercel or Netlify?
With Domainee, POST /v1/domains takes a hostname and an originUrl, so you point it at where your app is served. Vercel for Platforms, by contrast, only helps if your product is hosted on Vercel. Run the afternoon checklist against your own origin to confirm the setup works for you.