Teknoloji Yığını Algılaması API ürünü
CMS, çerçeveler ve hizmetler de dahil olmak üzere bir web sitesi tarafından kullanılan teknoloji yığınını algılayın. Bir işlem seçmek ve belgelenen yanıt sözleşmesini entegre etmek için bu referansı kullanın.
İşlemler
GET /v1/tech
GET
/v1/tech
Kredi: 3-9
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| url | string | isteğe bağlı |
| domain | string | isteğe bağlı |
| mode |
string
İzin verilen değerler
fastrendereddeep
Varsayılan
fast
|
isteğe bağlı |
| max_pages |
integer
Varsayılan
3
|
isteğe bağlı |
| skip_cache |
string
İzin verilen değerler
01
Varsayılan
0
|
isteğe bağlı |
Yanıt alanları
| Alan | Tür |
|---|---|
cache_age_s |
integer |
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 |
Örnek istek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/tech?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&mode=fast&max_pages=3&skip_cache=0"const response = await fetch("https://domscan.net/v1/tech?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&mode=fast&max_pages=3&skip_cache=0", {
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/tech?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&mode=fast&max_pages=3&skip_cache=0",
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/tech?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&mode=fast&max_pages=3&skip_cache=0", 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/tech?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&mode=fast&max_pages=3&skip_cache=0")
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))Örnek yanıt
{
"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"
},
"cache_age_s": 1
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz402Ödeme Gerekli429Çok Fazla İstek503Hizmet Kullanılamıyor
POST /v1/tech/bulk
POST
/v1/tech/bulk
Kredi: 3/item
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| dry_run |
string
İzin verilen değerler
true
|
isteğe bağlı |
Gövde parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| mode |
string
İzin verilen değerler
fast
Varsayılan
fast
|
isteğe bağlı |
| targets | unknown[] | gerekli |
Yanıt alanları
| Alan | Tür |
|---|---|
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 |
Örnek istek
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"
}
]
}'const response = await fetch("https://domscan.net/v1/tech/bulk", {
method: "POST",
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
"mode": "fast",
"targets": [
"example.com",
{
"url": "https://shop.example.com/",
"reference": "crm-42"
}
]
}),
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.post(
"https://domscan.net/v1/tech/bulk",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
json={
"mode": "fast",
"targets": [
"example.com",
{
"url": "https://shop.example.com/",
"reference": "crm-42",
},
],
},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"mode": "fast",
"targets": [
"example.com",
{
"url": "https://shop.example.com/",
"reference": "crm-42"
}
]
}`)
req, err := http.NewRequest(http.MethodPost, "https://domscan.net/v1/tech/bulk", body)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
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/tech/bulk")
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({
"mode" => "fast",
"targets" => [
"example.com",
{
"url" => "https://shop.example.com/",
"reference" => "crm-42"
}
]
})
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))Örnek yanıt
{
"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
}
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz402Ödeme Gerekli409HTTP 409422HTTP 422429Çok Fazla İstek503Hizmet Kullanılamıyor
POST /v1/tech/jobs
POST
/v1/tech/jobs
Kredi: 3/item
Gövde parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| notify_webhook | unknown | isteğe bağlı |
| mode |
string
İzin verilen değerler
fastrendereddeep
Varsayılan
fast
|
isteğe bağlı |
| max_pages | integer | isteğe bağlı |
| targets | unknown[] | gerekli |
Yanıt alanları
| Alan | Tür |
|---|---|
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 |
Örnek istek
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"
}
]
}'const response = await fetch("https://domscan.net/v1/tech/jobs", {
method: "POST",
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
"mode": "deep",
"max_pages": 3,
"targets": [
"example.com",
{
"url": "https://shop.example.com/",
"reference": "shop"
}
]
}),
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.post(
"https://domscan.net/v1/tech/jobs",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
json={
"mode": "deep",
"max_pages": 3,
"targets": [
"example.com",
{
"url": "https://shop.example.com/",
"reference": "shop",
},
],
},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"mode": "deep",
"max_pages": 3,
"targets": [
"example.com",
{
"url": "https://shop.example.com/",
"reference": "shop"
}
]
}`)
req, err := http.NewRequest(http.MethodPost, "https://domscan.net/v1/tech/jobs", body)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
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/tech/jobs")
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({
"mode" => "deep",
"max_pages" => 3,
"targets" => [
"example.com",
{
"url" => "https://shop.example.com/",
"reference" => "shop"
}
]
})
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))Örnek yanıt
{
"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
}
HTTP durum kodları
202Kabul edildi400Hatalı İstek401Yetkisiz402Ödeme Gerekli409HTTP 409429Çok Fazla İstek503Hizmet Kullanılamıyor
GET /v1/tech/jobs
GET
/v1/tech/jobs
Kredi: 0
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| limit |
integer
Varsayılan
25
|
isteğe bağlı |
| cursor | string | isteğe bağlı |
Yanıt alanları
| Alan | Tür |
|---|---|
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 |
Örnek istek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/tech/jobs?limit=25&cursor=example"const response = await fetch("https://domscan.net/v1/tech/jobs?limit=25&cursor=example", {
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/tech/jobs?limit=25&cursor=example",
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/tech/jobs?limit=25&cursor=example", 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/tech/jobs?limit=25&cursor=example")
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))Örnek yanıt
{
"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
}
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz429Çok Fazla İstek
GET /v1/tech/jobs/:job_id
GET
/v1/tech/jobs/:job_id
Kredi: 0
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| job_id | string | gerekli |
Yanıt alanları
| Alan | Tür |
|---|---|
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 |
Örnek istek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/tech/jobs/string"const response = await fetch("https://domscan.net/v1/tech/jobs/string", {
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/tech/jobs/string",
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/tech/jobs/string", 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/tech/jobs/string")
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))Örnek yanıt
{
"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"
}
}
HTTP durum kodları
200OK401Yetkisiz404Bulunamadı429Çok Fazla İstek
GET /v1/tech/jobs/:job_id/results
GET
/v1/tech/jobs/:job_id/results
Kredi: 0
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| job_id | string | gerekli |
| cursor | string | isteğe bağlı |
| limit |
integer
Varsayılan
25
|
isteğe bağlı |
Yanıt alanları
| Alan | Tür |
|---|---|
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 |
Örnek istek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/tech/jobs/example/results?cursor=example&limit=25"const response = await fetch("https://domscan.net/v1/tech/jobs/example/results?cursor=example&limit=25", {
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/tech/jobs/example/results?cursor=example&limit=25",
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/tech/jobs/example/results?cursor=example&limit=25", 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/tech/jobs/example/results?cursor=example&limit=25")
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))Örnek yanıt
{
"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
}
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz404Bulunamadı410HTTP 410429Çok Fazla İstek
DELETE /v1/tech/jobs/:job_id
DELETE
/v1/tech/jobs/:job_id
Kredi: 0
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| job_id | string | gerekli |
Yanıt alanları
| Alan | Tür |
|---|---|
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 |
Örnek istek
curl -X DELETE "https://domscan.net/v1/tech/jobs/string" \
-H "Content-Type: application/json" \
-H "X-API-Key: $DOMSCAN_API_KEY" \
-d '{}'const response = await fetch("https://domscan.net/v1/tech/jobs/string", {
method: "DELETE",
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({}),
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.delete(
"https://domscan.net/v1/tech/jobs/string",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
json={},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{}`)
req, err := http.NewRequest(http.MethodDelete, "https://domscan.net/v1/tech/jobs/string", body)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
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/tech/jobs/string")
request = Net::HTTP::Delete.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({})
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))Örnek yanıt
{
"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"
}
}
HTTP durum kodları
202Kabul edildi401Yetkisiz404Bulunamadı429Çok Fazla İstek
GET /v1/hosting
GET
/v1/hosting
Kredi: 3
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| domain | string | gerekli |
Yanıt alanları
| Alan | Tür |
|---|---|
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 |
meta |
object |
meta.cached |
boolean |
Örnek istek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/hosting?domain=example.com"const response = await fetch("https://domscan.net/v1/hosting?domain=example.com", {
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/hosting?domain=example.com",
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/hosting?domain=example.com", 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/hosting?domain=example.com")
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))Örnek yanıt
{
"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
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz402Ödeme Gerekli429Çok Fazla İstek
POST /v1/hosting/bulk
POST
/v1/hosting/bulk
Kredi: 3/item
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| dry_run |
string
İzin verilen değerler
true
|
isteğe bağlı |
Gövde parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| domains | string[] | gerekli |
Yanıt alanları
| Alan | Tür |
|---|---|
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 |
Örnek istek
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"
]
}'const response = await fetch("https://domscan.net/v1/hosting/bulk", {
method: "POST",
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
"domains": [
"example.com",
"cloudflare.com"
]
}),
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.post(
"https://domscan.net/v1/hosting/bulk",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
json={
"domains": [
"example.com",
"cloudflare.com",
],
},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"domains": [
"example.com",
"cloudflare.com"
]
}`)
req, err := http.NewRequest(http.MethodPost, "https://domscan.net/v1/hosting/bulk", body)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
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/hosting/bulk")
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({
"domains" => [
"example.com",
"cloudflare.com"
]
})
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))Örnek yanıt
{
"results": [
{
"input": "example",
"data": {}
}
],
"meta": {
"total": 1,
"succeeded": 1,
"failed": 1,
"max_items": 10,
"credits_per_item": 1,
"duration_ms": 1
}
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz402Ödeme Gerekli409HTTP 409422HTTP 422429Çok Fazla İstek
GET /v1/parking
GET
/v1/parking
Kredi: 2
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| domain | string | gerekli |
Yanıt alanları
| Alan | Tür |
|---|---|
domain |
string |
classification |
object |
classification.status |
string |
classification.reason |
string |
classification.evidence |
object |
classification.evidence.source |
string |
classification.evidence.method |
string |
classification.evidence.observed_at |
string |
classification.evidence.detail |
string |
classification.checked_at |
string |
is_parked |
boolean | null |
is_for_sale |
boolean | null |
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 |
Örnek istek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/parking?domain=example.com"const response = await fetch("https://domscan.net/v1/parking?domain=example.com", {
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/parking?domain=example.com",
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/parking?domain=example.com", 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/parking?domain=example.com")
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))Örnek yanıt
{
"domain": "parked-example.com",
"is_parked": true,
"is_for_sale": false,
"parking_provider": "Sedo",
"aftermarket_listings": [
{
"platform": "Sedo",
"detected_via": "dns"
}
],
"signals": [
{
"type": "nameserver",
"detail": "NS record: ns1.sedoparking.com",
"provider": "Sedo"
},
{
"type": "nameserver",
"detail": "NS record: ns2.sedoparking.com",
"provider": "Sedo"
}
],
"confidence": 0.85,
"checked_at": "2026-10-09T10:15:30.000Z",
"check_duration_ms": 842
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz402Ödeme Gerekli429Çok Fazla İstek
GET /v1/agent-readiness
GET
/v1/agent-readiness
Kredi: 3
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| url | string | isteğe bağlı |
| domain | string | isteğe bağlı |
| skip_cache |
string
İzin verilen değerler
1
|
isteğe bağlı |
Yanıt alanları
| Alan | Tür |
|---|---|
cache_age_s |
integer |
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 |
Örnek istek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/agent-readiness?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&skip_cache=1"const response = await fetch("https://domscan.net/v1/agent-readiness?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&skip_cache=1", {
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/agent-readiness?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&skip_cache=1",
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/agent-readiness?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&skip_cache=1", 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/agent-readiness?url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fexample.com&domain=example.com&skip_cache=1")
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))Örnek yanıt
{
"requested_url": "https://www.example.com/",
"final_url": "https://www.example.com/",
"checked_at": "2026-10-09T10:15:30.000Z",
"outcome": "partial",
"fetch_state": "ok",
"http_status": 200,
"summary": {
"coverage": "multi_channel",
"detected_signals": 3,
"total_signals": 12,
"score": 78,
"rating": "good",
"confidence": 95,
"passed_checks": 18,
"warning_checks": 12,
"failed_checks": 2,
"unknown_checks": 2,
"not_applicable_checks": 8
},
"signals": {
"webmcp": {
"status": "unknown",
"validation": "runtime_required",
"method": "static_html",
"checked_url": "https://www.example.com/",
"http_status": 200,
"evidence": [],
"caveats": [
"runtime_observation_required"
]
},
"remote_mcp": {
"status": "not_detected",
"validation": "not_applicable",
"method": "oauth_protected_resource_metadata",
"checked_url": "https://www.example.com/.well-known/oauth-protected-resource/mcp",
"http_status": 404,
"evidence": [
"exact_missing_response"
],
"caveats": [
"custom_or_unauthenticated_endpoints_not_checked"
]
},
"openapi": {
"status": "detected",
"validation": "confirmed",
"method": "service_description",
"checked_url": "https://www.example.com/openapi.json",
"http_status": 200,
"evidence": [
"openapi_document_validated"
],
"caveats": []
},
"llms_txt": {
"status": "detected",
"validation": "confirmed",
"method": "well_known_path",
"checked_url": "https://www.example.com/llms.txt",
"http_status": 200,
"evidence": [
"markdown_h1",
"markdown_links_1"
],
"caveats": []
},
"api_catalog": {
"status": "detected",
"validation": "confirmed",
"method": "rfc9727_api_catalog",
"checked_url": "https://www.example.com/.well-known/api-catalog",
"http_status": 200,
"evidence": [
"service_descriptions_1",
"api_catalog_link_header"
],
"caveats": []
},
"mcp_server_card": {
"status": "not_detected",
"validation": "not_applicable",
"method": "mcp_server_card",
"checked_url": null,
"http_status": null,
"evidence": [
"bounded_candidates_missing"
],
"caveats": []
},
"agent_skills": {
"status": "not_detected",
"validation": "not_applicable",
"method": "agent_skills_index",
"checked_url": "https://www.example.com/.well-known/agent-skills/index.json",
"http_status": 404,
"evidence": [
"exact_missing_response"
],
"caveats": []
},
"oauth": {
"status": "not_detected",
"validation": "not_applicable",
"method": "oauth_server_metadata",
"checked_url": null,
"http_status": null,
"evidence": [
"bounded_candidates_missing"
],
"caveats": []
},
"markdown": {
"status": "not_detected",
"validation": "not_applicable",
"method": "accept_content_negotiation",
"checked_url": "https://www.example.com/",
"http_status": 200,
"evidence": [
"html_returned_for_markdown_accept"
],
"caveats": []
},
"web_bot_auth": {
"status": "not_detected",
"validation": "not_applicable",
"method": "web_bot_auth_directory",
"checked_url": "https://www.example.com/.well-known/http-message-signatures-directory",
"http_status": 404,
"evidence": [
"exact_missing_response"
],
"caveats": []
},
"sitemap_markdown": {
"status": "not_detected",
"validation": "not_applicable",
"method": "markdown_sitemap",
"checked_url": null,
"http_status": null,
"evidence": [
"bounded_candidates_missing"
],
"caveats": []
},
"agent_guide": {
"status": "not_detected",
"validation": "not_applicable",
"method": "public_agent_guide",
"checked_url": null,
"http_status": null,
"evidence": [
"bounded_candidates_missing"
],
"caveats": []
}
},
"foundations": {
"https": {
"state": "pass",
"evidence": [
"https"
]
},
"indexable": {
"state": "pass",
"evidence": [
"no_noindex_directive"
]
},
"robots": {
"state": "pass",
"evidence": [
"robots_allows_crawl"
]
},
"title": {
"state": "pass",
"evidence": [
"title_present"
]
},
"meta_description": {
"state": "pass",
"evidence": [
"meta_description_present"
]
},
"canonical": {
"state": "warn",
"evidence": [
"canonical_missing"
]
},
"language": {
"state": "pass",
"evidence": [
"html_lang_present"
]
},
"structured_data": {
"state": "warn",
"evidence": [
"json_ld_not_detected"
]
},
"labeled_forms": {
"state": "pass",
"evidence": [
"no_form_controls"
]
},
"origin_isolation": {
"state": "unknown",
"evidence": [
"origin_agent_cluster_not_declared"
]
},
"webmcp_permission": {
"state": "pass",
"evidence": [
"tools_permission_default_self"
]
}
},
"dimensions": {
"discoverability": {
"score": 84,
"confidence": 100,
"passed": 8,
"warned": 1,
"failed": 2,
"unknown": 0,
"not_applicable": 1,
"checks": [
"https",
"http_response",
"redirect_chain",
"html_content_type",
"indexable",
"robots_access",
"sitemap_xml",
"sitemap_lastmod",
"target_discoverable",
"llms_txt",
"sitemap_markdown",
"api_catalog_link"
]
},
"content": {
"score": 67,
"confidence": 100,
"passed": 5,
"warned": 8,
"failed": 0,
"unknown": 0,
"not_applicable": 2,
"checks": [
"title",
"meta_description",
"open_graph",
"canonical",
"language",
"structured_data",
"heading_structure",
"content_density",
"form_controls",
"markdown_negotiation",
"markdown_alternate",
"code_languages",
"api_schema_link",
"glossary_context",
"public_agent_guide"
]
},
"access_policy": {
"score": 88,
"confidence": 100,
"passed": 2,
"warned": 1,
"failed": 0,
"unknown": 0,
"not_applicable": 2,
"checks": [
"ai_bot_access",
"explicit_ai_policy",
"content_signals",
"agent_content_directives",
"web_bot_auth"
]
},
"capabilities": {
"score": 83,
"confidence": 75,
"passed": 3,
"warned": 2,
"failed": 0,
"unknown": 2,
"not_applicable": 3,
"checks": [
"webmcp",
"remote_mcp",
"openapi",
"api_catalog",
"mcp_server_card",
"agent_skills",
"oauth_discovery",
"service_description_link",
"origin_isolation",
"webmcp_permission"
]
}
},
"checks": {
"https": {
"id": "https",
"dimension": "discoverability",
"state": "pass",
"weight": 3,
"method": "document_analysis",
"checked_url": "https://www.example.com/",
"http_status": 200,
"evidence": [
"https"
],
"caveats": [],
"reference": "HTTPS",
"maturity": "standard"
},
"http_response": {
"id": "http_response",
"dimension": "discoverability",
"state": "pass",
"weight": 3,
"method": "document_analysis",
"checked_url": "https://www.example.com/",
"http_status": 200,
"evidence": [
"http_status_200"
],
"caveats": [],
"reference": "HTTP semantics",
"maturity": "standard"
},
"llms_txt": {
"id": "llms_txt",
"dimension": "discoverability",
"state": "pass",
"weight": 2,
"method": "well_known_path",
"checked_url": "https://www.example.com/llms.txt",
"http_status": 200,
"evidence": [
"markdown_h1",
"markdown_links_1"
],
"caveats": [],
"reference": "llms.txt proposal",
"maturity": "proposal"
}
},
"recommendations": [
{
"code": "ADD_CANONICAL",
"severity": "medium"
},
{
"code": "ADD_STRUCTURED_DATA",
"severity": "low"
},
{
"code": "PUBLISH_MCP_METADATA",
"severity": "medium"
}
],
"meta": {
"cached": false,
"fetch_path": "primary",
"duration_ms": 1840,
"probe_count": 22,
"body_truncated": false,
"source_version": "2026-08-28",
"last_verified": "2026-08-28",
"rubric_version": "2026-08-28.3",
"max_probes": 32
}
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz402Ödeme Gerekli429Çok Fazla İstek502Hatalı Ağ Geçidi