Thanks to visit codestin.com
Credit goes to github.com

Skip to content

simplebytes-com/whois-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Last updated: 2025-10-30

WHOIS Parser for ccTLDs

A comprehensive, battle-tested WHOIS parser with support for 169 country-code TLDs (ccTLDs) and 1,260+ TLDs total. Built for DomainDetails.com by Simple Bytes LLC.

WHOIS Server Dictionary

This repository includes whois_dict.json with WHOIS servers for 1,260+ TLDs (updated from IANA Root Zone Database).

Overview

This parser handles the messy reality of WHOIS data across different country registries. Unlike simple regex-based parsers, it handles:

  • Multiple date formats - from 2005/05/30 (Japan) to 2007. 03. 02. (South Korea) to natural language dates
  • International field names - including Japanese (็™ป้Œฒๅนดๆœˆๆ—ฅ), Korean, and other non-English formats
  • Various nameserver formats - square brackets, multi-line sections, colon-separated with IPs
  • Slow WHOIS servers - with configurable 30-second timeouts
  • Fallback parsing - when domain names aren't explicitly listed in responses

๐Ÿ“Š Complete Breakdown of All 169 ccTLDs

โœ… FULLY WORKING (52 - 31%)

All fields parsed: domain, dates, nameservers, registrar, status โ†’ Ready for production use

.ac .af .ag .bh .bi .bj .ci .cl .co .dm .do .ge .gg .gi .gl .hr .hu .ie .io .it .je .jp .kr .kz .la .ma .me .mk .mn .mx .my .nu .nz .pk .pt .ru .sc .se .sg .sh .sk .so .st .su .sx .sy .tc .td .tl .us .ve .ws .ไฟกๆฏ

โš ๏ธ PARTIAL DATA (99 - 59%)

Missing some fields (usually creation date due to registry policy) โ†’ Still useful but incomplete

Major TLDs with partial data:

  • ๐Ÿ‡ฉ๐Ÿ‡ช .de (Germany) - No creation date (registry policy)
  • ๐Ÿ‡ซ๐Ÿ‡ท .fr (France) - No creation date
  • ๐Ÿ‡ฌ๐Ÿ‡ง .uk (United Kingdom) - No creation date
  • ๐Ÿ‡จ๐Ÿ‡ณ .cn (China) - No creation date
  • ๐Ÿ‡ฆ๐Ÿ‡บ .au (Australia) - No creation date
  • ๐Ÿ‡ฆ๐Ÿ‡น .at (Austria) - No creation date
  • ๐Ÿ‡ง๐Ÿ‡ช .be (Belgium) - No creation date
  • ๐Ÿ‡ฉ๐Ÿ‡ฐ .dk (Denmark) - No creation date
  • ๐Ÿ‡ณ๐Ÿ‡ฑ .nl (Netherlands) - Partial data
  • ๐Ÿ‡ต๐Ÿ‡ฑ .pl (Poland) - Partial data
  • ๐Ÿ‡ช๐Ÿ‡ธ .es (Spain) - Authorization required
  • ๐Ÿ‡จ๐Ÿ‡ญ .ch (Switzerland) - Blocks automated queries
  • ๐Ÿ‡ฎ๐Ÿ‡ณ .in (India) - Partial data
  • ๐Ÿ‡ง๐Ÿ‡ท .br (Brazil) - Partial data
  • ๐Ÿ‡จ๐Ÿ‡ฆ .ca (Canada) - Partial data
  • ๐Ÿ‡ช๐Ÿ‡บ .eu (European Union) - No creation date

โŒ CANNOT QUERY (18 - 11%)

Server infrastructure issues, cannot be fixed by parser

Breakdown by error type:

  • โฑ๏ธ 8 Timeouts (>30s): .dz .gp .mw .ng .pt .sb .tk .uy
  • ๐Ÿšซ 4 Refused: .bo .cf .hm .pf
  • ๐ŸŒ 2 DNS Error: .iq .mz
  • ๐Ÿ“ญ 1 No Data: .bn
  • ๐Ÿ”Œ 3 Connection Reset: .tr and others

๐Ÿ’ก Key Insights

  1. Parser Success: 151/169 (89%) return SOME data
  2. Full Success: 52/169 (31%) return ALL data
  3. Infrastructure Issues: 18/169 (11%) cannot be queried at all

The 99 "partial data" ccTLDs are often policy limitations, not bugs:

  • European registries hiding creation dates for GDPR compliance
  • Some registries require authorization for automated queries
  • Privacy-focused registries redacting sensitive information

๐ŸŒŸ Highlighted Format Support

  • ๐Ÿ‡ฏ๐Ÿ‡ต Japan (.jp) - Square bracket format with Japanese fields
  • ๐Ÿ‡ฐ๐Ÿ‡ท South Korea (.kr) - Korean/English dual format with wide spacing
  • ๐Ÿ‡ฌ๐Ÿ‡ฌ Guernsey (.gg), ๐Ÿ‡ฏ๐Ÿ‡ช Jersey (.je) - Natural language dates
  • ๐Ÿ‡ท๐Ÿ‡บ Russia (.ru) - Cyrillic field names with IP-annotated nameservers
  • ๐Ÿ‡ฎ๐Ÿ‡น Italy (.it) - Multi-line nameserver sections
  • ๐Ÿ‡ฉ๐Ÿ‡ช Germany (.de) - Nserver format

