# Company (https://webmetic.de/docs/api/datenmodell/company)

Ein Company-Objekt beschreibt ein Unternehmen, das Ihre Website im angefragten Zeitraum mindestens einmal besucht hat. Ein Beispiel: Die Bergquell Mineralbrunnen GmbH liest mehrmals Ihre Preisseite, und `GET /company` liefert ihre Anschrift, ihre Größe, ihre NACE-Codes und ihre Aktivität.

Das Objekt enthält Daten über das Unternehmen, keine Besuche und keine Personen. Besuche stehen im Objekt [Session](https://webmetic.de/docs/api/datenmodell/session), Ansprechpartner im Objekt [Contact](https://webmetic.de/docs/api/datenmodell/contact). Das [Datenmodell](https://webmetic.de/docs/api/datenmodell) zeigt, wie die Objekte zusammenhängen.

## Regeln [#regeln]

- **Ein Eintrag pro Unternehmen**: `GET /company` liefert jedes Unternehmen, das im Zeitraum von `from_date` bis `to_date` mindestens einen Besuch auf der angefragten Website hatte. Die Reihenfolge der Einträge ist nicht festgelegt.
- **Fehlende Werte**: Wenn Webmetic einen Wert nicht kennt, fehlt das Feld. Es steht dann nicht als `null` im Objekt. Die Ausnahme ist `fit_score`, das ohne Zielkundenprofil `null` ist. Die Feeds liefern unbekannte Werte dagegen als `null`, wie unter [Fehlende Felder und null](#fehlende-felder-und-null) beschrieben.
- **Kennung**: `company_id` bleibt für ein Unternehmen gleich. Speichern Sie zusätzlich `company_url` als zweiten Schlüssel, wenn Sie Unternehmen dauerhaft in Ihrem CRM führen.
- **Scores ohne Zeitraum**: Der angefragte Zeitraum ändert die Scores nicht. Die Aktivität zählt alle Besuche des Unternehmens auf dieser Website.
- **Aktualität**: Bei späteren Besuchen frischt Webmetic Name, Anschrift und Branchencodes auf. Webmetic berechnet die Scores bei jedem Besuch und zusätzlich regelmäßig neu.
- **Mehrere Websites**: `GET /company` nimmt `domain` mehrmals an, zum Beispiel `?domain=a.de&domain=b.de`. Jedes Unternehmen erscheint dann nur einmal, mit den Scores der ersten angegebenen Website, die es besucht hat.
- **Ausschlüsse**: Für Unternehmen, deren Domain auf der [Domain-Blacklist](https://webmetic.de/docs/konto/domain-blacklist) steht, und für Organisationstypen, die Sie unter [**Menü** > **Organisationstypen**](https://app.webmetic.de/?menu=session_organization_type) ausschalten, nimmt Webmetic keine neuen Besuche auf. Frühere Besuche bleiben in der API. Ihr eigenes Unternehmen fehlt in den Daten Ihrer eigenen Website.
- **Kosten**: Das Abrufen kostet keine Credits und funktioniert in jedem Plan, auch im Free-Plan.

## Felder [#felder]

Die Tabelle nennt die Felder des Objekts.

| Feld | Typ | Beispiel | Beschreibung |
| --- | --- | --- | --- |
| `company_id` | `string` | `"41ea486a9c95"` | Kennung des Unternehmens. Verbindet Company mit Session und Contact. Immer vorhanden. |
| `company_name` | `string` | `"Bergquell Mineralbrunnen GmbH"` | Name des Unternehmens. Immer vorhanden. Ohne bekannten Namen steht dort die Domain. |
| `company_url` | `string` | `"www.bergquell.example"` | Website des Unternehmens als Host ohne `https://` und ohne Pfad. Ein `www.` bleibt stehen. Immer vorhanden. |
| `company_logo_url` | `string` | `"https://logos.docs.example/bergquell.png"` | Adresse des Logos, das Webmetic speichert, als WebP, JPG, PNG oder ICO. |
| `primary_color`, `secondary_color` | `string` | `"#1f6feb"` | Haupt- und Zweitfarbe der Marke als Hex-Wert. Fehlen, wenn Webmetic kein Logo kennt. |
| `organization_type` | `string` | `"business"` | Art der Organisation: `business` (Unternehmen), `academic` (Bildungseinrichtung) oder `government` (öffentlicher Sektor). Eine Kategorie, keine Rechtsform. |
| `address` | `string` | `"Brunnenweg 4"` | Straße und Hausnummer. |
| `postal_code` | `string` | `"85354"` | Postleitzahl. |
| `city` | `string` | `"Freising"` | Ort. |
| `country` | `string` | `"Deutschland"` | Land als deutscher Name. Wenn Webmetic das Land nicht erkennt, steht hier der Wert so, wie das Unternehmen ihn angibt, und `country_code` fehlt. |
| `country_code` | `string` | `"DE"` | Ländercode nach ISO 3166-1 Alpha-2 in Großbuchstaben. |
| `directors` | `array` | `["Florian Obermaier"]` | Namen der Geschäftsführung, je Name ein String. |
| `phone_number`, `fax_number` | `string` | `"+49 89 99998214"` | Telefon- und Faxnummer, wie sie auf der Website des Unternehmens stehen. Webmetic vereinheitlicht das Format nicht. |
| `email_address` | `string` | `"info@bergquell.example"` | Allgemeine E-Mail-Adresse des Unternehmens von seiner Website. |
| `vat_id` | `string` | `"DE000000000"` | Umsatzsteuer-ID, wie das Unternehmen sie angibt. |
| `tax_number` | `string` | `"115/000/00000"` | Steuernummer, wie das Unternehmen sie angibt. |
| `registration_number` | `string` | `"HRB 000000"` | Nummer des Registereintrags. |
| `registration_court` | `string` | `"Amtsgericht München"` | Registergericht. |
| `employee_count` | `array` | `[201, 500]` | Spanne der Mitarbeitenden: zwei Zahlen `[min, max]`, `max` ist `null`, wenn es keine Obergrenze gibt. Siehe [Spannen](#spannen). |
| `revenue` | `array` | `[50000000, 100000000]` | Spanne des Jahresumsatzes in Euro: zwei Zahlen `[min, max]`, `max` ist `null`, wenn es keine Obergrenze gibt. Siehe [Spannen](#spannen). |
| `lead_score` | `number` | `88.0` | Aktivität von 0 bis 100, siehe [Scores](#scores). Immer vorhanden. |
| `fit_score` | `integer` oder `null` | `92` | Passung zum Zielkundenprofil von 0 bis 100, `null` ohne Zielkundenprofil. |
| `relevance_score` | `number` | `80.96` | Relevanz von 0 bis 100. Immer vorhanden. |
| `linkedin`, `facebook`, `instagram`, `youtube`, `twitter` | `string` | `"https://www.linkedin.com/company/bergquell-mineralbrunnen-example"` | Vollständige Adresse des Profils, die Webmetic auf der Website des Unternehmens findet. Je Netzwerk eine. |
| `short_description_de`, `short_description_en` | `string` | `"Mineralbrunnen mit eigener Abfüllung."` | Kurze Beschreibung des Unternehmens auf Deutsch und Englisch. |
| `full_description_de`, `full_description_en` | `string` | `"Die Bergquell Mineralbrunnen GmbH füllt Mineralwasser ab."` | Ausführliche Beschreibung auf Deutsch und Englisch. |
| `what_they_do_de`, `what_they_do_en` | `string` | `"Abfüllung von Mineralwasser"` | Was das Unternehmen tut. |
| `how_they_make_money_de`, `how_they_make_money_en` | `string` | `"Verkauf an Handel und Gastronomie"` | Womit das Unternehmen sein Geld verdient. |
| `target_audience_de`, `target_audience_en` | `string` | `"Getränkehandel und Gastronomie"` | Für wen das Unternehmen arbeitet. |
| `nace_codes` | `array` | siehe [NACE-Codes](#nace-codes) | Eine bis drei NACE-Klassen als Objekte, die erste ist die Haupttätigkeit. |
| `wz2025_codes` | `array` | siehe [NACE-Codes](#nace-codes) | Unterklassen der deutschen WZ 2025 zu diesen NACE-Klassen, als Objekte. |
| `industry_categories` | `array` | `["industrie_fertigung"]` | Kennungen der Branchenkategorien als Strings, die das Dashboard als **Branche** zeigt, die Hauptbranche zuerst. Nur in `/company-sessions`. |
| `blurred` | `boolean` | `true` | Nur bei Unternehmen, die im Free-Plan verborgen sind, siehe [Sonderfälle](#sonderfälle). |

Webmetic schreibt die Texte in `short_description_*`, `full_description_*`, `what_they_do_*`, `how_they_make_money_*` und `target_audience_*` anhand der Website des Unternehmens.

Neue Felder können jederzeit hinzukommen. Ihr Code sollte deshalb unbekannte Felder ignorieren.

### Spannen [#spannen]

`employee_count` und `revenue` sind Spannen aus zwei Zahlen `[min, max]`, keine genauen Zahlen. Wenn Webmetic die Größe nicht kennt, fehlt das Feld.

- **Mitarbeitende**: `[1, 10]`, `[11, 50]`, `[51, 200]`, `[201, 500]`, `[501, 1000]`, `[1001, 5000]`, `[5001, 10000]` und `[10001, null]` ohne Obergrenze.
- **Umsatz**: Spannen in Euro von `[0, 100000]` bis `[100000000, 500000000]` und `[500000000, null]` ohne Obergrenze.

## Scores [#scores]

Die drei Scores gehen von 0 bis 100. Das Dashboard zeigt sie unter anderen Namen:

| Feld | Im Dashboard | Bedeutung |
| --- | --- | --- |
| `lead_score` | **Aktivität**, im Export **Lead Score** | Wie stark sich das Unternehmen auf Ihrer Website umsieht. Auf zwei Nachkommastellen gerundet. |
| `fit_score` | **Zielkunde**, im Export **Fit** | Wie gut das Unternehmen zum Zielkundenprofil der Website passt. Ganze Zahl. |
| `relevance_score` | **Relevanz** | Zielkunde mal Aktivität. Auf zwei Nachkommastellen gerundet. |

Wenn der letzte Besuch länger zurückliegt, sinkt die Aktivität auch ohne neuen Besuch.

`fit_score` ist `null`, solange die Website kein [Zielkundenprofil](https://webmetic.de/docs/visitor-intelligence/zielkundenprofil) hat. Dann ist `relevance_score` gleich `lead_score`.

Im Beispiel unten ergeben `fit_score` 92 und `lead_score` 88 eine Relevanz von 80,96. Wie Webmetic die Werte berechnet, steht unter [Relevanz, Aktivität und Zielkunde](https://webmetic.de/docs/visitor-intelligence/relevanz-aktivitaet-und-fit).

## NACE-Codes [#nace-codes]

`nace_codes` enthält eine bis drei Klassen der europäischen Wirtschaftszweige nach NACE Rev. 2.1 (Ausgabe 2025). Webmetic ordnet die Codes anhand der Website des Unternehmens zu.

Die erste Klasse ist die Haupttätigkeit. Die API hat dafür kein eigenes Feld, denn die Reihenfolge trägt diese Information. Wenn ein Unternehmen keinen Code hat, fehlt `nace_codes`.

Jeder Eintrag hat zehn Felder:

| Feld | Typ | Beispiel | Beschreibung |
| --- | --- | --- | --- |
| `code` | `string` | `"11.07"` | Code der Klasse im Format `NN.NN`. |
| `full_code` | `string` | `"C 11.07"` | Buchstabe des Abschnitts, Leerzeichen, Code. |
| `section_code` | `string` | `"C"` | Buchstabe des Abschnitts. |
| `section_description_de` | `string` | `"Verarbeitendes Gewerbe/Herstellung von Waren"` | Name des Abschnitts auf Deutsch. |
| `section_description_en` | `string` | `"Manufacturing"` | Name des Abschnitts auf Englisch. |
| `division_code` | `string` | `"C11"` | Buchstabe des Abschnitts und zweistellige Abteilung. |
| `division_description_de` | `string` | `"Getränkeherstellung"` | Name der Abteilung auf Deutsch. |
| `division_description_en` | `string` | `"Manufacture of beverages"` | Name der Abteilung auf Englisch. |
| `description_de` | `string` | `"Herstellung von Erfrischungsgetränken und Mineralwässern"` | Name der Klasse auf Deutsch. |
| `description_en` | `string` | `"Manufacture of soft drinks and bottled waters"` | Name der Klasse auf Englisch. |

`wz2025_codes` hat denselben Aufbau für die deutsche Klassifikation WZ 2025, mit Codes wie `"11.07.0"`. Webmetic nimmt alle WZ-Unterklassen der gewählten NACE-Klassen auf, sodass ein Unternehmen viele davon haben kann.

Die Reihenfolge der WZ-Einträge zeigt keine Haupttätigkeit. In WZ-Einträgen steht `section_description_de` in Großbuchstaben, zum Beispiel `"VERARBEITENDES GEWERBE"`.

[`GET /company_nace`](https://webmetic.de/docs/api/referenz/visitor-intelligence/company-nace) liefert die NACE-Codes als flache Tabelle: eine Zeile je Code mit `company_id` und den zehn Feldern. Weil die Zeilen keinen `company_name` haben, holen Sie den Namen über `company_id` aus `/company`.

Unternehmen ohne NACE-Code haben keine Zeile. Der Endpunkt nimmt eine einzige `domain` an, und [Paginierung](https://webmetic.de/docs/api/paginierung) zählt dort NACE-Zeilen, keine Unternehmen.

## Felder je Endpunkt [#felder-je-endpunkt]

| Endpunkt | Was vom Objekt kommt | Unbekannte Werte |
| --- | --- | --- |
| [`/company`](https://webmetic.de/docs/api/referenz/visitor-intelligence/company) | Alle Felder außer `industry_categories`, keine Besuche | Feld fehlt |
| [`/company-sessions`](https://webmetic.de/docs/api/referenz/visitor-intelligence/company-sessions) | Alle Felder mit `industry_categories`, dazu `sessions[]` | Feld fehlt |
| [`/intensive-visits`](https://webmetic.de/docs/api/referenz/visitor-intelligence/intensive-visits), [`/returning-visits`](https://webmetic.de/docs/api/referenz/visitor-intelligence/returning-visits), [`/new-visits`](https://webmetic.de/docs/api/referenz/visitor-intelligence/new-visits) | Feste Auswahl ohne `organization_type`, `primary_color`, `secondary_color`, `wz2025_codes`, `what_they_do_*`, `how_they_make_money_*` und `target_audience_*`, dazu `sessions[]` | `null`, bei `directors` und `nace_codes` `[]` |
| Webhooks, Feld `data.company` | Felder wie bei `/company` | Feld fehlt, nach einer Kürzung `null` |
| [`/company_nace`](https://webmetic.de/docs/api/referenz/visitor-intelligence/company-nace) | `company_id` und die NACE-Felder, eine Zeile je Code | Keine Zeile |
| [`/session`](https://webmetic.de/docs/api/referenz/visitor-intelligence/session) | `company_id` und `company_name` je Session | |

`/company-sessions` liefert das Company-Objekt mit eingebetteten Besuchen: `sessions[]` enthält die Sessions Ihres Kontos im Zeitraum, beschrieben unter [Session](https://webmetic.de/docs/api/datenmodell/session). Jede Session enthält ihre Seitenaufrufe in `user_data[]`, beschrieben unter [Page View](https://webmetic.de/docs/api/datenmodell/page-view).

Die drei Feeds `/intensive-visits`, `/returning-visits` und `/new-visits` setzen zusätzlich Felder der frühesten Session sowie `sessions_total` und `pages_total` an die oberste Ebene. [Besuchsarten](https://webmetic.de/docs/api/datenmodell/besuchsarten) beschreibt, welche Unternehmen die Feeds liefern.

## Beispiel [#beispiel]

Das Beispiel zeigt einen Eintrag aus `result` von `GET /company` mit gekürzten Texten:

```json title="GET /company"
{
  "company_id": "41ea486a9c95",
  "company_name": "Bergquell Mineralbrunnen GmbH",
  "company_url": "www.bergquell.example",
  "company_logo_url": "https://logos.docs.example/bergquell.png",
  "organization_type": "business",
  "address": "Brunnenweg 4",
  "postal_code": "85354",
  "city": "Freising",
  "country": "Deutschland",
  "country_code": "DE",
  "directors": ["Florian Obermaier"],
  "phone_number": "+49 89 99998214",
  "email_address": "info@bergquell.example",
  "employee_count": [201, 500],
  "revenue": [50000000, 100000000],
  "vat_id": "DE000000000",
  "registration_number": "HRB 000000",
  "registration_court": "Amtsgericht München",
  "primary_color": "#1f6feb",
  "lead_score": 88.0,
  "fit_score": 92,
  "relevance_score": 80.96,
  "linkedin": "https://www.linkedin.com/company/bergquell-mineralbrunnen-example",
  "short_description_de": "Mineralbrunnen mit eigener Abfüllung für Mineralwasser und Erfrischungsgetränke.",
  "short_description_en": "Mineral spring with its own bottling of mineral water and soft drinks.",
  "nace_codes": [
    {
      "code": "11.07",
      "full_code": "C 11.07",
      "section_code": "C",
      "section_description_de": "Verarbeitendes Gewerbe/Herstellung von Waren",
      "section_description_en": "Manufacturing",
      "division_code": "C11",
      "division_description_de": "Getränkeherstellung",
      "division_description_en": "Manufacture of beverages",
      "description_de": "Herstellung von Erfrischungsgetränken und Mineralwässern",
      "description_en": "Manufacture of soft drinks and bottled waters"
    }
  ]
}
```

Im Beispiel fehlen `fax_number`, `tax_number` und `secondary_color`, weil Webmetic diese Werte für Bergquell nicht kennt. Das Beispiel lässt außerdem die langen Texte und `wz2025_codes` weg.

## Sonderfälle [#sonderfälle]

### Fehlende Felder und null [#fehlende-felder-und-null]

Die drei Feeds liefern jedes ihrer Felder, unbekannte Werte als `null` und leere Listen als `[]`.

In Webhooks kann ein Feld auch `null` sein, wenn Webmetic die Zustellung gekürzt hat. Dann ist `data.truncated` `true`, wie unter [Webhooks](https://webmetic.de/docs/api/webhooks) beschrieben. Prüfen Sie in Ihrem Code also immer beide Fälle: Feld fehlt und Feld ist `null`.

### Verborgene Unternehmen im Free-Plan [#verborgene-unternehmen-im-free-plan]

Im Free-Plan sehen Sie nur einen Teil der Unternehmen. Die API liefert die übrigen als verborgene Einträge mit `company_id`, einem Platzhalter wie „Verborgenes Unternehmen“ in `company_name` und `"blurred": true`.

- **`/company`**: Alle anderen Felder fehlen.
- **`/company-sessions`**: Die Sessions eines verborgenen Unternehmens enthalten nur `session_id` und `timestamp`.
- **Feeds**: Jedes Feld außer `company_id`, `company_name` und `blurred` ist `null`. `sessions` bleibt eine Liste, und jede Session behält alle Felder. Nur `session_id` und `timestamp` haben einen Wert, die übrigen Felder sind `null` und `user_data` ist leer.
- **`/company_nace` und Webhooks**: Verborgene Unternehmen fehlen ganz.
- **Ansprechpartner**: `/contacts/search`, `/contacts/lookup` und `/contacts/find` antworten für verborgene Unternehmen mit 403 und `PLAN_REQUIRED`.

Sichtbare Unternehmen haben kein Feld `blurred`. Filtern Sie verborgene Einträge über `blurred` heraus, bevor Sie Daten weiterverarbeiten. Welche Unternehmen Sie sehen, steht unter [Pläne](https://webmetic.de/docs/konto/plaene).

### Domain gehört nicht zu Ihrem Konto [#domain-gehört-nicht-zu-ihrem-konto]

Wenn die angefragte `domain` nicht zu Ihrem Konto gehört, antwortet die API mit 403 und `API_KEY_NOT_AUTHORIZED`. Das gilt auch für eine Variante mit `www.`. Geben Sie die Domain genau so an, wie sie im Dashboard steht. Mehr dazu unter [Fehler](https://webmetic.de/docs/api/fehler).

### Kein Abruf einzelner Unternehmen [#kein-abruf-einzelner-unternehmen]

Die API hat keinen Endpunkt, der ein einzelnes Unternehmen per `company_id` liefert. Die API filtert auch nicht nach Branche, Größe oder Score. Rufen Sie den Zeitraum ab und filtern Sie in Ihrem System.

## Verwendet von [#verwendet-von]

- **Endpunkte**: [`GET /company`](https://webmetic.de/docs/api/referenz/visitor-intelligence/company) liefert ein Company-Objekt je Unternehmen, [`GET /company-sessions`](https://webmetic.de/docs/api/referenz/visitor-intelligence/company-sessions) das Objekt mit Sessions und Seitenaufrufen und [`GET /company_nace`](https://webmetic.de/docs/api/referenz/visitor-intelligence/company-nace) die NACE-Codes als eine Zeile je Code.
- **Feeds**: [`GET /intensive-visits`](https://webmetic.de/docs/api/referenz/visitor-intelligence/intensive-visits), [`GET /returning-visits`](https://webmetic.de/docs/api/referenz/visitor-intelligence/returning-visits) und [`GET /new-visits`](https://webmetic.de/docs/api/referenz/visitor-intelligence/new-visits) liefern eine feste Auswahl der Felder mit Sessions.
- **Sessions**: [`GET /session`](https://webmetic.de/docs/api/referenz/visitor-intelligence/session) nennt `company_id` und `company_name` je Session.
- **Ansprechpartner**: [`POST /contacts/search`](https://webmetic.de/docs/api/referenz/contacts/search), [`POST /contacts/find`](https://webmetic.de/docs/api/referenz/contacts/find) und [`GET /contacts/lookup`](https://webmetic.de/docs/api/referenz/contacts/lookup) nehmen `company_id` an. Für ein Unternehmen ohne Besuch auf Ihren Websites antworten sie mit 403 und `COMPANY_NOT_IDENTIFIED`, wie unter [Contact](https://webmetic.de/docs/api/datenmodell/contact) beschrieben.
- **Webhooks**: `company.identified`, `company.returned`, `company.intensive_visit` und `segment.entered` tragen das Unternehmen in `data.company`, wie das [Beispiel-Ereignis](https://webmetic.de/docs/api/referenz/webhooks/sample) zeigt. Mehr dazu unter [Webhooks](https://webmetic.de/docs/api/webhooks).
- **KI-Assistent**: Auch der [KI-Assistent](https://webmetic.de/docs/ki-assistent/tools-und-prompts) ruft Unternehmen ab, mit den Tools `list_visiting_companies` und `get_company_profile`.
