Zum Inhalt springen

API-Dokumentation

Integrieren Sie TraceMapper mit unserer REST API in Ihre Anwendungen. Verfügbar für Pro-Nutzer.

Authentifizierung

Alle API-Anfragen benötigen einen API-Schlüssel, der im Authorization-Header als Bearer-Token gesendet wird. Schlüssel in der URL werden abgelehnt. Erzeugen Sie Ihren API-Schlüssel im Dashboard.

Authorization-Header (empfohlen)

Authorization: Bearer tm_your_api_key

API-Schlüssel laufen nach 1 Jahr ab. Sie können sie im Dashboard neu generieren.

Endpunkte

GET/api/v1/trace

Führen Sie einen Traceroute zu einem Ziel durch und erhalten Sie alle Hops mit Geolokalisierung, ASN, Latenz, Jitter und Paketverlustdaten.

Parameter

ParameterTypErforderlichBeschreibung
keystringerforderlichIhr API-Schlüssel (beginnt mit tm_)
deststringerforderlichZiel-IP-Adresse oder Hostname
maxHopsintegeroptionalMaximale Anzahl Hops (1–64, Standard: 30)
protocolstringoptionalProtokoll: icmp, udp oder tcp (Standard: icmp)

Beispielantwort

{
  "dest": "8.8.8.8",
  "protocol": "icmp",
  "totalHops": 12,
  "hops": [
    {
      "hopNumber": 1,
      "ip": "192.168.1.1",
      "hostname": "router.local",
      "asn": null,
      "asnOrg": null,
      "city": null,
      "country": null,
      "lat": null,
      "lon": null,
      "latencyAvg": 1.2,
      "latencyMin": 0.8,
      "latencyMax": 1.5,
      "jitter": 0.3,
      "packetLoss": 0.0,
      "isTimeout": false
    }
  ]
}

Fehlercodes

401Fehlender oder ungültiger API-Schlüssel
403Kein Pro-Nutzer oder ungültiger Schlüssel
429Ratenlimit überschritten
GET/api/v1/traces

Listen Sie Ihre gespeicherten Traces mit Paginierung auf. Unterstützt Filterung nach Ziel.

ParameterTypBeschreibung
limitintegerErgebnisse pro Seite (1-100, Standard: 20)
offsetintegerAnzahl der zu überspringenden Ergebnisse (Standard: 0)
deststringNach Ziel-IP oder Hostname filtern
GET/api/v1/status

API-Status, verfügbare Quellen und Ratenlimit-Informationen abrufen. Keine Authentifizierung erforderlich.

GET/api/v1/ping

Einen Host anpingen und Latenzstatistiken, Paketverlust und einzelne Roundtrip-Zeiten zurückgeben.

Parameter

ParameterTypErforderlichBeschreibung
hoststringerforderlichIP-Adresse oder Hostname zum Anpingen
countintegeroptionalAnzahl der Ping-Pakete (1-20, Standard: 4)

Beispielantwort

{
  "host": "8.8.8.8",
  "resolvedIp": "8.8.8.8",
  "count": 4,
  "sent": 4,
  "received": 4,
  "packetLoss": 0,
  "latency": {
    "min": 1.23,
    "avg": 2.45,
    "max": 3.67,
    "jitter": 0.89
  },
  "rtts": [1.23, 2.45, 3.67, 2.45]
}
GET/api/v1/dns

Eine DNS-Abfrage für eine Domain durchführen und die aufgelösten Einträge mit Abfragezeit zurückgeben.

Parameter

ParameterTypErforderlichBeschreibung
domainstringerforderlichDomainname zum Auflösen
typestringoptionalEintragstyp: A, AAAA, MX, NS, CNAME, TXT oder SOA (Standard: A)

Beispielantwort

{
  "domain": "example.com",
  "type": "A",
  "records": [
    { "address": "93.184.216.34", "ttl": 300 }
  ],
  "queryTime": 12.34,
  "server": "system"
}
GET/api/v1/http-check

Eine HTTP(S)-URL prüfen und Statuscode, Antwortzeit, Weiterleitungskette, Header und SSL-Zertifikatdetails zurückgeben.

Parameter

