Skip to content
Docs

vercel domains

The vercel domains command manages domains under the current scope. With it, you can list, inspect, verify, add, remove, purchase, renew, move, transfer in, search, price, check the availability of, and manage automatic renewal for domains.

You can manage domains with further options and greater control under a Vercel Project's Domains section in the sidebar from the Vercel Dashboard.

terminal
vercel domains ls

Using the vercel domains command to list all domains under the current scope.

terminal
vercel domains inspect [domain]

Using the vercel domains command to retrieve information about a specific domain.

terminal
vercel domains verify [domain]

Using the vercel domains command to verify the DNS configuration of a domain.

terminal
vercel domains add [domain] [project]

Using the vercel domains command to add a domain to the current scope or a Vercel Project.

terminal
vercel domains rm [domain]

Using the vercel domains command to remove a domain from the current scope.

terminal
vercel domains buy [domain]

Using the vercel domains command to buy a domain for the current scope.

terminal
vercel domains search [query]

Using the vercel domains command to discover domain candidates from a keyword or domain fragment.

terminal
vercel domains price [domain] [...domain]

Using the vercel domains command to return pricing for one or more domains.

terminal
vercel domains check [domain] [...domain]

Using the vercel domains command to check availability for one or more domains.

terminal
vercel domains move [domain] [scope-name]

Using the vercel domains command to move a domain to another scope.

terminal
vercel domains transfer-in [domain]

Using the vercel domains command to transfer in a domain to the current scope.

terminal
vercel domains renew [domain]

Using the vercel domains command to renew a registered domain before it expires. The command shows the renewal price and term, then asks you to confirm the charge.

terminal
vercel domains auto-renew [domain] [on|off]

Using the vercel domains command to turn automatic renewal on or off for a registered domain. Both the domain and the on|off state are required.

With Vercel CLI 63.1.0 and later, scripts and agents can use domains buy and domains renew without an interactive terminal. The commands also skip prompts in CI when you pass --json.

Before charging a team, pass --scope <team> or set VERCEL_ORG_ID to that team's ID. A saved team selection or vercel.json scope alone isn't sufficient. If VERCEL_ORG_ID names a different team, the command refuses the charge.

  1. Run the command without --amount to get the current price and required action:

    terminal
    vercel domains buy example.com --scope my-team --json
    vercel domains renew example.com --scope my-team --json

    Without --amount, these non-interactive commands charge nothing and exit with a non-zero status. The response identifies the paying team, price, term, and next command. For a purchase, it also reports renewal terms and missing registrant details.

    For example, a renewal priced at $20 for one year returns these fields on stdout. This excerpt omits the message and hint fields. The amount is illustrative; always use the price returned for your domain:

    Approval response (excerpt)
    {
      "status": "action_required",
      "reason": "confirmation_required",
      "action": "confirmation_required",
      "userActionRequired": true,
      "data": {
        "domain": "example.com",
        "team": "my-team",
        "amount": 20,
        "currency": "USD",
        "years": 1
      },
      "missing": ["--amount"],
      "next": [
        {
          "command": "vercel domains renew example.com --scope my-team --amount 20.00 --json",
          "when": "Only after a human approves: charges $20.00 now"
        }
      ]
    }

    Human-readable guidance may also appear on stderr. Parse stdout for the JSON response; don't combine the two streams.

  2. Review the refund policy before approval. The CLI warns that domain registrations are non-refundable. Some purchases qualify for limited exceptions; see domain refund eligibility. Domain renewals are never refundable.

  3. Ask a person to approve the price, paying team, and, for a purchase, automatic renewal. Then run the returned command with --amount <approved-price-in-USD> and any missing details. The amount must match the current price; it isn't a spending limit. If the price changes, the CLI charges nothing and asks for approval again.

For supported flags and required fields, see purchase options and renewal options.

The CLI doesn't automatically retry a purchase or renewal. In non-interactive mode or with --json, a failed or unconfirmed charge returns a JSON error. If the outcome is unknown, inspect the domain before retrying:

terminal
vercel domains inspect example.com --scope my-team --json

An unknown outcome can mean the charge succeeded even though the CLI couldn't confirm it. Retrying immediately can charge you twice.

These are options that only apply to the vercel domains command.

Use these options with the prompt-free purchase procedure. Approved billing details can supply available valid email and address fields, but never the registrant's first name, last name, or phone:

