CLI

Every domain you own,
in your terminal.

lemon is the Lemon Domains command line. List and update domains across 95 registrars, watch any domain for changes, and check reports and availability from your shell, scripts, CI and AI agents.

Node 18 or later. No dependencies. Checks work without an account.

Install
npm install -g lemon-domains
Terminal
$ npm install -g lemon-domains
$ lemon login
Create an API token at https://lemon.domains/api-access, then paste it here:
Signed in as you@example.com (read and write). Token saved to ~/.config/lemon-domains/config.json

$ lemon domains expiring --within-days 60
DOMAIN            EXPIRES     STATUS         REGISTRAR   PROJECT
getzestly.com     2026-11-03  Expiring soon  Porkbun     Zestly
lemonade-labs.io  2026-11-19  Expiring soon  Namecheap   Side projects
zestly.app        2026-12-08  Active         Cloudflare  Zestly

$ lemon check zestly getzestly.dev --tlds com,io,ai
DOMAIN         STATUS     REGISTRAR  EXPIRES
zestly.com     taken      GoDaddy    2027-05-14
zestly.io      available
zestly.ai      available
getzestly.dev  available

4 checked: 3 available, 1 taken, 0 dropping, 0 unknown

Example output with made-up domains.

One account, three ways in

The CLI, the REST API and the MCP server run the same operations with the same rules, and one API token works for all three. Use whichever fits the job.

UseFor
CLIYour terminal, scripts and CI
npm install -g lemon-domains
REST APIYour own apps and spreadsheets
https://lemon.domains/api/v1
MCP serverClaude Code, Cursor and any MCP client
https://mcp.lemon.domains/mcp

Made for scripts, CI and agents

Lists print as tables and records as lists in the terminal. Every command also speaks the formats your tools read.

--json
The API's own JSON, for scripts and jq.
--md
Markdown tables and lists, for notes, tickets and AI agents.
--csv
Any list as CSV, for spreadsheets.
--all
Follows every page of a long list.
lemon commands --json
Every command, option and type in one call, so an agent can learn the whole CLI.
LEMON_TOKEN
Sign in from CI or a container without saving anything.

No account needed for checks

Any domain
npx lemon-domains report example.com --md
npx lemon-domains check lemonade --tlds com,io,ai
npx lemon-domains transfer example.com

Expiry summary in every CI run

GitHub Actions
- run: npx lemon-domains domains expiring --within-days 30 --md >> "$GITHUB_STEP_SUMMARY"
  env:
    LEMON_TOKEN: ${{ secrets.LEMON_TOKEN }}

Tab completion for bash, zsh and fish: lemon completion zsh.

Every command

74 commands, one for each REST API endpoint and MCP tool, generated from the API itself so the three never drift apart. Run lemon <command> --help for its options.

Account

Command
lemon whoami
Your account and the token in use
GET /api/v1/me

Workspaces

Command
lemon workspaces list
Workspaces you belong to, with your role
GET /api/v1/workspaces · list_workspaces

Domains

Command
lemon domains list
List domains, with filters and paging
GET /api/v1/domains · list_domains
lemon domains add <domain>
Add a domain
POST /api/v1/domains · add_domain
lemon domains bulk-add
Add up to 200 domains at once
POST /api/v1/domains/bulk · bulk_add_domains
lemon domains lookup <domains...>
Registrar and expiry from the public registry
GET /api/v1/domains/lookup · lookup_domains
lemon domains quick-add
Add domains by registrar name
POST /api/v1/domains/quick-add · quick_add_domains
lemon domains expiring
Domains expiring soon, soonest first
GET /api/v1/domains/expiring · domains_expiring_soon
lemon domains get <domain>
One domain, by name or id
GET /api/v1/domains/{domain} · get_domain
lemon domains update <id>
Change a domain's fields
PATCH /api/v1/domains/{id} · update_domain
lemon domains delete <id>
Delete a domain
DELETE /api/v1/domains/{id} · delete_domain

Projects

Command
lemon projects list
List projects
GET /api/v1/projects · list_projects
lemon projects add <name>
Create a project
POST /api/v1/projects · add_project
lemon projects update <id>
Rename a project or change its description
PATCH /api/v1/projects/{id} · update_project
lemon projects delete <id>
Delete a project and its domains
DELETE /api/v1/projects/{id} · delete_project

Registrars

