Company
The Company object describes a company that visited your website, with its firmographics, industry codes, and scores.
A Company object describes a company that visited your website at least once in the requested period. For example, Bergquell Mineralbrunnen GmbH reads your pricing page several times, and GET /company returns its address, its size, its NACE codes, and its activity.
The object holds data about the company, not visits and not people. Visits are in the Session object, contacts in the Contact object. The data model shows how the objects fit together.
Rules
- One entry per company:
GET /companyreturns every company that had at least one visit on the requested website betweenfrom_dateandto_date. The order of the entries is not fixed. - Missing values: When Webmetic doesn't know a value, the field is missing. It isn't sent as
null. The exception isfit_score, which isnullwithout an ideal customer profile. The feeds, by contrast, return unknown values asnull, as described under Missing fields and null. - ID:
company_idstays the same for a company. If you keep companies in your CRM for the long term, storecompany_urlas a second key. - Scores ignore the period: The requested period doesn't change the scores. Activity counts all of the company's visits on this website.
- Freshness: Webmetic refreshes name, address, and industry codes on later visits. It recalculates the scores on every visit and also at regular intervals.
- Several websites:
GET /companyacceptsdomainmore than once, for example?domain=a.de&domain=b.de. Each company then appears only once, with the scores of the first listed website it visited. - Exclusions: Webmetic records no new visits for companies whose domain is on the domain blacklist and for organization types you switch off under Menu > Organization types. Earlier visits stay in the API. Your own company is missing from the data of your own website.
- Cost: Reading company data costs no credits and works on every plan, including Free.
Fields
The table lists the fields of the object.
| Field | Type | Example | Description |
|---|---|---|---|
company_id | string | "41ea486a9c95" | The company's ID. Links Company to Session and Contact. Always present. |
company_name | string | "Bergquell Mineralbrunnen GmbH" | The company's name. Always present. Without a known name, it holds the domain. |
company_url | string | "www.bergquell.example" | The company's website as a host, without https:// and without a path. A www. stays. Always present. |
company_logo_url | string | "https://logos.docs.example/bergquell.png" | Address of the logo Webmetic stores, as WebP, JPG, PNG, or ICO. |
primary_color, secondary_color | string | "#1f6feb" | Main and second brand color as a hex value. Missing when Webmetic knows no logo. |
organization_type | string | "business" | Kind of organization: business (company), academic (educational institution), or government (public sector). A category, not a legal form. |
address | string | "Brunnenweg 4" | Street and house number. |
postal_code | string | "85354" | Postal code. |
city | string | "Freising" | City. |
country | string | "Deutschland" | Country as its German name. When Webmetic doesn't recognize the country, this holds the value as the company states it, and country_code is missing. |
country_code | string | "DE" | Country code under ISO 3166-1 alpha-2, in capitals. |
directors | array | ["Florian Obermaier"] | Names of the managing directors, one string per name. |
phone_number, fax_number | string | "+49 89 99998214" | Phone and fax number as they appear on the company's website. Webmetic doesn't normalize the format. |
email_address | string | "info@bergquell.example" | The company's general email address from its website. |
vat_id | string | "DE000000000" | VAT ID as the company states it. |
tax_number | string | "115/000/00000" | Tax number as the company states it. |
registration_number | string | "HRB 000000" | Number of the register entry. |
registration_court | string | "Amtsgericht München" | Register court. |
employee_count | array | [201, 500] | Employee range: two numbers [min, max], max is null when there's no upper limit. See Ranges. |
revenue | array | [50000000, 100000000] | Annual revenue range in euros: two numbers [min, max], max is null when there's no upper limit. See Ranges. |
lead_score | number | 88.0 | Activity from 0 to 100, see Scores. Always present. |
fit_score | integer or null | 92 | Match with the ideal customer profile from 0 to 100, null without an ideal customer profile. |
relevance_score | number | 80.96 | Relevance from 0 to 100. Always present. |
linkedin, facebook, instagram, youtube, twitter | string | "https://www.linkedin.com/company/bergquell-mineralbrunnen-example" | Full profile address that Webmetic finds on the company's website. One per network. |
short_description_de, short_description_en | string | "Mineral spring with its own bottling." | Short description of the company in German and English. |
full_description_de, full_description_en | string | "Bergquell Mineralbrunnen GmbH bottles mineral water." | Detailed description in German and English. |
what_they_do_de, what_they_do_en | string | "Bottling of mineral water" | What the company does. |
how_they_make_money_de, how_they_make_money_en | string | "Sales to retail and restaurants" | How the company earns its money. |
target_audience_de, target_audience_en | string | "Beverage retailers and restaurants" | Who the company works for. |
nace_codes | array | see NACE codes | One to three NACE classes as objects, the first is the main activity. |
wz2025_codes | array | see NACE codes | Subclasses of the German WZ 2025 for these NACE classes, as objects. |
industry_categories | array | ["industrie_fertigung"] | IDs of the industry categories, as strings, that the dashboard shows as Industry, main industry first. Only in /company-sessions. |
blurred | boolean | true | Only on companies hidden on the Free plan, see Edge cases. |
Webmetic writes the texts in short_description_*, full_description_*, what_they_do_*, how_they_make_money_*, and target_audience_* from the company's website.
New fields can appear at any time. Your code should therefore ignore unknown fields.
Ranges
employee_count and revenue are ranges of two numbers [min, max], not exact numbers. When Webmetic doesn't know the size, the field is missing.
- Employees:
[1, 10],[11, 50],[51, 200],[201, 500],[501, 1000],[1001, 5000],[5001, 10000], and[10001, null]with no upper limit. - Revenue: ranges in euros from
[0, 100000]to[100000000, 500000000], and[500000000, null]with no upper limit.
Scores
The three scores run from 0 to 100. The dashboard shows them under other names:
| Field | In the dashboard | Meaning |
|---|---|---|
lead_score | Activity, in exports Lead Score | How actively the company looks around your website. Rounded to two decimals. |
fit_score | Fit, also in exports | How well the company matches the website's ideal customer profile. Whole number. |
relevance_score | Relevance | Fit times activity. Rounded to two decimals. |
When the last visit lies further back, activity falls even without a new visit.
fit_score is null as long as the website has no ideal customer profile. Then relevance_score equals lead_score.
In the example below, a fit_score of 92 and a lead_score of 88 give a relevance of 80.96. For how Webmetic calculates the values, see Relevance, activity, and fit.
NACE codes
nace_codes holds one to three classes of the European industry classification NACE Rev. 2.1 (2025 edition). Webmetic assigns the codes from the company's website.
The first class is the main activity. There's no separate field for this, because the order carries it. When a company has no code, nace_codes is missing.
Each entry has ten fields:
| Field | Type | Example | Description |
|---|---|---|---|
code | string | "11.07" | Code of the class in the format NN.NN. |
full_code | string | "C 11.07" | Section letter, a space, the code. |
section_code | string | "C" | Section letter. |
section_description_de | string | "Verarbeitendes Gewerbe/Herstellung von Waren" | Section name in German. |
section_description_en | string | "Manufacturing" | Section name in English. |
division_code | string | "C11" | Section letter and two-digit division. |
division_description_de | string | "Getränkeherstellung" | Division name in German. |
division_description_en | string | "Manufacture of beverages" | Division name in English. |
description_de | string | "Herstellung von Erfrischungsgetränken und Mineralwässern" | Class name in German. |
description_en | string | "Manufacture of soft drinks and bottled waters" | Class name in English. |
wz2025_codes has the same structure for the German classification WZ 2025, with codes like "11.07.0". Webmetic adds all WZ subclasses of the chosen NACE classes, so a company can have many.
The order of the WZ entries doesn't mark a main activity. In WZ entries, section_description_de is in capitals, for example "VERARBEITENDES GEWERBE".
GET /company_nace returns the NACE codes as a flat table: one row per code with company_id and the ten fields. Because the rows have no company_name, you get the name from /company through company_id.
Companies without a NACE code have no row. The endpoint takes a single domain, and pagination counts NACE rows there, not companies.
Fields per endpoint
| Endpoint | What comes from the object | Unknown values |
|---|---|---|
/company | All fields except industry_categories, no visits | Field missing |
/company-sessions | All fields including industry_categories, plus sessions[] | Field missing |
/intensive-visits, /returning-visits, /new-visits | A fixed set without organization_type, primary_color, secondary_color, wz2025_codes, what_they_do_*, how_they_make_money_*, and target_audience_*, plus sessions[] | null, [] for directors and nace_codes |
Webhooks, field data.company | Fields as in /company | Field missing, null after truncation |
/company_nace | company_id and the NACE fields, one row per code | No row |
/session | company_id and company_name per session |
/company-sessions returns the Company object with visits embedded: sessions[] holds your account's sessions in the period, described under Session. Each session holds its page views in user_data[], described under Page View.
The three feeds /intensive-visits, /returning-visits, and /new-visits also put fields of the earliest session, sessions_total, and pages_total at the top level. Visit types describes which companies the feeds return.
Example
The example shows one entry from result of GET /company, with shortened texts:
{
"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"
}
]
}The example has no fax_number, tax_number, or secondary_color, because Webmetic doesn't know these values for Bergquell. The example also leaves out the long texts and wz2025_codes.
Edge cases
Missing fields and null
The three feeds return every one of their fields, with null for unknown values and [] for empty lists.
In webhooks, a field can also be null when Webmetic truncated the delivery. Then data.truncated is true, as described under Webhooks. So always handle both cases in your code: the field is missing, and the field is null.
Hidden companies on the Free plan
On the Free plan, you see only some of the companies. The API returns the others as hidden entries with company_id, a placeholder name in company_name ("Verborgenes Unternehmen", German for "hidden company"), and "blurred": true.
/company: All other fields are missing./company-sessions: The sessions of a hidden company hold onlysession_idandtimestamp.- Feeds: Every field except
company_id,company_name, andblurredisnull.sessionsstays a list, and each session keeps all its fields. Onlysession_idandtimestamphave a value, the other fields arenull, anduser_datais empty. /company_naceand webhooks: Hidden companies are left out entirely.- Contacts:
/contacts/search,/contacts/lookup, and/contacts/findanswer 403 withPLAN_REQUIREDfor hidden companies.
Visible companies have no blurred field. Filter out hidden entries by blurred before you process the data. Which companies you see is described under Plans.
Domain not in your account
When the requested domain doesn't belong to your account, the API answers 403 with API_KEY_NOT_AUTHORIZED. This also applies to a variant with www.. Enter the domain exactly as the dashboard shows it. For details, see Errors.
No lookup of a single company
There's no endpoint that returns a single company by company_id. The API also doesn't filter by industry, size, or score. Fetch the period and filter in your own system.
Used by
- Endpoints:
GET /companyreturns one Company object per company,GET /company-sessionsthe object with sessions and page views, andGET /company_nacethe NACE codes as one row per code. - Feeds:
GET /intensive-visits,GET /returning-visits, andGET /new-visitsreturn a fixed set of fields with sessions. - Sessions:
GET /sessionnamescompany_idandcompany_nameper session. - Contacts:
POST /contacts/search,POST /contacts/find, andGET /contacts/lookuptakecompany_id. For a company without a visit on your websites, they answer 403 withCOMPANY_NOT_IDENTIFIED, as described under Contact. - Webhooks:
company.identified,company.returned,company.intensive_visit, andsegment.enteredcarry the company indata.company, as the sample event shows. For details, see Webhooks. - AI assistant: The AI assistant also retrieves companies, with the tools
list_visiting_companiesandget_company_profile.