Skip to content

Get yer TLD data here! Scraped straight from DNS, ICANN and IANA. Including branded gTLDs and whether or not there's registry restrictions.

License

Notifications You must be signed in to change notification settings

Cobertos/tld-data

Repository files navigation

build status build status twitter shield website shield

tld-data

Accurate data on TLDs with a focus on which ones can actually be registered. Data pulled weekly

Browse the data at tld-data.com!

Methodology:

  • Pull all TLDs from DNS root zone for accuracy (disregards upcoming and terminated TLDs)
  • Combines with type information from IANA root zone database
  • Scrapes ICANN registry agreements for other information to get as close to the source as possible

Data

tldData.json contains an array with an object for every TLD in the root zone. Each object has other properties shown in the below snippet assembled from multiple sources.

{
  "generated": "2021-03-16T06:41:50-04:00",
  "data": {
    // TLD, no leading '.', unicode (not punycode)
    "tld": "accenture",

    // type of the TLD from IANA database
    // ['generic', 'country-code', 'sponsored', 'infrastructure', 'generic-restricted', 'test']
    // An explanation of each can be found: https://icannwiki.org/Generic_top-level_domain
    "type": "generic",

    // If present, is the generic TLD a generic brand TLD?
    // More specifically, does the registry agreement for this TLD specify "Specification 13"
    // or have an exemption to "Specification 9". Both of these prohibit the registry
    // from giving domains to anyone but the registry and affiliates (no third parties).
    "isBrand": true,

    // If present, are there any restrictions for registering the TLD?
    // Only checks for "Specification 12" currently (see notes in code)
    // Not super accurate yet, and not currently implemented for ccTLDs!
    "hasRestrictions": false,

    // If the gTLD is NOT in General Availability (useful for filtering out domains
    // that are too new)
    // NOTE: This is NOT PARTICULARLY ACCURATE. This uses the end of the last listed
    // period as there's no well-maintained public data source for this...
    // NOTE: omitted on non-generic TLDs
    "isNotInGeneralAvailability": false,

    // The periods of the gTLD, in ISO8601 date format (no time)
    "periods": [{
      "name": "Sunrise",
      "open": "2015-07-06",
      "close": "2015-12-31"
    }]
  }
}

Running

src/cli.js prints data to stdout and takes previously found data from stdin (to reuse in certain portions to reduce HTTP requests).

You can run the command to generate all new data:

node -r esm --unhandled-rejections=strict src/cli.js --color > tldData.json

Or to reuse the old isBrand and hasRestrictions keys, you can run:

$ node -r esm --unhandled-rejections=strict src/cli.js --stdin --color < tldData.json > tldDataNew.json
$ mv -f tldDataNew.json tldData.json

Contributing

Contributing for tld-data.com can be found here.

About

Get yer TLD data here! Scraped straight from DNS, ICANN and IANA. Including branded gTLDs and whether or not there's registry restrictions.

Topics

Resources

License

Stars

Watchers

Forks