Registration

Search, register, renew, and transfer domains.

Overview

Register domains programmatically. Search for availability, register new domains, transfer existing domains, and manage renewals.

Searching for Domains

TypeScript:

const results = await client.domains.search('techstartup');
 
console.log('Search results for "techstartup":');
 
// Available domains
for (const domain of results.available) {
  console.log(`Available: ${domain.domain} - $${domain.price}/year`);
}
 
// Taken domains
for (const domain of results.unavailable) {
  console.log(`Taken: ${domain.domain}`);
}

Python:

results = client.domains.search("techstartup")
 
print('Search results for "techstartup":')
 
for domain in results.available:
    print(f"Available: {domain.domain} - ${domain.price}/year")
 
for domain in results.unavailable:
    print(f"Taken: {domain.domain}")

Search with TLD Filter

const results = await client.domains.search('techstartup', {
  tlds: ['com', 'io', 'co', 'dev'],
});

Check Specific Domain

const availability = await client.domains.checkAvailability('techstartup.io');
 
if (availability.available) {
  console.log('Domain available!');
  console.log('Price:', availability.price);
  console.log('Premium:', availability.isPremium);
} else {
  console.log('Domain taken');
}

Registering Domains

Basic Registration

TypeScript:

const domain = await client.domains.register({
  domainName: 'techstartup.io',
  years: 1,
  registrant: {
    firstName: 'John',
    lastName: 'Doe',
    email: 'john@company.com',
    phone: '+1.4155551234',
    address: '123 Main Street',
    city: 'San Francisco',
    state: 'CA',
    postalCode: '94102',
    country: 'US',
  },
});
 
console.log('Registered:', domain.domainName);
console.log('Status:', domain.status);
console.log('Expires:', domain.expiresAt);

With Organization

const domain = await client.domains.register({
  domainName: 'techstartup.io',
  years: 2,
  registrant: {
    firstName: 'John',
    lastName: 'Doe',
    organization: 'Tech Startup Inc.',
    email: 'domains@techstartup.io',
    phone: '+1.4155551234',
    address: '123 Main Street',
    city: 'San Francisco',
    state: 'CA',
    postalCode: '94102',
    country: 'US',
  },
  whoisPrivacy: true,
  autoRenew: true,
});

Different Contacts

Use different contacts for admin, tech, and billing:

const domain = await client.domains.register({
  domainName: 'techstartup.io',
  years: 1,
 
  registrant: {
    firstName: 'John',
    lastName: 'Doe',
    // ...
  },
 
  // Optional: separate contacts
  admin: {
    firstName: 'Jane',
    lastName: 'Smith',
    email: 'admin@company.com',
    // ...
  },
 
  tech: {
    firstName: 'Bob',
    lastName: 'Developer',
    email: 'tech@company.com',
    // ...
  },
 
  billing: {
    firstName: 'Alice',
    lastName: 'Finance',
    email: 'billing@company.com',
    // ...
  },
});

Contact Information

Required Fields

FieldDescription
firstNameFirst name
lastNameLast name
emailEmail address
phonePhone in E.164 format (+1.5551234567)
addressStreet address
cityCity
postalCodeZIP/postal code
countryTwo-letter country code

Optional Fields

FieldDescription
organizationCompany name
stateState/province
faxFax number

Country-Specific Requirements

Some TLDs have additional requirements:

// .UK domains require organization type
const domain = await client.domains.register({
  domainName: 'company.co.uk',
  registrant: {
    // ...standard fields
    ukType: 'LTD', // LTD, PLC, PTNR, etc.
    ukCompanyNumber: '12345678',
  },
});
 
// .CA domains require CIRA agreement
const domain = await client.domains.register({
  domainName: 'company.ca',
  registrant: {
    // ...standard fields
    ciraAgreement: true,
    ciraLanguage: 'EN',
  },
});

Domain Renewals

Manual Renewal

const renewed = await client.domains.renew('techstartup.io', {
  years: 1,
});
 
console.log('New expiration:', renewed.expiresAt);

Auto-Renewal Settings

// Enable auto-renewal
await client.domains.updateSettings('techstartup.io', {
  autoRenew: true,
});
 
