Developers › Filters

Filters

77 query parameters, accepted by every endpoint that takes filters. The same list is available as JSON from GET /api/v1/filters — this page and that endpoint are generated from the same source, so they cannot disagree.

Unknown parameters are rejected. A misspelled filter returns 400 unknown_parameter instead of being ignored. This is deliberate: an ignored filter would widen your query to the whole register and bill you for it, and you would only find out from the invoice.

Boolean filters accept only true. They narrow the set; to not filter, leave the parameter out. has_phone=false is an error, not "companies without a phone" — for that, use the negative filters where they exist (no_website, no_mx, no_dmarc).

Location

ParameterTypeDescription
municipality
e.g. 091
stringMunicipality code (3 digits, Statistics Finland).
region
e.g. 01,02
stringRegion code, or several separated by commas.
postal_code
e.g. 00100
stringPostal code (5 digits).

Industry

ParameterTypeDescription
industry_section
e.g. F
stringTOL 2025 section letter.
industry_division
e.g. 41
stringTOL 2025 division (2 digits).
industry_code
e.g. 41200
stringExact TOL 2025 class (5 digits).
industry_prefix
e.g. 412,431
listTOL code prefixes; several are combined with OR.
search
e.g. konepaja
stringFree-text match on company name and industry description. Every word must match the beginning of a word, so "konep" finds "Konepaja".

Size and age

ParameterTypeDescription
min_taxable_income
e.g. 50000
integerTaxable income in euros, lower bound. NOT revenue — this is confirmed taxable profit after deductions.
max_taxable_incomeintegerTaxable income in euros, upper bound.
has_taxable_incomebooleanTaxable income is known at all.
min_age_years
e.g. 5
integerCompany age in full years, lower bound.
max_age_yearsintegerCompany age in full years, upper bound.
registered_after
e.g. 2025-01-01
dateRegistered on or after this date (YYYY-MM-DD).
registered_beforedateRegistered on or before this date.
registered_within_days
e.g. 30
integerBusiness ID was issued within the last N days (max 999). Note: this is the business ID registration date, not the trade register entry date — the latter lags by about a week and is processed in batches.
company_form
e.g. 16
stringCompany form code (PRH numeric code): 16 = osakeyhtiö, 2 = asunto-osakeyhtiö, 13 = kommandiittiyhtiö, 10 = keskinäinen kiinteistöosakeyhtiö, 5 = avoin yhtiö, 14 = osuuskunta.
min_staff_namedintegerAt least N named people found on the company website. A size proxy, not a headcount.

Contact availability

ParameterTypeDescription
has_phonebooleanA phone number is available.
Level note. On decision-maker level this means the person's own direct number, not merely a number somewhere in the company.
has_emailbooleanAn email address can be delivered for the row.
Level note. On decision-maker level: an address for THIS person — either found directly or derivable from the organisation's address pattern.
has_direct_emailbooleanA personal address found as published, not derived.
Level note. On decision-maker level this is the person's own column.
has_email_patternbooleanThe organisation's address pattern is known, so an address can be derived from a name.
email_kind
e.g. laskutus
stringRole mailbox category, inferred from the local part.
One of: myyntiasiakaspalvelulaskutusrekryviestintakirjaamo
Level note. Not accepted on decision-maker level: role mailboxes belong to the company, not to a person. On company level the row's own email group is what this filters.

People

ParameterTypeDescription
has_decision_makerbooleanAt least one named person with a classified decision-making role is known. Narrower than the availability flag of the same name in responses, which counts any named person.
Level note. Not accepted on decision-maker level: every row there is a decision-maker, so the filter would mean nothing.
roles
e.g. toimitusjohtaja,myyntijohto
listDecision-maker roles, comma separated. The special value 'yhteyshenkilo' selects rows with no identified role but with a phone number or email the company published itself — the largest single group.
Level note. On company level this asks 'has such a person'; on decision-maker level it filters the row's own role. 'yhteyshenkilo' works on decision-maker level only.
occupations
e.g. terveys_hoiva
listOccupational groups — a different axis from roles. A dentist has no decision-making role but is still findable.
job_titles
e.g. hammaslaakari
listSpecific job titles inside an occupational group.
person_changedbooleanA decision-maker changed within the last 12 months.

