Datenmodell
Das Datenmodell zeigt, welche Objekte die API liefert und über welche Kennungen sie zusammenhängen.
Ein Beispiel: Die Bergquell Mineralbrunnen GmbH besucht diese Woche dreimal Ihre Website. In der API ist das ein Unternehmen mit drei Sessions, und jede Session enthält ihre Seitenaufrufe. Personen kommen in den Besuchsdaten nicht vor.
Die API liefert nur Besuche, die Webmetic einem Unternehmen zugeordnet hat, und lässt alle anderen Besuche weg.
Besuchsdaten
- 1Ihre WebsiteSie wählen die Website in jeder Anfrage mit dem Parameter
domain. - 2SessionJeder Besuch auf dieser Website ist eine Session mit eigener
session_idund gehört zu genau einem Unternehmen. - 3SeitenaufrufJede Seite, die der Besuch aufgerufen hat, steht als Seitenaufruf im Feld
user_datader Session.
Diese Kennungen verbinden die Objekte:
domain: Ihre Website als Domain ohnehttps://, genau so geschrieben wie in Ihrem Konto. Bei jeder anderen Schreibweise antwortet die API mitAPI_KEY_NOT_AUTHORIZED. Besuche auf Subdomains wieshop.ihre-website.dezählen zuihre-website.de.company_id: die Kennung eines Unternehmens als Zeichenkette, die gleich bleibt. Werten Sie den Aufbau der Kennung nicht aus und speichern Siecompany_urlals zweiten Schlüssel dazu.session_id: die Kennung eines Besuchs mit 26 Zeichen, die gleich bleibt und sich nach der Zeit sortieren lässt.client_id: die pseudonymisierte Kennung des Besuchers, die sich täglich ändert und je Konto verschieden ist. Über mehrere Tage hinweg verbindet sie deshalb keine Besuche.- Seitenaufruf: Weil er keine eigene Kennung hat, erkennen Sie ihn an
session_idundtimestamp.
Alle Zeitstempel stehen in UTC, in API-Antworten ohne Z und in Webhook-Zustellungen mit Z. Mehr dazu unter Zeiträume und Zeitzonen.
Objekte und Verbindungen
| Objekt | Verbunden über | Endpunkt |
|---|---|---|
| Company | company_id | /company, /company-sessions |
| Session | session_id, dazu company_id des Unternehmens | /session |
| Page View | session_id, ohne company_id | /session_user_data |
| NACE-Code | Liste nace_codes im Unternehmen, in /company_nace eine Zeile pro Code mit company_id | /company_nace |
| Besuchsarten | Unternehmen mit den passenden Sessions | /intensive-visits, /returning-visits, /new-visits |
| Contact | company_id in der Anfrage, contact_id in der Antwort | /contacts/search, /contacts/reveal |
| Credits | Ihr Konto, nicht die Website | /contacts/credits |
| Enrichment-Liste | nur die Domain des Unternehmens | /enrichment/lists, /enrichment/company |
| Webhook-Ereignis | data.company.company_id und data.visit.session_id | Webhooks |
Ansprechpartner tragen zwar den Namen ihres Unternehmens, aber keine company_id. Speichern Sie deshalb die company_id, mit der Sie gesucht haben. Die Suche funktioniert nur für Unternehmen, die eine Ihrer Websites besucht haben. Für alle anderen Unternehmen antwortet die API mit COMPANY_NOT_IDENTIFIED.
Ein Webhook-Ereignis enthält das Unternehmen in data.company und den Besuch mit seinen Seitenaufrufen in data.visit. Bei segment.entered stehen in data.segment id und label eines Segments aus dem Dashboard. Segmente selbst liefert die API nicht.
Verschachtelte und flache Antworten
/company-sessions liefert jedes Unternehmen mit seinen Sessions und darin die Seitenaufrufe. Die Seiten der Antwort zählen dabei Unternehmen und nicht Sessions, wie unter Paginierung beschrieben. /company, /session und /session_user_data liefern dieselben Ebenen einzeln als flache Listen.
Kein Endpunkt liefert ein Unternehmen nach seiner company_id oder eine Session nach ihrer session_id. Sie fragen immer eine Website und einen Zeitraum ab und wählen danach aus der Liste.
curl "https://hub.webmetic.de/company-sessions?domain=ihre-website.de&page_size=1" \
-H "Authorization: wmtc_IHR_API_SCHLUESSEL"{
"pagination": [
{
"total": 32,
"page_total": 32,
"isFirst": true,
"current": 1,
"isLast": false,
"page_size": 1
}
],
"result": [
{
"company_id": "41ea486a9c95",
"company_name": "Bergquell Mineralbrunnen GmbH",
"company_url": "www.bergquell.example",
"nace_codes": [
{
"code": "11.07",
"full_code": "C 11.07",
"description_de": "Herstellung von Erfrischungsgetränken und Mineralwässern",
"description_en": "Manufacture of soft drinks and bottled waters"
}
],
"sessions": [
{
"session_id": "01M4WQFX6YM2X5V8T4N6R1C0DZ",
"client_id": "14e382cf709a614559666137b3d1dfcefa99b1e7ecf93400cc9e2cc4822619d3",
"timestamp": "2026-10-14T08:12:05.214000",
"weburl": "https://ihre-website.de",
"session_duration": 309.0,
"user_data": [
{
"timestamp": "2026-10-14T08:12:05.214000",
"document_location": "https://ihre-website.de/preise",
"time_spent": 95.0
}
]
}
]
}
]
}Die Reihenfolge der Einträge ist nicht festgelegt. Die meisten Endpunkte lassen ein Feld weg, wenn sein Wert unbekannt ist. Nur die Besuchsarten und data.visit in Webhooks liefern jedes Feld und setzen unbekannte Werte auf null. Wenn Webmetic eine Zeit nicht messen konnte, steht dort ein geschätzter Wert von wenigen Sekunden, den Page View genauer beschreibt.
Domain in Besuchsdaten und Enrichment
Der Parameter domain hat in der API zwei Bedeutungen:
- Besuchsdaten: Ihre Website, deren Besuche Sie abfragen.
- Enrichment: das Unternehmen, dessen Daten Sie abrufen.
Die Endpunkte für Ansprechpartner nehmen keine Domain an, nur die company_id.
Weil Enrichment-Zeilen keine company_id tragen, verbinden Sie die Zeilen über die Domain mit den Besuchsdaten. In den Besuchsdaten kann in company_url ein www. oder eine andere Subdomain vor der Domain stehen. Kürzen Sie den Wert deshalb vor dem Vergleich auf die Domain, also zum Beispiel www.bergquell.example auf bergquell.example. Enrichment-Liste beschreibt, wie auch die übrigen Felder in Enrichment anders aussehen.
Schlüssel, Plan und Credits
Welche Objekte Sie lesen, hängt vom API-Schlüssel ab, den Sie wie unter Authentifizierung beschrieben mitsenden. Admins finden die Schlüssel unter Menü > Integrationen > API:
- Visitor Intelligence: Unternehmen, Sessions, Seitenaufrufe, Ansprechpartner, Credits und Webhooks.
- Enrichment: Enrichment-Listen, ihre Zeilen und die Einzelabfrage. Neue Listen, neue Domains und Einzelabfragen funktionieren nur in der Testphase und in den Plänen Growth und Enterprise.
Im Free-Plan liefert die API auch Unternehmen, die Sie nicht lesen können. Diese Unternehmen tragen nur ihre company_id, ihre Sessions mit Zeiten, einen Platzhalter als Namen und "blurred": true. Mehr dazu unter Pläne.
Nur /contacts/reveal und /contacts/find kosten Credits. Bevor Sie Ansprechpartner suchen, schließen Sie Ansprechpartner einrichten einmal im Dashboard ab. Sonst antwortet die API mit CONTACTS_SETUP_REQUIRED. Enrichment kostet derzeit keine Credits. Mehr dazu unter Credits in der API.