Registering a domain

This page describes how to search for an available domain name and register the domain using Cloud Domains. Cloud Domains enables you to choose your DNS provider and customize your DNS settings. Once you register your domain, Cloud Domains automatically renews your domain registration as long as your Cloud Billing account stays active.

Before you begin

Before you start using Cloud Domains to register your domains, follow these steps:

  1. In the Cloud Console, go to the project selector page.

    Go to the project selector page

  2. Make sure that billing is enabled for your Google Cloud project. Learn how to confirm billing is enabled for your project.

  3. Enable the API.

Registering a domain

To register a domain, you must complete the following tasks:

  1. Search for a domain name.
  2. Configure DNS for the domain.
  3. Choose privacy settings for your domain.
  4. Specify contact details.
  5. Verify your contact information.

To register a domain, follow these instructions:

Console

  1. Go to the Cloud Console.

    Go to the Cloud Domains page

  2. Click Register domain.
  3. Search for an available domain. Identify the domain name that you'd like to purchase. Pricing is listed for each available domain.
  4. Click Add . You can add as many domains as you like, subject to your available quota. For details, see the Quotas page. The total pricing based on your selection is calculated to the right. To remove a domain from your cart, click the check mark next to the domain name.

  5. Click Continue.

  6. On the DNS configuration page, choose one of the following DNS providers for your name servers. If you are registering multiple domains, you can choose individual settings for each domain.

    DNS provider Description Cost
    Cloud DNS Google recommends that you use Cloud DNS as your provider for all your name servers. Using Cloud DNS requires that you create a public DNS zone for one or more domains that you want to register. To create a public DNS zone, see Creating a public zone. Additional Cloud DNS charges apply. For details, see the Cloud DNS pricing page.
    Google Domains If you choose this option, you can configure your name servers through Cloud Domains, and then use Google Domains to configure the DNS resource records. Note that using Google Domains does not allow API access. No additional cost.
    Custom name servers Choosing the custom name server option enables you to set up your name servers using Cloud Domains, then configure your DNS resource records with a third-party DNS provider. Check with your DNS provider.

  7. If you choose Cloud DNS, select the public zone that you have created for the domain from the drop-down menu.

  8. If you choose Google Domains, select whether you want to enable or disable DNSSEC. For more information on DNSSEC, see DNS Security.

  9. If you choose Custom name servers, enter at least two name servers. To add additional name servers, click Add another name server.

  10. Click Continue.

  11. By default, privacy protection is turned on. However, you can change the settings to one of the following privacy options:

    Privacy option Description
    Privacy protection on

    Choosing this option ensures that your contact information is not available to the public. To help protect your contact information and prevent spam, a third party provides alternate (proxy) contact information for your domain in the public directory. The third-party provider forwards all messages that are sent to your proxy contact information to the actual private contact information.

    Cloud Domains does not offer privacy protection for all domain endings or top-level domains (TLDs). Registries, the organizations that manage domain endings, have policies prohibiting the use of privacy protection for certain TLDs. To see privacy information for a specific TLD, click the TLD on the Supported TLD reference page. Privacy information for the TLD is available in the DNS reference section.

    Limit your info available to the public Choosing this option makes limited personal contact information available to the public. The actual information available publicly depends on the domain that you have chosen. To see privacy information for a specific TLD, click the TLD on the Supported TLD reference page. Privacy information for the TLD is available in the DNS reference section.
    Make all contact info public Choosing this option makes all your contact information available to the public through the WHOIS database.

  12. If you choose to make all contact information publicly available, you must click I agree on the pop-up dialog.

  13. Click Continue.

  14. Enter your contact information for the domain, which is necessary for ICANN to reach you in case of any problems. By default, your contact information applies to the registrant, technical and administrative contacts. To enter different information for each type of contact, you can edit your contact settings later.

  15. Click Register.

