Documentation / Endpoints / Check domains
Domain availability check API: GET /v1/check
Check domainsGive up to 50 full domains and find out which are free to register, with today's domain prices and a buy link for each free one.
Free, no keyCosts 1 a domainGET or POSTMCP tool: check_domains
Try itReal answers, counted in your allowance
Code
curl "https://api.domainmcp.net/v1/check?domains=brightfield.com,brightfield.io"
It also takes POST with a JSON body, which suits long lists:
curl -X POST "https://api.domainmcp.net/v1/check" \
-H "Content-Type: application/json" \
-d '{"domains": ["brightfield.com", "brightfield.io"]}'Parameters
domainslist, requiredFull domains, comma separated, up to 50.
domain= works for a single one. Endings such as co.uk are understood.Returns
A domain that cannot be checked (a typo, no ending, an ending we do not know) is left out of data and listed in meta.skipped with the reason.
domainstringThe full domain, in lower case.
availabletrue, false or nullNull when the answer is not known yet.
statusstringOne of three values.
availabletakenunknownconfirmedbooleanTrue once the registry has answered. A free answer from DNS alone is confirmed within about a minute.
bystringWhere the answer came from. See Reading a result.
registryregistrardnsdns_onlyconfirmingchecked_atstringWhen it was checked, in UTC.
premiumbooleanFree names only. True when the registry sets its own, higher price.
priceobject or nullFree names only:
first_year, renews, min_years, on_offer and currency. Null for a premium name, or an ending we have no price for.buy_urlstring or nullFree names only: a short link that opens a registrar with the name ready to register. Null for a premium name, or an ending not sold through our links, with a note saying which.
registrarstring or nullTaken names only: who holds it, with registered and expires dates when known.
Example answer
GET /v1/check?domains=brightfield.com,brightfield.io
{
"data": [
{
"domain": "brightfield.com",
"available": false,
"status": "taken",
"confirmed": true,
"by": "dns",
"checked_at": "2026-11-11T03:23:10Z",
"registrar": null,
"registered": null,
"expires": null
},
{
"domain": "brightfield.io",
"available": false,
"status": "taken",
"confirmed": true,
"by": "dns",
"checked_at": "2026-11-11T03:23:10Z",
"registrar": null,
"registered": null,
"expires": null
}
],
"meta": {
"count": 2,
"took_ms": 0
}
}Errors
bad_request400No domains, or more than 50.
unknown_parameter422A parameter this endpoint does not take, such as domian for domain.
rate_limited429Over 60 domains this minute from your address. Wait for the seconds in
Retry-After.quota_exceeded429Over 2,000 domains today. It resets at 00:00 UTC.
Every error has the same shape. See Errors for all of them.