Référence Développeur

Détection de la pile technologique

Consultez la documentation de l'API Détection de la pile technologique, ses paramètres de requête, les champs de réponse, les exemples de code et la gestion des erreurs pour les intégrations DomScan.

Détection de la pile technologique

Découvrez ce qui alimente un site web public grâce à une inspection HTTP rapide, au rendu JavaScript dans un environnement isolé et à une analyse multipage limitée aux pages de même origine. Utilisez des analyses synchrones en lot ou des tâches asynchrones durables pour les listes de cibles plus importantes.

GET /v1/tech

Paramètres de Requête

ParamètreTypeDescription
url optionnel string URL HTTP(S) publique complète à analyser. Si URL et domain sont tous deux fournis, URL est prioritaire.
domain optionnel string Domaine public ou URL HTTP(S) publique à analyser. Fournissez URL ou domain.
mode optionnel string
Valeurs autorisées fastrendereddeep
Défaut fast
Mode d’analyse : fast coûte 3 crédits, rendered coûte 6 crédits et deep coûte 9 crédits.
max_pages optionnel integer
Défaut 3
Nombre maximal de pages de même origine à analyser en mode deep, de 1 à 5. La valeur par défaut est 3.
skip_cache optionnel string
Valeurs autorisées 1
Définissez à 1 pour contourner le cache et forcer une nouvelle analyse. S'applique uniquement au mode rapide, car les résultats rendered et deep ne sont jamais mis en cache.

Catégories technologiques

CatégorieExemples
cdnCloudflare, Fastly, Akamai, CloudFront
cmsWordPress, Drupal, Shopify, Squarespace
analyticsGoogle Analytics, Mixpanel, Segment
frameworkReact, Vue.js, Angular, Next.js
servernginx, Apache, IIS, LiteSpeed
hostingAWS, Google Cloud, Azure, Vercel
platformGitHub, Medium, Substack, GitBook

Exemple de Requête

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/tech?url=https%3A%2F%2Fwordpress.example%2F"   -H "x-api-key: YOUR_API_KEY"
const domscanFetch = (url, options = {}) =>
  fetch(url, {
    ...options,
    headers: { ...options.headers, "X-API-Key": "your-api-key" },
  });

const response = await domscanFetch(
  "https://domscan.net/v1/tech?url=https%3A%2F%2Fwordpress.example%2F",
  { headers: { "x-api-key": "YOUR_API_KEY" } }
);
const data = await response.json();

for (const tech of data.technologies) {
  console.log(`${tech.id}: ${tech.confidence_score}/100`);
}
import requests

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

response = domscan.get(
    "https://domscan.net/v1/tech",
    params={"url": "https://wordpress.example/"},
    headers={"x-api-key": "YOUR_API_KEY"}
)
data = response.json()

for tech in data['technologies']:
    print(f"{tech['id']}: {tech['confidence_score']}/100")

Exemple de Réponse

