Last updated: May 9, 2026
ContrastCyber ("we", "us") operates ContrastAPI at api.contrastcyber.com. This Privacy Policy covers data we collect via the API surface (REST endpoints, MCP tools, MCP resources, MCP prompts), our HTML landing/docs pages, and our payment provider integrations. The scanner at contrastcyber.com is a separate property with its own Privacy Policy.
REDACTED at the nginx layer before the log line ever touches disk:
Before: GET /v1/ip/8.8.8.8 HTTP/1.1
After: GET /v1/ip/REDACTED HTTP/1.1
Before: GET /v1/whois/example.com HTTP/1.1
After: GET /v1/whois/REDACTED HTTP/1.1
Before: GET /v1/cves?q=log4j HTTP/1.1
After: GET /v1/cves HTTP/1.1
The log line itself contains: IP address, timestamp, HTTP method, sanitized path (as above), status code, response size, referrer URL, and user-agent string. A separate daily aggregate snapshot (per-day counts and ISO country codes only — no IPs, no paths, no query data) is retained indefinitely for product analytics.TimeoutException, HTTPStatusError) and the sanitized endpoint path. Query parameters, full exception messages, and stack traces are deliberately stripped before the line is emitted, so domain names, IPs, CVE IDs, hashes, and other inputs never reach the journal. Retained for 24 hours (MaxRetentionSec=1day in journald.conf).{timestamp, tool name, metadata flags}. Metadata flags are limited to result filtering, pagination, and sort options (e.g. severity, kev, limit, sort). Query inputs (CVE IDs, domains, IPs, emails, phone numbers, usernames, vendor and product names, free-text queries, ATLAS/D3FEND identifiers) are filtered at extraction time per the allowlist in mcp_proxy.py. String values are shape-checked (alphanumeric + ._-:,, ≤64 chars) so PII cannot be smuggled via control characters or whitespace. The log contains no IP address and no query inputs, so it is retained indefinitely for product usage analytics.Don't take our word for it. ContrastAPI exposes a transparency endpoint that returns every single row our database has about you — right now, in real time:
curl https://api.contrastcyber.com/v1/privacy/my-data
The response shows your hashed IP, your last 24 hours of endpoint activity (aggregated by endpoint category — no query parameters), your rate limit state, and a not_stored list explaining what is deliberately absent. Pro users additionally see their key record (order ID, creation date, expiry, last use). The endpoint points back to the exact source lines in db.py (hash_client_ip + normalize_endpoint) that enforce the privacy guarantees — so you can audit the code, not just the policy.
We respect the Do Not Track (DNT) and Global Privacy Control (Sec-GPC) headers. If your browser sends either signal, we do not store any hashed IP data with your request. The API still works normally — we simply skip the analytics hash.
DELETE from the database, not anonymization).rotate 1).MaxRetentionSec=1day).expires_at field 30 days after payment; expired keys reject requests but the row remains until manual purge. Card-paid keys are deleted upon cancellation request. To request immediate deletion of your key + order row at any time, contact us.We use two payment processors for Pro subscriptions:
We do not share any usage data, IP addresses, queries, or response contents with either processor.
Our server is located in Germany (EU). If you access the Service from outside the EU, your requests are processed on this EU-based server. We do not transfer data to servers outside the EU. Payment processors operate their own infrastructure in their own jurisdictions.
If you are located in the European Union or European Economic Area:
/v1/privacy/my-data to confirm what is held; rows are hard-deleted automatically after 90 days. Pro tier — contact us at the address below to delete the order record and revoke the key. We process requests within 30 days.If you are located in Turkey, your rights under the Personal Data Protection Law (KVKK, Law No. 6698) are respected. You have the right to learn whether your personal data is processed, request information about processing, learn the purpose and whether data is used accordingly, know third parties to whom data is transferred, request correction or deletion, and object to automated processing. Contact us at the address below to exercise these rights.
All data is transmitted over HTTPS. The origin uses Cloudflare Authenticated Origin Pulls (mTLS) so direct-origin bypass is rejected. We employ industry-standard server hardening, intrusion detection, file integrity monitoring, fail2ban with custom nginx-blocklist actions, and audit logging. The application is open source and available for public audit.
ContrastAPI is fully open source under the MIT License. You can review exactly what data is collected by reading the source code:
Our Service is not directed at children under 16. We do not knowingly collect data from children. If you believe a child has used our Service, contact us and we will delete any associated data.
We may update this Privacy Policy. Changes will be posted on this page with an updated date. Material changes will be communicated via the website.
For privacy questions or to exercise your rights: [email protected]