Who it is for
Use bounded passive checks to enrich triage and investigation, not to replace authorized testing or human review.
Try a product, outcome, endpoint path, or API topic.
Find exposed software, risky configurations, and known affected versions across a public website. Every result explains what was checked, why it matched, and how strong the evidence is.
Find exposed software, risky configurations, and known affected versions across a public website. Every result explains what was checked, why it matched, and how strong the evidence is.
Use bounded passive checks to enrich triage and investigation, not to replace authorized testing or human review.
Choose this for passive exposed-version and configuration evidence. It does not exploit the target or prove the site is vulnerability-free.
Find exposed software, risky configurations, and known affected versions across a public website. Every result explains what was checked, why it matched, and how strong the evidence is.
Review the supported operations, inputs, outputs, execution modes, and response limits before integrating.
8-12 Authentication required. Check the operation reference for the exact cost and any per-item pricing.
Use documented operations to collect, assess, enrich, verify, compare, protect, or monitor public evidence.
| Parameter | Type | required |
|---|---|---|
| url | string | optional |
| domain | string | optional |
| mode |
string
Allowed values
standarddeep
Default
standard
|
optional |
| Field | Type |
|---|---|
target |
object |
target.requested_url |
string |
target.final_url |
string |
target.hostname |
string |
scan |
object |
scan.mode |
string |
scan.status |
string |
scan.checked_at |
string |
scan.duration_ms |
integer |
scan.disclaimer |
string |
summary |
object |
summary.posture |
string |
summary.risk_level |
string |
summary.finding_count |
integer |
summary.version_affected_count |
integer |
summary.misconfiguration_count |
integer |
summary.urgent_count |
integer |
summary.severity_counts |
object |
findings[] |
object[] |
findings[] |
object |
findings[].fingerprint |
string |
findings[].classification |
string |
findings[].severity |
string |
findings[].priority |
string |
findings[].title |
string |
findings[].summary |
string |
findings[].component |
object |
findings[].component.technology_id |
string |
findings[].component.name |
string |
findings[].component.detected_version |
string |
findings[].component.version_kind |
string |
findings[].component.confidence |
string |
findings[].component.confidence_score |
integer |
findings[].component.ecosystem |
string |
findings[].component.package |
string |
findings[].component.purl |
string |
findings[].advisory |
object |
findings[].advisory.id |
string |
findings[].advisory.aliases[] |
string[] |
findings[].advisory.cves[] |
string[] |
findings[].advisory.published_at |
string | null |
findings[].advisory.modified_at |
string | null |
findings[].advisory.cvss[] |
object[] |
findings[].advisory.cvss[] |
object |
findings[].advisory.cvss[].type |
string |
findings[].advisory.cvss[].vector |
string |
findings[].advisory.fixed_versions[] |
string[] |
findings[].advisory.affected_ranges[] |
object[] |
findings[].advisory.affected_ranges[] |
object |
findings[].advisory.references[] |
string[] |
findings[].exploitation |
object |
findings[].exploitation.cisa_kev |
boolean | null |
findings[].exploitation.kev_added_at |
string | null |
findings[].exploitation.kev_required_action |
string | null |
findings[].exploitation.known_ransomware_use |
string | null |
findings[].exploitation.epss_probability |
number | null |
findings[].exploitation.epss_percentile |
number | null |
findings[].exploitation.epss_date |
string | null |
findings[].evidence |
object |
findings[].evidence.confidence |
string |
findings[].evidence.observed[] |
string[] |
findings[].evidence.limitations[] |
string[] |
findings[].remediation |
object |
findings[].remediation.summary |
string |
findings[].remediation.fixed_versions[] |
string[] |
findings[].sources[] |
string[] |
components[] |
object[] |
components[] |
object |
components[].technology_id |
string |
components[].name |
string |
components[].detected_version |
string | null |
components[].version_kind |
string | null |
components[].confidence |
string |
components[].advisory_status |
string |
components[].matched_advisories |
integer |
coverage |
object |
coverage.target_response |
string |
coverage.technology_detection |
string |
coverage.package_advisories |
string |
coverage.known_exploitation |
string |
coverage.exploitation_probability |
string |
coverage.detected_components |
integer |
coverage.versioned_components |
integer |
coverage.advisory_eligible_components |
integer |
coverage.advisory_checked_components |
integer |
coverage.advisory_deferred_components |
integer |
coverage.advisory_query_limit |
integer |
coverage.relay_used |
boolean |
coverage.limitations[] |
string[] |
sources[] |
object[] |
sources[] |
object |
sources[].id |
string |
sources[].name |
string |
sources[].owner |
string |
sources[].url |
string |
sources[].status |
string |
sources[].retrieved_at |
string | null |
sources[].cache_hit |
boolean |
sources[].expected_freshness |
string |
sources[].fallback_behavior |
string |
sources[].cost |
string |
_meta |
object |
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/vulnerabilities?url=https%3A%2F%2Fexample.com&domain=example.com&mode=standard"const response = await fetch("https://domscan.net/v1/vulnerabilities?url=https%3A%2F%2Fexample.com&domain=example.com&mode=standard", {
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.get(
"https://domscan.net/v1/vulnerabilities?url=https%3A%2F%2Fexample.com&domain=example.com&mode=standard",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/vulnerabilities?url=https%3A%2F%2Fexample.com&domain=example.com&mode=standard", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.Status, string(data))
}require "json"
require "net/http"
uri = URI("https://domscan.net/v1/vulnerabilities?url=https%3A%2F%2Fexample.com&domain=example.com&mode=standard")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body)){
"target": {
"requested_url": "https://www.example.com/",
"final_url": "https://www.example.com/",
"hostname": "www.example.com"
},
"scan": {
"mode": "standard",
"status": "complete",
"checked_at": "2026-10-09T10:15:30.000Z",
"duration_ms": 3120,
"disclaimer": "A clean result means DomScan did not detect an issue within the documented scan coverage. Automated scanning cannot prove that an application is vulnerability-free or replace an authorized penetration test."
},
"summary": {
"posture": "review",
"risk_level": "medium",
"finding_count": 2,
"version_affected_count": 0,
"misconfiguration_count": 2,
"urgent_count": 0,
"severity_counts": {
"critical": 0,
"high": 0,
"medium": 1,
"low": 1,
"info": 0,
"unknown": 0
}
},
"findings": [
{
"fingerprint": "configuration:content-security-policy:www.example.com",
"classification": "security_misconfiguration",
"severity": "medium",
"priority": "elevated",
"title": "Content Security Policy is not advertised",
"summary": "The observed response did not include a Content-Security-Policy header.",
"evidence": {
"confidence": "high",
"observed": [
"Public response did not include the expected content-security-policy protection."
],
"limitations": [
"header_policy_can_vary_by_path_or_response_status"
]
},
"remediation": {
"summary": "Deploy a restrictive Content Security Policy in report-only mode first, then enforce it.",
"fixed_versions": []
},
"sources": [
"target_response"
]
},
{
"fingerprint": "configuration:referrer-policy:www.example.com",
"classification": "security_misconfiguration",
"severity": "low",
"priority": "normal",
"title": "Referrer Policy is not advertised",
"summary": "The response did not include an explicit Referrer-Policy header.",
"evidence": {
"confidence": "high",
"observed": [
"Public response did not include the expected referrer-policy protection."
],
"limitations": [
"header_policy_can_vary_by_path_or_response_status"
]
},
"remediation": {
"summary": "Choose and deploy a Referrer-Policy that matches the application privacy and analytics requirements.",
"fixed_versions": []
},
"sources": [
"target_response"
]
}
],
"components": [
{
"technology_id": "jquery",
"name": "jQuery",
"detected_version": "3.7.1",
"version_kind": "asset",
"confidence": "high",
"advisory_status": "checked",
"matched_advisories": 0
},
{
"technology_id": "cloudflare",
"name": "Cloudflare",
"detected_version": null,
"version_kind": null,
"confidence": "high",
"advisory_status": "mapping_unavailable",
"matched_advisories": 0
}
],
"coverage": {
"target_response": "checked",
"technology_detection": "checked",
"package_advisories": "checked",
"known_exploitation": "not_requested",
"exploitation_probability": "not_requested",
"detected_components": 2,
"versioned_components": 1,
"advisory_eligible_components": 1,
"advisory_checked_components": 1,
"advisory_deferred_components": 0,
"advisory_query_limit": 20,
"relay_used": true,
"limitations": [
"Only exact reviewed technology-to-package mappings are checked against OSV.",
"Versionless or semantically incompatible detections are not reported as vulnerable.",
"This passive scan does not send exploit payloads or prove exploitability.",
"Response headers and exposed versions can vary by path, edge location, or authentication state."
]
},
"sources": [
{
"id": "target_response",
"name": "Observed public response",
"owner": "Target website",
"url": "https://domscan.net/tech-stack-api",
"status": "checked",
"retrieved_at": "2026-10-09T10:15:30.000Z",
"cache_hit": false,
"expected_freshness": "Live at scan time",
"fallback_behavior": "Unavailable signals remain unknown and never imply that the target is unaffected",
"cost": "none"
},
{
"id": "osv",
"name": "OSV",
"owner": "Google Open Source Security Team",
"url": "https://google.github.io/osv.dev/",
"status": "checked",
"retrieved_at": "2026-10-09T10:15:29.000Z",
"cache_hit": false,
"expected_freshness": "OSV targets advisory freshness within 15 minutes",
"fallback_behavior": "Use a fresh cached result when available; otherwise mark the component advisory check unknown",
"cost": "none"
},
{
"id": "cisa_kev",
"name": "CISA Known Exploited Vulnerabilities Catalog",
"owner": "Cybersecurity and Infrastructure Security Agency",
"url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog",
"status": "not_requested",
"retrieved_at": null,
"cache_hit": false,
"expected_freshness": "Catalog changes are checked hourly",
"fallback_behavior": "Use a fresh cached catalog when available; otherwise leave exploitation status unknown",
"cost": "none"
},
{
"id": "first_epss",
"name": "Exploit Prediction Scoring System",
"owner": "FIRST",
"url": "https://www.first.org/epss/",
"status": "not_requested",
"retrieved_at": null,
"cache_hit": false,
"expected_freshness": "Scores are generated daily",
"fallback_behavior": "Return the advisory without an EPSS value and mark exploitation probability unknown",
"cost": "none"
}
],
"_meta": {
"served_by": "pop=MAD country=ES",
"analysis_status": "complete"
}
}
200 OK400 Bad Request401 Unauthorized402 Payment Required429 Too Many Requests503 Service UnavailableUse the API reference for Website Vulnerability Scanner to review parameters, response fields, examples, status codes, and supported operation modes.
Unknown or partial results mean that the requested evidence could not be fully determined. Keep the result state, confidence, freshness, and limitations in downstream decisions.
Pricing depends on the operation and execution mode. Check the endpoint reference for the current credit cost, authentication requirement, and per-item rules.
Used by people at these companies