OptionRequired without promptsDescription
--amount <USD>To chargeThe purchase price a person approved, in US dollars. Omit it to request the price without charging.
--use-billing-detailsWhen using team billing fieldsApprove using available team billing email and address fields for the registrant.
--first-name <TEXT>YesRegistrant's first name.
--last-name <TEXT>YesRegistrant's last name.
--email <TEXT>Unless supplied by approved billing detailsRegistrant's email address.
--phone <TEXT>YesRegistrant's phone number, starting with + and containing 10-15 digits, including the country code.
--address <TEXT>Unless supplied by approved billing detailsStreet address. Quote values that contain spaces.
--city <TEXT>Unless supplied by approved billing detailsCity.
--state <TEXT>Unless supplied by approved billing detailsState or province. The CLI requires this for every country.
--zip <TEXT>Unless supplied by approved billing detailsPostal or ZIP code. The CLI requires this for every country.
--country <CODE>Unless supplied by approved billing detailsTwo-letter country code, such as US.
--company <TEXT>NoRegistrant company name.
--auto-renewOne of --auto-renew or --no-auto-renewAllow recurring renewal charges at the end of each term.
--no-auto-renewOne of --auto-renew or --no-auto-renewTurn automatic renewal off.
--json or --format jsonNoReturn structured output without prompts.

Contact flags override billing details. Replacing an existing billing address field with a flag discards the remaining billing address fields, so supply the complete replacement address. Adding a field missing from billing details keeps the other billing address fields.

Pass exactly one of --auto-renew and --no-auto-renew. These flags don't take values such as false. To stop automatic renewal after a purchase, use vercel domains auto-renew <domain> off.

domains renew accepts --amount <USD>, --json, and --format json. The amount approves the current renewal price for the reported term. Renewal doesn't require new registrant details or change the domain's automatic-renewal setting.

Use the --yes option to bypass the confirmation prompt when removing a domain.

terminal
vercel domains rm [domain] --yes

Using the vercel domains rm command with the --yes option.

Use the --limit option to specify the maximum number of domains that ls returns. The default value is 20 and the maximum is 100.

terminal
vercel domains ls --limit 100

Using the vercel domains ls command with the --limit option.

You can also use the --limit option with search to specify the number of domain candidates to check per page. The default value is 20 and the maximum is 200.

terminal
vercel domains search acme --limit 200

Using the vercel domains search command with the --limit option.

The --next option enables pagination when listing domains. Pass the timestamp (in milliseconds since the UNIX epoch) from a previous response to get the next page of results.

terminal
vercel domains ls --next 1584722256178

Using the vercel domains ls command with the --next option for pagination.

You can also use the --next option with search to fetch the next page of candidates. Pass the cursor returned in the previous search response or printed in the continuation command.

terminal
vercel domains search acme --next [cursor]

Using the vercel domains search command with the --next option for pagination.

The --force option forces a domain on a project, removing it from an existing one.

terminal
vercel domains add my-domain.com my-project --force

Using the vercel domains add command with the --force option.

Use the --available option with search to show only domain candidates that are available to register.

terminal
vercel domains search acme --available

Using the vercel domains search command with the --available option.

Use the --order option with search to order candidates by relevance, alphabetical, or length. The default value is relevance.

terminal
vercel domains search acme --order alphabetical

Using the vercel domains search command with the --order option.

Use the --tld option with search to filter candidates by exact top-level domain. Repeat the option to search multiple TLDs.

terminal
vercel domains search acme --tld com --tld dev

Using the vercel domains search command with the --tld option.

Use the --format=json option with search to return structured JSON output.

terminal
vercel domains search acme --format=json

Using the vercel domains search command with the --format=json option.

You can also use the --format=json option with verify to return structured JSON output describing the current and expected DNS records for the domain.

terminal
vercel domains verify my-domain.com --format=json

Using the vercel domains verify command with the --format=json option.

You can also use the --format=json option with buy or renew to return structured JSON without prompts. Without --amount, the command charges nothing and returns the current price and approval instructions. To complete the charge, follow Buy or renew without prompts.

terminal
vercel domains renew my-domain.com --scope my-team --format=json

Checking the renewal price for my-team without charging, using the --format=json option.

You can also use the --format=json option with auto-renew to return a structured JSON result describing the domain's new automatic renewal state.

terminal
vercel domains auto-renew my-domain.com on --format=json

Using the vercel domains auto-renew command with the --format=json option.

Use the --project option with verify to check the DNS configuration against the records expected by a specific Vercel Project.

terminal
vercel domains verify my-domain.com --project my-project

Using the vercel domains verify command with the --project option.

Use the --strict option with verify to check DNS for the exact domain only, without falling back to the parent zone's configuration.

terminal
vercel domains verify my-domain.com --strict

Using the vercel domains verify command with the --strict option.

The following global options can be passed when using the vercel domains command:

For more information on global options and their usage, refer to the options section.

Last updated August 21, 2026

Was this helpful?

supported.