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_keyAPI-Schlüssel laufen nach 1 Jahr ab. Sie können sie im Dashboard neu generieren.
Endpunkte
/api/v1/traceFühren Sie einen Traceroute zu einem Ziel durch und erhalten Sie alle Hops mit Geolokalisierung, ASN, Latenz, Jitter und Paketverlustdaten.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| key | string | erforderlich | Ihr API-Schlüssel (beginnt mit tm_) |
| dest | string | erforderlich | Ziel-IP-Adresse oder Hostname |
| maxHops | integer | optional | Maximale Anzahl Hops (1–64, Standard: 30) |
| protocol | string | optional | Protokoll: 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
/api/v1/tracesListen Sie Ihre gespeicherten Traces mit Paginierung auf. Unterstützt Filterung nach Ziel.
| Parameter | Typ | Beschreibung |
|---|---|---|
| limit | integer | Ergebnisse pro Seite (1-100, Standard: 20) |
| offset | integer | Anzahl der zu überspringenden Ergebnisse (Standard: 0) |
| dest | string | Nach Ziel-IP oder Hostname filtern |
/api/v1/statusAPI-Status, verfügbare Quellen und Ratenlimit-Informationen abrufen. Keine Authentifizierung erforderlich.
/api/v1/pingEinen Host anpingen und Latenzstatistiken, Paketverlust und einzelne Roundtrip-Zeiten zurückgeben.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| host | string | erforderlich | IP-Adresse oder Hostname zum Anpingen |
| count | integer | optional | Anzahl 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]
}/api/v1/dnsEine DNS-Abfrage für eine Domain durchführen und die aufgelösten Einträge mit Abfragezeit zurückgeben.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| domain | string | erforderlich | Domainname zum Auflösen |
| type | string | optional | Eintragstyp: 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"
}/api/v1/http-checkEine HTTP(S)-URL prüfen und Statuscode, Antwortzeit, Weiterleitungskette, Header und SSL-Zertifikatdetails zurückgeben.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| url | string | erforderlich | Zu 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"]
}
}/api/v1/port-checkPrüfen, ob ein TCP-Port auf einem Host geöffnet ist, und Antwortzeit sowie Dienstname zurückgeben.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| host | string | erforderlich | IP-Adresse oder Hostname zum Prüfen |
| port | integer | erforderlich | Zu prüfende Portnummer (1-65535) |
| ports | string | optional | "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"
}/api/v1/ip-reputationDie Reputation einer IP-Adresse über DNS-Blacklists und AbuseIPDB prüfen, mit Geolokalisierungsdaten.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| ip | string | erforderlich | Zu 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"
}
}/api/v1/whoisRegistrierungsdaten einer öffentlichen IP-Adresse über RDAP: Organisation, Netzbereich, Land, Missbrauchskontakt und Reverse-DNS-Name.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| ip | string | erforderlich | Ö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
}/api/v1/subdomainsListet 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
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| domain | string | erforderlich | Zu 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"
}/api/v1/email-checkSPF, 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
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| domain | string | erforderlich | Zu prüfende Mail-Domain (z. B. beispiel.de) |
| selectors | string | optional | Bis 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"
}/api/v1/outagesVon 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
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| range | string | optional | Abgefragter Zeitraum: 1d, 7d (Standard), 14d oder 28d |
| asn | string | optional | Nur 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"
}/api/v1/bgpBGP-Routing-Informationen für eine IP-Adresse oder ein Präfix abrufen, einschließlich Ursprungs-ASN, AS-Pfade und Upstream-Anbieter.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| target | string | erforderlich | IP-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"])