Website and technology

ParameterTypeDescription
has_domainbooleanThe company holds a domain name.
no_websitebooleanNeither a domain nor a site registered with the trade register.
is_ecommercebooleanOnline store detected on the site.
technologies
e.g. WordPress,WooCommerce
listSite technologies, comma separated.
multilingual_sitebooleanThe site has a version in another language than Finnish.
email_platform
e.g. Microsoft 365
stringMail platform from the MX record.
no_mxbooleanThe domain accepts no mail — often parked.
dmarcstringDMARC policy.
One of: nonequarantinereject
no_dmarcbooleanThe domain has mail but no DMARC record.
has_customer_portalbooleanThe site has a login — suggests recurring customer relationships.
site_stalebooleanFooter copyright year has not moved in three years.
document_kindstringA PDF of this kind was found on the site.
min_page_bytesintegerFront page weight in bytes, lower bound.
max_page_bytesintegerFront page weight in bytes, upper bound.
min_response_msintegerFront page response time in ms, lower bound — i.e. SLOWER than this. The name follows the measurement, not the feeling.
max_response_msintegerResponse time upper bound — faster than this.
min_pagesintegerPages in the site's own sitemap, lower bound. Sites without a sitemap are excluded in both directions.
max_pagesintegerPages in the sitemap, upper bound.
site_changed_within_daysintegerA change was detected on the site within N days.

Buying signals

ParameterTypeDescription
sells_to_public_sectorbooleanAppears in public-sector purchase invoice data.
min_public_salesintegerPublic-sector sales in euros for the latest full year.
max_public_salesintegerPublic-sector sales, upper bound.
won_tenderbooleanWon a public tender (Hilma award notice).
open_tenderbooleanHas an open call for tenders as a contracting entity.
in_municipal_decisionsbooleanNamed in a municipal decision document.
received_fundingbooleanReceived public development funding (Business Finland / EU).
min_fundingintegerFunding in euros for the latest decision year, lower bound.
max_fundingintegerFunding upper bound.
is_hiringbooleanOpen positions listed on the site.
certifiedbooleanA quality certificate is mentioned on the site (ISO, RALA…).
customer_typestringCustomer base inferred from the site profile. Includes companies serving both.
One of: b2bb2c
international_tradebooleanHolds a valid EORI number — imports or exports outside the EU.
has_patentbooleanHas filed a patent application (PRH).
lobbyingbooleanRegistered in the transparency register.
regulated_industrybooleanThe industry has a matter pending in parliament.
regulated_topicbooleanThe company's own site topic is pending in parliament.

Registers and property

ParameterTypeDescription
vat_registeredbooleanIn the VAT register.
prepayment_registeredbooleanIn the prepayment register.
employer_registeredbooleanIn the employer register.
removed_from_prepaymentbooleanRemoved from the prepayment register in the last 12 months and not registered again since.
alcohol_licencebooleanValid alcohol licence (Valvira).
transport_licencebooleanValid transport licence (Traficom).
in_bankruptcybooleanBankruptcy proceedings are currently under way. Completed bankruptcies are not included — the registry entry is removed when the proceedings end.
in_restructuringbooleanCorporate restructuring proceedings are currently under way.
in_liquidationbooleanThe company is currently in liquidation. Usually a controlled wind-down, not insolvency.
housing_companybooleanHousing company or mutual real estate company. Note: the registered address is usually the property manager's office, not the building.
residential_housing_companybooleanResidential housing company only.
commercial_property_companybooleanMutual real estate company only.
property_manager_knownbooleanThe property manager company is known for this housing company.

The same filter can mean two things

Company rows and decision-maker rows are different units, and a few filters follow the unit rather than the wording. On /companies, has_phone=true means "this company has a number somewhere". On /decision-makers, it means "this person has their own direct number". The second is a much smaller set, and it is the one you want when you are going to call someone.

The filters where this applies are marked Level note above. Getting it wrong is not a small error: measured on our own data, filtering by role at the wrong level returned 48 408 rows where only 13 399 were genuine — a 3.6× difference, all of it billable.

Aloita kohderyhmän rajaus