Oikotie Property Scraper
Pricing
from $1.32 / 1,000 property searches
Oikotie Property Scraper
Scrape asunnot.oikotie.fi: homes for sale and rent, holiday homes, plots, garages and farms. Prices, m2, rooms, hoitovastike, energy class, GPS and agent contacts.
Pricing
from $1.32 / 1,000 property searches
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Oikotie Scraper — Finnish Property, Rental & Agency Data 🚀
🎉 All ten Oikotie sections, 73 fields per row, and Finland's 1,791 estate-agency offices with phone and email
Built for analysts, brokers and proptech teams who need the Finnish market as a table, not as browser tabs
🔎 What is the Oikotie Scraper — and when should you use it?
The Oikotie Scraper turns any search on Oikotie, the portal Finnish property runs through into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.
Use it when you need: Finnish asking prices as three separate numbers: the debt-free price, the selling price and the share of housing-company debt. Rows also carry price per m², living area, lot area, room count, the Finnish room layout string, build year, floor out of total floors and WGS84 coordinates. Rental rows swap the sale price for a monthly rent and Oikotie's own view counters. Full detail adds the maintenance and financial fees, the water fee, the energy class, the heating method, completed and planned renovations, the housing company's name and business ID, every photo, and the selling agent's name, title and direct phone. A separate operation returns Finland's estate-agency offices with street address, phone, email, website and Y-tunnus.
Use something else when: the market is not Finland. Use Hemnet Scraper for Sweden, including the sold-price archive. Use FINN.no Property Scraper for Norway, across all seven Eiendom sections. Use Funda.nl Scraper for the Netherlands, with price per m² and agents. This actor reads live Oikotie listings only. Finland publishes realised transaction prices through the tax administration rather than the portal, so sold prices are not available here — a listing disappearing between two scheduled runs is the closest signal. Tori.fi needs no separate actor: its property vertical closed and merged into Oikotie in autumn 2023. Oikotie's condition filter is deliberately not exposed, because two of its values return identical result counts and the mapping could not be proved from live data.
🤖 Use with AI agents
Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/oikotie-property-scraper
Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.
Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:
I want to research the Finnish property market, including its rental, holiday, land and commercial inventory using the Apify Actor `sian.agency/oikotie-property-scraper`.Use it when I need: Finnish asking prices as three separate numbers: the debt-free price, the selling price and the share of housing-company debt. Rows also carry price per m², living area, lot area, room count, the Finnish room layout string, build year, floor out of total floors and WGS84 coordinates. Rental rows swap the sale price for a monthly rent and Oikotie's own view counters. Full detail adds the maintenance and financial fees, the water fee, the energy class, the heating method, completed and planned renovations, the housing company's name and business ID, every photo, and the selling agent's name, title and direct phone. A separate operation returns Finland's estate-agency offices with street address, phone, email, website and Y-tunnus.Don't use it when: the market is not Finland — use hemnet-property-scraper or finn-no-property-scraper or funda-property-scraper instead.How to call it: pick one `operation` per run. `search` takes a `section` — `homesForSale`, `homesForRent`, `holidayHomesForSale`, `holidayHomesForRent`, `plots`, `forestAndFarms`, `garagesForSale`, `garagesForRent`, `commercialForSale` or `commercialForRent` — and a `locations` list of plain Finnish place names, which may be cities, districts, regions or postcode areas; leave `locations` empty to sweep the whole country. Narrow with `minPrice`, `maxPrice`, `minSizeSqm`, `maxSizeSqm`, `rooms` (`any`, `1` to `6`, or `7plus`), `propertyType` (the Finnish building categories, from `apartmentBuilding` to `woodenApartment`), `minYearBuilt`, `maxYearBuilt` and `newDevelopmentOnly`, then order the result with `sortBy` and cap it with `maxResults`. Set `fullDetails` to true to fetch each listing's own page as well, which is what carries the fees, the renovation history and the agent's phone, billed once per enriched row. To expand listings you already have, set `operation` to `listingDetail` and pass `listingUrls`, which takes full Oikotie listing URLs; Apify validates the field as a URL list, so a bare listing number is refused. To build a lead list instead, set `operation` to `agencyDirectory`, optionally filtering by city through `locations` and by name through `agencyQuery`..Start with this input:{"operation": "search","section": "homesForSale","locations": ["Helsinki","Espoo"],"rooms": "2","maxPrice": 300000,"sortBy": "newest","maxResults": 120}Ask me which Finnish areas they want, which section they mean, and whether they need the full record with fees and agent contacts or just the search rows, then run the Actor and summarise the results as a table.
Things you can ask your agent for:
- Pull every two-room flat under 300,000 euros in Helsinki and Espoo and give me the median price per m² by district.
- Find rentals in Tampere posted this week, fetch the full record for the five cheapest, and list the agents with their phone numbers.
- List every estate-agency office in Turku that publishes an email address, with their business IDs so I can join them to the trade register.
Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/oikotie-property-scraper.md.
📋 Overview
Finland's property market lives on one portal now. Oikotie carries the country's homes for sale and to rent, its holiday homes, plots, forest estates, garages and commercial premises — and this Actor reads all ten of those sections through one input form.
What you get:
- ✅ Ten sections, one selector: homes for sale (142,200 live listings), homes to rent (26,500), holiday homes, plots, forest and farm estates, garages and commercial premises.
- ⚡ 100 listings per request: a full sweep of Helsinki's for-sale stock is a single run, and paging stays valid deep into a result set.
- 🎯 73 fields per row, typed from real listings rather than guessed: numbers arrive as numbers, dates as timestamps, photos as URLs.
- 💰 Charged per row returned: an area that matched nothing, or a listing that had been withdrawn, costs you nothing.
- 💎 An agency directory no rival Oikotie actor ships: 1,791 Finnish brokerage offices with street address, phone, email, website and Y-tunnus.
- ✨ Finnish price structure done properly: debt-free price, selling price and share of housing-company debt come back as three separate numbers, the way a Finnish buyer reads them.
✨ Features
- 🏘️ Section selector: pick homes, rentals, holiday homes, plots, forest estates, garages or commercial premises without learning a URL scheme.
- 📍 Plain Finnish place names: type Helsinki, Kallio, Uusimaa or a postcode area and the Actor resolves it against Oikotie's own location tree at run time.
- 📐 Filters that run on the portal: price, living area, room count, building type, construction year and new-developments-only are applied before rows are counted, so a narrow search is a cheap search.
- 📄 Full-detail mode: switch it on and every row gains fees, energy class, renovation history, every photo and the agent's direct phone.
- 🧾 Housing-company paperwork: maintenance fee, financial fee, water fee, lot ownership, the company name and its business ID.
- 🧑💼 Agent and agency contacts: name, job title, photo, direct phone, plus the office's phone, website and address.
- 🗺️ Coordinates on every listing: latitude and longitude in WGS84, ready to map.
- 📈 Change signals for free: publication date, price-change timestamp, next viewing slot and Oikotie's own view counters.
- 🏢 National agency directory: every brokerage office in Finland, filterable by city and by name.
- 🔄 Schedule-friendly: run the same search daily and the diff gives you new listings, price cuts and stale stock.
🎬 Quick Start
Pick an operation, name the areas you care about, press Start. Results land in the dataset as JSON, CSV or Excel, and a run report with the highlights is written to the key-value store. The default input works as-is — a bare run returns the newest homes for sale in Helsinki.
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~oikotie-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation":"search","section":"homesForSale","locations":["Helsinki"],"maxResults":100}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose what to scrape
Pick an operation — Property Search, Listing Detail or Estate Agency Directory — and, for a search, the Oikotie section.
Step 2: Name your areas
Type Finnish place names into Areas: cities, districts, regions or postcode areas. Leave it empty to sweep the whole country.
Step 3: Set your budget and run
Max results caps the rows the run returns and bills for. Press Start.
That's it! In about a minute, you'll have:
- A structured table of live Finnish listings
- Prices, sizes, coordinates and agency names on every row
- A run report with the links and the exact charges
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
operation | string | No | search, listingDetail or agencyDirectory. Defaults to search. |
section | string | No | Which Oikotie section to search. Defaults to homesForSale. |
locations | array | No | Finnish place names. Empty means all of Finland. |
sortBy | string | No | newest, oldest, priceAsc, priceDesc or largest. |
maxResults | integer | No | Row ceiling for the whole run. Defaults to 50. |
minPrice / maxPrice | integer | No | Asking price in euros, or monthly rent for rental sections. 0 means no bound. |
minSizeSqm / maxSizeSqm | integer | No | Living area in m². 0 means no bound. |
rooms | string | No | any, 1–6 or 7plus. |
propertyType | string | No | Finnish building category: kerrostalo, rivitalo, omakotitalo and the rest. |
minYearBuilt / maxYearBuilt | integer | No | Construction year bounds. 0 means no bound. |
newDevelopmentOnly | boolean | No | Keep only uudiskohteet. |
fullDetails | boolean | No | Fetch each listing's full record, including the agent's phone. |
listingUrls | array | No | Oikotie listing URLs, for the Listing Detail operation. |
agencyQuery | string | No | Filter the agency directory by name or parent group. |
Example:
{"operation": "search","section": "homesForSale","locations": ["Helsinki", "Espoo"],"rooms": "2","maxPrice": 300000,"sortBy": "newest","maxResults": 200}
Listing detail from a shortlist:
{"operation": "listingDetail","listingUrls": ["https://asunnot.oikotie.fi/myytavat-asunnot/helsinki/24678422","https://asunnot.oikotie.fi/vuokra-asunnot/helsinki/24661093"]}
Agency lead list:
{"operation": "agencyDirectory","locations": ["Turku"],"maxResults": 100}
📤 Output
Results are saved to the Apify dataset with 73 fields including:
| Field | Type | Description |
|---|---|---|
listingId | number | Oikotie's own listing ID |
listingUrl | string | Link to the listing |
headline | string | The seller's headline |
priceEur | number | Debt-free price (velaton hinta) |
sellingPriceEur | number | Selling price (myyntihinta) |
shareOfDebtEur | number | Share of housing-company debt |
rentPerMonthEur | number | Monthly rent, on rental sections |
pricePerSqmEur | number | Price per m², on sale sections |
sizeSqm | number | Living area |
rooms | number | Room count |
streetAddress / district / city | string | Where it is |
latitude / longitude | number | WGS84 coordinates |
energyClass | string | Energy certificate class and year |
maintenanceFeeEur | number | Hoitovastike, per month |
agentName / agentPhone | string | The selling agent and their direct number |
agencyName / agencyBusinessId | string | The brokerage and its Y-tunnus |
Example:
{"listingId": 24678422,"listingUrl": "https://asunnot.oikotie.fi/myytavat-asunnot/helsinki/24678422","headline": "RT 4 h, k, kph, s","section": "Homes for sale","propertyType": "Rivitalo","priceText": "179 000 €","priceEur": 179000,"sellingPriceEur": 112139.4,"shareOfDebtEur": 66860.6,"pricePerSqmEur": 1851.09,"sizeSqm": 96.7,"rooms": 4,"roomLayout": "RT 4 h, k, kph, s","streetAddress": "Uittamontie 4, 00940 Helsinki","district": "Vesala","city": "Helsinki","postalCode": "00940","region": "Uusimaa","latitude": 60.2475154231,"longitude": 25.0828770784,"buildYear": 1975,"maintenanceFeeEur": 392.22,"financialFeeEur": 305.06,"waterFeeEur": 24,"energyClass": "D, 2018","heating": "Kaukolämpö, Vesikiertoinen keskuslämmitys, Patteri","housingCompanyName": "Asunto-oy Vesalan pientalot","housingCompanyBusinessId": "0221622-7","hasSauna": true,"agentName": "Nina Kyyhkyläinen-Kallioniemi","agentPhone": "+358 50 4200303","agencyName": "Vantaan Habita Oy, Habita Vantaa","photoCount": 16}
💼 Use Cases & Examples
1. Finnish Housing Market Analysis
Analysts and valuers who need a price index at district granularity, not a national average.
Input: A section, a list of municipalities, and a generous max results. Output: Debt-free price, selling price, share of debt, living area, build year and energy class on every row. Use: Compute price per m² by district and track it week over week.
2. Estate Agent & Agency Lead Lists
Proptech vendors and recruiters selling into Finnish brokerages.
Input: The Estate Agency Directory operation, optionally filtered by city or by group name. Output: 1,791 offices with street address, phone, email, website, business ID and parent group. Use: Load it into a CRM and join it to the trade register on the Y-tunnus.
3. Rental Yield & Portfolio Monitoring
Landlords and rental operators benchmarking against live comparables.
Input: The rentals section, the districts you own in, and a rent range. Output: Monthly rent, size, rooms, floor, build year and Oikotie's own view counters. Use: See which asking rents attract interest before you set yours.
4. Housing Company Due Diligence
Buyers, brokers and lenders reading the paperwork behind a flat.
Input: Listing Detail with a shortlist of URLs. Output: Maintenance fee, financial fee, water fee, heating method, completed renovations, planned renovations and the housing company's business ID. Use: Compare five candidate flats on their real monthly cost, in one table.
5. New-Build and Plot Pipeline Tracking
Developers and land buyers watching where Finnish supply comes from.
Input: New developments only, or the plots and forest-and-farm sections. Output: Lot area, ownership type, coordinates and asking price. Use: Map the pipeline months before it reaches the resale market.
6. Price Drop & Days-on-Market Alerting
Agents and buyers hunting for motivated sellers.
Input: The same search, on a daily schedule. Output: Publication date and price-change timestamp on every row. Use: Diff two runs and you have today's price cuts and this month's stale stock.
7. Commercial Property Sourcing
Tenant reps and occupiers looking at Finnish office and retail space.
Input: The commercial sections, plus a size range. Output: Asking rent or price, floor area, address and the marketing agency. Use: Build a shortlist of premises without opening a single browser tab.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/oikotie-property-scraper').call({operation: 'search',section: 'homesForSale',locations: ['Helsinki'],maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/oikotie-property-scraper').call(run_input={'operation': 'search','section': 'homesForRent','locations': ['Tampere'],'maxResults': 100,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~oikotie-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation":"agencyDirectory","locations":["Turku"],"maxResults":100}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule or webhook
- HTTP Request: Call the Actor API
- Process: Handle the JSON results
- Action: Save to a sheet, alert on price cuts, or push into a CRM
📊 Performance & Pricing
FREE Tier (Try It Now)
- 25 rows per run, with every field and every section available
- No credit card required
- Enough to see whether the data fits your model
PAID Tier (Production Ready)
- Unlimited rows per run, up to the ceiling you set
- Pay per row returned: an area that matched nothing, and a listing that had been withdrawn, cost you nothing
💰 Priced under the two most-installed Oikotie actors on the Store, and it covers nine sections and an agency directory that neither of them does.
❓ Frequently Asked Questions
Q: Do I need an API key, a login or a proxy? A: No. Give it an area and press Start.
Q: How many rows can I get? A: FREE tier: 25 per run. PAID tier: as many as the section holds. Helsinki's for-sale stock alone is about 8,100 rows, and paging stays valid deep into a result set.
Q: What do I put in Areas? A: Plain Finnish place names. A city (Helsinki, Tampere), a district (Kallio, Töölö), a region (Uusimaa) or a postcode area all resolve, because the name is matched against Oikotie's own location tree at run time.
Q: Why are some prices two numbers? A: Finnish flats are sold as housing-company shares, so a listing carries a debt-free price and a selling price. The difference is the share of company debt attached to the flat. Rows give you all three, and price per m² is computed on the debt-free price, the same way Oikotie shows it.
Q: Can I get sold prices? A: No. Oikotie publishes live listings, not completed transactions, so you get asking prices and price changes. A listing disappearing between two scheduled runs is the closest available signal.
Q: Is Tori.fi covered too? A: There is nothing left to cover. Tori's property vertical closed and merged into Oikotie in autumn 2023.
Q: What output formats are available? A: JSON, CSV and Excel, exported straight from the Apify dataset.
Q: Is this legal? A: Yes. Only publicly available data is collected; see the legal section below.
🐛 Troubleshooting
"Oikotie does not know the area …"
- Check the Finnish spelling, including ä and ö.
- Try the parent area: a district that is too small to have its own node resolves under its city.
A search returns fewer rows than Max results
- The filters matched fewer listings than your ceiling. The run log prints the total Oikotie reported for each area before paging starts.
A listing detail comes back "no longer live"
- The listing was withdrawn or sold. Re-run the search to pick up its replacement; you are not charged for it.
Rental rows have no price per m²
- That is deliberate. A rental's rent per m² is a monthly figure, and mixing it into the same column as a sale price per m² would make any average over a mixed export meaningless.
An agency row has no phone or email
- Not every office publishes both. The directory returns whatever that office chose to make public; the address and business ID are always there.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
Oikotie is a trademark of Vend Suomi Oy. This Actor is not affiliated with, endorsed by, or sponsored by Oikotie.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools