API reference

Tech Stack Detection API

Detect the technology stack used by a website including CMS, frameworks, and services. Use this reference to choose an operation and integrate its documented response contract.

Operations

GET /v1/tech View API reference
POST /v1/tech/bulk View API reference
POST /v1/tech/jobs View API reference
GET /v1/tech/jobs View API reference
GET /v1/tech/jobs/:job_id View API reference
GET /v1/tech/jobs/:job_id/results View API reference
DELETE /v1/tech/jobs/:job_id View API reference
GET /v1/hosting View API reference
POST /v1/hosting/bulk View API reference
GET /v1/parking View API reference
GET /v1/agent-readiness View API reference

GET /v1/tech

Operation: getTechStack Credits and authentication: 3-9 Authentication required
GET /v1/tech

Query Parameters

Parameter Type required
url string optional
domain string optional
mode string
Allowed values fastrendereddeep
Default fast
optional
max_pages integer
Default 3
optional
skip_cache string
Allowed values 01
Default 0
optional

Response Fields

Field Type
url string
technologies[] object[]
technologies[] object
technologies[].id string
technologies[].name string
technologies[].category string
technologies[].version string
technologies[].version_kind string
technologies[].confidence string
technologies[].confidence_score integer
technologies[].evidence string
technologies[].evidence_details[] object[]
technologies[].evidence_details[] object
technologies[].evidence_details[].source string
technologies[].evidence_details[].key string
technologies[].evidence_details[].matched string
technologies[].evidence_details[].page_url string
technologies[].source_count integer
technologies[].caveats[] string[]
technologies[].reference object
technologies[].reference.website string
technologies[].reference.source_url string
technologies[].reference.source_owner string
technologies[].reference.source_kind string
technologies[].reference.access string
technologies[].reference.access_method string
technologies[].reference.cost string
technologies[].reference.terms_status string
technologies[].reference.expected_freshness string
technologies[].reference.maintenance_risk string
technologies[].reference.runtime_rate_limits string
technologies[].reference.fallback_behavior string
technologies[].reference.last_verified string
detection_summary object
detection_summary.detected_count integer
detection_summary.category_count integer
detection_summary.categories[] string[]
detection_summary.high_confidence_count integer
detection_summary.medium_confidence_count integer
detection_summary.low_confidence_count integer
detection_summary.versioned_count integer
detection_summary.evidence_sources object
detection_summary.evidence_sources.header integer
detection_summary.evidence_sources.html integer
detection_summary.evidence_sources.asset_url integer
detection_summary.evidence_sources.network_url integer
detection_summary.evidence_sources.javascript integer
detection_summary.evidence_sources.meta integer
detection_summary.evidence_sources.cookie integer
detection_summary.evidence_sources.url integer
detection_summary.catalog_size integer
detection_summary.catalog_category_count integer
detection_summary.summary_field_count integer
summary object
summary.cdn string
summary.server string
summary.framework string
summary.cms string
summary.hosting string
summary.platform string
summary.analytics[] string[]
headers object
meta object
ssl object
ssl.enabled boolean
analysis object
analysis.status string
analysis.requested_url string
analysis.final_url string
analysis.response_status integer
analysis.redirect_count integer
analysis.relay_used boolean
analysis.signals_checked[] string[]
analysis.signals_unavailable[] string[]
analysis.html_characters_analyzed integer
analysis.html_bytes_analyzed integer
analysis.html_byte_limit integer
analysis.html_truncated boolean
analysis.response_body_truncated boolean
analysis.mode string
analysis.rendered boolean
analysis.javascript_executed boolean
analysis.pages_requested integer
analysis.pages_analyzed integer
analysis.page_limit integer
analysis.network_requests_observed integer
analysis.page_limit_reached boolean
analysis.resource_limit_reached boolean
analysis.redirected_to_different_host boolean
analysis.no_detection_reason string | null
analysis.recommended_mode string | null
analysis.pages[] object[]
analysis.pages[] object
analysis.pages[].url string
analysis.pages[].status integer
analysis.pages[].html_truncated boolean
analysis.pages[].network_requests_observed integer
total_time_ms integer
checked_at string
_meta object
_meta.served_by string
_meta.analysis_status string
_meta.response_status integer
_meta.cache_status string
_meta.stale boolean
_meta.cached_at string

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/tech?url=https%3A%2F%2Fexample.com&domain=example.com&mode=fast&max_pages=3&skip_cache=0"

Example Response

{
  "url": "https://example.com",
  "technologies": [
    {
      "id": "example-id",
      "name": "example",
      "category": "example",
      "confidence": "high",
      "confidence_score": 85,
      "evidence": "example",
      "evidence_details": [
        {
          "source": "header",
          "matched": "example",
          "key": "example",
          "page_url": "https://example.com"
        }
      ],
      "source_count": 1,
      "caveats": [
        "example"
      ],
      "reference": {
        "website": "https://example.com",
        "source_url": "https://example.com",
        "source_owner": "example",
        "source_kind": "official_docs",
        "access": "public",
        "access_method": "target_response_inspection",
        "cost": "none",
        "terms_status": "public_source_reviewed_factual_signature",
        "expected_freshness": "reverify_on_source_or_signature_change",
        "maintenance_risk": "low",
        "runtime_rate_limits": "not_applicable_no_source_request",
        "fallback_behavior": "unmatched_or_unavailable_signal_is_not_detected",
        "last_verified": "2026-08-27"
      },
      "version": "2.15.0",
      "version_kind": "product"
    }
  ],
  "detection_summary": {
    "detected_count": 1,
    "category_count": 1,
    "categories": [
      "example"
    ],
    "high_confidence_count": 1,
    "medium_confidence_count": 1,
    "low_confidence_count": 1,
    "versioned_count": 1,
    "evidence_sources": {
      "header": 1,
      "html": 1,
      "asset_url": 1,
      "network_url": 1,
      "javascript": 1,
      "meta": 1,
      "cookie": 1,
      "url": 1
    },
    "catalog_size": 1,
    "catalog_category_count": 1,
    "summary_field_count": 1
  },
  "summary": {
    "cdn": "example",
    "server": "example",
    "framework": "example",
    "cms": "example",
    "hosting": "example",
    "platform": "example",
    "analytics": [
      "example"
    ]
  },
  "headers": {},
  "meta": {},
  "ssl": {
    "enabled": false
  },
  "analysis": {
    "status": "complete",
    "requested_url": "https://example.com",
    "final_url": "https://example.com",
    "response_status": 1,
    "redirect_count": 1,
    "relay_used": false,
    "signals_checked": [
      "header"
    ],
    "signals_unavailable": [
      "header"
    ],
    "html_characters_analyzed": 1,
    "html_bytes_analyzed": 1,
    "html_byte_limit": 1,
    "html_truncated": false,
    "response_body_truncated": false,
    "mode": "fast",
    "rendered": false,
    "javascript_executed": false,
    "pages_requested": 1,
    "pages_analyzed": 1,
    "page_limit": 1,
    "network_requests_observed": 1,
    "page_limit_reached": false,
    "resource_limit_reached": false,
    "redirected_to_different_host": false,
    "no_detection_reason": "redirected_to_different_host",
    "recommended_mode": "rendered",
    "pages": [
      {
        "url": "https://example.com",
        "status": 1,
        "html_truncated": false,
        "network_requests_observed": 1
      }
    ]
  },
  "total_time_ms": 1,
  "checked_at": "2026-08-27T12:00:00Z",
  "_meta": {
    "served_by": "example",
    "analysis_status": "ok",
    "response_status": 1,
    "cache_status": "miss",
    "stale": false,
    "cached_at": "2026-08-27T12:00:00Z"
  }
}

POST /v1/tech/bulk

Operation: postTechStackBulk Credits and authentication: 3 Authentication required
POST /v1/tech/bulk

Body Parameters

Parameter Type required
mode string
Allowed values fast
Default fast
optional
targets unknown[] required

Response Fields

Field Type
results[] object[]
results[] object
results[].index integer
results[].input string
results[].reference string
results[].status string
results[].data object
results[].error object
results[].error.code string
results[].error.message string
results[].error.status integer
results[].error.retryable boolean
results[].billing object
results[].billing.credits_charged integer
results[].billing.credits_refunded integer
meta object
meta.total integer
meta.succeeded integer
meta.failed integer
meta.mode string
meta.max_items integer
meta.credits_per_item integer
meta.credits_charged integer
meta.credits_refunded integer
meta.analysis_status string
meta.detected_count integer
meta.empty_result boolean
meta.duration_ms integer

Example Request

curl -X POST "https://domscan.net/v1/tech/bulk" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "mode": "fast",
  "targets": [
    "example.com",
    {
      "url": "https://shop.example.com/",
      "reference": "crm-42"
    }
  ]
}'

Example Response