{
  "url": "https://wordpress.example/",
  "technologies": [
    {
      "id": "wordpress",
      "name": "WordPress",
      "category": "cms",
      "version": "6.8.2",
      "version_kind": "product",
      "confidence": "high",
      "confidence_score": 98,
      "evidence": "Meta: generator",
      "evidence_details": [
        {
          "source": "meta",
          "key": "generator",
          "matched": "WordPress 6.8.2"
        }
      ],
      "source_count": 1,
      "caveats": [
        "generator_can_be_removed_or_spoofed",
        "asset_paths_can_be_rewritten"
      ],
      "reference": {
        "website": "https://wordpress.org/",
        "source_url": "https://developer.wordpress.org/reference/functions/get_the_generator/",
        "source_owner": "WordPress.org",
        "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": "medium",
        "runtime_rate_limits": "not_applicable_no_source_request",
        "fallback_behavior": "unmatched_or_unavailable_signal_is_not_detected",
        "last_verified": "2026-07-15"
      }
    }
  ],
  "detection_summary": {
    "detected_count": 1,
    "category_count": 1,
    "categories": [
      "cms"
    ],
    "high_confidence_count": 1,
    "medium_confidence_count": 0,
    "low_confidence_count": 0,
    "versioned_count": 1,
    "evidence_sources": {
      "header": 0,
      "html": 0,
      "asset_url": 0,
      "network_url": 0,
      "javascript": 0,
      "meta": 1,
      "cookie": 0,
      "url": 0
    },
    "catalog_size": 522,
    "catalog_category_count": 87,
    "summary_field_count": 1
  },
  "summary": {
    "cms": "WordPress"
  },
  "meta": {
    "title": "Example WordPress site",
    "description": "A reserved example response for the technology detection contract.",
    "canonical_url": "https://wordpress.example/",
    "language": "en",
    "favicon": "https://wordpress.example/favicon.ico",
    "open_graph": {
      "title": null,
      "description": null,
      "image": null,
      "url": null,
      "type": null,
      "site_name": null,
      "locale": null
    },
    "twitter_card": {
      "card": null,
      "site": null,
      "creator": null,
      "title": null,
      "description": null,
      "image": null
    },
    "author": null,
    "generator": "WordPress 6.8.2",
    "theme_color": null,
    "manifest_url": null,
    "robots": "index, follow"
  },
  "headers": {
    "content-type": "text/html; charset=UTF-8"
  },
  "ssl": {
    "enabled": true
  },
  "analysis": {
    "status": "complete",
    "requested_url": "https://wordpress.example/",
    "final_url": "https://wordpress.example/",
    "response_status": 200,
    "redirect_count": 0,
    "relay_used": false,
    "signals_checked": [
      "url",
      "header",
      "cookie",
      "html",
      "asset_url",
      "meta"
    ],
    "signals_unavailable": [],
    "html_characters_analyzed": 412,
    "html_bytes_analyzed": 412,
    "html_byte_limit": 1000000,
    "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": 0,
    "page_limit_reached": false,
    "resource_limit_reached": false,
    "redirected_to_different_host": false,
    "no_detection_reason": null,
    "recommended_mode": null,
    "pages": [
      {
        "url": "https://wordpress.example/",
        "status": 200,
        "html_truncated": false,
        "network_requests_observed": 0
      }
    ]
  },
  "total_time_ms": 128,
  "checked_at": "2026-07-15T10:30:00Z",
  "_meta": {
    "served_by": "pop=MAD country=ES",
    "analysis_status": "ok",
    "response_status": 200,
    "cache_status": "miss",
    "stale": false
  }
}

Champs de Réponse

Champ 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

Détection rapide en lot

POST /v1/tech/bulk exécute jusqu’à 10 analyses rapides dans l’ordre fourni. Chaque cible valide coûte 3 crédits, les cibles non valides ne coûtent rien et les échecs des services en amont sont remboursés par élément.

POST /v1/tech/bulk
curl -H "X-API-Key: your-api-key" -X POST "https://domscan.net/v1/tech/bulk"   -H "x-api-key: YOUR_API_KEY"   -H "content-type: application/json"   -d '{"targets":["example.com",{"url":"https://shop.example.com/","reference":"shop"}]}'

Tâches d’analyse asynchrones

POST /v1/tech/jobs accepte jusqu’à 100 cibles en mode fast, rendered ou deep. Les tâches prennent en charge la création idempotente, la consultation de l’état réservée au propriétaire, la pagination signée des résultats, l’annulation et les remboursements par élément. Les résultats complets expirent après 48 heures.

POST /v1/tech/jobs
GET /v1/tech/jobs
GET /v1/tech/jobs/:job_id
GET /v1/tech/jobs/:job_id/results
DELETE /v1/tech/jobs/:job_id
curl -H "X-API-Key: your-api-key" -X POST "https://domscan.net/v1/tech/jobs"   -H "x-api-key: YOUR_API_KEY"   -H "Idempotency-Key: scan-batch-2026-07-15"   -H "content-type: application/json"   -d '{"mode":"deep","max_pages":3,"targets":["example.com","shop.example.com"]}'

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/tech/jobs?limit=25"   -H "x-api-key: YOUR_API_KEY"

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/tech/jobs/tsj_JOB_ID"   -H "x-api-key: YOUR_API_KEY"

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/tech/jobs/tsj_JOB_ID/results?limit=25"   -H "x-api-key: YOUR_API_KEY"

# next page, using next_cursor from the previous response
curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/tech/jobs/tsj_JOB_ID/results?limit=25&cursor=NEXT_CURSOR"   -H "x-api-key: YOUR_API_KEY"

curl -H "X-API-Key: your-api-key" -X DELETE "https://domscan.net/v1/tech/jobs/tsj_JOB_ID"   -H "x-api-key: YOUR_API_KEY"
Remarque: Les listes de tâches et les résultats de tâches sont paginés avec un curseur signé opaque. Lisez next_cursor à partir d'une réponse et retournez-le en tant que paramètre cursor pour accéder à la page suivante. Les curseurs sont liés à votre compte et à une seule tâche, ils ne peuvent donc pas être modifiés ou réutilisés ailleurs.
GET /v1/hosting