Command
lemon registrars list
List registrars
GET /api/v1/registrars · list_registrars
lemon registrars add <name>
Add a registrar
POST /api/v1/registrars · add_registrar
lemon registrars update <id>
Change a registrar's name or URL
PATCH /api/v1/registrars/{id} · update_registrar
lemon registrars delete <id>
Delete a registrar, its accounts and domains
DELETE /api/v1/registrars/{id} · delete_registrar

Registrar accounts

Command
lemon accounts list
List registrar accounts
GET /api/v1/registrar-accounts · list_registrar_accounts
lemon accounts add
Add a registrar account
POST /api/v1/registrar-accounts · add_registrar_account
lemon accounts update <id>
Change a registrar account
PATCH /api/v1/registrar-accounts/{id} · update_registrar_account
lemon accounts delete <id>
Delete a registrar account and its domains
DELETE /api/v1/registrar-accounts/{id} · delete_registrar_account

Sync

Command
lemon sync logs
Recent registrar sync results
GET /api/v1/sync/logs · recent_sync_logs

Monitoring

Command
lemon monitor list
Every monitored domain, yours and watched
GET /api/v1/monitoring · list_monitored
lemon monitor watch <domains...>
Watch domains you don't own
POST /api/v1/monitoring · monitor_domains
lemon monitor unwatch <domain>
Stop watching a domain
DELETE /api/v1/monitoring · stop_monitoring
lemon monitor changes [domain]
What changed on monitored domains
GET /api/v1/monitoring/changes · list_changes

DNS

Command
lemon dns list <domain>
A domain's DNS records
GET /api/v1/domains/{domain}/dns · list_dns_records
lemon dns plan <domain>
Plan DNS changes without making them
POST /api/v1/domains/{domain}/dns/changes · plan_dns_change
lemon dns apply <changeId>
Make a planned DNS change
POST /api/v1/dns/changes/{changeId}/apply · apply_dns_change
lemon dns undo <changeId>
Undo an applied DNS change
POST /api/v1/dns/changes/{changeId}/undo · undo_dns_change

Registrar settings

Command
lemon settings show <domain>
A domain's auto-renew, transfer lock and nameservers
GET /api/v1/domains/{domain}/settings · get_domain_settings
lemon settings plan <domain>
Plan a settings change without making it
POST /api/v1/domains/{domain}/settings/changes · plan_domain_settings_change
lemon settings apply <changeId>
Make a planned settings change
POST /api/v1/settings/changes/{changeId}/apply · apply_domain_settings_change
lemon settings undo <changeId>
Undo an applied settings change
POST /api/v1/settings/changes/{changeId}/undo · undo_domain_settings_change
lemon settings stop <changeId>
Stop a settings change that is still waiting
POST /api/v1/settings/changes/{changeId}/stop · stop_domain_settings_change

Buying domains

Command
lemon buy status
Your spend limit for buying domains and recent purchases
GET /api/v1/purchases · get_domain_buying
lemon buy plan <domain>
Quote a domain for 1 year without buying it
POST /api/v1/purchases · plan_domain_purchase
lemon buy confirm <purchaseId>
Buy a quoted domain
POST /api/v1/purchases/{purchaseId}/buy · buy_domain

Webhooks

Command
lemon webhooks list
Your webhooks and their status
GET /api/v1/webhooks · list_webhooks
lemon webhooks add <url>
Add a webhook; prints its secret once
POST /api/v1/webhooks · add_webhook
lemon webhooks update <id>
Change a webhook, or pause and resume it
PATCH /api/v1/webhooks/{id} · update_webhook
lemon webhooks remove <id>
Delete a webhook
DELETE /api/v1/webhooks/{id} · delete_webhook
lemon webhooks test <id>
Send a test event now
POST /api/v1/webhooks/{id}/test · test_webhook
lemon webhooks rotate <id>
New signing secret; the old one works 24 hours
POST /api/v1/webhooks/{id}/rotate · rotate_webhook_secret
lemon webhooks deliveries <id>
A webhook's recent deliveries
GET /api/v1/webhooks/{id}/deliveries · list_webhook_deliveries
lemon webhooks resend <deliveryId>
Send one delivery again
POST /api/v1/webhook-deliveries/{deliveryId}/resend · resend_webhook_delivery

Domain intelligence

