Developer Reference

Domain Profile

Explore Domain Profile API documentation, request parameters, response fields, code examples, and error handling for DomScan integrations.

Domain Profile

Get normalized RDAP registration data including registrar, creation date, expiration, nameservers, DNSSEC status, and contact summary. Includes pre-calculated domain age and days until expiry for convenience.

GET /v1/profile

Query Parameters

ParameterTypeDescription
domain required string Full domain name (e.g., github.com)

Response Fields

FieldTypeDescription
age_daysnumberDomain age in days since registration
days_until_expirynumberDays until domain expires
dnssecbooleanWhether DNSSEC is enabled
statusarrayEPP status codes (clientDeleteProhibited, etc.)

Example Request

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/profile?domain=github.com"
const domscanFetch = (url, options = {}) =>
  fetch(url, {
    ...options,
    headers: { ...options.headers, "X-API-Key": "your-api-key" },
  });

const response = await domscanFetch(
  "https://domscan.net/v1/profile?domain=github.com"
);
const data = await response.json();

console.log(`Domain age: ${data.age_days} days`);
console.log(`Expires in: ${data.days_until_expiry} days`);
console.log(`DNSSEC: ${data.dnssec ? 'Enabled' : 'Disabled'}`);
import requests

domscan = requests.Session()
domscan.headers.update({"X-API-Key": "your-api-key"})

response = domscan.get(
    "https://domscan.net/v1/profile",
    params={"domain": "github.com"}
)
data = response.json()

print(f"Domain age: {data['age_days']} days ({data['age_days'] // 365} years)")
print(f"Expires in: {data['days_until_expiry']} days")

Example Response

{
  "domain": "github.com",
  "registered": true,
  "registrar": "MarkMonitor Inc.",
  "registrar_url": "https://www.markmonitor.com",
  "created_date": "2007-10-09T18:20:50Z",
  "updated_date": "2024-09-08T09:19:27Z",
  "expiry_date": "2026-10-09T07:00:00Z",
  "age_days": 6310,
  "days_until_expiry": 628,
  "nameservers": ["dns1.p08.nsone.net", "dns2.p08.nsone.net"],
  "dnssec": true,
  "status": ["clientDeleteProhibited", "clientTransferProhibited"],
  "contacts": {
    "registrant_name": "GitHub, Inc.",
    "registrant_org": "GitHub, Inc.",
    "registrant_country": "US"
  },
  "privacy": {
    "is_private": false,
    "privacy_service": null
  }
}
POST /v1/profile/bulk

Body Parameters

Parameter Type required
domains string[] required

Response Fields

Field Type
results[] unknown[]
meta object
meta.total integer
meta.succeeded integer
meta.failed integer
meta.max_items integer
meta.credits_per_item integer
meta.duration_ms integer

Example Request

curl -X POST "https://domscan.net/v1/profile/bulk" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "domains": [
    "example.com",
    "cloudflare.com"
  ]
}'

Example Response

{
  "results": [
    {
      "input": "example",
      "data": {}
    }
  ],
  "meta": {
    "total": 1,
    "succeeded": 1,
    "failed": 1,
    "max_items": 10,
    "credits_per_item": 1,
    "duration_ms": 1
  }
}
GET /v1/overview

Query Parameters

Parameter Type required
domain string required

Response Fields

Field Type
domain string
health object
health.dns_ok boolean | null
health.https_ok boolean | null
dns object
dns.has_a boolean | null
dns.has_aaaa boolean | null
dns.has_mx boolean | null
dns.nameservers[] string[]
registration object
registration.registered boolean | null
registration.registrar string | null
registration.created_date string | null
registration.expiry_date string | null
registration.age_days integer | null
registration.days_until_expiry integer | null
registration.dnssec boolean | null
reputation object
reputation.score number | null
reputation.grade string | null
popularity object
popularity.rank integer | null
popularity.bucket string | null
component_freshness object
component_freshness.cache_status string
component_freshness.checked_at string
component_freshness.component_count integer
component_freshness.fresh_component_count integer
component_freshness.degraded_component_count integer
component_freshness.components object
component_freshness.components.health object
component_freshness.components.health.source string
component_freshness.components.health.state string
component_freshness.components.health.checked_at string
component_freshness.components.health.evidence_count integer
component_freshness.components.health.reason string | null
component_freshness.components.dns object
component_freshness.components.dns.source string
component_freshness.components.dns.state string
component_freshness.components.dns.checked_at string
component_freshness.components.dns.evidence_count integer
component_freshness.components.dns.reason string | null
component_freshness.components.registration object
component_freshness.components.registration.source string
component_freshness.components.registration.state string
component_freshness.components.registration.checked_at string
component_freshness.components.registration.evidence_count integer
component_freshness.components.registration.reason string | null
component_freshness.components.reputation object
component_freshness.components.reputation.source string
component_freshness.components.reputation.state string
component_freshness.components.reputation.checked_at string
component_freshness.components.reputation.evidence_count integer
component_freshness.components.reputation.reason string | null
component_freshness.components.popularity object
component_freshness.components.popularity.source string
component_freshness.components.popularity.state string
component_freshness.components.popularity.checked_at string
component_freshness.components.popularity.evidence_count integer
component_freshness.components.popularity.reason string | null
query_time_ms integer
checked_at string

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/overview?domain=example.com"

Example Response