Paramètres de Requête

Paramètre Type requis
domain string requis

Champs de Réponse

Champ 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

Exemple de Requête

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

Exemple de Réponse

{
  "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

Paramètres du Corps

Paramètre Type requis
domains string[] requis

Champs de Réponse

Champ 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

Exemple de Requête

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"
  ]
}'

Exemple de Réponse

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

Paramètres de Requête

Paramètre Type requis
domain string requis

Champs de Réponse

Champ 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

Exemple de Requête

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

Exemple de Réponse

{
  "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

Paramètres de Requête

Paramètre Type requis
url string optionnel
domain string optionnel
skip_cache string
Valeurs autorisées 1
optionnel

Champs de Réponse

Champ 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

Exemple de Requête

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"

Exemple de Réponse

{
  "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
  }
}
POST /v1/scrape

Paramètres du Corps

Paramètre Type requis
url string requis
mode string
Valeurs autorisées standardresilientrenderedrendered_resilient
Défaut standard
optionnel
output string
Valeurs autorisées htmltextmarkdown
Défaut html
optionnel

Champs de Réponse

Champ Type
data object
data.url string
data.final_url string
data.status integer | null
data.outcome string
data.content_type string | null
data.content string
data.bytes integer
data.truncated boolean
data.redirect_count integer
data.attempt_count integer
data.duration_ms integer
data.fetched_at string
data.headers object
data.rendered boolean
billing object
billing.credits_charged integer
billing.credits_refunded integer
billing.credits_per_item integer
billing.credits_net integer
billing.policy string

Exemple de Requête

curl -X POST "https://domscan.net/v1/scrape" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "url": "https://example.com/",
  "mode": "standard",
  "output": "markdown"
}'

Exemple de Réponse

{
  "data": {
    "url": "https://example.com",
    "final_url": "https://example.com",
    "status": 1,
    "outcome": "success",
    "content_type": "domain",
    "content": "example",
    "bytes": 1,
    "truncated": false,
    "redirect_count": 1,
    "attempt_count": 1,
    "duration_ms": 1,
    "fetched_at": "2026-08-27T12:00:00Z",
    "headers": {},
    "rendered": false
  },
  "billing": {
    "credits_charged": 1,
    "credits_refunded": 1,
    "credits_per_item": 1,
    "credits_net": 1,
    "policy": "effort_based"
  }
}
POST /v1/scrape/jobs

Paramètres du Corps

Paramètre Type requis
mode string
Valeurs autorisées standardresilientrenderedrendered_resilient
Défaut standard
optionnel
output string
Valeurs autorisées htmltextmarkdown
Défaut html
optionnel
urls unknown[] requis

Champs de Réponse

Champ Type
job object
job.id string
job.status string
job.mode string
job.output string
job.total integer
job.counts object
job.counts.pending integer
job.counts.processing integer
job.counts.succeeded integer
job.counts.failed integer
job.billing object
job.billing.credits_charged integer
job.billing.credits_refunded integer
job.billing.credits_per_item integer
job.billing.credits_net integer
job.billing.policy string
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.updated_at string
job.processing_deadline_at string
job.results_expires_at string
idempotent_replay boolean

Exemple de Requête

curl -X POST "https://domscan.net/v1/scrape/jobs" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "mode": "resilient",
  "output": "text",
  "urls": [
    "https://example.com/",
    {
      "url": "https://example.org/",
      "reference": "page-2"
    }
  ]
}'

Exemple de Réponse

{
  "job": {
    "id": "example-id",
    "status": "queued",
    "mode": "standard",
    "output": "html",
    "total": 1,
    "counts": {
      "pending": 1,
      "processing": 1,
      "succeeded": 1,
      "failed": 1
    },
    "billing": {
      "credits_charged": 1,
      "credits_refunded": 1,
      "credits_per_item": 1,
      "credits_net": 1,
      "policy": "effort_based"
    },
    "status_url": "https://example.com",
    "results_url": "https://example.com",
    "poll_after_ms": 1,
    "created_at": "2026-08-27T12:00:00Z",
    "started_at": "2026-08-27T12:00:00Z",
    "completed_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"
  },
  "idempotent_replay": false
}
GET /v1/scrape/jobs/:job_id

