Last modified: September 13, 2021

Python: check if domain's name is available

With the whois library, you can check if the domain's name is available.

whois Installation

pip install python-whois

How to use whois

Syntax:

whois.whois(domain)

If the domain is not available or registered, whois() returns domain info.

If the domain is available, return an error.

Example with a registered domain:


import whois

domain = 'pytutorial.com'

get_info = whois.whois(domain)

print(get_info)

Output:

{
  "domain_name": [
    "PYTUTORIAL.COM",
    "pytutorial.com"
  ],
  "registrar": "NAMECHEAP INC",
  "whois_server": "whois.namecheap.com",
  "referral_url": null,
  "updated_date": [
    "2020-12-23 14:56:23",
    "2020-11-25 04:11:43.170000"
  ],
  "creation_date": "2019-12-09 21:13:10",
  "expiration_date": "2021-12-09 21:13:10",
  "name_servers": [
    "CHINCHILLA.EZOICNS.COM",
    "CUTTLEFISH.EZOICNS.COM",
    "ORANG-UTAN.EZOICNS.COM",
    "TROPICBIRD.EZOICNS.COM",
    "chinchilla.ezoicns.com",
    "cuttlefish.ezoicns.com",
    "orang-utan.ezoicns.com",
    "tropicbird.ezoicns.com"
  ],
  "status": "clientTransferProhibited https://icann.org/epp#clientTransferProhibited",
  "emails": [
    "abuse@namecheap.com",
    "981a1f4faec6408f80bceab53de5ea98.protect@withheldforprivacy.com"
  ],
  "dnssec": "unsigned",
  "name": "Withheld for Privacy Purposes",
  "org": "Privacy service provided by Withheld for Privacy ehf",
  "address": "Kalkofnsvegur 2",
  "city": "Reykjavik",
  "state": "Capital Region",
  "zipcode": "101",
  "country": "IS"
}

Example with an available domain:


import whois

domain = 'pytutorialnoexist.com'

get_info = whois.whois(domain)

print(get_info)

Output:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    domain_info = whois.whois(domain)
  File "/home/py/.local/lib/python3.8/site-packages/whois/__init__.py", line 44, in whois

Check if a domain is available

As I said, the whois function returns an error when the domain is available.

So to handle this error, we need to use the try-except statement.

Example:


import whois

domain = 'pytutorialnoexist.com'

try:
    get_info = whois.whois(domain)
    print(f"{domain} is Registered")

except:
    print(f"{domain} is Available")

Output:

pytutorialnoexist.com is Available

Write our checker function

After understanding how the whois library works, let's now write our domain-checker function.

Code:


import whois

def is_domain_available(domain):
    try:
        get_info = whois.whois(domain)
        return False
    except:
        return True

Try it:


print(is_domain_available('pytutorialnoexist.com'))

Output:

True


print(is_domain_available('pytutorial.com'))

Output:

False