ParameterTypErforderlichBeschreibung
urlstringerforderlichZu prüfende URL (https:// wird hinzugefügt, wenn weggelassen)

Beispielantwort

{
  "url": "https://example.com",
  "statusCode": 200,
  "statusText": "OK",
  "responseTime": 145,
  "redirects": [],
  "headers": {
    "content-type": "text/html; charset=UTF-8",
    "server": "nginx"
  },
  "ssl": {
    "valid": true,
    "issuer": "DigiCert Inc",
    "validFrom": "2024-01-01",
    "validTo": "2025-01-01",
    "daysRemaining": 180,
    "protocol": "TLSv1.3",
    "sans": ["example.com", "www.example.com"]
  }
}
GET/api/v1/port-check

Prüfen, ob ein TCP-Port auf einem Host geöffnet ist, und Antwortzeit sowie Dienstname zurückgeben.

Parameter

ParameterTypErforderlichBeschreibung
hoststringerforderlichIP-Adresse oder Hostname zum Prüfen
portintegererforderlichZu prüfende Portnummer (1-65535)
portsstringoptional"common" verwenden, um häufige Ports zu scannen (21, 22, 25, 53, 80, 443, ...)

Beispielantwort

{
  "host": "example.com",
  "resolvedIp": "93.184.216.34",
  "family": 4,
  "port": 443,
  "state": "open",
  "open": true,
  "responseTime": 23,
  "service": "HTTPS"
}
GET/api/v1/ip-reputation

Die Reputation einer IP-Adresse über DNS-Blacklists und AbuseIPDB prüfen, mit Geolokalisierungsdaten.

Parameter

ParameterTypErforderlichBeschreibung
ipstringerforderlichZu prüfende IPv4- oder IPv6-Adresse

Beispielantwort

{
  "ip": "8.8.8.8",
  "reputation": "clean",
  "score": 0,
  "listsAnswered": 5,
  "listsQueried": 5,
  "abuseipdb": {
    "status": "ok",
    "score": 0,
    "totalReports": 12,
    "lastReported": "2026-06-01T10:00:00Z"
  },
  "blacklists": [
    { "name": "Spamhaus ZEN", "status": "clean", "listed": false },
    { "name": "SpamCop", "status": "clean", "listed": false },
    { "name": "Barracuda", "status": "unavailable", "listed": false, "reason": "no_answer" }
  ],
  "geo": {
    "country": "US",
    "isp": "Google LLC",
    "org": "Google LLC",
    "as": "AS15169 Google LLC"
  }
}
GET/api/v1/whois

Registrierungsdaten einer öffentlichen IP-Adresse über RDAP: Organisation, Netzbereich, Land, Missbrauchskontakt und Reverse-DNS-Name.

Parameter

ParameterTypErforderlichBeschreibung
ipstringerforderlichÖffentliche IPv4- oder IPv6-Adresse zum Nachschlagen

Beispielantwort

{
  "ip": "8.8.8.8",
  "hostname": "dns.google",
  "org": "Google LLC",
  "netName": "GOGL",
  "netRange": "8.8.8.0/24",
  "country": "US",
  "countrySource": "geoip",
  "abuse": null,
  "registry": "whois.arin.net",
  "asn": "AS15169 Google LLC",
  "reserved": false
}
GET/api/v1/subdomains

Listet die Namen auf, die eine Domain zertifiziert hat, gelesen aus den öffentlichen Certificate-Transparency-Logs. Die Antwort nennt die Quelle und ob die Sicht unvollständig ist.

Parameter

ParameterTypErforderlichBeschreibung
domainstringerforderlichZu durchsuchender registrierbarer Domainname (z. B. beispiel.de)

Beispielantwort

{
  "domain": "tracemapper.com",
  "source": "crtsh",
  "sources": [{ "id": "crtsh", "status": "ok" }],
  "partial": false,
  "subdomains": [
    {
      "name": "tracemapper.com",
      "firstSeen": "2026-08-07T00:00:00.000Z",
      "lastSeen": "2026-11-05T01:22:00.000Z",
      "certificates": 1,
      "wildcard": false
    }
  ],
  "certificates": [],
  "totals": { "subdomains": 3, "wildcards": 1, "certificates": 13 },
  "stale": false,
  "fetchedAt": "2026-09-11T07:20:00.000Z"
}
GET/api/v1/email-check

SPF, DKIM, DMARC und MX einer Domain, interpretiert. Das Feld spf.lookups zählt DNS-abfragende Terme rekursiv über jeden Include, das Limit, das Einträge still überschreiten.

Parameter

ParameterTypErforderlichBeschreibung
domainstringerforderlichZu prüfende Mail-Domain (z. B. beispiel.de)
selectorsstringoptionalBis zu fünf DKIM-Selektoren, kommagetrennt. Ohne Angabe werden die gängigen probiert.

Beispielantwort

{
  "domain": "example.com",
  "verdict": "warning",
  "spf": {
    "status": "warning",
    "record": "v=spf1 include:_spf.example.net ~all",
    "lookups": 9,
    "lookupLimit": 10,
    "truncated": false,
    "allQualifier": "~",
    "includes": [{ "domain": "_spf.example.net", "depth": 0, "cost": 9 }],
    "findings": [
      { "code": "spf_lookups_near_limit", "severity": "warning",
        "params": { "count": 9, "limit": 10 } }
    ]
  },
  "dmarc": { "status": "warning", "policy": "none", "rua": ["mailto:d@example.com"], "findings": [] },
  "dkim": { "status": "unknown", "found": [], "selectorsTried": ["default", "google"] },
  "mx": { "status": "ok", "hosts": [{ "host": "mx.example.com", "priority": 10, "resolves": true }] },
  "checkedAt": "2026-09-11T09:30:00.000Z"
}
GET/api/v1/outages

Von Cloudflare Radar beobachtete Internetausfälle und Störungen: betroffene Länder und autonome Systeme, angegebene Ursache, Beginn und Ende. Nach ASN filtern, um zu erfahren, ob ein Netz auf Ihrem Pfad ein Problem meldet. Liefert 503 mit dem Status unconfigured oder unavailable, wenn der Feed selbst nicht antworten konnte, was nie dasselbe ist wie eine leere Liste.

Parameter

ParameterTypErforderlichBeschreibung
rangestringoptionalAbgefragter Zeitraum: 1d, 7d (Standard), 14d oder 28d
asnstringoptionalNur Ausfälle behalten, die dieses autonome System betreffen, z. B. 3215 oder AS3215

Beispielantwort

{
  "status": "ok",
  "events": [
    {
      "id": "1234",
      "locations": [{ "code": "IQ", "name": "Iraq" }],
      "networks": [{ "asn": 203214, "name": "HulumTele" }],
      "cause": "GOVERNMENT_DIRECTED",
      "outageType": "NATIONWIDE",
      "scope": null,
      "description": "Exam Shutdown",
      "startDate": "2026-09-10T03:30:00.000Z",
      "endDate": "2026-09-10T03:45:00.000Z",
      "ongoing": false,
      "linkedUrl": null
    }
  ],
  "totals": { "ongoing": 0, "ended": 5 },
  "dateRange": "7d",
  "stale": false,
  "fetchedAt": "2026-09-11T07:20:00.000Z"
}
GET/api/v1/bgp

BGP-Routing-Informationen für eine IP-Adresse oder ein Präfix abrufen, einschließlich Ursprungs-ASN, AS-Pfade und Upstream-Anbieter.

Parameter

ParameterTypErforderlichBeschreibung
targetstringerforderlichIP-Adresse oder Präfix (z. B. 8.8.8.0/24)

Beispielantwort

{
  "prefix": "8.8.8.0/24",
  "origin": { "asn": 15169, "holder": "Google LLC" },
  "paths": [
    {
      "collector": "rrc00",
      "asPath": [13335, 15169],
      "communities": ["13335:10000"]
    }
  ],
  "pathCount": 245,
  "collectorCount": 24,
  "upstreamAsns": [
    { "asn": 13335, "holder": "Cloudflare Inc", "count": 45 }
  ]
}

Ratenlimits

API-Anfragen sind im Pro-Tarif auf 60 pro Minute und API-Schlüssel begrenzt, im Business-Tarif auf 300 pro Minute. Bei Überschreitung erhalten Sie den Statuscode 429 mit einem Retry-After-Header.

Codebeispiele

cURL

# Mit Authorization-Header
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/trace?dest=8.8.8.8"

# Gespeicherte Traces auflisten
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/traces?limit=10"

# Ping
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/ping?host=8.8.8.8&count=4"

# DNS
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/dns?domain=_dmarc.example.com&type=TXT&resolver=authoritative"

# HTTP Check
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/http-check?url=https://example.com"

# Port Check
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/port-check?host=example.com&port=443"

# IP Reputation
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/ip-reputation?ip=8.8.8.8"

# BGP: an address, a prefix, or an AS number
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/bgp?target=AS15169"

# WHOIS / RDAP
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/whois?ip=8.8.8.8"

# Subdomains aus den Certificate-Transparency-Logs
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/subdomains?domain=example.com"

# Ausfaelle, die fuer ein autonomes System gemeldet sind
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/outages?range=7d&asn=AS3215"

# SPF, DKIM, DMARC und MX einer Domain
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/email-check?domain=example.com&selectors=resend"

JavaScript / Node.js

const API_KEY = "tm_your_api_key";
const headers = { Authorization: `Bearer ${API_KEY}` };

// Traceroute
const trace = await fetch(
  "https://tracemapper.com/api/v1/trace?dest=8.8.8.8",
  { headers }
).then(r => r.json());
console.log(trace.hops);

// Ping
const ping = await fetch(
  "https://tracemapper.com/api/v1/ping?host=8.8.8.8",
  { headers }
).then(r => r.json());
console.log(ping.latency);

// DNS
const dns = await fetch(
  "https://tracemapper.com/api/v1/dns?domain=example.com&type=A",
  { headers }
).then(r => r.json());
console.log(dns.records);

Python

import requests

headers = {"Authorization": "Bearer tm_your_api_key"}

# Traceroute
r = requests.get(
    "https://tracemapper.com/api/v1/trace",
    params={"dest": "8.8.8.8"},
    headers=headers,
)
print(r.json()["hops"])

# Ping
r = requests.get(
    "https://tracemapper.com/api/v1/ping",
    params={"host": "8.8.8.8", "count": 4},
    headers=headers,
)
print(r.json()["latency"])

# DNS
r = requests.get(
    "https://tracemapper.com/api/v1/dns",
    params={"domain": "example.com", "type": "MX"},
    headers=headers,
)
print(r.json()["records"])