How to look up Finnish companies by Y-tunnus and build B2B lead lists from the YTJ register
Updated 2026-10-28 ยท Tool used: Finland Company Search - Y-tunnus Lookup & B2B Leads (YTJ/PRH) on Apify ยท Price: $0.001 per company ($1 per 1,000); invalid business IDs, no-match searches, duplicates and filtered rows are free
Every Finnish company has a business ID (Y-tunnus) in YTJ, the business information system run by the Finnish Patent and Registration Office (PRH) and the Tax Administration. It tells you the official name, company form, main line of business, addresses, website, registration date and whether the company is in the VAT, employer and prepayment registers or in bankruptcy or liquidation.
This guide shows how to read the YTJ open data API in bulk: enrich a CRM list of business IDs, match names to business IDs, or build a lead list such as "IT companies in Tampere and Oulu that are VAT-registered employers with a website" or "every new limited company registered this month". No API key or login is needed.
Open Finland Company Search on Apify โSteps
- For lookups, paste business IDs or names into
companies.0112038-9,01120389and the VAT formFI01120389all work, and the check digit is validated first, so typos come back as free rows. - For a lead list, leave
companiesempty and setindustryCodes(TOL prefixes, e.g.62for IT),cities(Finnish post office names), postal codes,companyForms(e.g.OY) andregisteredFrom, with amaxResultscap. - Turn on
vatRegisteredOnly,employerOnlyorwithWebsiteOnlyto keep only real, active businesses. Skipped rows are free. - Run it and export the dataset as CSV or Excel. For a weekly feed of new companies, save the input as a task with
registeredFromand add a Schedule.
Example input
{
"companies": [
"0112038-9",
"FI23365096",
"Kone"
]
}
Example output (one item, shortened)
{
"query": "0112038-9",
"queryType": "businessId",
"found": true,
"businessId": "0112038-9",
"vatNumber": "FI01120389",
"name": "Nokia Oyj",
"parallelNames": [
"Nokia Abp",
"Nokia Corporation"
],
"companyForm": "Public limited company",
"industryCode": "70100",
"industry": "Activities of head offices",
"website": "https://www.nokia.com",
"visitingAddress": {
"street": "Karakaari 7",
"postalCode": "02610",
"city": "ESPOO",
"municipalityCode": "049"
},
"registrationDate": "1896-12-19",
"status": "Valid",
"active": true,
"bankrupt": false,
"vatRegistered": true,
"employerRegistered": true,
"prepaymentRegistered": true,
"sourceUrl": "https://avoindata.prh.fi/opendata-ytj-api/v3/companies?businessId=0112038-9"
}
Every run's dataset can be downloaded as JSON, CSV, Excel, XML or HTML from the Apify Console, or via https://api.apify.com/v2/datasets/<datasetId>/items?format=csv.
Run it from code
Python
from apify_client import ApifyClient # pip install apify-client
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"companies": [
"0112038-9",
"FI23365096",
"Kone"
]
}
run = client.actor("tinyrex/finland-company-search").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)JavaScript / Node.js
import { ApifyClient } from 'apify-client'; // npm i apify-client
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tinyrex/finland-company-search').call({
"companies": [
"0112038-9",
"FI23365096",
"Kone"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);curl (no SDK)
# Runs the actor and returns the results directly (CSV here; use format=json for JSON)
curl -X POST "https://api.apify.com/v2/acts/tinyrex~finland-company-search/run-sync-get-dataset-items?format=csv" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["0112038-9", "FI23365096", "Kone"]}' > results.csv
Get your API token in Apify Console โ Settings โ API & Integrations. The free Apify plan includes monthly credit that is enough to try this.
Use it from an AI agent (MCP)
The Apify MCP server exposes this actor as a tool for Claude, Cursor, VS Code, n8n and other MCP clients. Add this to your client's MCP config (or use the OAuth flow at mcp.apify.com instead of a token):
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=tinyrex/finland-company-search",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
}
Then ask in plain language, e.g. "Y-tunnus lookup api for this list and give me a table".
Pricing
Pay per result: $0.001 per company ($1 per 1,000); invalid business IDs, no-match searches, duplicates and filtered rows are free. You can cap the cost of every run in the run options.
FAQ
Is there a free API for Finnish company data?
Yes. PRH publishes the YTJ open data API with no key, under the Creative Commons Attribution 4.0 licence, which allows commercial reuse with attribution. This actor calls it politely and returns flat rows.
How do I get a list of all companies in a Finnish industry or city?
Set industryCodes and cities and run without companies. Only the company's main line of business counts, and matchTotal shows the full count of a search for market sizing.
Does it include emails or phone numbers?
No. The public register has no emails, phones, employee counts or financial statements. Many companies list a website, so you can pass those websites to a contact extractor.
What does it cost?
$0.001 per company returned ($1 per 1,000). Invalid business IDs, names with no match, duplicates and rows skipped by your filters are not charged.
Try it on Apify โMore guides
- Bulk tech stack lookup: a Wappalyzer / BuiltWith alternative for thousands of domains
- How to scrape Greenhouse, Lever and Ashby jobs (plus Personio, Teamtailor, Recruitee)
- How to export all products from any Shopify store to CSV or JSON
- How to scrape jobs from Workday career sites (myworkdayjobs.com)
- How to export products from any WooCommerce store to CSV or JSON
- How to export EU public tenders from TED (Tenders Electronic Daily) to CSV or JSON
- How to scrape remote jobs from Himalayas, Remote OK, We Work Remotely and more in one run
- How to export open EU funding calls (Horizon Europe, Digital Europe, cascade funding) to CSV or JSON
- How to turn any RSS or Atom feed into JSON or CSV (bulk, with monitoring)
- How to extract emails, phone numbers and social links from a list of company domains
- How to take bulk website screenshots from a URL list and save them to CSV or Google Drive
- How to export US federal (SAM.gov) and UK (Contracts Finder) tenders to CSV or JSON
- How to look up French companies by SIREN or SIRET and build a B2B list from Sirene
- How to look up Norwegian companies by organisation number and build lead lists from Brreg
- How to download SEC filings (10-K, 10-Q, 8-K, Form 4) by ticker and search EDGAR full text
- How to validate NPI numbers in bulk and build US healthcare provider lists from NPPES
- How to look up hundreds of UK companies on Companies House at once (profile, officers, PSC)
- How to extract all URLs from a website's sitemap (and find broken links)
- How to transcribe hundreds of audio and video files to text and subtitles with Whisper
- How to extract text from hundreds of PDFs, including scanned ones, in one run
- How to clean an email list before a campaign: bulk MX, disposable and typo check
- How to get Dutch public tenders from TenderNed into a spreadsheet, with daily alerts
- How to audit titles, meta descriptions, H1s and canonicals for hundreds of pages at once
- How to find every broken link and redirect on a website, with the pages to fix
- How to validate LEI codes and find the LEI for a list of companies in bulk
- How to run Lighthouse on hundreds of URLs and get Core Web Vitals in one table