Search companies
Lightning fast and ultra modern search search-as-you-type, autocomplete, geo-search, LLM augmentation
You can now also search in financial reports by foot notes, management comments/report, audit report, software used to produce the financial report and much more. Read more in the documentation here
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 26 is available in our API. Data is continously reindexed as new data arrives.
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.
In companies search you can query (query_by) by more than 60 fields listed in the next chapter.
Examples on what you can query on:
- Company Id (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
- Stock
- LEI
- PIC (European Commission)
- Franchises and licences
The response is strongly typed and you will find the response model in the OpenAPI specification.
OpenAPI Schema
Look for the model name TypesenseCompanyDocument in the schema definition.
Fields indexed
The following fields are currently indexed in memory. These can be used in the query_by parameter. Remember that you can still limit your search result by using filter_by on ALL fields.
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 |
registrationDate (unix epoch) | Int64 | Unix time (epoch) seconds since 1st January 1970 |
mostRecentPurpose | String | The last purpose registered for the business |
names.nameOrIdentifier | String | Current and former names of the business or |
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 |
bankAccounts.accountNumber | String | Bank accounts |
addresses.co | String | C/O = care of address |
addresses.street | String | Street name |
addresses.houseNumber | String | The street number |
addresses.city | String | City |
addresses.postalCode | String | Postal Code |
addresses.location | GeoPoint | Allows geosearch |
addresses.addressType | Int32 | 0 = mailAddress, 1 = visitingAddress, 2 = bothMailAndVisitingAddress |
addresses.countryCodeAlpha3 | String | Country code 3 char alpha |
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) |
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) |
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 |
salesToPublicActors.invoicedApprox2022K | Int | Approx. amount of invoiced to the actor |
salesToPublicActors.invoicedApprox2023K | Int | Approx. amount of invoiced to the actor (can be part of 2023) |
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 |
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.
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 |
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 |
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.