# Domain Atlas > Domain intelligence console and API for traffic, AtlasRank, DNS, registration, subdomain, keyword, technology, top-list, watchlist, and source coverage workflows. ## Canonical Pages - [Domain Atlas - Domain intelligence console and API](https://domainatlas.com/): Research registration, DNS, subdomains, traffic trends, and up to 12 months of AtlasRank history in one profile. Coverage varies by domain. - [Product - Domain Atlas](https://domainatlas.com/product): Review registration, DNS, keywords, technology, traffic trends, and up to 12 months of AtlasRank history. Availability varies by domain. - [Use cases - Domain Atlas](https://domainatlas.com/use-cases): Domain Atlas workflows for developers, marketers, security teams, and domain investors who need domain evidence they can inspect and automate. - [Developers - Domain Atlas](https://domainatlas.com/use-cases/developers): Domain Atlas helps developers build source-aware domain enrichment, monitoring, review, and internal tooling workflows against one API. - [Marketers - Domain Atlas](https://domainatlas.com/use-cases/marketers): Domain Atlas helps marketers evaluate domain strength, estimated traffic trend, similar names, keyword sets, and acquisition context before campaigns. - [Security teams - Domain Atlas](https://domainatlas.com/use-cases/security-teams): Domain Atlas gives security teams fast domain risk triage across DNS, certificate-transparency subdomains, registration, and technology, plus a watchlist for look-alikes. - [Domain investors - Domain Atlas](https://domainatlas.com/use-cases/domain-investors): Domain Atlas helps investors run repeatable diligence with Research, domain profiles, AtlasRank lists, a watchlist, and API workflows. - [Trust center - Domain Atlas](https://domainatlas.com/trust): Domain Atlas trust center for reviewing access controls, source lineage, privacy handling, operational posture, and security paths. - [Security - Domain Atlas](https://domainatlas.com/security): Domain Atlas protects internal credentials, customer API keys, sessions, source coverage, and domain lookup workflows. - [Coverage - Domain Atlas](https://domainatlas.com/coverage): Source coverage shows the endpoint, field path, source family, and cache state behind each visible domain signal, and lists what is live and what is coming. - [Pricing - Domain Atlas](https://domainatlas.com/pricing): Domain Atlas plans: a free tier to start, a flat $99/month Pro plan, and usage-based Enterprise pricing scoped to your volume. - [API docs - Domain Atlas](https://domainatlas.com/docs): Explore the Domain Atlas API for domain profiles, up to 12 months of rank history, traffic, DNS, registration, keywords, and technology. Availability varies by domain. - [Contact - Domain Atlas](https://domainatlas.com/contact): Contact Domain Atlas for usage-based Enterprise pricing, security review, privacy questions, importing a proprietary domain dataset, and higher-volume API workflows. - [Privacy policy - Domain Atlas](https://domainatlas.com/privacy): How Titan Research Ltd. handles personal data in Domain Atlas under the UK GDPR: what we collect and why, retention, cookies, and your rights. - [Terms of service - Domain Atlas](https://domainatlas.com/terms): The terms Titan Research Ltd. offers Domain Atlas on: accounts, plans and credits, API keys, acceptable use, the data license, liability, and governing law. ## Developer Contract - OpenAPI: https://domainatlas.com/openapi.json - API docs: https://domainatlas.com/docs - OpenSearch: https://domainatlas.com/opensearch.xml - MCP server: https://domainatlas.com/mcp (Streamable HTTP). Claude, ChatGPT, Grok, and Cursor connect with OAuth sign-in; a Domain Atlas API key also works for data tools. Domain reads are billed like the API. Watchlists and recent searches require separate research read/write consent and use no data credits. Setup: https://domainatlas.com/connect. Revoke OAuth access: https://domainatlas.com/connect/apps. - Authentication: `Authorization: Bearer `. Data endpoints accept either a signed-in session cookie or a Domain Atlas API key. Key-management endpoints require an interactive session. - Rate limits: `429 + Retry-After`. Customer data API requests are limited by actor and endpoint family. Clients should back off using Retry-After, or retry_after_seconds when it is present in the JSON body. - Key management: `Plan-based allowance`. GET /api/v1/api-keys returns the current activeKeyLimit. Usage is aggregated by day for 400 days, with the top 5 endpoint families shown per key. - Methods: `405 + Allow`. Known API paths return method_not_allowed with an Allow header when called with an unsupported HTTP method. - Response headers: `requestId + timing + cache`. Responses include x-request-id, Server-Timing, and x-domain-atlas-duration-ms. Data-backed endpoints also expose cache state, cache TTL when available, and data resolution status. - Conditional reads: `HEAD + ETag`. Data-backed reads accept HEAD for cache/status probes. Public documents and OpenAPI support conditional revalidation with ETag or Last-Modified. Protected metadata endpoints expose ETag and HEAD. - Errors: `code + message + requestId`. Error responses use stable JSON codes, public-safe messages, request identifiers mirrored from x-request-id, and retry hints when applicable. - Domains: `PSL-normalized`. Domain path params are normalized to the registrable domain. Invalid domains return 422 invalid_domain before any internal lookup, with a stable reason; a public suffix such as co.uk or gov.uk is not a registrable domain (reason public_suffix) and is never charged. - Identity parser: `_meta.parser`. Every successful per-domain response names the parser that computed its domain's identity: _meta.parser is { name, version, psl }, the library, its exact release, and the SHA-256 of the public suffix list it bundles. - Provenance: `sourceCoverage + cache`. Profile responses keep track of source coverage, cache state, and capabilities still required from the domain data service. - Saved domains and recent searches need a console session or scoped MCP dispatch. Account administration and API-key management remain session-only; API keys are for data routes. - Operational headers: `x-request-id`, `Server-Timing`, `x-domain-atlas-duration-ms`, `x-domain-atlas-cache`, `x-domain-atlas-cache-ttl`, `x-domain-atlas-data-status`, `x-domain-atlas-refresh-status`, and `Retry-After` when applicable. - Public documents and OpenAPI return `ETag` and `Last-Modified`, and support conditional reads with `If-None-Match` or `If-Modified-Since`. ## Plans and credits - Sign in and create an API key in the console; the key is shown once. - A full profile (/overview) costs 10 credits, charged once per domain every 30 minutes; a request that bypasses the cache (freshness=live) is a new lookup and is charged every time. Every other metered request costs 1. Free includes 100 credits a month, Pro 10,000. Requests are limited to 60 a minute on Free and 500 on Pro; a 429 carries Retry-After. ## Security at a glance - Access model: Session access for the console, hashed customer API keys for data endpoints, and revocation from the key workspace. Route: Security review. - Operational controls: Request IDs on every response, rate-limit responses with retry hints, uncached account responses, browser security headers, and health endpoints that report status without exposing secrets. Route: Sales and support. - Data lineage: Visible endpoint, field path, source family, cache state, and coverage status for domain profile sections. Route: Sales and support. - Data handling: Internal credentials stay server-side, customer keys are shown once, and lookup activity is described in the privacy model. Route: Privacy and data. ## API Endpoints ### Operations - `GET /api/v1/health`: Worker liveness and configuration status. Example: `GET /api/v1/health`. Auth: Public. - `GET /api/v1/readiness`: Production readiness checks without exposing secrets. Non-admin callers receive only the overall status. Example: `GET /api/v1/readiness`. Auth: Public. - `GET /api/v1/session`: Current browser/API authentication state with public-safe account display metadata and enabled login providers. Example: `GET /api/v1/session`. Auth: Session or API key. ### Domain profile - `GET /api/v1/domains/:domain/overview`: Aggregated profile used by the console, including per-section source and cache coverage. The rank section follows the rank history: a month whose rank falls in the unranked end of the ranking carries rank: null and rank_state: "unranked". Query params: freshness. Example: `GET /api/v1/domains/logo.com/overview`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/overview`: Check profile freshness, cache state, and aggregate section status without downloading the JSON body. Query params: freshness. Example: `HEAD /api/v1/domains/logo.com/overview`. Auth: Session or API key. - `GET /api/v1/domains/:domain/rank?sources=atlas_rank&months=12`: AtlasRank series with the default 12-month boundary used by charts. A month whose rank falls in the unranked end of the ranking (the last 5% of it) is reported without its rank: the point keeps its date, its rank is null, and rank_state is "unranked". A change figure that would give such a rank back is null too. Query params: sources, months, freshness. Example: `GET /api/v1/domains/logo.com/rank?sources=atlas_rank&months=12`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/rank?sources=atlas_rank&months=12`: Check AtlasRank freshness and cache status without downloading the history payload. Query params: sources, months, freshness. Example: `HEAD /api/v1/domains/logo.com/rank?sources=atlas_rank&months=12`. Auth: Session or API key. - `GET /api/v1/domains/:domain/registration`: Registrar, availability, age, and lifecycle dates for a registrable domain. Query params: freshness. Example: `GET /api/v1/domains/logo.com/registration`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/registration`: Check registration data freshness and cache status without downloading the JSON body. Query params: freshness. Example: `HEAD /api/v1/domains/logo.com/registration`. Auth: Session or API key. - `GET /api/v1/domains/:domain/traffic`: Traffic/query activity, trend summary, and chartable history when available. Pass months=12 for the 12-month series the profile charts use. Query params: months, freshness. Example: `GET /api/v1/domains/logo.com/traffic?months=12`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/traffic`: Check traffic data freshness and cache status without downloading the JSON body. Query params: months, freshness. Example: `HEAD /api/v1/domains/logo.com/traffic`. Auth: Session or API key. - `GET /api/v1/domains/:domain/keywords`: Atlas keyword enrichment with category, subcategory, keyword set, optional context, and provenance. Query params: archive, crawl, websearch, group_by, freshness. Example: `GET /api/v1/domains/logo.com/keywords`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/keywords`: Check keyword enrichment cache status without running a new enrichment request. Query params: archive, crawl, websearch, group_by, freshness. Example: `HEAD /api/v1/domains/logo.com/keywords`. Auth: Session or API key. - `POST /api/v1/domains/:domain/keywords`: Run Atlas keyword enrichment with explicit context, cache, and instruction options. Query params: freshness. Example: `POST /api/v1/domains/logo.com/keywords`. Auth: Session or API key. - `GET /api/v1/domains/:domain/dns`: DNS records and nameserver data normalized for display and API consumption. Query params: freshness. Example: `GET /api/v1/domains/logo.com/dns`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/dns`: Check DNS data freshness and cache status without downloading the JSON body. Query params: freshness. Example: `HEAD /api/v1/domains/logo.com/dns`. Auth: Session or API key. - `GET /api/v1/domains/:domain/subdomains`: Hostnames seen in certificate transparency logs for a registrable domain, deduped and sorted. Certificate transparency records certificates, not live hosts: a listed name may not resolve today, and a wildcard certificate contributes no name, so a wildcard-only domain answers empty. An empty list is an answer, not an error. Query params: freshness. Example: `GET /api/v1/domains/logo.com/subdomains`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/subdomains`: Check subdomain data freshness and cache status without downloading the JSON body. Query params: freshness. Example: `HEAD /api/v1/domains/logo.com/subdomains`. Auth: Session or API key. - `GET /api/v1/domains/:domain/zone`: TLD family and zone coverage for the domain name. Query params: freshness. Example: `GET /api/v1/domains/logo.com/zone`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/zone`: Check zone data freshness and cache status without downloading the JSON body. Query params: freshness. Example: `HEAD /api/v1/domains/logo.com/zone`. Auth: Session or API key. - `GET /api/v1/domains/:domain/trademarks`: Trademark and owner-overlap signals normalized for Atlas Marks. Query params: freshness. Example: `GET /api/v1/domains/logo.com/trademarks`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/trademarks`: Check trademark data freshness and cache status without downloading the JSON body. Query params: freshness. Example: `HEAD /api/v1/domains/logo.com/trademarks`. Auth: Session or API key. - `GET /api/v1/domains/:domain/discovery`: Adjacent domain and certificate-derived candidate signals. Example: `GET /api/v1/domains/logo.com/discovery`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/discovery`: Check adjacent-domain candidate metadata without downloading the JSON body. Example: `HEAD /api/v1/domains/logo.com/discovery`. Auth: Session or API key. - `GET /api/v1/domains/:domain/technology`: Detected technology stack with confidence and evidence. Rules read the homepage crawl (HTML, scripts, response headers) and the domain's DNS (TXT verification tokens, MX, NS); each detection's evidence says which. Also returns the page metadata and response security headers from the crawl. Read crawl.status before technologies[]: an empty list only means "runs nothing we fingerprint" when the crawl completed. Query params: group_by, freshness. Example: `GET /api/v1/domains/logo.com/technology`. Auth: Session or API key. - `HEAD /api/v1/domains/:domain/technology`: Check technology freshness and cache status without downloading the JSON body. Query params: group_by, freshness. Example: `HEAD /api/v1/domains/logo.com/technology`. Auth: Session or API key. - `GET /api/v1/domains/:domain/source-coverage`: Admin diagnostic for per-domain upstream capability coverage. Customers get the same coverage data embedded in the overview response as sourceCoverage. Example: `GET /api/v1/domains/logo.com/source-coverage`. Auth: Admin only. - `HEAD /api/v1/domains/:domain/source-coverage`: Check whether per-domain source coverage metadata has changed without downloading the JSON body. Example: `HEAD /api/v1/domains/logo.com/source-coverage`. Auth: Admin only. ### Research - `GET /api/v1/atlas/domains?fields=domain&limit=250&sort=domain&direction=asc`: Sortable domain inventory for research workflows. Supported query params are normalized and bounded; unknown params are ignored. Query params: fields, q, registrar, tld, owned, limit, offset, sort, direction, freshness. Example: `GET /api/v1/atlas/domains?fields=domain,tld,owned&limit=250&sort=domain&direction=asc`. Auth: Session or API key. - `HEAD /api/v1/atlas/domains?fields=domain&limit=250&sort=domain&direction=asc`: Check inventory freshness and cache status without downloading result rows. Query params: fields, q, registrar, tld, owned, limit, offset, sort, direction, freshness. Example: `HEAD /api/v1/atlas/domains?fields=domain,tld,owned&limit=250&sort=domain&direction=asc`. Auth: Session or API key. - `GET /api/v1/atlas/domains/schema`: Sortable/filterable field schema for the Atlas domain inventory. Example: `GET /api/v1/atlas/domains/schema`. Auth: Session or API key. - `HEAD /api/v1/atlas/domains/schema`: Check inventory schema freshness and cache status without downloading field metadata. Example: `HEAD /api/v1/atlas/domains/schema`. Auth: Session or API key. - `GET /api/v1/tlds?limit=250`: TLD directory and coverage metadata used by research workflows. Supported query params are normalized and bounded; unknown params are ignored. Query params: q, limit, offset, freshness. Example: `GET /api/v1/tlds?limit=250`. Auth: Session or API key. - `HEAD /api/v1/tlds?limit=250`: Check TLD directory freshness and cache status without downloading result rows. Query params: q, limit, offset, freshness. Example: `HEAD /api/v1/tlds?limit=250`. Auth: Session or API key. ### Top lists - `GET /api/v1/top-lists/:source`: Sortable global AtlasRank list with top, new, risers, fallers, and exited modes. atlas_rank is the only supported public source; search, ordering, and limiting are applied by the native upstream list endpoint. An unfiltered top list (no rank_max, tld or q) has no total_count, because that total is the size of the ranking, which is not published; page it with next_offset. For the same reason a list without rank_max is never read in descending rank order (400 rank_order_requires_rank_max), and a rank in the unranked end of the ranking is withheld: the row has no rank (or previousRank) and says rankState (or previousRankState) "unranked". Risers and fallers leave such rows out and count them in excluded_tail_count. Query params: freshness, q, mode, limit, rank_max, offset, tld, sort, direction. Example: `GET /api/v1/top-lists/atlas_rank?mode=top&limit=250`. Auth: Session or API key. - `HEAD /api/v1/top-lists/:source`: Check top-list metadata without downloading rows. Query params: freshness, q, mode, limit, rank_max, offset, tld, sort, direction. Example: `HEAD /api/v1/top-lists/atlas_rank?mode=top&limit=250`. Auth: Session or API key. ### Discovery - `GET /api/v1/discovery/:feed`: Discovery feed rows for marks, newly issued certificate candidates, and newly registered domains. Query params: q, date, dates, limit. Example: `GET /api/v1/discovery/ssl?limit=250`. Auth: Session or API key. - `HEAD /api/v1/discovery/:feed`: Check discovery feed metadata without downloading rows. Query params: q, date, dates, limit. Example: `HEAD /api/v1/discovery/nrd?limit=250`. Auth: Session or API key. - `GET /api/v1/discovery/:feed/dates`: List available upstream observation dates for marks, newly issued certificate candidates, and NRD rows. Example: `GET /api/v1/discovery/ssl/dates`. Auth: Session or API key. - `HEAD /api/v1/discovery/:feed/dates`: Check discovery date-index metadata without downloading rows. Example: `HEAD /api/v1/discovery/trademarks/dates`. Auth: Session or API key. ### Research state - `GET /api/v1/recent-searches`: List the current user's recent domain lookups for the console. Example: `GET /api/v1/recent-searches`. Auth: Session only. - `POST /api/v1/recent-searches`: Record one normalized domain lookup in the current user's recent searches. Example: `POST /api/v1/recent-searches`. Auth: Session only. - `GET /api/v1/saved-domains`: List up to 100 saved domains in alphabetical order, with page-scoped email settings and snapshots. Follow nextCursor until null to read the entire list. The response includes the total and effective Account plan allowance: Free 0, Pro 100, Enterprise uncapped (null). Downgrades preserve saved data and pause monitoring when ineligible. Query params: cursor, domain, fields. Example: `GET /api/v1/saved-domains`. Auth: Session only. - `POST /api/v1/saved-domains`: Save or update one normalized domain under the effective Account plan allowance (Free 0, Pro 100, Enterprise uncapped). At capacity, a new domain returns 409 saved_domain_limit_reached and existing saves are preserved; remove a domain to make room. Existing-domain label updates, removal, and disabling email remain available after downgrade. Enabling email while monitoring is paused returns 403 watchlist_monitoring_paused. Set emailUpdates to replace its frequency and topics while preserving delivery history, set it to null to disable updates, or omit it to preserve the current setting. Frequency daily, weekly, monthly, or quarterly sends a digest on that UTC calendar cadence; on_change checks the domain once a day and emails only when a selected topic differs from the last email, with no baseline email when you switch to it. Example: `POST /api/v1/saved-domains`. Auth: Session only. - `DELETE /api/v1/saved-domains/:domain`: Remove one saved domain from the current user's research workspace. Example: `DELETE /api/v1/saved-domains/logo.com`. Auth: Session only. - `POST /api/v1/watchlist-email/unsubscribe/:token`: One-click unsubscribe using the opaque token from a watchlist email. It disables every watchlist email update for the token owner's account, and the response never reveals whether the token existed. Example: `POST /api/v1/watchlist-email/unsubscribe/`. Auth: Public. - `POST /api/v1/research-state/cohort-metrics`: Hydrate up to 250 domains with AtlasRank, rank change, traffic (derived from Atlas Score), traffic change, and a 12-month rank sparkline for the cohort grid. A latest rank in the unranked end of the ranking is withheld: atlasRank is null and atlasRankState is "unranked". Example: `POST /api/v1/research-state/cohort-metrics`. Auth: Session only. - `POST /api/v1/research-state/saved-domains/seen`: Advance the watchlist change-since-last-visit baseline for the current user's saved domains. Example: `POST /api/v1/research-state/saved-domains/seen`. Auth: Session only. ### Source coverage - `GET /api/v1/source-coverage`: Admin diagnostic tracker for covered and still-required upstream capabilities. Example: `GET /api/v1/source-coverage`. Auth: Admin only. - `HEAD /api/v1/source-coverage`: Check whether source coverage metadata has changed without downloading the JSON body. Example: `HEAD /api/v1/source-coverage`. Auth: Admin only. - `GET /api/v1/data-endpoints`: Developer-only endpoint map showing how Domain Atlas routes resolve internally. The internal=true view requires an admin account. Example: `GET /api/v1/data-endpoints`. Auth: Session or API key. - `HEAD /api/v1/data-endpoints`: Check whether the data endpoint map has changed without downloading the JSON body. Example: `HEAD /api/v1/data-endpoints`. Auth: Session or API key. - `GET /api/v1/data-freshness`: Admin freshness map proxied from the domain data service, including row counts and pipeline diagnostics. Example: `GET /api/v1/data-freshness`. Auth: Admin only. - `HEAD /api/v1/data-freshness`: Check whether data freshness metadata has changed without downloading the JSON body. Example: `HEAD /api/v1/data-freshness`. Auth: Admin only. ### Customer API - `GET /api/v1/api-keys`: List customer keys, the current effective activeKeyLimit, aggregate counters, and the top 5 endpoint families per key. Existing keys remain listed after a plan downgrade. Example: `GET /api/v1/api-keys`. Auth: Session only. - `POST /api/v1/api-keys`: Create a revocable customer API key within the account's current plan allowance, capped at 20 active keys. GET /api/v1/api-keys returns the effective activeKeyLimit. The raw token is shown only once. Example: `POST /api/v1/api-keys`. Auth: Session only. - `DELETE /api/v1/api-keys/:id`: Revoke one key owned by the current user. Example: `DELETE /api/v1/api-keys/key_...`. Auth: Session only. ## Crawling Guidance - Index public product, pricing, security, privacy, terms, and docs pages. - Do not index console, readiness status, data endpoint map, research workspace, domain profile, or API-key routes. - Sitemap: https://domainatlas.com/sitemap.xml