{
  "results": [
    {
      "index": 1,
      "input": "example",
      "status": "succeeded",
      "billing": {
        "credits_charged": 1,
        "credits_refunded": 1
      },
      "reference": "example",
      "data": {},
      "error": {
        "code": "example",
        "message": "Request completed",
        "status": 1,
        "retryable": false
      }
    }
  ],
  "meta": {
    "total": 1,
    "succeeded": 1,
    "failed": 1,
    "mode": "fast",
    "max_items": 10,
    "credits_per_item": 3,
    "credits_charged": 1,
    "credits_refunded": 1,
    "analysis_status": "complete",
    "detected_count": 1,
    "empty_result": false,
    "duration_ms": 1
  }
}

POST /v1/tech/jobs

Operation: createTechScanJob Credits and authentication: 3 Authentication required
POST /v1/tech/jobs

Body Parameters

Parameter Type required
mode string
Allowed values fastrendereddeep
Default fast
optional
max_pages integer optional
targets unknown[] required

Response Fields

Field Type
job object
job.id string
job.status string
job.mode string
job.max_pages integer
job.total integer
job.counts object
job.counts.pending integer
job.counts.processing integer
job.counts.succeeded integer
job.counts.failed integer
job.counts.cancelled integer
job.billing object
job.billing.credits_per_item integer
job.billing.credits_charged integer
job.billing.credits_refunded integer
job.billing.credits_net integer
job.status_url string
job.results_url string
job.poll_after_ms integer | null
job.created_at string
job.started_at string | null
job.completed_at string | null
job.cancelled_at string | null
job.updated_at string
job.processing_deadline_at string
job.results_expires_at string
idempotent_replay boolean

Example Request

curl -X POST "https://domscan.net/v1/tech/jobs" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "mode": "deep",
  "max_pages": 3,
  "targets": [
    "example.com",
    {
      "url": "https://shop.example.com/",
      "reference": "shop"
    }
  ]
}'

Example Response

{
  "job": {
    "id": "example-id",
    "status": "queued",
    "mode": "fast",
    "max_pages": 1,
    "total": 1,
    "counts": {
      "pending": 1,
      "processing": 1,
      "succeeded": 1,
      "failed": 1,
      "cancelled": 1
    },
    "billing": {
      "credits_per_item": 3,
      "credits_charged": 1,
      "credits_refunded": 1,
      "credits_net": 1
    },
    "status_url": "https://example.com",
    "results_url": "https://example.com",
    "created_at": "2026-08-27T12:00:00Z",
    "updated_at": "2026-08-27T12:00:00Z",
    "processing_deadline_at": "2026-08-27T12:00:00Z",
    "results_expires_at": "2026-08-27T12:00:00Z",
    "poll_after_ms": 1,
    "started_at": "2026-08-27T12:00:00Z",
    "completed_at": "2026-08-27T12:00:00Z",
    "cancelled_at": "2026-08-27T12:00:00Z"
  },
  "idempotent_replay": false
}

GET /v1/tech/jobs

Operation: listTechScanJobs Credits and authentication: Free Authentication required
GET /v1/tech/jobs

Query Parameters

Parameter Type required
limit integer
Default 25
optional
cursor string optional

Response Fields

Field Type
jobs[] object[]
jobs[] object
jobs[].id string
jobs[].status string
jobs[].mode string
jobs[].max_pages integer
jobs[].total integer
jobs[].counts object
jobs[].counts.pending integer
jobs[].counts.processing integer
jobs[].counts.succeeded integer
jobs[].counts.failed integer
jobs[].counts.cancelled integer
jobs[].billing object
jobs[].billing.credits_per_item integer
jobs[].billing.credits_charged integer
jobs[].billing.credits_refunded integer
jobs[].billing.credits_net integer
jobs[].status_url string
jobs[].results_url string
jobs[].poll_after_ms integer | null
jobs[].created_at string
jobs[].started_at string | null
jobs[].completed_at string | null
jobs[].cancelled_at string | null
jobs[].updated_at string
jobs[].processing_deadline_at string
jobs[].results_expires_at string
pagination object
pagination.limit integer
pagination.next_cursor string | null
pagination.has_more boolean

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/tech/jobs?limit=25&cursor=example"

Example Response

