Cobertos / tld-data

Get yer TLD data here! Scraped straight from DNS, ICANN and IANA. Including branded gTLDs and whether or not there's registry restrictions.
https://tld-data.com
MIT License
10 stars 0 forks source link
data dataset domain gtld gtlds javascript tld

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:

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.