Nordic Marketplace Scraper API - Blocket, FINN, DBA, Tori avatar

Nordic Marketplace Scraper API - Blocket, FINN, DBA, Tori

Pricing

from $2.00 / 1,000 listings

Go to Apify Store
Nordic Marketplace Scraper API - Blocket, FINN, DBA, Tori

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

Blackcube

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

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 scrapersThis Actor
Countries per run14
Currencywhatever the ad says, as textSEK / NOK / DKK / EUR, as a number plus an ISO code
Private vs dealerlocalised text: Privat, Yksityinen, Forhandlerone normalised field
Car mileagethe raw number — which is mil, not km, on two of the sitesreal kilometres
Saved searchesrebuild your filters by handpaste the URL
Re-running on a schedulepay again for every unchanged adpay only for what moved
A run that finds nothingusually still billedfree

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.

SourceCountryClassifiedsCarsJobsCompanies
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:

FieldRowsWhat it is
vehicle.dealerOrgId, vehicle.dealerGroupIdcarsthe marketplace's own id for the dealer and for its chain; null on private ads
vehicle.warrantyMonthscarsthe warranty, in months, as the ad states it
vehicle.serviceDocumentscarsthe documents the seller lists, verbatim, e.g. Service, Tilstandsrapport
vehicle.rangeKmcarselectric range in km, on electric and plug-in cars
vehicle.engineCccarsengine size in cm³
vehicle.rightToExchangecarsthe ad carries the site's exchange right (Bytesrätt, Bytterett)
job.salaryMin, job.salaryMax, job.salaryTypeIdFINN jobsthe salary range the advert states, and FINN's own code for its type

💵 Pricing

EventGOLD 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 ApifyClient
client = 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.