{
  "jobs": [
    {
      "id": "example-id",
      "status": "queued",
      "mode": "fast",
      "max_pages": 1,
      "total": 1,
      "counts": {
        "pending": 1,
        "processing": 1,
        "succeeded": 1,
        "failed": 1,
        "cancelled": 1
      },
      "billing": {
        "credits_per_item": 3,
        "credits_charged": 1,
        "credits_refunded": 1,
        "credits_net": 1
      },
      "status_url": "https://example.com",
      "results_url": "https://example.com",
      "created_at": "2026-08-27T12:00:00Z",
      "updated_at": "2026-08-27T12:00:00Z",
      "processing_deadline_at": "2026-08-27T12:00:00Z",
      "results_expires_at": "2026-08-27T12:00:00Z",
      "poll_after_ms": 1,
      "started_at": "2026-08-27T12:00:00Z",
      "completed_at": "2026-08-27T12:00:00Z",
      "cancelled_at": "2026-08-27T12:00:00Z"
    }
  ],
  "pagination": {
    "limit": 1,
    "next_cursor": "example",
    "has_more": false
  }
}

GET /v1/tech/jobs/:job_id

Operation: getTechScanJob Credits and authentication: Free Authentication required
GET /v1/tech/jobs/:job_id

Query Parameters

Parameter Type required
job_id string required

Response Fields

Field Type
job object
job.id string
job.status string
job.mode string
job.max_pages integer
job.total integer
job.counts object
job.counts.pending integer
job.counts.processing integer
job.counts.succeeded integer
job.counts.failed integer
job.counts.cancelled integer
job.billing object
job.billing.credits_per_item integer
job.billing.credits_charged integer
job.billing.credits_refunded integer
job.billing.credits_net integer
job.status_url string
job.results_url string
job.poll_after_ms integer | null
job.created_at string
job.started_at string | null
job.completed_at string | null
job.cancelled_at string | null
job.updated_at string
job.processing_deadline_at string
job.results_expires_at string

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/tech/jobs/string"

Example Response

{
  "job": {
    "id": "example-id",
    "status": "queued",
    "mode": "fast",
    "max_pages": 1,
    "total": 1,
    "counts": {
      "pending": 1,
      "processing": 1,
      "succeeded": 1,
      "failed": 1,
      "cancelled": 1
    },
    "billing": {
      "credits_per_item": 3,
      "credits_charged": 1,
      "credits_refunded": 1,
      "credits_net": 1
    },
    "status_url": "https://example.com",
    "results_url": "https://example.com",
    "created_at": "2026-08-27T12:00:00Z",
    "updated_at": "2026-08-27T12:00:00Z",
    "processing_deadline_at": "2026-08-27T12:00:00Z",
    "results_expires_at": "2026-08-27T12:00:00Z",
    "poll_after_ms": 1,
    "started_at": "2026-08-27T12:00:00Z",
    "completed_at": "2026-08-27T12:00:00Z",
    "cancelled_at": "2026-08-27T12:00:00Z"
  }
}

GET /v1/tech/jobs/:job_id/results

Operation: getTechScanJobResults Credits and authentication: Free Authentication required
GET /v1/tech/jobs/:job_id/results

Query Parameters

Parameter Type required
job_id string required
cursor string optional
limit integer
Default 25
optional

Response Fields

Field Type
job object
job.id string
job.status string
job.mode string
job.max_pages integer
job.total integer
job.counts object
job.counts.pending integer
job.counts.processing integer
job.counts.succeeded integer
job.counts.failed integer
job.counts.cancelled integer
job.billing object
job.billing.credits_per_item integer
job.billing.credits_charged integer
job.billing.credits_refunded integer
job.billing.credits_net integer
job.status_url string
job.results_url string
job.poll_after_ms integer | null
job.created_at string
job.started_at string | null
job.completed_at string | null
job.cancelled_at string | null
job.updated_at string
job.processing_deadline_at string
job.results_expires_at string
results[] object[]
results[] object
results[].index integer
results[].input string
results[].reference string
results[].status string
results[].data object
results[].error object
results[].billing object
results[].analysis_status string | null
results[].detected_count integer | null
pagination object
pagination.limit integer
pagination.next_cursor string | null
pagination.has_more boolean

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/tech/jobs/example/results?cursor=example&limit=25"

Example Response