Command
lemon report <domain>
Full report on any domain. No account needed.
GET /api/v1/report · domain_report
lemon check <names...>
Which names are free to register. No account needed.
POST /api/v1/availability · check_availability
lemon transfer <domain>
Whether a domain can move registrar today. No account needed.
GET /api/v1/transfer · transfer_readiness
lemon propagation <domain>
Whether a DNS change has reached resolvers worldwide. No account needed.
GET /api/v1/propagation · check_propagation
lemon whois <domains...>
Registrar, dates and status for any domains. No account needed.
GET /api/v1/whois · whois_lookup
lemon dns lookup <domain>
Public DNS records for any name. No account needed.
GET /api/v1/dns/lookup · dns_lookup
lemon ssl <domain>
The HTTPS certificate a site serves. No account needed.
GET /api/v1/ssl · check_ssl
lemon email <domain>
Email setup checks (MX, SPF, DMARC, DKIM, BIMI, MTA-STS). No account needed.
GET /api/v1/email · check_email
lemon punycode <domain>
Unicode and punycode forms of a domain. No account needed.
GET /api/v1/punycode · convert_punycode
lemon redirects <url>
Every redirect from a URL, with headers and a security grade. No account needed.
GET /api/v1/redirects · check_redirects
lemon blacklist <query>
Whether a domain or IP address is on email blocklists. No account needed.
GET /api/v1/blacklist · check_blacklist
lemon down <domain>
Whether a website is down for everyone or just you. No account needed.
GET /api/v1/is-it-down · check_website_status
lemon ports <domain>
Whether a domain's server is reachable on common web and mail ports. No account needed.
GET /api/v1/ports · check_ports
lemon email-headers <file>
Explain an email's headers: route, SPF, DKIM, DMARC. No account needed.
POST /api/v1/email/headers · analyze_email_headers
lemon hosting <domain>
Who hosts a domain, or who holds an IP address. No account needed.
GET /api/v1/hosting · lookup_hosting
lemon dns health <domain>
Check a domain's DNS setup for problems. No account needed.
GET /api/v1/dns/health · check_dns_health
lemon lookalikes <domain>
Lookalike domains of yours and which are registered. No account needed.
GET /api/v1/lookalikes · find_lookalikes
lemon decode-cert <file>
Decode a certificate, chain or CSR, and check the chain. No account needed.
POST /api/v1/certificate/decode · decode_certificate
lemon spf <domain>
Check a domain's SPF record. No account needed.
GET /api/v1/spf · check_spf
lemon dmarc <domain>
Check a domain's DMARC record. No account needed.
GET /api/v1/dmarc · check_dmarc
lemon dkim <domain>
Check a domain's DKIM keys. No account needed.
GET /api/v1/dkim · check_dkim
lemon dmarc-report <file>
Explain a DMARC aggregate report (.xml, .zip or .gz). No account needed.
POST /api/v1/dmarc/report · analyze_dmarc_report
lemon site-files <domain>
Check robots.txt, sitemap, share previews, favicon and manifest. No account needed.
GET /api/v1/site-files · check_site_files
lemon subnet <cidr>
Network, host range and masks for an IP block. No account needed.
GET /api/v1/subnet · calculate_subnet
lemon subdomains <domain>
Subdomains seen on certificates, and which still resolve. No account needed.
GET /api/v1/subdomains · find_subdomains
lemon stats <tld>
How many domains an extension has, and registrations and drops. No account needed.
GET /api/v1/stats · tld_stats

Also: lemon login, lemon logout, lemon completion and lemon commands.

Frequently asked questions

What can the Lemon Domains CLI do?

Everything the Lemon Domains REST API can: list, search, add, update and delete domains, organise projects, registrars and registrar accounts, read registrar sync results, watch any domain for changes and list what changed, and run a full report, an availability check or a transfer check on any domain. That is 74 commands, one for each API endpoint.

Do I need an account?

Not for checks. lemon report, lemon check and lemon transfer work on any domain without signing in. Commands that read or change your portfolio need an API token from your account.

How is it different from the MCP server?

They run the same operations with the same token. The MCP server is for AI clients like Claude Code and Cursor, which call its tools for you. The CLI is for your terminal, shell scripts and CI jobs, and for agents that prefer to run commands.

Is it safe to give an agent the CLI?

Give it a read-only token and it can look things up but not change anything. With a read and write token, deletes that take projects, registrars or accounts with them show what would go and ask first unless --confirm is passed. Every change is recorded in domain history.

What does it need to run?

Node 18 or later. The lemon-domains package has no dependencies, works on macOS, Linux and Windows, and runs without installing through npx.

Bring your domains to the terminal.

Create an account, connect your registrars, and run lemon login.