> For the complete documentation index see https://domscan.net/llms.txt. Markdown versions of every docs page are available by appending .md to the page URL.

Source: https://domscan.net/de/docs/products/website-compliance

# API für API zur rechtlichen Compliance von Websites

Datenschutzerklärung, Nutzungsbedingungen, Impressum, Consent-Manager und Tracker einer Website finden. Nutzen Sie diese Referenz, um eine Operation auszuwählen und den dokumentierten Response-Vertrag zu integrieren.

[Produktseite ansehen](https://domscan.net/de/website-compliance-api)

## Operationen

GET `/v1/legal-compliance` [API-Referenz ansehen](https://domscan.net/de/docs/products/website-compliance#getLegalCompliance)

## GET `/v1/legal-compliance`

Operation: `getLegalCompliance`
Credits und Authentifizierung: 2-6
Authentifizierung erforderlich

GET /v1/legal-compliance Credits: 2-6

#### Abfrageparameter

| Parameter | Typ | erforderlich |
| --- | --- | --- |
| url | string | erforderlich |
| render | boolean Standard `false` | optional |
| verify_links | boolean Standard `false` | optional |

#### Antwortfelder

| Feld | Typ |
| --- | --- |
| `url` | string |
| `final_url` | string |
| `status` | string |
| `reason` | string \| null |
| `checked_at` | string |
| `fetch` | object |
| `fetch.http_status` | integer \| null |
| `fetch.final_url` | string |
| `fetch.content_type` | string \| null |
| `fetch.bytes` | integer |
| `fetch.truncated` | boolean |
| `fetch.redirect_count` | integer |
| `fetch.duration_ms` | integer |
| `fetch.rendered` | boolean |
| `context` | object |
| `context.html_lang` | string \| null |
| `context.content_language` | string \| null |
| `context.tld` | string \| null |
| `context.regions[]` | string[] |
| `context.typical_signals[]` | string[] |
| `links` | object |
| `links.privacy_choices` | object |
| `links.privacy_choices.status` | string |
| `links.privacy_choices.reason` | string \| null |
| `links.privacy_choices.evidence` | object |
| `links.privacy_choices.evidence.url` | string \| null |
| `links.privacy_choices.evidence.text` | string \| null |
| `links.privacy_choices.evidence.external` | boolean |
| `links.privacy_choices.evidence.match` | string |
| `links.privacy_choices.matches` | integer |
| `links.privacy_policy` | object |
| `links.privacy_policy.status` | string |
| `links.privacy_policy.reason` | string \| null |
| `links.privacy_policy.evidence` | object |
| `links.privacy_policy.evidence.url` | string \| null |
| `links.privacy_policy.evidence.text` | string \| null |
| `links.privacy_policy.evidence.external` | boolean |
| `links.privacy_policy.evidence.match` | string |
| `links.privacy_policy.matches` | integer |
| `links.terms_of_service` | object |
| `links.terms_of_service.status` | string |
| `links.terms_of_service.reason` | string \| null |
| `links.terms_of_service.evidence` | object |
| `links.terms_of_service.evidence.url` | string \| null |
| `links.terms_of_service.evidence.text` | string \| null |
| `links.terms_of_service.evidence.external` | boolean |
| `links.terms_of_service.evidence.match` | string |
| `links.terms_of_service.matches` | integer |
| `links.cookie_policy` | object |
| `links.cookie_policy.status` | string |
| `links.cookie_policy.reason` | string \| null |
| `links.cookie_policy.evidence` | object |
| `links.cookie_policy.evidence.url` | string \| null |
| `links.cookie_policy.evidence.text` | string \| null |
| `links.cookie_policy.evidence.external` | boolean |
| `links.cookie_policy.evidence.match` | string |
| `links.cookie_policy.matches` | integer |
| `links.imprint` | object |
| `links.imprint.status` | string |
| `links.imprint.reason` | string \| null |
| `links.imprint.evidence` | object |
| `links.imprint.evidence.url` | string \| null |
| `links.imprint.evidence.text` | string \| null |
| `links.imprint.evidence.external` | boolean |
| `links.imprint.evidence.match` | string |
| `links.imprint.matches` | integer |
| `links.accessibility_statement` | object |
| `links.accessibility_statement.status` | string |
| `links.accessibility_statement.reason` | string \| null |
| `links.accessibility_statement.evidence` | object |
| `links.accessibility_statement.evidence.url` | string \| null |
| `links.accessibility_statement.evidence.text` | string \| null |
| `links.accessibility_statement.evidence.external` | boolean |
| `links.accessibility_statement.evidence.match` | string |
| `links.accessibility_statement.matches` | integer |
| `links.contact` | object |
| `links.contact.status` | string |
| `links.contact.reason` | string \| null |
| `links.contact.evidence` | object |
| `links.contact.evidence.url` | string \| null |
| `links.contact.evidence.text` | string \| null |
| `links.contact.evidence.external` | boolean |
| `links.contact.evidence.match` | string |
| `links.contact.matches` | integer |
| `links.refund_policy` | object |
| `links.refund_policy.status` | string |
| `links.refund_policy.reason` | string \| null |
| `links.refund_policy.evidence` | object |
| `links.refund_policy.evidence.url` | string \| null |
| `links.refund_policy.evidence.text` | string \| null |
| `links.refund_policy.evidence.external` | boolean |
| `links.refund_policy.evidence.match` | string |
| `links.refund_policy.matches` | integer |
| `consent` | object |
| `consent.status` | string |
| `consent.reason` | string \| null |
| `consent.detected_via[]` | string[] |
| `consent.platforms[]` | object[] |
| `consent.platforms[]` | object |
| `consent.platforms[].id` | string |
| `consent.platforms[].name` | string |
| `consent.platforms[].evidence` | string |
| `consent.frameworks` | object |
| `consent.frameworks.iab_tcf` | boolean |
| `consent.frameworks.iab_gpp` | boolean |
| `consent.frameworks.iab_usp` | boolean |
| `consent.frameworks.google_consent_mode_default` | boolean |
| `consent.frameworks.google_consent_mode_v2` | boolean |
| `consent.settings_link` | object |
| `consent.settings_link.status` | string |
| `consent.settings_link.text` | string \| null |
| `trackers` | object |
| `trackers.status` | string |
| `trackers.reason` | string \| null |
| `trackers.detected[]` | object[] |
| `trackers.detected[]` | object |
| `trackers.detected[].name` | string |
| `trackers.detected[].category` | string |
| `trackers.detected[].evidence` | string |
| `gpc` | object |
| `gpc.status` | string |
| `gpc.supported` | boolean \| null |
| `gpc.last_update` | string \| null |
| `gpc.reason` | string \| null |
| `privacy_policy_check` | object |
| `privacy_policy_check.status` | string |
| `privacy_policy_check.http_status` | integer \| null |
| `privacy_policy_check.reason` | string \| null |
| `summary` | object |
| `summary.found` | integer |
| `summary.not_found` | integer |
| `summary.unknown` | integer |
| `coverage` | object |
| `coverage.score` | integer \| null |
| `coverage.checks_scored[]` | string[] |
| `coverage.checks_unknown` | integer |
| `coverage.score_confidence` | string |
| `observations[]` | string[] |
| `client_rendered` | boolean \| null |
| `caveats[]` | string[] |
| `analysis_version` | string |

#### Beispielanfrage

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/legal-compliance?url=https%3A%2F%2Fexample.com&render=false&verify_links=false"
```

```javascript
const response = await fetch("https://domscan.net/v1/legal-compliance?url=https%3A%2F%2Fexample.com&render=false&verify_links=false", {
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.get(
    "https://domscan.net/v1/legal-compliance?url=https%3A%2F%2Fexample.com&render=false&verify_links=false",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())
```

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/legal-compliance?url=https%3A%2F%2Fexample.com&render=false&verify_links=false", 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))
}
```

```ruby
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/legal-compliance?url=https%3A%2F%2Fexample.com&render=false&verify_links=false")
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))
```

#### Beispielantwort

```json
{
  "url": "https://www.allbirds.com/",
  "final_url": "https://www.allbirds.com/",
  "status": "ok",
  "reason": null,
  "checked_at": "2026-10-18T04:14:56.310Z",
  "fetch": {
    "http_status": 200,
    "final_url": "https://www.allbirds.com/",
    "content_type": "text/html",
    "bytes": 720698,
    "truncated": false,
    "redirect_count": 0,
    "duration_ms": 812,
    "rendered": false
  },
  "context": {
    "html_lang": "en-US",
    "content_language": null,
    "tld": "com",
    "regions": [],
    "typical_signals": [
      "privacy_policy",
      "terms_of_service",
      "contact"
    ]
  },
  "links": {
    "privacy_choices": {
      "status": "found",
      "reason": null,
      "evidence": {
        "url": null,
        "text": "Do Not Sell My Personal Information",
        "external": false,
        "match": "text"
      },
      "matches": 1
    },
    "privacy_policy": {
      "status": "found",
      "reason": null,
      "evidence": {
        "url": null,
        "text": "Privacy policy",
        "external": false,
        "match": "text"
      },
      "matches": 1
    },
    "terms_of_service": {
      "status": "found",
      "reason": null,
      "evidence": {
        "url": null,
        "text": "Terms of service",
        "external": false,
        "match": "text"
      },
      "matches": 1
    },
    "cookie_policy": {
      "status": "not_found",
      "reason": null,
      "evidence": null,
      "matches": 0
    },
    "imprint": {
      "status": "not_found",
      "reason": null,
      "evidence": null,
      "matches": 0
    },
    "accessibility_statement": {
      "status": "not_found",
      "reason": null,
      "evidence": null,
      "matches": 0
    },
    "contact": {
      "status": "found",
      "reason": null,
      "evidence": {
        "url": "https://www.allbirds.com/pages/help",
        "text": "FAQ/Contact Us",
        "external": false,
        "match": "text"
      },
      "matches": 24
    },
    "refund_policy": {
      "status": "found",
      "reason": null,
      "evidence": {
        "url": "https://www.allbirds.com/pages/returns-exchanges",
        "text": "Returns/Exchanges",
        "external": false,
        "match": "text_and_url"
      },
      "matches": 2
    }
  },
  "consent": {
    "status": "found",
    "reason": null,
    "detected_via": [
      "platform",
      "settings_control",
      "banner_markup"
    ],
    "platforms": [
      {
        "id": "onetrust",
        "name": "OneTrust",
        "evidence": "inline_script"
      },
      {
        "id": "shopify_privacy_banner",
        "name": "Shopify privacy banner",
        "evidence": "script_url"
      }
    ],
    "frameworks": {
      "iab_tcf": false,
      "iab_gpp": false,
      "iab_usp": false,
      "google_consent_mode_default": false,
      "google_consent_mode_v2": false
    },
    "settings_link": {
      "status": "found",
      "text": "Cookie preferences"
    }
  },
  "trackers": {
    "status": "found",
    "reason": null,
    "detected": [
      {
        "name": "Google Tag Manager",
        "category": "tag_manager",
        "evidence": "iframe"
      },
      {
        "name": "Microsoft Clarity",
        "category": "session_replay",
        "evidence": "inline_script"
      }
    ]
  },
  "gpc": {
    "status": "not_checked",
    "supported": null,
    "last_update": null,
    "reason": null
  },
  "privacy_policy_check": {
    "status": "not_checked",
    "http_status": null,
    "reason": null
  },
  "summary": {
    "found": 6,
    "not_found": 3,
    "unknown": 0
  },
  "coverage": {
    "score": 89,
    "checks_scored": [
      "privacy_policy",
      "terms_of_service",
      "contact",
      "consent_management",
      "cookie_policy"
    ],
    "checks_unknown": 0,
    "score_confidence": "full"
  },
  "observations": [],
  "client_rendered": false,
  "caveats": [
    "not_legal_advice",
    "single_page_checked",
    "consent_behaviour_not_tested",
    "initial_html_only"
  ],
  "analysis_version": "2026-10-18.1"
}
```

#### HTTP-Statuscodes

- `200` OK
- `400` Ungültige Anfrage
- `401` Nicht autorisiert
- `402` Zahlung erforderlich
- `429` Zu viele Anfragen

## Referenzressourcen

[OpenAPI 3.0](https://domscan.net/v1/openapi.json)
[Postman](https://domscan.net/v1/postman.json)
[MCP](https://domscan.net/de/mcp-domain-checker)