{
  "job": {
    "id": "example-id",
    "status": "queued",
    "mode": "fast",
    "max_pages": 1,
    "total": 1,
    "counts": {
      "pending": 1,
      "processing": 1,
      "succeeded": 1,
      "failed": 1,
      "cancelled": 1
    },
    "billing": {
      "credits_per_item": 3,
      "credits_charged": 1,
      "credits_refunded": 1,
      "credits_net": 1
    },
    "status_url": "https://example.com",
    "results_url": "https://example.com",
    "created_at": "2026-08-27T12:00:00Z",
    "updated_at": "2026-08-27T12:00:00Z",
    "processing_deadline_at": "2026-08-27T12:00:00Z",
    "results_expires_at": "2026-08-27T12:00:00Z",
    "poll_after_ms": 1,
    "started_at": "2026-08-27T12:00:00Z",
    "completed_at": "2026-08-27T12:00:00Z",
    "cancelled_at": "2026-08-27T12:00:00Z"
  },
  "results": [
    {
      "index": 1,
      "input": "example",
      "status": "pending",
      "billing": {},
      "reference": "example",
      "data": {},
      "error": {},
      "analysis_status": "available",
      "detected_count": 1
    }
  ],
  "pagination": {
    "limit": 1,
    "next_cursor": "example",
    "has_more": false
  }
}

DELETE /v1/tech/jobs/:job_id

Operation: cancelTechScanJob Credits and authentication: Free Authentication required
DELETE /v1/tech/jobs/:job_id

Query Parameters

Parameter Type required
job_id string required

Response Fields

Field Type
job object
job.id string
job.status string
job.mode string
job.max_pages integer
job.total integer
job.counts object
job.counts.pending integer
job.counts.processing integer
job.counts.succeeded integer
job.counts.failed integer
job.counts.cancelled integer
job.billing object
job.billing.credits_per_item integer
job.billing.credits_charged integer
job.billing.credits_refunded integer
job.billing.credits_net integer
job.status_url string
job.results_url string
job.poll_after_ms integer | null
job.created_at string
job.started_at string | null
job.completed_at string | null
job.cancelled_at string | null
job.updated_at string
job.processing_deadline_at string
job.results_expires_at string

Example Request

curl -X DELETE "https://domscan.net/v1/tech/jobs/string" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{}'

Example Response

{
  "job": {
    "id": "example-id",
    "status": "queued",
    "mode": "fast",
    "max_pages": 1,
    "total": 1,
    "counts": {
      "pending": 1,
      "processing": 1,
      "succeeded": 1,
      "failed": 1,
      "cancelled": 1
    },
    "billing": {
      "credits_per_item": 3,
      "credits_charged": 1,
      "credits_refunded": 1,
      "credits_net": 1
    },
    "status_url": "https://example.com",
    "results_url": "https://example.com",
    "created_at": "2026-08-27T12:00:00Z",
    "updated_at": "2026-08-27T12:00:00Z",
    "processing_deadline_at": "2026-08-27T12:00:00Z",
    "results_expires_at": "2026-08-27T12:00:00Z",
    "poll_after_ms": 1,
    "started_at": "2026-08-27T12:00:00Z",
    "completed_at": "2026-08-27T12:00:00Z",
    "cancelled_at": "2026-08-27T12:00:00Z"
  }
}

GET /v1/hosting

Operation: getHosting Credits and authentication: 3 Authentication required
GET /v1/hosting

Query Parameters

Parameter Type required
domain string required

Response Fields

Field Type
domain string
hosting object
hosting.provider string
hosting.provider_id string
hosting.confidence number
hosting.region string
hosting.detection_method string
cdn object
cdn.detected boolean
cdn.provider string
cdn.provider_id string
cdn.confidence number
cdn.detection_method string
cdn.features[] string[]
waf object
waf.detected boolean
waf.provider string
waf.provider_id string
waf.confidence number
waf.detection_method string
dns_provider object
dns_provider.provider string
dns_provider.provider_id string
dns_provider.nameservers[] string[]
dns_provider.confidence number
dns_providers[] object[]
dns_providers[] object
dns_providers[].provider_id string
dns_providers[].provider string
email_provider object
email_provider.provider string
email_provider.provider_id string
email_provider.mx_records[] string[]
email_provider.confidence number
ssh object
ssh.host string
ssh.port integer
ssh.reachable boolean
ssh.banner string | null
ssh.algorithms[] string[]
ssh.weak_algorithms[] string[]
ssh.keys[] object[]
ssh.keys[] object
ssh.keys[].host string
ssh.keys[].algorithm string
ssh.keys[].key_size integer | null
ssh.keys[].fingerprint_sha256 string | null
ssh.keys[].weak boolean
ssh.keys[].weak_reasons[] string[]
ssh.error string | null
ssh.checked_at string
provider_summary object
provider_summary.cache_status string
provider_summary.provider_count integer
provider_summary.detected_surfaces[] string[]
provider_summary.confidence string
provider_summary.confidence_score integer
provider_summary.hosting_provider string | null
provider_summary.cdn_provider string | null
provider_summary.waf_provider string | null
provider_summary.dns_provider_count integer
provider_summary.email_provider string | null
provider_summary.ssh_exposed boolean | null
provider_summary.evidence[] object[]
provider_summary.evidence[] object
provider_summary.evidence[].surface string
provider_summary.evidence[].provider string
provider_summary.evidence[].confidence number | null
provider_summary.evidence[].method string | null
ip_info object
ip_info.ipv4[] string[]
ip_info.ipv6[] string[]
checked_at string
check_duration_ms integer