gcloud

  1. Search and check availability for a domain:

    • To search for an available domain, use the gcloud beta domains registrations search-domains command:

      gcloud beta domains registrations search-domains SEARCH_TERMS
      

      Replace the following command option:

      • SEARCH_TERMS: The domain name that you want to search for. For example, example.app.
    • To check up-to-date availability for a domain name, and get the parameters needed to register a new domain, including price, availability, supported privacy modes and notices, use the gcloud beta domains registrations get-register-parameters command:

      gcloud beta domains registrations get-register-parameters DOMAIN_NAME
      

      Replace the following command option:

      • DOMAIN_NAME: The domain name that you want to check availability for. For example, example.app.

      Your output looks similar to the following:

      availability: AVAILABLE
      domainName: example.app
      domainNotices:
      - HSTS_PRELOADED
      supportedPrivacy:
      - PRIVATE_CONTACT_DATA
      - PUBLIC_CONTACT_DATA
      yearlyPrice:
        currencyCode: USD
        units: '12'
        

  2. Create a managed public zone for your domain (optional):

    You can choose a DNS provider for your name servers based on the DNS provider options explained in the Overview. If you use Cloud DNS, you must first create a managed public zone for your domain.

    To create a new Cloud DNS managed zone for the domain, use the dns managed-zones create command:

    gcloud dns managed-zones create CLOUD_DNS_ZONE_NAME \
       --description="DESCRIPTION" \
       --dns-name=DOMAIN_NAME \
    

    Replace the following command options:

    • CLOUD_DNS_ZONE_NAME: A name for your zone
    • DESCRIPTION: A description for your zone
    • DOMAIN_NAME: The DNS domain name for your zone, like example.com
  3. Register the domain:

    To register the domain, use the gcloud beta domains registrations register command:

    gcloud beta domains registrations register DOMAIN_NAME
    

    Replace the following options:

    • DOMAIN_NAME: The domain name that you want to register. For example, example.app.

    Your output looks similar to the following when you register a domain example.com using name servers provided by Cloud DNS:

    Yearly price: 12.00 USD
    Do you agree to pay this yearly price for your domain (y/N)?  y
    You can provide your DNS settings by specifying name servers, Cloud
    DNS Managed Zone name or by choosing free name servers provided by
    Google Domains
     [1] Provide name servers list
     [2] Provide Cloud DNS Managed Zone name
     [3] Use free name servers provided by Google Domains
    Please enter your numeric choice (2):  NAME_SERVER_CHOICE
    Cloud DNS Managed Zone name:  CLOUD_DNS_ZONE
    Cloud DNS Zone 'CLOUD_DNS_ZONE' is not signed. DNSSEC won't be enabled.
    Contact data not provided using the --contact-data-from-file flag.
    Do you want to enter it interactively (Y/n)?  y
    Full name:  NAME
    Organization (if applicable):  ORGANIZATION
    Email:  EMAIL_ADDRESS
    Enter phone number with country code, e.g. "+1.8005550123".
    Phone number:  PHONE_NUMBER
    Enter fax number with country code, e.g. "+1.8005550123".
    Fax number (if applicable):  FAX_NUMBER
    Enter two-letter country code, e.g. "US" or "PL".
    Country code:  COUNTRY_CODE
    Postal code/zipcode:  ZIP_CODE
    State (if applicable):  STATE
    City:  CITY
    Street address (incl. building, apt):  STREET_ADDRESS
    Specify contact privacy
     [1] private-contact-data
     [2] public-contact-data
    Please enter your numeric choice (1):  DATA_PRIVACY_CHOICE
    Waiting for 'operation-1597880129306-5ad437580410d-2c65d582-0861c5b7' to
    complete...done.
    Created registration [example.com] Note:
    The domain is not yet registered.
    Wait until the registration resource changes state to ACTIVE.
    
    Replace the following values:

    • NAME_SERVER_CHOICE: Choose the name server option based on your DNS provider choice. For DNS provider options, see the DNS providers section.
    • CLOUD_DNS_ZONE: The Cloud DNS managed zone name.
    • NAME: Your full name, for example, Alice Smith.
    • ORGANIZATION: (Optional) Your organization, for example, Doe Corp.
    • EMAIL_ADDRESS: Your email address for verification. For example alice@example.net.
    • PHONE_NUMBER: The phone number of the contact in international format. For example, +1-800-555-0123.
    • FAX_NUMBER: (Optional) The phone number of the contact in international format. For example, +1-800-555-0123.
    • COUNTRY_CODE: The country code of the address. For example, US for United States.
    • ZIP_CODE: The postal code or zip code of the address. For example, 94043.
    • STATE: The state or province of the address. For example, CA.
    • CITY: The city or town of the address. For example, Mountain View.
    • STREET_ADDRESS: The street address of the registrant. For example, 1599 Bayview Parkway.

    • DATA_PRIVACY_CHOICE: Your data privacy choice. For detailed information about privacy options, see the Privacy protection section.