Features

  • Date Normalization: Converts all date formats to ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)
  • Multi-Format Parsing: Handles colon-separated, square bracket, and multi-line formats
  • Domain Fallback: Uses input domain when WHOIS doesn't return it explicitly
  • Robust Error Handling: Graceful fallbacks for missing fields
  • Comprehensive Testing: 169 ccTLD test suite included

WHOIS Server Dictionary Maintenance

The whois_dict.json file is automatically synced with the IANA Root Zone Database.

Sync from IANA

# Install dependencies first
npm install

# Sync WHOIS servers from IANA (updates whois_dict.json)
npm run sync-iana

# Preview changes without saving
npm run sync-iana:dry-run

The sync script:

  • Fetches complete TLD list from https://data.iana.org/TLD/tlds-alpha-by-domain.txt (1,439 TLDs)
  • Gets WHOIS server for each TLD from individual IANA pages
  • Updates whois_dict.json with sorted results
  • Creates dated backups before making changes
  • Updates README with last sync date

Automated Updates

A GitHub Action automatically syncs the dictionary:

  • On every push to main/master branch
  • Weekly on Sunday at 2 AM UTC to catch IANA updates
  • Manual trigger via GitHub Actions UI

When changes are detected, the action:

  • Updates whois_dict.json with new/changed TLD servers
  • Updates README with current date
  • Creates dated backups
  • Commits and pushes changes automatically

See .github/workflows/sync-iana.yml for details.

Installation

npm install

Usage

import { parseWhoisData, whoisQuery } from './whois-parser.js';

// Query a WHOIS server
const whoisText = await whoisQuery('google.jp', 'whois.jprs.jp');

// Parse the response
const parsed = parseWhoisData(whoisText, 'google.jp');

console.log(parsed);
// {
//   domainName: 'GOOGLE.JP',
//   registrar: 'Google LLC',
//   creationDate: '2005-05-30T00:00:00Z',
//   expirationDate: '2026-05-31T00:00:00Z',
//   nameservers: ['ns1.google.com', 'ns2.google.com', ...],
//   registrant: 'Google LLC',
//   status: ['Active', 'DomainTransferLocked', 'AgentChangeLocked'],
//   dnssec: null,
//   lastModified: '2025-06-01T01:05:04.000Z'
// }

Testing

Run the comprehensive test suite:

# Quick test (19 popular ccTLDs, ~30 seconds)
npm run test:sample

# Full test (all 169 ccTLDs, ~5 minutes)
npm test

Test Output

[1/169] Testing .jp (google.jp)...
  โœ… OK (domain: GOOGLE.JP, created: 2005-05-30T00:00:00Z)

[2/169] Testing .kr (naver.kr)...
  โœ… OK (domain: naver.kr, created: 2007-03-02T00:00:00Z)

========== SUMMARY ==========
โœ… Successful: 52/169
โš ๏ธ  Parsing Issues: 99/169
โŒ Failed: 18/169

Supported Formats

Date Formats

2005/05/30              โ†’ 2005-05-30T00:00:00Z  (.jp)
2007. 03. 02.           โ†’ 2007-03-02T00:00:00Z  (.kr)
30th April 2003         โ†’ 2003-04-30T00:00:00Z  (.gg, .je)
30th April each year    โ†’ 2026-04-30T00:00:00Z  (recurring)
2005-02-14T20:35:14.765Z โ†’ 2005-02-14T20:35:14.765Z (standard)

Field Formats

Square Brackets (.jp):

[Domain Name]                   GOOGLE.JP
[Name Server]                   ns1.google.com
[็™ป้Œฒๅนดๆœˆๆ—ฅ]                    2005/05/30

Colon-Separated (most ccTLDs):

Domain Name: google.kr
Registered Date: 2007. 03. 02.
Host Name: ns1.google.com

Dotted Format (.ax, .kz):

domain...............: test.ax

Multi-Line (.gg, .je, .it):

Name servers:
    ns1.google.com
    ns2.google.com

Known Limitations

Missing Creation Dates

Some registries (.de, .be, .dk, .at, .im) don't publicly expose creation dates via WHOIS. This is a registry policy, not a parser limitation.

Server Timeouts

6 ccTLDs still timeout even at 30 seconds: .dz, .gp, .mw, .ng, .sb, .tk

Offline Servers

Some WHOIS servers are permanently offline or block automated queries: .bo, .cf, .ch, .es, .hm, .iq, .mz, .pf, .tr

Contributing

Found a ccTLD that doesn't parse correctly? We'd love a PR!

  1. Run the test suite to identify the failing TLD
  2. Query the WHOIS server manually: whois -h <server> <domain>
  3. Identify the unique format patterns
  4. Update parseWhoisData() with new patterns
  5. Re-run tests to verify

Credits

  • Built by: DomainDetails.com team
  • Special thanks: @synozeer for spotting .gg and other ccTLD issues
  • Powered by: Claude Code for the comprehensive parser refactor

License

MIT License - feel free to use in your projects!

Related Projects


Found this useful? Give us a star โญ at github.com/simplebytes-com/whois-parser and check out DomainDetails.com!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •