L logiover
real-estate · May 24, 2026 · 6 min read

How to Scrape Finn.no Listings in 2026

Extract Norway's Finn.no classifieds — real estate, used cars, jobs and marketplace items — via internal JSON APIs. Prices, specs, GPS, images and seller data at scale.

Finn.no is Norway’s dominant classifieds platform — over 4 million monthly users and the default place Norwegians buy and sell homes, cars, jobs, and used goods. If you want structured Norwegian market data, almost everything flows through Finn. And like the best scraping targets, Finn’s front end is powered by internal JSON APIs: there’s no HTML to parse and no headless browser required. This guide covers the four verticals Finn spans, how the JSON extraction works, and the schema decisions that matter when you’re modeling Norwegian prices.

Four verticals, one platform

Finn.no isn’t one dataset — it’s four, each with its own field shape:

  • Real estate — for-sale and rental property: total price, price-per-m², shared/common monthly fees, living and usable area, rooms, build year, ownership type, energy label, full address and GPS.
  • Used cars (Torget/Motor) — make, model, year, mileage, fuel type (Norway is a heavy EV market, so EV vs. combustion is a first-class split), transmission, power, asking price, dealer vs. private seller.
  • Jobs — title, employer, location, sector, employment type, application deadline.
  • Marketplace (Torget / BAP) — second-hand consumer goods: category, condition, price, brand, location.

Across all four you also get image URLs, GPS coordinates where available, and seller/agent/dealer identity. The actor returns consistent, record-oriented JSON so each vertical lands in a clean table.

The extraction reality: internal JSON APIs

Finn’s web app fetches listing data from internal JSON endpoints and renders it client-side. The scraper talks to those endpoints directly, which has real advantages:

  • No browser. No Playwright, no DOM scraping, no JavaScript execution — the data arrives as JSON.
  • Automatic pagination. Finn’s result sets are paged; the actor follows pages to completion so you get the full set, not page one.
  • Deduplication. Listings can surface across multiple queries and pages; the actor dedupes so you don’t double-count.
  • Free-text and location queries. Search by keyword and target any Norwegian municipality, so you can scope a run to “Oslo apartments” or “EVs nationwide.”
  • Thousands per run. Because there’s no per-page render cost, throughput is high.

Finn doesn’t run an aggressive datacenter-IP wall like the big OTAs, but it is a private API serving a popular site — so polite pacing and clean pagination are what keep a run robust. That logic is solved inside the actor rather than something you reinvent.

Run the Finn.no Scraper — real estate, used cars, jobs and marketplace listings across all of Norway. JSON output with prices, GPS, images and seller details. Thousands of listings per run.

How querying works

The inputs map onto Finn’s own search model:

vertical:   realestate | car | job | marketplace
query:      free-text, e.g. "leilighet" / "Tesla Model 3"
location:   municipality / region (any Norwegian kommune)
filters:    vertical-specific (price range, year, mileage,
            fuel type, property type, sector...)
limit:      target listing count (paged + deduped under the hood)

A practical monitoring pattern: pick a vertical, scope the location, and schedule. For real estate analysts that’s a daily sweep of target cities to track price-per-m² drift; for a car valuation tool it’s a recurring pull by make/model/year to maintain a live pricing surface; for recruiters it’s a periodic job sweep by region and sector.

Schema design for downstream use

Because the verticals differ, model them as separate tables sharing a common envelope. A real estate row:

{
  "vertical": "realestate",
  "listing_id": "412938471",
  "url": "https://www.finn.no/realestate/homes/ad.html?finnkode=412938471",
  "title": "Lys 3-roms med balkong, Grünerløkka",
  "total_price_nok": 5950000,
  "shared_cost_nok": 0,
  "monthly_fee_nok": 3200,
  "price_per_m2_nok": 84285,
  "living_area_m2": 70.6,
  "usable_area_m2": 74.0,
  "rooms": 3,
  "build_year": 1936,
  "ownership_type": "eier (selveier)",
  "energy_label": "D",
  "city": "Oslo",
  "address": "Markveien 35",
  "lat": 59.9239,
  "lon": 10.7585,
  "seller_type": "agency",
  "agent_name": "DNB Eiendom",
  "image_url": "https://images.finncdn.no/.../1600w.jpg",
  "scraped_at": "2026-05-24T09:00:00Z"
}