// Disable auto-renewal
await client.domains.updateSettings('techstartup.io', {
  autoRenew: false,
});

Renewal Reminders

Configure when you receive renewal notifications:

await client.domains.updateSettings('techstartup.io', {
  renewalReminders: {
    enabled: true,
    daysBeforeExpiry: [90, 60, 30, 14, 7, 1],
  },
});

Domain Transfers

Transfer In

Move a domain from another registrar:

// 1. Get auth code from current registrar
const authCode = 'abc123xyz';
 
// 2. Initiate transfer
const transfer = await client.domains.transferIn({
  domainName: 'existingdomain.com',
  authCode: authCode,
  registrant: {
    firstName: 'John',
    lastName: 'Doe',
    // ...
  },
  whoisPrivacy: true,
  autoRenew: true,
});
 
console.log('Transfer initiated:', transfer.status);
console.log('Transfer ID:', transfer.id);

Check Transfer Status

const status = await client.domains.getTransferStatus(transfer.id);
 
console.log('Status:', status.status);
console.log('Step:', status.currentStep);
console.log('Message:', status.message);
 
// Status values:
// - PENDING: Waiting to start
// - PROCESSING: In progress
// - PENDING_APPROVAL: Needs confirmation
// - COMPLETED: Transfer successful
// - FAILED: Transfer failed
// - CANCELLED: Transfer cancelled

Cancel Transfer

await client.domains.cancelTransfer(transfer.id);

Transfer Out

Get auth code to transfer to another registrar:

// Unlock domain first
await client.domains.updateSettings('techstartup.io', {
  registrarLock: false,
});
 
// Get auth code
const authCode = await client.domains.getAuthCode('techstartup.io');
console.log('Auth code:', authCode.code);
console.log('Expires:', authCode.expiresAt);

Bulk Operations

Bulk Registration

const domains = await client.domains.registerBulk({
  domains: [
    { domainName: 'brand1.com', years: 1 },
    { domainName: 'brand2.com', years: 1 },
    { domainName: 'brand3.io', years: 2 },
  ],
  registrant: {
    firstName: 'John',
    lastName: 'Doe',
    // ...
  },
  whoisPrivacy: true,
  autoRenew: true,
});
 
for (const result of domains.results) {
  console.log(`${result.domainName}: ${result.status}`);
}

Bulk Renewal

const renewals = await client.domains.renewBulk({
  domains: [
    { domainName: 'brand1.com', years: 1 },
    { domainName: 'brand2.com', years: 1 },
  ],
});

Listing Domains

Get All Domains

const domains = await client.domains.list();
 
for (const domain of domains) {
  console.log(`${domain.domainName}: ${domain.status}`);
  console.log(`  Expires: ${domain.expiresAt}`);
  console.log(`  Auto-renew: ${domain.autoRenew}`);
}

Filter Domains

// Expiring soon
const expiring = await client.domains.list({
  expiringWithinDays: 30,
});
 
// By status
const active = await client.domains.list({
  status: 'ACTIVE',
});
 
// Search
const results = await client.domains.list({
  search: 'tech',
});

Get Domain Details

const domain = await client.domains.get('techstartup.io');
 
console.log('Domain:', domain.domainName);
console.log('Status:', domain.status);
console.log('Created:', domain.createdAt);
console.log('Expires:', domain.expiresAt);
console.log('Auto-renew:', domain.autoRenew);
console.log('WHOIS Privacy:', domain.whoisPrivacy);
console.log('Registrar Lock:', domain.registrarLock);
console.log('Nameservers:', domain.nameservers);

Domain Status

StatusDescription
ACTIVEDomain is active and functional
EXPIREDDomain has expired
PENDING_TRANSFERTransfer in progress
PENDING_VERIFICATIONAwaiting email verification
SUSPENDEDDomain suspended
REDEMPTIONIn redemption grace period

Premium Domains

Some domains cost more than standard pricing:

const availability = await client.domains.checkAvailability('cars.com');
 
if (availability.isPremium) {
  console.log('This is a premium domain');
  console.log('Registration price:', availability.price);
  console.log('Renewal price:', availability.renewalPrice);
}

Next Steps