FINN.no Car Scraper (Norway)
Pricing
Pay per event
FINN.no Car Scraper (Norway)
Scrape used-car listings from FINN.no — Norway's dominant classifieds. Get make, model, year, price in NOK, mileage in km, fuel, gearbox, power (hp), body type, colour, first registration, seller type (dealer/private), location and photos. Export to JSON or CSV.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
🎯 What this scrapes
FINN.no is Norway's largest marketplace and lists tens of thousands of used cars — with no public API. This Actor scrapes the public car search: filter by free-text query, make, or paste a full FINN search URL, and (optionally) enrich each listing from its detail page with mileage, gearbox, engine power, body type, colour, first-registration date, and whether the seller is a dealer (Forhandler) or a private person. Built on curl-cffi with browser TLS impersonation and Apify residential proxy rotation.
🔥 What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- Used-car price analytics — track NOK price vs mileage and model year across the Norwegian market.
- Dealer-inventory monitoring — filter by
seller_type = dealerand watch a competitor's stock turnover. - EV market tracking — query electric makes/models and chart Norway's fast-moving used-EV pricing.
- Lead generation — build a directory of private sellers and dealers by make, region, and price band.
- Arbitrage + sourcing — spot under-priced listings the moment they appear with a daily diff.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchUrl | string | no | '—' | A full FINN.no car search URL you pasted (filters already applied), e.g. https://www.finn.no/mobility/search/car?m |
query | string | no | '—' | Free-text search (FINN q param), e.g. audi a4 quattro. Ignored when searchUrl is |
make | string | no | '—' | Convenience filter for a single car make, e.g. Tesla. Ignored when searchUrl is set. |
maxResults | integer | no | 50 | Hard cap on dataset rows. FINN serves ~45 listings per search page; we paginate up to this cap. |
enrichDetails | boolean | no | True | Fetch each car's detail page for mileage, gearbox, engine power, body type, colour, first-registration date, number of o |
proxyConfiguration | object | no | {'useApifyProxy': True} | Apify Proxy spec. Norwegian / residential exits are safest for FINN.no. |
Example input
{"query": "tesla","maxResults": 5,"enrichDetails": true,"proxyConfiguration": {"useApifyProxy": true}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
listing_id | string | FINN ad ID. |
listing_url | string | Absolute URL to the listing detail page. |
title | string | Listing title (make + model heading). |
make | ['string', 'null'] | Car make (brand), e.g. Tesla. |
model | ['string', 'null'] | Car model, e.g. Model 3. |
year | ['integer', 'null'] | Model year (Modellår). |
price | ['integer', 'null'] | Listing price as an integer in the listing currency. |
currency | ['string', 'null'] | ISO-4217 currency code — always NOK on FINN. |
mileage_km | ['integer', 'null'] | Odometer reading in kilometres (Kilometerstand). Enrichment-only. |
fuel_type | ['string', 'null'] | Fuel type (Drivstoff), e.g. Bensin, Diesel, Elektrisitet. Enrichment-only. |
transmission | ['string', 'null'] | Gearbox (Girkasse): Manuell or Automat. Enrichment-only. |
engine_power_hp | ['integer', 'null'] | Engine power in metric horsepower (Effekt, hk). Enrichment-only. |
engine_size_cc | ['integer', 'null'] | Engine displacement in cubic centimetres (from Slagvolum litres). Enrichment-only. |
body_type | ['string', 'null'] | Body type (Karosseri), e.g. Stasjonsvogn, Kombi, SUV. Enrichment-only. |
color | ['string', 'null'] | Exterior colour (Farge). Enrichment-only. |
first_registration | ['string', 'null'] | First registration date (1. gang registrert), DD.MM.YYYY. Enrichment-only. |
location | ['string', 'null'] | Seller location / place name. Enrichment-only. |
region | ['string', 'null'] | Region or country line (e.g. Norge). Enrichment-only. |
seller_type | ['string', 'null'] | dealer (Forhandler) or private (Privat). |
seller_name | ['string', 'null'] | Dealer trading name when the seller is a dealer. Enrichment-only. |
photo_urls | array | List of listing photo URLs. |
description | ['string', 'null'] | Short equipment / trim description line. |
posted_date | ['string', 'null'] | Date the listing was published, when available. |
scraped_at | string | ISO timestamp when this row was recorded. |
Example output
{"listing_id": "463169662","listing_url": "https://www.finn.no/mobility/item/463169662","title": "Renault Kangoo","make": "Renault","model": "Kangoo","year": 2014,"price": 33796,"currency": "NOK","mileage_km": 214713,"fuel_type": "Diesel","transmission": "Manuell","engine_power_hp": 90,"body_type": "Kasse","color": "Hvit","first_registration": "09.10.2013","location": "Norge","seller_type": "private","photo_urls": ["https://images.finncdn.no/dynamic/default/item/463169662/78cfeabc-d8b8-4c8c-99eb-ce53725c1209"],"scraped_at": "2026-06-02T00:00:00+00:00"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.05 | One-off warm-up charge per run |
result-row | $0.002 | PPE event |
Example: 1 000 results at the rates above ≈ $2.05. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
FINN paginates search results in pages of ~45 listings; very large result sets take proportionally longer. Detail enrichment doubles the request count and run time. Spec labels are Norwegian and mapped to standard fields; rare or missing labels surface as null rather than guessed values. Some private listings hide the seller's name behind a contact form, so seller_name can be null even when seller_type is known.
❓ FAQ
Does this cover new cars too?
The default search is FINN's used-car channel. Paste a searchUrl that includes new-car filters if you want those — the parser reads whatever the search page returns.
Why are mileage, gearbox and power sometimes null?
Those live on each car's detail page. Keep enrichDetails on (the default) to fill them; turn it off to halve the request count and get just make, model, year, price, photos, and seller type from the search payload.
What currency are prices in?
Norwegian kroner (NOK). The currency field is set to NOK and price is an integer amount.
How do I search a specific make or model?
Set make, type a query like audi a4, or paste a full FINN search searchUrl with the filters already applied — the URL wins if all three are set.
Is this a FINN-sanctioned API?
No. FINN.no publishes no public car API. This Actor scrapes the public website politely with browser TLS impersonation and proxy rotation — see the ToS notice in the README.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.