And a used-car row:

{
  "vertical": "car",
  "listing_id": "398122003",
  "make": "Tesla",
  "model": "Model 3 Long Range",
  "year": 2022,
  "mileage_km": 41200,
  "fuel": "electric",
  "transmission": "automatic",
  "price_nok": 329000,
  "seller_type": "dealer",
  "dealer_name": "Bilhuset AS",
  "city": "Bergen",
  "scraped_at": "2026-05-24T09:00:00Z"
}

Schema choices worth making:

  • Separate total_price, shared_cost, and monthly_fee for property. Norwegian listings split the asking price from joint debt and monthly common costs; conflating them ruins yield and affordability models.
  • Treat fuel as a first-class dimension for cars. Norway’s EV penetration is the highest in the world; EV-vs-combustion is the most important segmentation you’ll run.
  • Use finnkode (listing_id) as the join key. It’s Finn’s stable identifier across edits.
  • Keep price_per_m2 if Finn provides it, but recompute from area to verify. Listings occasionally report it inconsistently.
  • Stamp scraped_at. Classifieds turn over fast; you need to know when a price was live.

Typical use cases

  • Real estate analysts and investors — track price, price-per-m², total price, and monthly fees across Norwegian cities to model rental yield and valuations.
  • Car dealerships and valuation tools — monitor used-car pricing by make/model/year, compare EV vs. combustion, and watch competitor inventory.
  • Recruiters and labour-market researchers — analyze which companies are hiring, where, and for which skills.
  • Lead generation — aggregate agent, broker, and dealer contact data from listings.
  • Resale and price-monitoring platforms — track second-hand goods pricing and brand presence on the BAP marketplace.
  • AI/ML teams — build Norwegian-language property and product description datasets.

Cost math

The actor is pay-per-event: a tiny start fee, no per-result charge. With no browser and no proxy bandwidth, runs are cheap and fast — thousands of listings per run. A daily multi-city real estate sweep, or a recurring car-pricing pull, typically lands in the low single digits of dollars per month and often fits inside Apify’s free monthly credit.

Rolling your own would mean reverse-engineering four different internal API shapes, implementing pagination and dedup for each, and re-checking them whenever Finn adjusts an endpoint. The verticals diverge enough that a private scraper is really four scrapers to maintain — exactly the burden a managed actor absorbs.

Common pitfalls

  • Price composition. The single biggest modeling error in Norwegian real estate is treating total_price as the only cost. Joint debt and monthly fees materially change the real number.
  • Mixing verticals. Don’t pour cars, homes, and jobs into one table. The fields don’t align; model them separately under a shared envelope.
  • EV/combustion blind spots. If your car analysis ignores fuel, your price trends will be meaningless in the Norwegian market.
  • Stale CDN image paths. Finn’s image URLs can rotate; store the URL but archive images promptly if you need them.
  • Locale parsing. Norwegian number formatting and characters (æ, ø, å) trip naive parsers. The JSON output gives you clean fields — use them rather than scraping rendered text.

Wrapping up

Finn.no is the spine of the Norwegian classifieds market, and its internal JSON APIs make it one of the cleaner large-scale sources to extract — no browser, no proxy wall, four rich verticals. If you need a one-off sample of a single vertical, the API is approachable. If you need refreshed, deduped feeds across real estate, cars, jobs, or marketplace for valuation, recruiting, or lead-gen, a managed actor that already handles all four shapes plus pagination and dedup is the faster route to clean Norwegian data.

Open the Finn.no Scraper on Apify — Norway’s #1 classifieds, four verticals, JSON output with GPS, images and seller details. Pay-per-event, free monthly credit to start.

Related guides