Example Request

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

Example Response

{
  "domain": "github.com",
  "hosting": {
    "provider": "Microsoft Azure",
    "provider_id": "azure",
    "confidence": 0.86,
    "detection_method": "ip_range"
  },
  "cdn": {
    "detected": true,
    "provider": "Fastly",
    "provider_id": "fastly",
    "confidence": 0.94,
    "detection_method": "headers"
  },
  "waf": {
    "detected": false,
    "confidence": 0.2,
    "detection_method": "headers"
  },
  "dns_provider": {
    "provider": "AWS Route 53",
    "provider_id": "route53",
    "nameservers": [
      "ns-1283.awsdns-32.org",
      "ns-1707.awsdns-21.co.uk"
    ],
    "confidence": 0.9
  },
  "email_provider": {
    "provider": "Google Workspace",
    "provider_id": "google_workspace",
    "mx_records": [
      "aspmx.l.google.com"
    ],
    "confidence": 0.95
  },
  "ssh": {
    "host": "github.com",
    "port": 22,
    "reachable": true,
    "banner": "SSH-2.0-babeld",
    "algorithms": [
      "ssh-ed25519",
      "ecdsa-sha2-nistp256"
    ],
    "weak_algorithms": [],
    "keys": [
      {
        "host": "github.com",
        "algorithm": "ssh-ed25519",
        "key_size": 256,
        "fingerprint_sha256": "SHA256:+DiY3wvvV6TuJJhbpZisF/Ym7N3QKXNoZk6sJ2x2d2s",
        "weak": false,
        "weak_reasons": []
      }
    ],
    "error": null,
    "checked_at": "2026-04-18T21:00:00Z"
  },
  "provider_summary": {
    "cache_status": "miss",
    "provider_count": 4,
    "detected_surfaces": [
      "hosting",
      "cdn",
      "dns",
      "email",
      "ssh"
    ],
    "confidence": "high",
    "confidence_score": 92,
    "hosting_provider": "Microsoft Azure",
    "cdn_provider": "Fastly",
    "waf_provider": null,
    "dns_provider_count": 1,
    "email_provider": "Google Workspace",
    "ssh_exposed": true,
    "evidence": [
      {
        "surface": "hosting",
        "provider": "Microsoft Azure",
        "confidence": 0.86,
        "method": "ip_range"
      },
      {
        "surface": "cdn",
        "provider": "Fastly",
        "confidence": 0.94,
        "method": "headers"
      },
      {
        "surface": "dns",
        "provider": "AWS Route 53",
        "confidence": 0.9,
        "method": "ns"
      },
      {
        "surface": "email",
        "provider": "Google Workspace",
        "confidence": 0.95,
        "method": "mx"
      },
      {
        "surface": "ssh",
        "provider": "public-ssh",
        "confidence": 90,
        "method": "edge-relay"
      }
    ]
  },
  "ip_info": {
    "ipv4": [
      "140.82.121.4"
    ],
    "ipv6": []
  },
  "checked_at": "2026-04-18T21:00:00Z",
  "check_duration_ms": 156
}

POST /v1/hosting/bulk

Operation: bulkGetHosting Credits and authentication: 3 Authentication required
POST /v1/hosting/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/hosting/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/parking

Operation: getParkingDetection Credits and authentication: 2 Authentication required
GET /v1/parking

Query Parameters

Parameter Type required
domain string required

Response Fields

Field Type
domain string
is_parked boolean
is_for_sale boolean
parking_provider string | null
aftermarket_listings[] object[]
aftermarket_listings[] object
aftermarket_listings[].platform string
aftermarket_listings[].detected_via string
signals[] object[]
signals[] object
signals[].type string
signals[].detail string
signals[].provider string
confidence number
checked_at string
check_duration_ms integer

Example Request

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

Example Response