{
  "domain": "example.com",
  "health": {
    "dns_ok": true,
    "https_ok": true
  },
  "dns": {
    "has_a": false,
    "has_aaaa": false,
    "has_mx": false,
    "nameservers": [
      "example"
    ]
  },
  "registration": {
    "registered": false,
    "registrar": "example",
    "created_date": "2026-08-27T12:00:00Z",
    "expiry_date": "2026-08-27T12:00:00Z",
    "age_days": 1,
    "days_until_expiry": 1,
    "dnssec": false
  },
  "reputation": {
    "score": 0.85,
    "grade": "example"
  },
  "popularity": {
    "rank": 1,
    "bucket": "example"
  },
  "component_freshness": {
    "cache_status": "hit",
    "checked_at": "2026-08-27T12:00:00Z",
    "component_count": 1,
    "fresh_component_count": 1,
    "degraded_component_count": 1,
    "components": {
      "health": {
        "source": "public_data",
        "state": "fresh",
        "checked_at": "2026-08-27T12:00:00Z",
        "evidence_count": 1,
        "reason": "upstream_unavailable"
      },
      "dns": {
        "source": "public_data",
        "state": "fresh",
        "checked_at": "2026-08-27T12:00:00Z",
        "evidence_count": 1,
        "reason": "upstream_unavailable"
      },
      "registration": {
        "source": "public_data",
        "state": "fresh",
        "checked_at": "2026-08-27T12:00:00Z",
        "evidence_count": 1,
        "reason": "upstream_unavailable"
      },
      "reputation": {
        "source": "public_data",
        "state": "fresh",
        "checked_at": "2026-08-27T12:00:00Z",
        "evidence_count": 1,
        "reason": "upstream_unavailable"
      },
      "popularity": {
        "source": "public_data",
        "state": "fresh",
        "checked_at": "2026-08-27T12:00:00Z",
        "evidence_count": 1,
        "reason": "upstream_unavailable"
      }
    }
  },
  "query_time_ms": 1,
  "checked_at": "2026-08-27T12:00:00Z"
}
GET /v1/popularity

Query Parameters

Parameter Type required
domain string required
include_history boolean
Default false
optional
history_limit integer
Default 30
optional

Response Fields

Field Type
domain string
status string
rank integer | null
bucket string
source object
source.id string
source.url string
source.list_date string | null
source.provenance object
source.provenance.owner string
source.provenance.source_url string
source.provenance.methodology_url string
source.provenance.access_method string
source.provenance.cost string
source.provenance.runtime_rate_limits string
source.provenance.terms_status string
source.provenance.expected_freshness string
source.provenance.maintenance_risk string
source.provenance.fallback_behavior string
source.provenance.last_verified string
freshness object
freshness.cache_status string
freshness.ttl_seconds integer
checked_at string
result_count integer | null
empty_result boolean
history object
history.collection string
history.complete_daily_series boolean
history.available boolean
history.observations[] object[]
history.observations[] object
history.observations[].domain string
history.observations[].rank integer | null
history.observations[].bucket string
history.observations[].status string
history.observations[].source string
history.observations[].list_date string | null
history.observations[].observed_on string
history.observations[].checked_at string

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/popularity?domain=example.com&include_history=false&history_limit=30"

Example Response

{
  "domain": "example.com",
  "status": "ranked",
  "rank": 1,
  "bucket": "top-100",
  "source": {
    "id": "tranco",
    "url": "https://example.com",
    "list_date": "2026-08-27",
    "provenance": {
      "owner": "example",
      "source_url": "https://example.com",
      "methodology_url": "https://example.com",
      "access_method": "public_domain_rank_api",
      "cost": "none",
      "runtime_rate_limits": "example",
      "terms_status": "available",
      "expected_freshness": "daily",
      "maintenance_risk": "medium",
      "fallback_behavior": "example",
      "last_verified": "2026-08-27"
    }
  },
  "freshness": {
    "cache_status": "hit",
    "ttl_seconds": 300
  },
  "checked_at": "2026-08-27T12:00:00Z",
  "result_count": 0,
  "empty_result": false,
  "history": {
    "collection": "lookup_driven",
    "complete_daily_series": false,
    "available": true,
    "observations": [
      {
        "domain": "example.com",
        "rank": 1,
        "bucket": "top-100",
        "status": "ranked",
        "source": "tranco",
        "list_date": "2026-08-27",
        "observed_on": "2026-08-27",
        "checked_at": "2026-08-27T12:00:00Z"
      }
    ]
  }
}
GET /v1/popularity/history

Query Parameters

Parameter Type required
domain string required
limit integer
Default 30
optional

Response Fields

Field Type
domain string
collection string
complete_daily_series boolean
result_count integer
empty_result boolean
observations[] object[]
observations[] object
observations[].domain string
observations[].rank integer | null
observations[].bucket string
observations[].status string
observations[].source string
observations[].list_date string | null
observations[].observed_on string
observations[].checked_at string

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/popularity/history?domain=example.com&limit=25"

Example Response

{
  "domain": "example.com",
  "collection": "lookup_driven",
  "complete_daily_series": false,
  "result_count": 1,
  "empty_result": false,
  "observations": [
    {
      "domain": "example.com",
      "rank": 1,
      "bucket": "top-100",
      "status": "ranked",
      "source": "tranco",
      "list_date": "2026-08-27",
      "observed_on": "2026-08-27",
      "checked_at": "2026-08-27T12:00:00Z"
    }
  ]
}

Used by people at amazing companies

InstantOutseerMongoDBRespondentSage Expense ManagementInstantlyD.R. HortonWhatConvertsAdobeMotionElementsLLM Pulse