Nordic Marketplace Scraper API - Blocket, FINN, DBA, Tori
Pricing
from $2.00 / 1,000 listings
Nordic Marketplace Scraper API - Blocket, FINN, DBA, Tori
Blocket (SE), FINN (NO), DBA (DK) and Tori (FI) in one run and one schema: classifieds, cars and jobs across all four Nordic countries, with real currencies, coordinates and private-vs-dealer normalised. Paste a saved-search URL. Car rows carry plate, VIN and real km. Failures are free.
Pricing
from $2.00 / 1,000 listings
Rating
0.0
(0)
Developer
Blackcube
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Nordic Marketplace Scraper API — Blocket, FINN, DBA & Tori
| Nordic Marketplaces Suite • 8 Actors, one codebase, one listing billed once | ||
| Nordic Marketplace Scraper API ➤ You are here | Blocket Scraper API Sweden Classifieds & Cars | FINN.no Scraper API Norway Ads, Cars & Jobs |
| Nordic Car Scraper API Plate, VIN & Mileage | Nordic Company Registry API Norway & Finland | Nordic Jobs Scraper API Platsbanken & FINN |
| DBA.dk Scraper API Denmark Classifieds & Cars | Tori.fi Scraper API Finland Classifieds Marketplace | |
More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · Shopify Store Intelligence Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted · Trustpilot Review Intelligence Suite · App Store & Google Play Reviews Suite · Etsy Research Suite · YouTube Comments Intelligence Suite · Telegram Channel Intelligence Suite · Business Reviews Suite · Google Trends Suite · Amazon Product Data Suite · Polymarket Order Book · Google Sheets Suite · TikTok Suite · Snapchat Suite · LinkedIn Public Data Suite · Instagram Suite · Contact Validation Suite · Google Maps Suite · X / Twitter
| The Nordic marketplaces suite — 8 Actors, one engine | ||
Sweden, Norway, Denmark and Finland in one run and one schema. Blocket, FINN.no, DBA.dk and Tori.fi — classifieds, cars and job adverts — returned as rows you can put straight into one table and compare, with real currencies, real coordinates and private-versus-dealer already worked out.
A run that finds nothing costs nothing. There is no run-start fee, error and coverage rows are free, and on a schedule an ad is billed only when it has actually changed.
⭐ Why this one
Every other Nordic scraper on the Store does one site. Stitching four of them together means four listings, four schemas, four invoices, four sets of field names — and then a normalisation job you have to write and maintain yourself. This is one run.
| Single-site scrapers | This Actor | |
|---|---|---|
| Countries per run | 1 | 4 |
| Currency | whatever the ad says, as text | SEK / NOK / DKK / EUR, as a number plus an ISO code |
| Private vs dealer | localised text: Privat, Yksityinen, Forhandler | one normalised field |
| Car mileage | the raw number — which is mil, not km, on two of the sites | real kilometres |
| Saved searches | rebuild your filters by hand | paste the URL |
| Re-running on a schedule | pay again for every unchanged ad | pay only for what moved |
| A run that finds nothing | usually still billed | free |
The mileage trap, because it will cost you money
Blocket and FINN publish car mileage in Scandinavian mil — and one mil is ten kilometres. A car listed at 1978 has done 19,780 km, not 1,978. Any tool that copies the number through understates every Swedish and Norwegian car by a factor of ten. This Actor returns mileageKm converted, and keeps the raw value and its unit beside it so you can check the arithmetic.
🚀 Run it
Press Start. The defaults search all four countries and return 100 ads.
The fastest way to get exactly what you want
Build the search on the site — region, category, price band, condition, mileage, whatever it offers — then copy the address bar into startUrls. The URL is used exactly as you gave it, so every filter the site applies, you get.
{"startUrls": ["https://www.blocket.se/mobility/search/car?price_to=60000&fuel=2","https://www.finn.no/recommerce/forsale/search?q=iphone"],"maxItems": 500}
Named recipes
Watch a competitor's stock every morning, and pay only for what changed
{ "startUrls": ["https://www.blocket.se/mobility/search/car?dealer_segment=2"],"monitorChangesOnly": true, "watchFields": ["price"], "maxItems": 2000 }
One product across all four countries, private sellers only
{ "query": "iphone 15", "sellerType": "private", "maxItems": 400 }
Nordic used-car stock with plate, VIN and mileage
{ "vertical": "car", "query": "volvo", "sources": ["blocket", "finn", "dba"], "maxItems": 500 }
Norwegian and Finnish companies, excluding the ones winding up
{ "vertical": "company", "municipality": "0301", "onlyActiveCompanies": true, "maxItems": 1000 }
Swedish and Norwegian job adverts, posted this week
{ "vertical": "job", "query": "developer", "publishedWithinDays": 7, "maxItems": 300 }
🗺️ What each source carries
Published as a matrix rather than as a coverage claim, because not every site has every section. Anything you ask for that does not exist comes back as a free row telling you so, never as a silent gap.
| Source | Country | Classifieds | Cars | Jobs | Companies |
|---|---|---|---|---|---|
| Blocket | 🇸🇪 Sweden | ✅ | ✅ | — | — |
| FINN | 🇳🇴 Norway | ✅ | ✅ | ✅ | — |
| DBA | 🇩🇰 Denmark | ✅ | ✅ | — | — |
| Tori | 🇫🇮 Finland | ✅ | — | — | — |
| Platsbanken | 🇸🇪 Sweden | — | — | ✅ | — |
| Brønnøysundregistrene | 🇳🇴 Norway | — | — | — | ✅ |
| PRH / YTJ | 🇫🇮 Finland | — | — | — | ✅ |
What this Actor does not do, stated plainly: Swedish property portals (Hemnet, Booli) refuse automated access outright, so there is no Swedish real-estate data here and none is promised. Swedish and Danish company registers are not free to redistribute, so the company vertical is Norway and Finland only.
📦 What a row looks like
Every row has the same shape whichever country it came from — that is the whole point.
{"type": "listing","source": "blocket","country": "SE","vertical": "marketplace","id": "26095115","key": "blocket:26095115","url": "https://www.blocket.se/recommerce/forsale/item/26095115","title": "DBS damcykel 28 tum","price": { "amount": 1800, "currency": "SEK" },"location": "Uppsala","geo": { "lat": 59.86394, "lon": 17.64738 },"publishedAt": "2026-08-28T09:03:48.000Z","images": ["https://images.blocketcdn.se/..."],"sellerType": "private","tradeType": "Säljes","attributes": { "brand": ["DBS"] },"scrapedAt": "2026-08-28T10:18:13.692Z"}
A car row adds a vehicle block — make, model, series, trim, year, mileageKm, fuel, transmission, registration plate and VIN where the marketplace publishes them, dealer name and trade-body memberships. A job row adds job — employer, deadline, vacancy count, work locations. A company row adds company — organisation number, legal form, industry code, registered address, and the bankrupt / inLiquidation flags.
Car and job rows also carry what dealer-stock buyers and recruiters compare on. Each is null when the ad does not state it:
| Field | Rows | What it is |
|---|---|---|
vehicle.dealerOrgId, vehicle.dealerGroupId | cars | the marketplace's own id for the dealer and for its chain; null on private ads |
vehicle.warrantyMonths | cars | the warranty, in months, as the ad states it |
vehicle.serviceDocuments | cars | the documents the seller lists, verbatim, e.g. Service, Tilstandsrapport |
vehicle.rangeKm | cars | electric range in km, on electric and plug-in cars |
vehicle.engineCc | cars | engine size in cm³ |
vehicle.rightToExchange | cars | the ad carries the site's exchange right (Bytesrätt, Bytterett) |
job.salaryMin, job.salaryMax, job.salaryTypeId | FINN jobs | the salary range the advert states, and FINN's own code for its type |
💵 Pricing
| Event | GOLD per 1,000 |
|---|---|
| listing — one classified ad | $2.00 |
| vehicle — one car with plate, VIN and specs | $6.00 |
| company — one official register record | $3.00 |
| job — one job advert | $3.00 |
Never billed: a run that returns nothing, an ad that could not be read, a coverage row and the run summary. With monitorChangesOnly on, an ad that has not moved since the last run is not billed as a listing: it costs one listing-check, a tenth of the listing price. There is no run-start fee.
Set maxCostUsd to cap what a single run may spend. It stops cleanly at the limit and tells you so in the free summary row.
❓ FAQ
Do I need a proxy, an account or an API key?
No. Everything is handled for you and there is nothing to buy on top.
Can I use my saved search from Blocket or FINN?
Yes — that is the recommended way to use this. Build the search on the site, copy the address bar into startUrls, and the filters come through exactly as the site applies them.
I asked for 100 ads and got 25 from each country. Why?
Deliberately. The limit is shared evenly between the sources you selected, so a small budget still gives you a Nordic dataset rather than 100 Swedish ads and nothing else.
How do I stop a schedule charging me for data I already have?
Set monitorChangesOnly to true. Only ads that are new, or whose watched fields moved, are billed in full; everything else comes back as a free unchanged row and is billed a tenth of the ad price as an ad checked. Choose what counts as a change with watchFields.
Why do I get fewer ads than the site says exist?
Because of maxItems or maxPages, and the free coverage row tells you exactly which: it carries the total the site reports, how many pages exist, how many were read, how many rows you got, and whether the walk genuinely reached the end.
Does it cover Hemnet, Booli or Bilbasen?
No, and it never claims to. Those sites block automated access, and a listing that promised them would be lying to you.
What currency are prices in?
Each ad's own — SEK, NOK, DKK or EUR — as a number plus its ISO code, never as a formatted string. Nothing is converted, so no invented exchange rate ever enters your data.
Is the car mileage in kilometres?
Yes, always, in mileageKm. The raw value and its unit are kept beside it so you can verify the conversion.
Can I run this on a schedule?
Yes, and it is built for it. Turn on monitorChangesOnly first, and an hourly or daily cron costs a fraction of the first run.
Use it from n8n, MCP, the API or a schedule
Built to be called by a workflow, not only from the Store form. The Actor is vonsensey/blocket-finn-nordic-marketplace-scraper-api; every snippet below sends {}, which runs the defaults shown on the form — replace it with your own input.
n8n
Install the Apify community node (@apify/n8n-nodes-apify under Settings → Community Nodes, or search "Apify" on n8n Cloud). Add Apify → Run Actor with Actor vonsensey/blocket-finn-nordic-marketplace-scraper-api and your input JSON, then Apify → Get Dataset Items on the run's defaultDatasetId and pipe the rows anywhere. For scheduled runs, the On new Apify Event trigger fires when a run of this Actor finishes.
MCP (Claude, Cursor, VS Code, any MCP client)
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=vonsensey/blocket-finn-nordic-marketplace-scraper-api","headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
Your agent then calls vonsensey/blocket-finn-nordic-marketplace-scraper-api as a tool with the same input the form takes and reads the dataset back.
REST API (one call, rows in the response)
curl -X POST "https://api.apify.com/v2/acts/vonsensey~blocket-finn-nordic-marketplace-scraper-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" -d '{}'
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("vonsensey/blocket-finn-nordic-marketplace-scraper-api").call(run_input={})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('vonsensey/blocket-finn-nordic-marketplace-scraper-api').call({});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Make, Zapier, LangChain, CrewAI
The Apify app in Make and Zapier has a Run an Actor module: pick vonsensey/blocket-finn-nordic-marketplace-scraper-api. In LangChain and CrewAI the Apify tool wrappers take the same Actor id. A daily schedule needs nothing but the Console: Schedules → Create → this Actor → cron, and the dataset fills on its own.
Run it without configuring anything — Scrape Blocket, FINN, DBA and Tori in one run, a ready-made example you can start as-is or copy.
Use cases
- Watch competitor stock across borders. Put a saved search from Blocket, FINN, DBA or Tori on a cron and pay only for the ads whose price or title actually moved — everything unchanged comes back as a free row.
- Price one product in four markets at once. The same search runs in Sweden, Norway, Denmark and Finland and returns rows with real SEK, NOK, DKK and EUR amounts, so a price comparison needs no currency guesswork.
- Build a Nordic used-car dataset. Make, model, year, mileage in real kilometres, fuel, transmission, and the registration plate and VIN where the marketplace publishes them, across three countries in one schema.
- Generate B2B leads from official registers. Norwegian and Finnish company records with organisation number, industry code, registered address and the bankrupt / in-liquidation flags, so a lead list excludes companies that are winding up.
- Track Nordic hiring. Swedish Platsbanken and Norwegian FINN job adverts in one schema with employer, organisation number, deadline and vacancy count — billed only for adverts that are new or changed.
Run it on a schedule
A one-off pull answers a question; a schedule answers it every day without you. Open Schedules in the Apify Console, point a cron at this Actor, and the dataset keeps filling on its own — no server, no cron box, no babysitting. Everything here is built to be re-run: you are billed per listing delivered, and the FAQ below says exactly what a scheduled run that finds nothing new costs.
FAQ
Do I need a proxy or an account?
No. Everything is handled for you and there is nothing to buy on top.
Can I use the saved search I already built on the site?
Yes — paste it into startUrls. The URL is used exactly as given, so every filter the site applies, you get.
What currency are prices in?
Each ad's own — SEK, NOK, DKK or EUR — as a number plus its ISO code. Nothing is converted, so no invented exchange rate enters your data.
Is car mileage in kilometres?
Yes, always. Blocket and FINN publish Scandinavian mil, where one mil is ten kilometres; mileageKm is converted and the raw value is kept beside it.
Why did I get an even split across countries instead of all my rows from one?
Deliberate: the row limit is shared between the sources you selected, so a small budget still gives you a Nordic dataset rather than one country.
Does this cover Hemnet, Booli or Bilbasen?
No, and it never claims to — those sites block automated access, and a listing that promised them would be lying.
How do I stop a schedule charging me for data I already have?
Set monitorChangesOnly. Only ads that are new or that actually moved are billed; the rest are free rows.
Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.