API

  1. To search for an available domain name, use the registrations.searchDomains method with an empty request body:

    GET https://domains.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/registrations:searchDomains?query=SEARCH_TERM
    

    Replace the following values:

    • PROJECT_ID: The ID of the project where the domain registration is created.
    • SEARCH_TERMS: The domain name that you want to search for. For example, my-company-name.
  2. To check up-to-date availability for a domain name, and get the parameters needed to register a new domain, including price, availability, supported privacy modes and notices, use the registrations.retrieveRegisterParameters method with an empty body:

    GET https://domains.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/registrations:retrieveRegisterParameters?domainName=DOMAIN_NAME
    
    Replace the following values:

    • PROJECT_ID: The ID of the project where the managed zone is created
    • DOMAIN_NAME: The domain name that you want to check availability for. For example, example.app.

    The resulting response contains the yearlyPrice for the domain, which you need to use in the registrations.register API call.

  3. You can choose a DNS provider for your name servers based on the DNS provider options explained in the Overview.

    If you're using Cloud DNS as your DNS provider, to create a managed public DNS zone, use the managedZones.create method:

    POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
    {
     "name": "ZONE_NAME",
     "description": "DESCRIPTION",
     "dnsName": "DOMAIN_NAME.",
     "visibility": "public"
    }
    

    Replace the following command options:

    • PROJECT_ID: The ID of the project where the managed zone is created
    • ZONE_NAME: A name for your zone
    • DESCRIPTION: A description for your zone
    • DOMAIN_NAME.: The DNS suffix for your zone like example.com Note that the trailing dot is required.

    The resulting response contains a nameServers list that you must use in the registrations.register API call.

  4. To register the domain, use the registrations.register method:

    POST https://domains.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/registrations:register
    {
     "registration": {
       "domainName": "DOMAIN_NAME",
       "dnsSettings": {
         "customDns": {
           "nameServers": [
             "NAME_SERVERS"
           ]
         }
       },
       "contactSettings": {
         "privacy": "CONTACT_PRIVACY",
         "registrantContact": {
           "postalAddress": {
             "regionCode": "REGION_CODE",
             "postalCode": "POSTAL_CODE",
             "administrativeArea": "SUBDIVISION",
             "locality": "CITY",
             "addressLines": [
               "ADDRESS"
             ],
             "recipients": [
               "CONTACT_NAME"
             ],
             "organization": "ORGANIZATION"
           },
           "email": "EMAIL_ADDRESS",
           "phoneNumber": "PHONE_NUMBER",
           "faxNumber": "FAX_NUMBER"
         },
         "adminContact": {
           "postalAddress": {
             "regionCode": "REGION_CODE",
             "postalCode": "POSTAL_CODE",
             "administrativeArea": "SUBDIVISION",
             "locality": "CITY",
             "addressLines": [
               "ADDRESS"
             ],
             "recipients": [
               "CONTACT_NAME"
             ],
             "organization": "ORGANIZATION"
           },
           "email": "EMAIL_ADDRESS",
           "phoneNumber": "PHONE_NUMBER",
           "faxNumber": "FAX_NUMBER"
         },
         "technicalContact": {
           "postalAddress": {
             "regionCode": "REGION_CODE",
             "postalCode": "POSTAL_CODE",
             "administrativeArea": "SUBDIVISION",
             "locality": "CITY",
             "addressLines": [
               "ADDRESS"
             ],
             "recipients": [
               "CONTACT_NAME"
             ],
             "organization": "ORGANIZATION"
           },
           "email": "EMAIL_ADDRESS",
           "phoneNumber": "PHONE_NUMBER",
           "faxNumber": "FAX_NUMBER"
         }
       }
     },
     "yearlyPrice": {
       "currencyCode": "CURRENCY_CODE",
       "units": NUMBER_OF_UNITS
     }
    }
    

    Replace the following values:

    • PROJECT_ID: The ID of the project where you created the registration resource.
    • DOMAIN_NAME: The domain name that you want to register. For example, example.com.
    • NAME_SERVERS: The name servers you want to use. If you are using Cloud DNS, use the nameServers field output that you got from the managedZones.create.post API call.
    • CONTACT_PRIVACY: The preferred privacy setting for the contact data.

      For detailed information on the available privacy options, see Contact privacy.

    Replace the following values for the registrantContact, adminContact and technicalContact:

    For detailed information on each type of contact, see the Contact information section.

    • REGION_CODE: The region code of the address. For example, US for United States
    • POSTAL_CODE: The postal code of the address. For example, 94043
    • SUBDIVISION: The highest administrative subdivision of an address, like a state, a province, an oblast, or a prefecture. For example, CA for the state of California
    • CITY: The name of the city or town of the address. For example, Mountain View
    • ADDRESS: The lower levels of an address. For example, 1599 Amphitheater Parkway
    • CONTACT_NAME: The name of the contact
    • ORGANIZATION: (Optional) The name of the organization that is registering the domain. For example, Doe Corporation
    • EMAIL_ADDRESS: The email address of the contact. For example, john@example.com
    • PHONE_NUMBER: The phone number of the contact in international format. For example, +1-800-555-0123
    • FAX_NUMBER: (Optional) The fax number of the contact in international format. For example, +1-800-555-0123

    Values for the yearly price of the domain:

    This is the amount obtained from the yearlyPrice field in the registrations.retrieveRegisterParameters API call:

    • CURRENCY_CODE: The three-letter currency code as defined in ISO 4217. For example, USD.
    • NUMBER_OF_UNITS: The whole units of the amount. For example, if currencyCode is USD, then one unit is one US dollar.

Verify your contact information

After you register your domain, Cloud Domains sends a verification email to the address that you provided in your contact information for the domain. This email includes a subject line that states Action required: Please verify your email address.

You must verify your contact information within 15 days or your domain becomes inactive.

To verify your email address, follow these steps:

  1. Open the verification email from domains-noreply@google.com.
  2. Click Verify email now.

    Once Cloud Domains verifies your contact information, a Google Domains page with the message that your email address has been verified is displayed.

    If there is an error in verifying your contact information, see the Troubleshooting section.

What's next