Download OpenAPI specification:Download
The Kontakto Business Data Service is a high-performance, low-latency API for accessing Finnish business data from multiple sources.
Engineered with exceptional speed in mind, Kontakto is an ideal solution for powering real-time, user-facing applications where performance is critical.
Create an account at Kontakto.fi and get your API key.
Search companies by name, business ID, VAT ID, domain or phone number, with compact results for typeahead functionality. Every word of the query must occur; a query with no match is retried allowing for typos. Hides black-rated companies and companies who have requested to be hidden from Kontakto platform. Use the advanced search to filter the results yourself.
Use Cases: Perfect for autocomplete dropdowns, company selection forms, and quick company lookups. Returns essential company information including business ID, name, auxiliary names, and Kontakto rating.
| q | string Example: q=Kontakto Search query |
| limit | string Example: limit=10 Maximum number of results (1-50, default 10) |
{- "hits": [
- {
- "businessId": "2831767-5",
- "businessName": "Kontakto Oy",
- "auxiliaryNames": [
- "Kontakto Palvelut"
], - "kontaktoRating": "green",
- "parallelNames": [
- "Kontakto Ab"
]
}
], - "estimatedTotalHits": 0,
- "processingTimeMs": 0
}Company search with filters and field projection. The query matches names, business ID, VAT ID, domains and phone numbers; every word must occur. Without a query, the filters alone select the companies, in name order. Companies who have requested to be hidden are never returned; black-rated companies are, unless filters.ratingColor leaves them out.
Filtering: filters is an object; every key given narrows the result. Code lists match any of the given values.
Field Projection: Use the fields parameter to specify which fields to include in the response. You can use any fields specified in the company schema, including nested fields with dot notation (e.g., kontaktoRating.color). If omitted, returns complete company data.
| q | string Search query (optional when filters are given) |
object | |
| fields | string Comma-separated list of fields to include in the response. Use dot notation for nested fields (e.g., 'kontaktoRating.color'). If omitted, returns complete company data. Examples: 'businessId,businessName' for minimal data, 'businessId,businessName,kontaktoRating.color,address.city' for specific fields. |
| limit | number Default: 10 Maximum number of results |
| offset | number Default: 0 Number of results to skip |
{- "q": "Kontakto",
- "filters": {
- "ratingColor": [
- "green",
- "yellow"
], - "operationalStatus": true,
- "legalFormCode": [
- "16"
], - "sector": [
- "limited_liability_business"
], - "domicileCode": [
- "091"
], - "postalCity": [
- "Helsinki"
], - "postalCode": [
- "00100"
], - "tol2008Code": [
- "62010"
], - "tol2025Code": [
- "62100"
], - "establishedFrom": "2020-01-01",
- "establishedTo": "2020-01-01",
- "statusFrom": "2020-01-01",
- "statusTo": "2020-01-01"
}, - "fields": "businessId,businessName,kontaktoRating.color,address.city,website",
- "limit": 10,
- "offset": 0
}{- "hits": [
- {
- "kontaktoId": "string",
- "businessId": "string",
- "vatId": "string",
- "businessName": "string",
- "auxiliaryNames": [
- "string"
], - "parallelNames": [
- "string"
], - "operationalStatus": true,
- "operationalStatusAsOf": "string",
- "operationalStatusDescription": "string",
- "countryCode": "string",
- "languageCode": "string",
- "domicileCity": "string",
- "domicileCode": "string",
- "industryDescription": "string",
- "industryAsOf": "string",
- "industryTol2008Code": "string",
- "industryTol2025Code": "string",
- "legalForm": "string",
- "legalFormCode": "string",
- "legalFormAsOf": "string",
- "sector": "associations_and_foundations",
- "establishmentDate": "string",
- "otherAddress": [
- {
- "city": "string",
- "poBox": true,
- "source": "string",
- "street": "string",
- "careOf": "string",
- "country": "string",
- "postalCode": "string",
- "addressType": "string"
}
], - "postalAddress": {
- "city": "string",
- "poBox": true,
- "careOf": "string",
- "source": "string",
- "street": "string",
- "country": "string",
- "postalCode": "string"
}, - "visitingAddress": {
- "city": "string",
- "poBox": true,
- "careOf": "string",
- "source": "string",
- "street": "string",
- "country": "string",
- "postalCode": "string"
}, - "website": [
- {
- "name": "string",
- "source": "string",
- "content": "string",
- "website": "string",
- "registered": true,
- "description": "string",
- "websiteType": "string",
- "websiteStatus": "string"
}
], - "domain": [
- {
- "domain": "string",
- "source": "string",
- "description": "string"
}
], - "phoneNumber": [
- {
- "source": "string",
- "numberType": "string",
- "countryCode": "string",
- "phoneNumber": "string"
}
], - "email": [
- {
- "email": "string",
- "source": "string",
- "description": "string"
}
], - "register": [
- {
- "startDate": "string",
- "registry": "string",
- "authority": "string",
- "active": true,
- "registerId": "string",
- "registrationStatusDescription": "string",
- "registrationDate": "string",
- "endDate": "string"
}
], - "eInvoiceAddress": [
- {
- "public": true,
- "address": "string",
- "sending": true,
- "receiving": true,
- "attachments": true,
- "businessId": "string",
- "operatorId": "string",
- "addressName": "string",
- "addressType": "string",
- "lastUpdated": "string",
- "operatorName": "string",
- "primaryReceivingAddress": true
}
], - "kontaktoRating": {
- "asOf": "string",
- "color": "string",
- "reason": "string",
- "reasonCode": "string"
}, - "businessIdHistory": [
- {
- "oldBusinessId": "string",
- "newBusinessId": "string",
- "changeDate": "string",
- "changeType": "string",
- "changeDescription": "string",
- "source": "string"
}
]
}
], - "query": "string",
- "processingTimeMs": 0,
- "limit": 0,
- "offset": 0,
- "estimatedTotalHits": 0
}Returns company details based on the business ID
| businessId required | string Example: 1234567-8 Business ID of the company |
{- "kontaktoId": "string",
- "businessId": "string",
- "vatId": "string",
- "businessName": "string",
- "auxiliaryNames": [
- "string"
], - "parallelNames": [
- "string"
], - "operationalStatus": true,
- "operationalStatusAsOf": "string",
- "operationalStatusDescription": "string",
- "countryCode": "string",
- "languageCode": "string",
- "domicileCity": "string",
- "domicileCode": "string",
- "industryDescription": "string",
- "industryAsOf": "string",
- "industryTol2008Code": "string",
- "industryTol2025Code": "string",
- "legalForm": "string",
- "legalFormCode": "string",
- "legalFormAsOf": "string",
- "sector": "associations_and_foundations",
- "establishmentDate": "string",
- "otherAddress": [
- {
- "city": "string",
- "poBox": true,
- "source": "string",
- "street": "string",
- "careOf": "string",
- "country": "string",
- "postalCode": "string",
- "addressType": "string"
}
], - "postalAddress": {
- "city": "string",
- "poBox": true,
- "careOf": "string",
- "source": "string",
- "street": "string",
- "country": "string",
- "postalCode": "string"
}, - "visitingAddress": {
- "city": "string",
- "poBox": true,
- "careOf": "string",
- "source": "string",
- "street": "string",
- "country": "string",
- "postalCode": "string"
}, - "website": [
- {
- "name": "string",
- "source": "string",
- "content": "string",
- "website": "string",
- "registered": true,
- "description": "string",
- "websiteType": "string",
- "websiteStatus": "string"
}
], - "domain": [
- {
- "domain": "string",
- "source": "string",
- "description": "string"
}
], - "phoneNumber": [
- {
- "source": "string",
- "numberType": "string",
- "countryCode": "string",
- "phoneNumber": "string"
}
], - "email": [
- {
- "email": "string",
- "source": "string",
- "description": "string"
}
], - "register": [
- {
- "startDate": "string",
- "registry": "string",
- "authority": "string",
- "active": true,
- "registerId": "string",
- "registrationStatusDescription": "string",
- "registrationDate": "string",
- "endDate": "string"
}
], - "eInvoiceAddress": [
- {
- "public": true,
- "address": "string",
- "sending": true,
- "receiving": true,
- "attachments": true,
- "businessId": "string",
- "operatorId": "string",
- "addressName": "string",
- "addressType": "string",
- "lastUpdated": "string",
- "operatorName": "string",
- "primaryReceivingAddress": true
}
], - "kontaktoRating": {
- "asOf": "string",
- "color": "string",
- "reason": "string",
- "reasonCode": "string"
}, - "businessIdHistory": [
- {
- "oldBusinessId": "string",
- "newBusinessId": "string",
- "changeDate": "string",
- "changeType": "string",
- "changeDescription": "string",
- "source": "string"
}
]
}Returns tax debt and filing negligence status. Uses cached data when appropriate, fetches fresh data during update periods. Use refresh=true to force fresh data fetch.
| businessId required | string Example: 1234567-8 Business ID of the company |
| refresh | string Example: refresh=true Force fresh data fetch from Tax Administration API (ignores cache) |
{- "businessId": "string",
- "businessName": "string",
- "lastUpdate": "string",
- "hasTaxDebt": true,
- "hasFilingNegligence": true,
- "queriedAt": "string",
- "source": "string"
}Search Finnish postal codes with comprehensive location information. The query matches the start of the postal code or a word in the postal code, municipality or administrative area names (Finnish or Swedish). Returns postal code details including municipality names in Finnish and Swedish, administrative areas, and geographic codes. Ideal for address validation and location-based applications.
| q | string Example: q=Helsinki Search query |
| limit | string Example: limit=10 Maximum number of results (1-100, default 10) |
{- "hits": [
- {
- "date": "2024-01-01",
- "postcode": "00100",
- "postcodeFiName": "Helsinki",
- "postcodeSvName": "Helsingfors",
- "postcodeAbbrFi": "HKI",
- "postcodeAbbrSv": "HFO",
- "validFrom": "2024-01-01",
- "typeCode": "1",
- "adAreaCode": "01",
- "adAreaFi": "Uusimaa",
- "adAreaSv": "Nyland",
- "municipalCode": "091",
- "municipalNameFi": "Helsinki",
- "municipalNameSv": "Helsingfors",
- "municipalLanguageRatioCode": "1",
- "country": "FI"
}
], - "estimatedTotalHits": 0,
- "processingTimeMs": 0
}Fast address suggestions for checkout forms, registration workflows, and autocomplete functionality. The query is read as a street name (a prefix of the Finnish or Swedish name), then a number with an optional letter, then a postal code or locality: Mannerheimintie 15, Kampinkuja2, Eeronkatu 7, 40720 Jyväskylä. Returns essential address information optimized for user interface components including unique address identifiers for form handling.
| q required | string >= 2 characters Example: q=Mannerheimintie Search query (minimum 2 characters) |
| limit | string Example: limit=10 Maximum number of results |
| deduplicate | string Example: deduplicate=true Deduplicate results by address name, postal code, and address number. Useful for typeahead where multiple entries for the same physical address are not needed. |
| hasBuilding | string Example: hasBuilding=true Only return addresses that have associated building data. |
{- "hits": [
- {
- "id": "b75f82f3-4075-461a-b033-aa35724a3155",
- "addressFin": "Mannerheimintie 1",
- "addressSwe": "Mannerheimvägen 1",
- "addressNameFin": "Mannerheimintie",
- "addressNameSwe": "Mannerheimvägen",
- "numberPartOfAddressNumber": 71,
- "postalCode": "00100",
- "postalOfficeFin": "Helsinki",
- "postalOfficeSwe": "Helsingfors",
- "domicileCode": "091",
- "country": "FI"
}
], - "estimatedTotalHits": 0,
- "processingTimeMs": 0,
- "source": "Suomen ympäristökeskuksen (Syke)"
}Advanced address search with filters and field projection. The query is read like the typeahead's (street name, number and letter, postal code or locality); without a query the filters alone select the addresses, in street name order.
Filtering: filters is an object; every key given narrows the result: postalCode and municipalityNumber (lists, any of the values), hasBuilding (boolean).
Field Projection: Use the fields parameter to specify which fields to include in the response. You can use any fields specified in the address schema, including nested fields with dot notation (e.g., coordinates.longitude). If omitted, returns complete address data.
Pagination: Use limit and offset parameters for result pagination. The hasMore field indicates if additional results are available.
| query | string Search query (optional when filters are given) |
| limit | number Maximum number of results |
| offset | number Number of results to skip |
object | |
| fields | string Comma-separated list of fields to include in the response. Use dot notation for nested fields (e.g., 'coordinates.longitude'). If omitted, returns complete address data. Examples: 'id,addressFin,postalCode' for minimal data, 'id,addressFin,postalCode,coordinates' for specific fields. |
{- "query": "Mannerheimintie 15, Helsinki",
- "limit": 20,
- "offset": 0,
- "filters": {
- "postalCode": [
- "00100"
], - "municipalityNumber": [
- "091"
], - "hasBuilding": true
}, - "fields": "id,addressFin,postalCode,coordinates"
}{- "hits": [
- {
- "id": "b75f82f3-4075-461a-b033-aa35724a3155",
- "addressFin": "Mannerheimintie 1",
- "addressSwe": "Mannerheimvägen 1",
- "addressNameFin": "Mannerheimintie",
- "addressNameSwe": "Mannerheimvägen",
- "numberPartOfAddressNumber": 71,
- "postalCode": "00100",
- "postalOfficeFin": "Helsinki",
- "postalOfficeSwe": "Helsingfors",
- "municipalityNumber": "091",
- "domicileCode": "091",
- "coordinates": {
- "longitude": 24.945831,
- "latitude": 60.169856
}, - "country": "FI",
- "building": {
- "id": "building-uuid-123",
- "buildingKey": "building-key-123",
- "permanentBuildingIdentifier": "PERM123456",
- "propertyIdentifier": "PROP789",
- "completionDate": "2020-01-15",
- "demolitionDate": null,
- "mainPurpose": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "usageStatus": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "facadeMaterial": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "heatingMethod": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "heatingEnergySource": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "materialLoadBearing": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "constructionMethod": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "protectionMethod": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "volume": 15000.5,
- "numberOfStoreys": 8,
- "grossFloorArea": 2500.75,
- "totalArea": 2200.25,
- "floorArea": 2000,
- "apartmentCount": 16,
- "isAccessible": true,
- "votingDistrictNumber": "001",
- "cultureHistoricalSignificance": null,
- "coordinates": {
- "longitude": 24.945831,
- "latitude": 60.169856
}, - "pointLocationSrid": 4326,
- "modifiedTimestampUtc": "2024-01-15T10:30:00Z",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
}
], - "estimatedTotalHits": 0,
- "processingTimeMs": 0,
- "query": "string",
- "limit": 0,
- "offset": 0,
- "hasMore": true,
- "source": "Suomen ympäristökeskuksen (Syke)"
}Fetch complete address information by unique address identifier. Returns detailed address data including building information, coordinates, and all available fields.
| id required | string Example: b75f82f3-4075-461a-b033-aa35724a3155 Unique address identifier |
{- "id": "b75f82f3-4075-461a-b033-aa35724a3155",
- "addressFin": "Mannerheimintie 1",
- "addressSwe": "Mannerheimvägen 1",
- "addressNameFin": "Mannerheimintie",
- "addressNameSwe": "Mannerheimvägen",
- "numberPartOfAddressNumber": 71,
- "postalCode": "00100",
- "postalOfficeFin": "Helsinki",
- "postalOfficeSwe": "Helsingfors",
- "municipalityNumber": "091",
- "domicileCode": "091",
- "coordinates": {
- "longitude": 24.945831,
- "latitude": 60.169856
}, - "country": "FI",
- "building": {
- "id": "building-uuid-123",
- "buildingKey": "building-key-123",
- "permanentBuildingIdentifier": "PERM123456",
- "propertyIdentifier": "PROP789",
- "completionDate": "2020-01-15",
- "demolitionDate": null,
- "mainPurpose": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "usageStatus": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "facadeMaterial": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "heatingMethod": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "heatingEnergySource": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "materialLoadBearing": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "constructionMethod": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "protectionMethod": {
- "id": "purpose-1",
- "descriptionFi": "Asuinrakennus",
- "descriptionSv": "Bostadshus",
- "descriptionEn": "Residential building"
}, - "volume": 15000.5,
- "numberOfStoreys": 8,
- "grossFloorArea": 2500.75,
- "totalArea": 2200.25,
- "floorArea": 2000,
- "apartmentCount": 16,
- "isAccessible": true,
- "votingDistrictNumber": "001",
- "cultureHistoricalSignificance": null,
- "coordinates": {
- "longitude": 24.945831,
- "latitude": 60.169856
}, - "pointLocationSrid": 4326,
- "modifiedTimestampUtc": "2024-01-15T10:30:00Z",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-15T10:30:00Z"
}
}Returns company details in the response format of the previous Kontakto API. For customers migrating from it; new integrations should use /companies/{businessId}.
| businessId required | string Example: 2831767-5 Business ID of the company |
{- "businessId": "2831767-5",
- "businessName": "Kontakto Oy",
- "vatNumber": "FI28317675",
- "domicile": {
- "city": "Muurame",
- "code": "500",
- "country": "FI"
}, - "auxiliaryNames": [
- "string"
], - "parallelNames": [
- "string"
], - "mailAddress": {
- "careOf": "",
- "streetAddress": "PL 226",
- "postCode": "00045",
- "postOffice": "Nokia group",
- "country": "FI",
- "poBox": true
}, - "visitingAddress": {
- "careOf": "",
- "streetAddress": "PL 226",
- "postCode": "00045",
- "postOffice": "Nokia group",
- "country": "FI",
- "poBox": true
}, - "deliveryAddress": {
- "careOf": "",
- "streetAddress": "PL 226",
- "postCode": "00045",
- "postOffice": "Nokia group",
- "country": "FI",
- "poBox": true
}, - "officialLanguage": "fi",
- "languages": [
- "fi"
], - "register": {
- "tradeRegister": {
- "asOf": "2017-05-10",
- "description": "Kaupparekisteri",
- "status": true
}, - "foundationRegister": {
- "asOf": "2017-05-10",
- "description": "Kaupparekisteri",
- "status": true
}, - "registerOfAssociations": {
- "asOf": "2017-05-10",
- "description": "Kaupparekisteri",
- "status": true
}, - "taxAdministrationRegister": {
- "asOf": "2017-05-10",
- "description": "Kaupparekisteri",
- "status": true
}, - "preliminaryTaxWithholdingRegister": {
- "asOf": "2017-05-10",
- "description": "Kaupparekisteri",
- "status": true
}, - "vatRegister": {
- "vatLiabilities": [
- {
- "asOf": "2017-05-10",
- "description": "Kaupparekisteri",
- "status": true,
- "code": "80"
}
], - "status": true
}, - "employerRegister": {
- "asOf": "2017-05-10",
- "description": "Kaupparekisteri",
- "status": true
}, - "insurancePremiumTaxRegister": {
- "asOf": "2017-05-10",
- "description": "Kaupparekisteri",
- "status": true
}
}, - "industry": {
- "asOf": "string",
- "description": "Ohjelmistojen suunnittelu ja valmistus",
- "status": true,
- "tol2008code": "string",
- "tol2025code": "62100"
}, - "phoneNumber": {
- "landline": "+358104488000",
- "mobile": "string",
- "fax": "string"
}, - "email": "string",
- "legalForm": {
- "asOf": "2017-05-10",
- "description": "Osakeyhtiö",
- "status": true,
- "code": "16"
}, - "businessStatus": {
- "asOf": "2017-05-03",
- "description": "Aktiivinen",
- "status": true,
- "history": [
- {
- "asOf": "2017-05-10",
- "description": "Kaupparekisteri",
- "status": true
}
]
}, - "kontaktoRating": {
- "color": "green",
- "reason": "Yritys on aktiivinen, ennakkoperintärekisterissä ja ALV-rekisterissä"
}, - "eInvoice": {
- "finvoice": {
- "receiving": [
- {
- "name": "Kontakto Oy",
- "operatorCode": "003723327487",
- "operator": "Apix Messaging Oy",
- "ovt": "003728317675",
- "address": "003728317675"
}
], - "sending": [
- {
- "name": "Kontakto Oy",
- "operatorCode": "003723327487",
- "operator": "Apix Messaging Oy",
- "ovt": "003728317675"
}
]
}
}
}