Search companies
Lightning fast and ultra modern search search-as-you-type, autocomplete, geo-search, LLM augmentation
We provide an easy to use search API based on Typesense lightning-fast search database. That means that all features described in Typesense API version 27 is available in our API.
Search index is stored on RAM memory meaning requests to our search serves very fast and you can use it for search-as-you-type, autocomplete and other applications.
We today provide four rich search collections:
- Company search (you are here)
- Workplace search
- Financial reports search
- Bankruptcies
Company search
In companies search you can query and filter by more than 151 fields listed in the next chapter.
Examples on what you can query on:
- Company Id (our system wide identifier for global companies used across all API calls)
- Country code (ISO 2 letters)
- Registrationnumber (For local region)
- Most recent purpose
- Names (all historic and current names)
- Phonenumbers
- Email addresses
- Hyperlinks
- Bankaccounts
- Addresses (registered, visting and mailing address)
- Document and case history
- Stock
- LEI
- PIC (European Commission)
- Franchises and licences
- Involvement by representatives
- Company representatives
- Beneficial owners
The response model (schema) depends on your query and if you use faceting. If you do plain search we have added to our OpenAPI Schema the default response model namned TypesenseCompanyDocument.
OpenAPI Schema
Look for the model name TypesenseCompanyDocument in the schema definition.
Important about redacted properties
Depending on price plan certain properties may not be included. For simplicity we add an object called redacted which contains a list of redacted properties. An example below shows how the JSON response would look like if you for example don’t have AUDITOR_ACCOUNTING_ISSUES to the properties mostRecentDebtorSummary and currentBeneficialOwners.
Fields indexed
The following fields are currently indexed in memory. These can be used in the query_by parameter and filter_by. Remember this is not the schema of the JSON response since it contains a large number of additional properties.
Field | Type | Description |
---|---|---|
companyId | Int32 | Our global internal company identifier |
registrationNumber | String | The local registration number in the country |
legalEntityType | String | Type of legal entity as described in local market |
localCompanyCode | String | The local company code as known by the market (for example Aktiebolag = AB) |
elfCode | String | ISO Standard 20275 Entity Legal Form (ELF) |
registrationDate (unix epoch) | Int64 | Unix time (epoch) seconds since 1st January 1970 |
ceasedDate (unix epoch) | Int64 | Unix time (epoch) seconds since 1st January 1970, when the company ceased to exist (note date may be unknown by the flag isCeased will be set) |
isCeased | Bool | A flag indicating the business have ceased |
mostRecentPurpose | String | The last purpose registered for the business |
names.nameOrIdentifier | String | Current and former names of the business (could be legalname, particularName etc) |
isRegisteredForVAT | Bool | If the business is registered for VAT |
isRegisteredForFTax | Bool | If the business is registered for F-tax |
isRegisteredForPayroll | Bool | If the business is registered for payroll |
ftaxTerminationReason | String | If the termination of F-tax is known a description |
phoneNumbers.e164PhoneNumber | String | E164 formatted phone number |
phoneNumbers.numberPlanServiceType | String | Service type as described in local number plan |
phoneNumbers.orginalOperator | String | The original operator that held the number |
phoneNumbers.priorOperator | String | Last prior operator before the porting |
phoneNumbers.currentOperator | String | Current operator |
phoneNumbers.lastPortingDate | Int64 | Last porting date in Unix time (epoch) seconds since 1st January 1970 |
emailAddresses.emailAddress | String | E-mail addresses to the business |
hyperlinks.hyperlink | String | Hyperlinks to the business |
sniCodes.sni_2007Name | String | SNI 2007 name |
sniCodes.sni_2007Code | String | SNI 2007 code |
sniCodes.rank | String | SNI 2007 order |
bankAccounts.accountNumber | String | Bank accounts |
mostRecentRegisteredAddress.co | String | C/O = care of address |
mostRecentRegisteredAddress.streetAddress | String | Street address |
mostRecentRegisteredAddress.postalCode | String | The postalcode |
mostRecentRegisteredAddress.city | String | City |
mostRecentRegisteredAddress.countryCodeAlpha3 | String | Country code 3 char alpha |
mostRecentRegisteredAddress.location | GeoPoint | Allows geosearch |
mostRecentMailingAddress.co | String | C/O = care of address |
mostRecentMailingAddress.streetAddress | String | Street address |
mostRecentMailingAddress.postalCode | String | The postalcode |
mostRecentMailingAddress.city | String | City |
mostRecentMailingAddress.countryCodeAlpha3 | String | Country code 3 char alpha |
mostRecentMailingAddress.location | GeoPoint | Allows geosearch |
mostRecentVistingAddress.co | String | C/O = care of address |
mostRecentVistingAddress.streetAddress | String | Street address |
mostRecentVistingAddress.postalCode | String | The postalcode |
mostRecentVistingAddress.city | String | City |
mostRecentVistingAddress.countryCodeAlpha3 | String | Country code 3 char alpha |
mostRecentVistingAddress.location | GeoPoint | Allows geosearch |
registeredOffices.municipality | String | The registered office municipality (säte) |
registeredOffices.municipalityCode | String | The registered office municipality code (säte) |
registeredOffices.county | String | The registered office county (säte) |
registeredOffices.countyCode | String | The registered office county code (säte) |
documents.documentTitle | String | Title of the document |
documents.documentVersion | String | Version of the document |
documents.documentValue3 | String | Used to provide additional data about the document |
intelligence.companyIntelligenceType | String | The specific enum (int) that you want to query by |
intelligence.companyIntelligenceSubType | String | A text enum describing the sub-type of the intelligence type (see documentation) |
intelligence.notes | String | The description of the discrepancy |
intelligence.score | Int32 | A score rank between 0-255 where 0 means only for information and 255 is a serious mark |
intelligence.externalId | Int32 | A reference for the intelligence type used to find the associated underlying document |
mostRecentFinancialSummary.annualReportPeriod | Int32 | The endpoint report of the annual report in YYYYMM as Int32 |
mostRecentFinancialSummary.periodStart | Int64 | Start period epoch seconds |
mostRecentFinancialSummary.periodEnd | Int64 | End period epoch seconds |
mostRecentFinancialSummary.rs_NetSalesK | Int32 | Net sales in K (thousands) |
mostRecentFinancialSummary.rs_OtherOperatingIncomeK | Int32 | Other operating income in K (thousands) |
mostRecentFinancialSummary.rs_OperatingProfitOrLossK | Int32 | Operating profit or loss in K (thousands) |
mostRecentFinancialSummary.rs_SumFinancialItemsK | Int32 | Sum of financial items in K (thousands) |
mostRecentFinancialSummary.rs_ProfitAfterFinancialItemsK | Int32 | Profit after financial items in K (thousands) |
mostRecentFinancialSummary.bs_TotalAssetsK | Int32 | Total assets in balance sheet in K (thouands) |
mostRecentFinancialSummary.fn_NumberOfEmployees | Float | Number of employees with one decimal |
mostRecentFinancialSummary.km_OperatingMargin | Float | Operating margin with four decimals |
mostRecentFinancialSummary.km_NetProfitMargin | Float | Net profit margin with four decimals |
mostRecentFinancialSummary.km_EquityAssetsRatio | Float | Equity asset ratio with four decimals |
mostRecentFinancialSummary.km_GrossMargin | Float | Gross margin with four decimals |
mostRecentFinancialSummary.software | String | Software used to generate the financial report (if known) |
mostRecentSignatory.signatureDescription | String | Description of the signature rights |
currentRepresentatives.personId | Int32 | An internal id representing the person which makes it simpler to query |
mostRecentDebtorSummary.debtBalance.totalAmountInSEK | Float | Holds the total amount, currency SEK, out outstanding debts of public- vs. private debt cases in Sweden |
mostRecentDebtorSummary.debtBalance.public.description | String | The public case debt type and creditor |
mostRecentDebtorSummary.debtBalance.public.numberOfCases | Int32 | Number of public debt cases relating to public debt |
mostRecentDebtorSummary.debtBalance.public.totalAmountInSEK | Float | Total amount outstanding debt for public debt cases |
mostRecentDebtorSummary.debtBalance.private.numberOfCases | Int32 | Number of private debt cases relating to public debt |
mostRecentDebtorSummary.debtBalance.private.totalAmountInSEK | Float | Total amount private debt for public debt cases |
currentRepresentatives.personalIdentityNumber | String | The local market personal identity number |
currentRepresentatives.positionType | String | The position of the representative |
currentRepresentatives.positionDescription | String | Text description of the position |
currentRepresentatives.fullName | String | Fullname of the person |
currentRepresentatives.roleByCompanyName | String | If the position is held by a company |
currentRepresentatives.roleByCompanyRegistrationNumber | String | If the position is held by a company |
currentRepresentatives.auditorType | String | Auditor type |
currentRepresentatives.bornYearMonthDay | String | For foreign persons |
currentBeneficialOwners.personId | Int32 | An internal id representing the person which makes it simpler to query |
currentBeneficialOwners.personalIdentityNumber | String | The local market personal identity number |
currentBeneficialOwners.fullName | String | Fullname of the person |
currentBeneficialOwners.countryOfResidenceCode | String | ISO3166 Country code 2-char |
currentBeneficialOwners.citizenshipCountryCode | String | ISO3166 Country code 2-char |
currentBeneficialOwners.extentDescription | String | Description of the extent |
currentBeneficialOwners.governDescription | String | Description of the govern |
currentBeneficialOwners.throughName | String | If managed through a name / company |
currentBeneficialOwners.throughRegistrationNumber | String | If managed through a name / company |
currentBeneficialOwners.bornYearMonthDay | String | For foreign persons |
mostRecentSignatory.signatureDescription | String | The signature description |
mostRecentShareCapital.shareCapitalAmount | Float | The current share capital amount |
franchisesOrLicences.linkedToName | String | From which company name is the franchise, licence or permit given |
franchisesOrLicences.actingUnderName | String | Under which name is the business providing services or sales of goods |
franchisesOrLicences.linkedToCompanyId | Int32 | From which company id is the franchise, licence or permit given |
franchisesOrLicences.description | String | Description of the franchise, licence or permit given |
franchisesOrLicences.companyFranchiseOrLicenceType | String | Type of franchise, licence or permit (franchise, licence, membership, agent, other) |
currentWorkplaces.companyWorkplaceId | Int32 | Our worldwide identifier for the workplace |
currentWorkplaces.workplaceCode | Int32 | A code for the workplace |
currentWorkplaces.mostRecentName | Int32 | The name of workplace |
currentWorkplaces.labelAddress | String | A label containing the street address, postalcode and city |
currentWorkplaces.location | GeoPoint | Allows geosearch |
trademarks.word | String | The word representing a word-trademark |
trademarks.expire | Int64 | When the trademark expire in Unix time (epoch) seconds since 1st January 1970 |
stock.isin | String | ISIN |
stock.ticker | String | Ticker symbol on market |
stock.marketName | String | Market name |
stock.marketExchangeName | String | Market exchange name |
stock.sectorName | String | Business sector as provided on market |
stock.branchName | String | Business branch as provided on market |
stock.enterpriseValue | String | Enterprise value last closing day |
stock.nextReportDate | String | Next report date for the listed company |
stock.dividendExDate | String | Next X-date to receive the dividend |
stock.yahooSymbol | String | The Yahoo finance symbol |
lei.leiCode | String | LEI Code |
lei.registrationStatus | String | RETIRED, DUPLICATE, LAPSED, ANNULLED, PENDING_TRANSFER, ISSUED, PENDING_ARCHIVAL |
lei.initialRegistrationDate | Int64 | Initial registration date in Unix time (epoch) seconds since 1st January 1970 |
lei.nextRenewalDate | Int64 | Initial registration date in Unix time (epoch) seconds since 1st January 1970 |
lei.managingLOU | String | LEI of the managing LOU |
lei.managingLOULegalName | String | Legal name of the LOU |
ecParticipant.pic | String | Participant Identification Code (PIC) as registered with European Commission |
ecParticipant.validationStatus | String | Declared, Validated, Sleeping, Suspended, Blocked, Deprecated (see further documentation) |
ecParticipant.numberOfProjects | Int32 | Number of projects where the organization has been present with the PIC |
franchisesOrLicences.linkedToName | String | The name of the licencee or company providing the franchise |
franchisesOrLicences.actingUnderName | String | The name/s under which the company is acting under |
franchisesOrLicences.linkedToCompanyId | Int32 | The company id if exists for which the licence or franchise was given |
salesToPublicActors.actorName | String | The name of the public actor |
salesToPublicActors.actorType | String | The name of the public actor |
salesToPublicActors.actorCode | String | The code of the actor, e.g municipality = municipality code |
hasSalesToPublicActors | Bool | Helper flag for knowing if the company has sold to public actors |
hasPhoneNumbers | Bool | Helper flag for knowing if the company has phone numbers present |
hasEmailAddresses | Bool | Helper flag for knowing if the company has email addresses present |
hasHyperlinks | Bool | Helper flag for knowing if the company has hyperlinks present |
hasIntelligence | Bool | Helper flag for knowing if the company has intelligence records present |
hasStatus | Bool | Helper flag for knowing if the company has status records present |
hasBankAccounts | Bool | Helper flag for knowing if the company has bank accounts present |
hasAddresses | Bool | Helper flag for knowing if the company has addresses present |
hasDocuments | Bool | Helper flag for knowing if the company has documents present |
hasStock | Bool | Helper flag for knowing if the company has stock data present |
hasLEI | Bool | Helper flag for knowing if the company has LEI information present |
hasECParticipant | Bool | Helper flag for knowing if the company has EU participant information present |
hasFranchisesOrLicences | Bool | Helper flag for knowing if the company has franchises or licences present |
hasTrademarks | Bool | Helper flag for knowing if the company has trademarks |
hasMostRecentDebtorSummary | Bool | Helper flag for knowing if the company has summary of debts |
Unix time only
Typesense only allows unix timestamps to be indexed so search will only present time by the number of non-leap seconds that have elapsed since 00:00:00 UTC on 1st January 1970, the Unix epoch. Since we may have timestamps earlier than 1st January 1970 negative number of seconds may appear.
European Commission and participant status
ecParticipant.validationStatus can contain the following statuses:
Declared Organisation registered by self-registrant. Will remain in this status if the validation is done decentrally by the National Agency.
Validated Organisation validated centrally by REA (Research Executive Agency).
Suspended The legal entity is “frozen” because of an external reason (Bankruptcy, etc.) as a result of central validation by REA (Research Executive Agency).
Sleeping Some data was passed, but the contact person does not react on any demands from the REA (Research Executive Agency) validation team.
Deprecated When duplication is identified by REA (Research Executive Agency), the validity will be Deprecated and the master PIC will be associated. Will not be published in the search.
Blocked Blocked during the validation process by REA (Research Executive Agency).
Enums
Enums have been stored as plain text in search making it easier to service and not having to remember their numeric values.
Intelligence types
Intelligence records contains information about various discrepancies that we find in data. A record contains a score between 0 and 255 representing the significance of the discrepancy. If the score equals 0 is means it’s just for information while 255 means the discrepancy is very significant. Each intelligence record also comes with a human English text describing the discrepancy called intelligence.notes.
List of intelligence.companyIntelligenceType below in the table. Please note that while searching you need to enter the value (Int32) and not the name itself. Value 2,4 and 6 are unused currently. They may appear in search result currently just for testing.
Enum | Value | Description |
---|---|---|
CreatedAsShelfCompany | 0 | The company was created as shelf company |
SuspectedForQuickLiquidation | 1 | The company was seems to be going into “quick liquidation” |
AffliatedWithArticle | 3 | The company is affiliated with one or multiple articles |
SuspectedAddress | 5 | The address has earlier been known |
PresentOnWarningList | 7 | The company is present on certain warning lists |
AnnualReportDiscrepancies | 8 | One or multiple annual reports contains discrepancies |
AuditorResignation | 9 | Auditor has resigned from their duties |
Registration | 10 | One or more issues about registration |
RegisterChanges | 11 | A change in a registry triggered an intelligence policy |
PenaltyFees | 12 | The company has been penalized by a fee |
BeneficialOwner | 13 | The registration office have indicated issues relating to registration of beneficial owners |
The intelligence.externalId is used to reference an id containing the orgin of the intelligence record. If for example the intelligence record is of type: AnnualReportDiscrepancies (8) it means the external id represents the id of the annual report.
Intelligence subtypes
Certain intelligence types have subtypes to further describe what has been found. The intelligence.companyIntelligenceSubType is an enum text to make it easier to filter based on search.
List of subtypes. Please note you need to filter by string when using intelligence.companyIntelligenceSubType.
Enum | Description |
---|---|
BS_MISMATCH | The balance sheet doesn’t balance |
AGM_TO_LATE | The annual general meeting was held to late |
AR_TO_LATE | The annual report was submitted to late |
AGM_WRONG_DATE | Suspected wrong date of annual general meeting date |
MISSING_MULTIYEAR | The multi-year overview is missing |
MISSING_CHANGEEQUITY | The table showing change of equity is missing |
WRONG_SIGNATUREDATE | Signature date (last signature) seems to be wrong |
WRONG_EQUITYASSETSRATIO | The given equity asset ratio doesn’t match the calculation |
MISSING_AUDITOR | The company is passing the thresholds requiring an auditor (check response for mandatory requirement) |
DUPLICATE | The annual report is a duplicate for another company |
NO_SHARECAPITAL | The balance sheet is missing share capital |
POSSIBLE_MISSINGASSETS | |
NEGATIVE_SHARECAPITAL | The balance sheet contains negative share capital |
NEGATIVE_ASSETS | The balance sheet total assets are negative |
MISSING_BS_ASSETS | Missing part of the balance sheet (assets) |
MISSING_BS_EQUITY | Missing part of the balance sheet (equity) |
MISSING_RS | Missing result sheet |
LIQUIDATION_REQUIRED | The company is subject to liquidation requirements |
WRONG_SHARECAPITAL | The share capital is wrong in the balance sheet |
MISSING_NUMBEREMPLOYEES | Missing number of employees but required |
MISMATCH_PL_RS_BS | Mismatch of profit/loss in result sheet and balance sheet |
MISMATCH_PL_CE | Mismatch of profit/loss in change of equity |
SUSPECT_YEAR_DUPLICATE | Suspected annual report for duplicated data from last year |
PROPOSED_DIVIDEND_ERR | Proposed dividend contains a too high number |
MANAGEMENT_REPORT_ERR | The management report contains errors |
MANAGEMENT_REPORT_UNCERTAINTY | The management report mention uncertainty in the business |
FORBIDDEN_LOAN | The management report mention a forbidden loan |
CONTROL_BS | The management report mention a control balance sheet |
AUDITOR_CONTROL_BS | Auditor mentions a control balance sheet |
AUDITOR_LIQUIDATION_REQUIRED | Auditor mentions liquidation requirements |
AUDITOR_FORBIDDEN_LOAN | Auditor mentions forbidden loan |
AUDITOR_DISCOURGES | Auditor discourges the balance/or/and result sheet |
AUDITOR_ACCOUNTING_LAG | Auditor mentions lag in the accounting of the company |
AUDITOR_MISSING_EVIDENCE | Auditor is missing documentation / evidence for transactions |
AUDITOR_TAXES_LATE | Auditor mentions taxes have been paid late |
AUDITOR_UNAUTH_VALUETRANSFER | Auditor mentions unauthorized value transfers |
AUDITOR_ACCOUNTING_ISSUES | Auditor mentions accounting issues |
AUDITOR_UNCERTAINTY | Auditor mentions uncertainty in the business |
AUDITOR_ACCOUNTING_ERR | Auditor mentions errors in accounting |
AUDITOR_REMARK | Auditor report contains a remark |
COMPARATIVE_FIGURES_ERR | There is an error in compartative figures for the year |
AUDITOR_EARLY_RESIGNATION | An auditor has made an early resignation leaving certain remarks |
SUSPECTED_AR | One or multiple discrepancies have been found in the annual report |
K3_REQUIRED | Company is using K2 ruleset but is required to use K3 ruleset |
ISSUE_WITH_REGISTRATION | The annual report was registered with a discrepancy indicating one or multiple issues |
F_TAX_REVOKED | The F-tax registration of the company have been revoked |
AFFILIATION | The business is affiliated with external data |
CEO_MISSING | Company is missing a CEO registered but required to have one registered |
AR_MISSING | Annual report is missing for a period |
UNAUTH_BOARD | Board is unauthorized and doesn’t meet the terms |
AUDITOR_MISSING | Company is missing an auditor |
REPR_MISSING | Company is missing a special recipient of service |
BR_SURPLUS | Bankruptcy terminated with surplus and is subject to liquidation |
AR_SHORTAGE | Shortage listed by Bolagsverket to the company |
PENALTY_FEE | The company has been penalized with a fee, see more in the description data |
Check back continuously since we are adding more subtypes.
Examples
We have put togheter a few example of how you can use search to efficiently query the millions of companies we track.
Search for companies at at specific street
Search for a specific phone number in E164 format
What is E.164? E164 format is an international format for phone numbers. E.164 numbers are formatted [+] [country code] [subscriber number including area code] and can have a maximum of fifteen digits.
Search for companies within a certain geographic area
Search for companies covering a 300 meters radius around the provided location by latitude and longitude in WGS84 format. Read more about geosearch here.
Filter for a specific companyId
Filters allows you to narrow down your search. This example shows how to specifically match only the company with id 3508351. Read more about filters here.
Search for companies with specific industry names or codes
Searches for companies that have a number of specific industry codes as defined in SNI 2007 standard. You can search either for the name as described in the standard or the code itself.
Search for stock listed companies
Searches for companies listed on market exchange name, OMX Stockholm,
Search for companies that have sold to public actors
Searches for companies that have sold to Gävle municipality.
Search for intelligence records
Searches for companies that have passed auditor requirements by third consecutive year. Note that the score should exceed 254.
Multi search
Multi search enables you to carry out multi searches in one request by posting a json model to the search endpoint. Typesense have a description of the feature in their documentation.
Here is an example of how to use multisearch while searching for a company registration number, e-mail, stock ticker and LEI code.
Response model
The search response for example when you search for our company would look like the example below for our company.
The registrationDate is in Unix epoch seconds e.g the number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT). Same applies for various dates since Typesense requires dates to be serialized to epoch. For example listingDate (stock) and nextRenewalDate (lei) are both epoch.