{
  "domain": "example.com",
  "is_parked": false,
  "is_for_sale": false,
  "parking_provider": "example",
  "aftermarket_listings": [
    {
      "platform": "example",
      "detected_via": "dns"
    }
  ],
  "signals": [
    {
      "type": "domain",
      "detail": "example",
      "provider": "example"
    }
  ],
  "confidence": 0.85,
  "checked_at": "2026-08-27T12:00:00Z",
  "check_duration_ms": 1
}

GET /v1/agent-readiness

Operation: checkAgentReadiness Credits and authentication: 3 Authentication required
GET /v1/agent-readiness

Query Parameters

Parameter Type required
url string optional
domain string optional
skip_cache string
Allowed values 1
optional

Response Fields

Field Type
requested_url string
final_url string
checked_at string
outcome string
fetch_state string
http_status integer | null
summary object
summary.coverage string
summary.detected_signals integer
summary.total_signals integer
summary.score integer | null
summary.rating string
summary.confidence integer
summary.passed_checks integer
summary.warning_checks integer
summary.failed_checks integer
summary.unknown_checks integer
summary.not_applicable_checks integer
signals object
signals.webmcp object
signals.webmcp.status string
signals.webmcp.validation string
signals.webmcp.method string
signals.webmcp.checked_url string | null
signals.webmcp.http_status integer | null
signals.webmcp.evidence[] string[]
signals.webmcp.caveats[] string[]
signals.remote_mcp object
signals.remote_mcp.status string
signals.remote_mcp.validation string
signals.remote_mcp.method string
signals.remote_mcp.checked_url string | null
signals.remote_mcp.http_status integer | null
signals.remote_mcp.evidence[] string[]
signals.remote_mcp.caveats[] string[]
signals.openapi object
signals.openapi.status string
signals.openapi.validation string
signals.openapi.method string
signals.openapi.checked_url string | null
signals.openapi.http_status integer | null
signals.openapi.evidence[] string[]
signals.openapi.caveats[] string[]
signals.llms_txt object
signals.llms_txt.status string
signals.llms_txt.validation string
signals.llms_txt.method string
signals.llms_txt.checked_url string | null
signals.llms_txt.http_status integer | null
signals.llms_txt.evidence[] string[]
signals.llms_txt.caveats[] string[]
signals.api_catalog object
signals.api_catalog.status string
signals.api_catalog.validation string
signals.api_catalog.method string
signals.api_catalog.checked_url string | null
signals.api_catalog.http_status integer | null
signals.api_catalog.evidence[] string[]
signals.api_catalog.caveats[] string[]
signals.mcp_server_card object
signals.mcp_server_card.status string
signals.mcp_server_card.validation string
signals.mcp_server_card.method string
signals.mcp_server_card.checked_url string | null
signals.mcp_server_card.http_status integer | null
signals.mcp_server_card.evidence[] string[]
signals.mcp_server_card.caveats[] string[]
signals.agent_skills object
signals.agent_skills.status string
signals.agent_skills.validation string
signals.agent_skills.method string
signals.agent_skills.checked_url string | null
signals.agent_skills.http_status integer | null
signals.agent_skills.evidence[] string[]
signals.agent_skills.caveats[] string[]
signals.oauth object
signals.oauth.status string
signals.oauth.validation string
signals.oauth.method string
signals.oauth.checked_url string | null
signals.oauth.http_status integer | null
signals.oauth.evidence[] string[]
signals.oauth.caveats[] string[]
signals.markdown object
signals.markdown.status string
signals.markdown.validation string
signals.markdown.method string
signals.markdown.checked_url string | null
signals.markdown.http_status integer | null
signals.markdown.evidence[] string[]
signals.markdown.caveats[] string[]
signals.web_bot_auth object
signals.web_bot_auth.status string
signals.web_bot_auth.validation string
signals.web_bot_auth.method string
signals.web_bot_auth.checked_url string | null
signals.web_bot_auth.http_status integer | null
signals.web_bot_auth.evidence[] string[]
signals.web_bot_auth.caveats[] string[]
signals.sitemap_markdown object
signals.sitemap_markdown.status string
signals.sitemap_markdown.validation string
signals.sitemap_markdown.method string
signals.sitemap_markdown.checked_url string | null
signals.sitemap_markdown.http_status integer | null
signals.sitemap_markdown.evidence[] string[]
signals.sitemap_markdown.caveats[] string[]
signals.agent_guide object
signals.agent_guide.status string
signals.agent_guide.validation string
signals.agent_guide.method string
signals.agent_guide.checked_url string | null
signals.agent_guide.http_status integer | null
signals.agent_guide.evidence[] string[]
signals.agent_guide.caveats[] string[]
foundations object
dimensions object
dimensions.discoverability object
dimensions.discoverability.score integer | null
dimensions.discoverability.confidence integer
dimensions.discoverability.passed integer
dimensions.discoverability.warned integer
dimensions.discoverability.failed integer
dimensions.discoverability.unknown integer
dimensions.discoverability.not_applicable integer
dimensions.discoverability.checks[] string[]
dimensions.content object
dimensions.content.score integer | null
dimensions.content.confidence integer
dimensions.content.passed integer
dimensions.content.warned integer
dimensions.content.failed integer
dimensions.content.unknown integer
dimensions.content.not_applicable integer
dimensions.content.checks[] string[]
dimensions.access_policy object
dimensions.access_policy.score integer | null
dimensions.access_policy.confidence integer
dimensions.access_policy.passed integer
dimensions.access_policy.warned integer
dimensions.access_policy.failed integer
dimensions.access_policy.unknown integer
dimensions.access_policy.not_applicable integer
dimensions.access_policy.checks[] string[]
dimensions.capabilities object
dimensions.capabilities.score integer | null
dimensions.capabilities.confidence integer
dimensions.capabilities.passed integer
dimensions.capabilities.warned integer
dimensions.capabilities.failed integer
dimensions.capabilities.unknown integer
dimensions.capabilities.not_applicable integer
dimensions.capabilities.checks[] string[]
checks object
recommendations[] object[]
recommendations[] object
recommendations[].code string
recommendations[].severity string
meta object
meta.cached boolean
meta.fetch_path string
meta.duration_ms integer
meta.probe_count integer
meta.body_truncated boolean
meta.source_version string
meta.last_verified string
meta.rubric_version string
meta.max_probes integer

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/agent-readiness?url=https%3A%2F%2Fexample.com&domain=example.com&skip_cache=1"