Paramètres de Requête

Paramètre Type requis
job_id string requis

Champs de Réponse

Champ Type
job object
job.id string
job.status string
job.mode string
job.output string
job.total integer
job.counts object
job.counts.pending integer
job.counts.processing integer
job.counts.succeeded integer
job.counts.failed integer
job.billing object
job.billing.credits_charged integer
job.billing.credits_refunded integer
job.billing.credits_per_item integer
job.billing.credits_net integer
job.billing.policy string
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.updated_at string
job.processing_deadline_at string
job.results_expires_at string

Exemple de Requête

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

Exemple de Réponse

{
  "job": {
    "id": "example-id",
    "status": "queued",
    "mode": "standard",
    "output": "html",
    "total": 1,
    "counts": {
      "pending": 1,
      "processing": 1,
      "succeeded": 1,
      "failed": 1
    },
    "billing": {
      "credits_charged": 1,
      "credits_refunded": 1,
      "credits_per_item": 1,
      "credits_net": 1,
      "policy": "effort_based"
    },
    "status_url": "https://example.com",
    "results_url": "https://example.com",
    "poll_after_ms": 1,
    "created_at": "2026-08-27T12:00:00Z",
    "started_at": "2026-08-27T12:00:00Z",
    "completed_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"
  }
}
GET /v1/scrape/jobs/:job_id/results

Paramètres de Requête

Paramètre Type requis
job_id string requis
limit integer
Défaut 20
optionnel
offset integer
Défaut 0
optionnel

Champs de Réponse

Champ Type
job object
job.id string
job.status string
job.mode string
job.output string
job.total integer
job.counts object
job.counts.pending integer
job.counts.processing integer
job.counts.succeeded integer
job.counts.failed integer
job.billing object
job.billing.credits_charged integer
job.billing.credits_refunded integer
job.billing.credits_per_item integer
job.billing.credits_net integer
job.billing.policy string
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.updated_at string
job.processing_deadline_at string
job.results_expires_at string
results[] object[]
results[] object
results[].index integer
results[].url string
results[].reference string
results[].status string
results[].data object
results[].data.url string
results[].data.final_url string
results[].data.status integer | null
results[].data.outcome string
results[].data.content_type string | null
results[].data.content string
results[].data.bytes integer
results[].data.truncated boolean
results[].data.redirect_count integer
results[].data.attempt_count integer
results[].data.duration_ms integer
results[].data.fetched_at string
results[].data.headers object
results[].data.rendered boolean
results[].billing object
results[].billing.credits_charged integer
results[].billing.credits_refunded integer
results[].billing.credits_per_item integer
results[].billing.credits_net integer
results[].billing.policy string
pagination object

Exemple de Requête

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

Exemple de Réponse

{
  "job": {
    "id": "example-id",
    "status": "queued",
    "mode": "standard",
    "output": "html",
    "total": 1,
    "counts": {
      "pending": 1,
      "processing": 1,
      "succeeded": 1,
      "failed": 1
    },
    "billing": {
      "credits_charged": 1,
      "credits_refunded": 1,
      "credits_per_item": 1,
      "credits_net": 1,
      "policy": "effort_based"
    },
    "status_url": "https://example.com",
    "results_url": "https://example.com",
    "poll_after_ms": 1,
    "created_at": "2026-08-27T12:00:00Z",
    "started_at": "2026-08-27T12:00:00Z",
    "completed_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"
  },
  "results": [
    {
      "index": 1,
      "url": "https://example.com",
      "reference": "example",
      "status": "pending",
      "data": {
        "url": "https://example.com",
        "final_url": "https://example.com",
        "status": 1,
        "outcome": "success",
        "content_type": "domain",
        "content": "example",
        "bytes": 1,
        "truncated": false,
        "redirect_count": 1,
        "attempt_count": 1,
        "duration_ms": 1,
        "fetched_at": "2026-08-27T12:00:00Z",
        "headers": {},
        "rendered": false
      },
      "billing": {
        "credits_charged": 1,
        "credits_refunded": 1,
        "credits_per_item": 1,
        "credits_net": 1,
        "policy": "effort_based"
      }
    }
  ],
  "pagination": {}
}

Utilisé par les gens des meilleures entreprises

InstantOutseerMongoDBRespondentSage Expense ManagementInstantlyD.R. HortonWhatConvertsAdobeMotionElementsLLM Pulse