Search
The TIC Lens search API is built on Typesense, a lightning-fast search engine that stores its index in RAM. This makes it ideal for search-as-you-type, autocomplete, geo-search, and other latency-sensitive applications.
All features described in the Typesense API (v29) are available through our proxy endpoints.
Collections
| Collection | Endpoint | Minimum Plan |
|---|---|---|
| Companies | /search-public/companies |
Pro+ |
| Persons | /search-public/persons |
Enterprise+ |
| Workplaces | /search-public/workplaces |
Max+ |
| Vehicles | /search-public/vehicles |
Pro+ |
| Properties | /search-public/properties |
Max+ |
| Bankruptcies | /search-public/bankruptcies |
Max+ |
| Financial reports | /search-public/reports |
Enterprise+ |
Parameters
| Parameter | Type | Description |
|---|---|---|
q |
string | The search query. Use * to match all documents. |
query_by |
string | Comma-separated list of fields to search in. |
filter_by |
string | Filter expression (see Typesense filter docs). |
sort_by |
string | Comma-separated list of fields to sort by. |
per_page |
int | Number of results per page (max 50, persons max 5). |
page |
int | Page number (1-based). |
POST is recommended for complex queries. GET is convenient for quick lookups and search-as-you-type.
Search by name
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/search-public/companies?q=Volvo&query_by=names.nameOrIdentifier"
curl -X POST "https://lens-api.tic.io/search-public/companies" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"q": "Volvo",
"query_by": "names.nameOrIdentifier",
"per_page": 10,
"page": 1
}'
Search by registration number
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/search-public/companies?q=5565199493&query_by=registrationNumber"
curl -X POST "https://lens-api.tic.io/search-public/companies" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"q": "5565199493",
"query_by": "registrationNumber",
"per_page": 5,
"page": 1
}'
Search by phone number (E.164)
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/search-public/companies?q=+46850565800&query_by=phoneNumbers.e164PhoneNumber"
Geo-search within radius
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/search-public/companies?q=*&query_by=mostRecentRegisteredAddress.streetAddress&filter_by=mostRecentRegisteredAddress.location:(57.6799,12.09162,0.300 km)&sort_by=mostRecentRegisteredAddress.location(57.6799,12.09162):asc"
Read more about geo-search in the Typesense geo-search docs.
Filter by companyId
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/search-public/companies?q=*&query_by=registrationNumber&filter_by=companyId:[3508351]"
Search by SNI industry code
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/search-public/companies?q=45111&query_by=sniCodes.sni_2007Code"
Stock listed companies
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/search-public/companies?q=OMX+Stockholm&query_by=stock.marketExchangeName"
Intelligence records
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/search-public/companies?q=*&query_by=registrationNumber&filter_by=intelligence.companyIntelligenceSubType:['MISSING_AUDITOR']%26%26intelligence.score:>254"
POST with filters
POST allows you to send structured search requests in JSON with complex filter expressions:
curl -X POST "https://lens-api.tic.io/search-public/companies" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"q": "*",
"query_by": "registrationNumber",
"filter_by": "mostRecentFinancialSummary.fn_NumberOfEmployees:>100 && mostRecentRegisteredAddress.city:Stockholm",
"sort_by": "mostRecentFinancialSummary.rs_NetSalesK:desc",
"per_page": 20,
"page": 1
}'
Pro tier filtering
On the Pro plan, company search automatically excludes certain legal entity types and ceased companies. Max and Enterprise plans have unfiltered access to all records.
Redacted properties
Depending on your plan, certain properties may be excluded from search results. The response includes a redacted array listing the omitted fields:
{
"redacted": ["mostRecentDebtorSummary", "currentBeneficialOwners"]
}
Date handling
All date fields are in Unix epoch seconds (seconds since 1970-01-01 00:00:00 UTC). Companies registered before 1970 will have negative values.
Typesense only supports Unix timestamps.
SNI codes — 2007 and 2025
Since December 2024, Statistics Sweden (SCB) has been migrating from SNI 2007 to SNI 2025. We recommend searching on both sniCodes.sni_2007Code and sniCodes.sni_2025Code during the transition.
Search results include both code systems.
Intelligence types
Intelligence records flag discrepancies found in company data. Each record has a score between 0 (informational) and 255 (severe).
When filtering by intelligence.companyIntelligenceType, use the numeric value:
| Type | Value | Description |
|---|---|---|
| CreatedAsShelfCompany | 0 | Company was created as a shelf company |
| SuspectedForQuickLiquidation | 1 | Suspected quick liquidation |
| AffiliatedWithArticle | 3 | Affiliated with one or more articles |
| SuspectedAddress | 5 | Address has been flagged |
| PresentOnWarningList | 7 | Present on certain warning lists |
| AnnualReportDiscrepancies | 8 | Annual report contains discrepancies |
| AuditorResignation | 9 | Auditor has resigned |
| Registration | 10 | Issues with registration |
| RegisterChanges | 11 | Registry change triggered a policy |
| PenaltyFees | 12 | Penalized by a fee |
| BeneficialOwner | 13 | Issues with beneficial owner registration |
| Claims | 14 | Claims from government agencies |
Intelligence subtypes
Filter by intelligence.companyIntelligenceSubType using the string value:
| Subtype | Description |
|---|---|
BS_MISMATCH |
Balance sheet doesn't balance |
AGM_TO_LATE |
Annual general meeting held too late |
AR_TO_LATE |
Annual report submitted too late |
MISSING_AUDITOR |
Missing required auditor |
LIQUIDATION_REQUIRED |
Subject to liquidation requirements |
F_TAX_REVOKED |
F-tax registration revoked |
AUDITOR_DISCOURGES |
Auditor discourages the balance/result sheet |
AUDITOR_ACCOUNTING_ISSUES |
Auditor mentions accounting issues |
AUDITOR_EARLY_RESIGNATION |
Auditor made an early resignation |
NEGATIVE_SHARECAPITAL |
Negative share capital in balance sheet |
FORBIDDEN_LOAN |
Management report mentions forbidden loan |
See the full list of subtypes in the API reference.
Category fields
Fields starting with c (e.g. cTurnoverInterval, cNbrEmployeesInterval) are statistical category fields compiled weekly by Statistics Sweden across all legal entity types. Each contains:
categoryCode— numeric codecategoryCodeDescription— human-readable description
These are useful for filtering across company types that don't submit annual reports.