Example Response

{
  "requested_url": "https://example.com",
  "final_url": "https://example.com",
  "checked_at": "2026-08-27T12:00:00Z",
  "outcome": "complete",
  "fetch_state": "ok",
  "http_status": 1,
  "summary": {
    "coverage": "broad",
    "detected_signals": 1,
    "total_signals": 12,
    "score": 85,
    "rating": "excellent",
    "confidence": 85,
    "passed_checks": 1,
    "warning_checks": 1,
    "failed_checks": 1,
    "unknown_checks": 1,
    "not_applicable_checks": 1
  },
  "signals": {
    "webmcp": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "remote_mcp": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "openapi": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "llms_txt": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "api_catalog": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "mcp_server_card": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "agent_skills": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "oauth": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "markdown": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "web_bot_auth": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "sitemap_markdown": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    },
    "agent_guide": {
      "status": "detected",
      "validation": "confirmed",
      "method": "rdap",
      "checked_url": "https://example.com",
      "http_status": 1,
      "evidence": [
        "example"
      ],
      "caveats": [
        "example"
      ]
    }
  },
  "foundations": {},
  "dimensions": {
    "discoverability": {
      "score": 85,
      "confidence": 85,
      "passed": 1,
      "warned": 1,
      "failed": 1,
      "unknown": 1,
      "not_applicable": 1,
      "checks": [
        "example"
      ]
    },
    "content": {
      "score": 85,
      "confidence": 85,
      "passed": 1,
      "warned": 1,
      "failed": 1,
      "unknown": 1,
      "not_applicable": 1,
      "checks": [
        "example"
      ]
    },
    "access_policy": {
      "score": 85,
      "confidence": 85,
      "passed": 1,
      "warned": 1,
      "failed": 1,
      "unknown": 1,
      "not_applicable": 1,
      "checks": [
        "example"
      ]
    },
    "capabilities": {
      "score": 85,
      "confidence": 85,
      "passed": 1,
      "warned": 1,
      "failed": 1,
      "unknown": 1,
      "not_applicable": 1,
      "checks": [
        "example"
      ]
    }
  },
  "checks": {},
  "recommendations": [
    {
      "code": "example",
      "severity": "high"
    }
  ],
  "meta": {
    "cached": false,
    "fetch_path": "primary",
    "duration_ms": 1,
    "probe_count": 1,
    "body_truncated": false,
    "source_version": "example",
    "last_verified": "2026-08-27",
    "rubric_version": "example",
    "max_probes": 1
  }
}

Reference resources