FINN.no Scraper — Property, Jobs, Cars & Torget
Pricing
from $2.00 / 1,000 results
FINN.no Scraper — Property, Jobs, Cars & Torget
Scrape FINN.no, Norway's largest marketplace: property (sale, rent, plots), job ads, cars and Torget classifieds in one actor. Price, m2, energy label, coordinates, agent phones — or employer, deadline, contacts — or VIN, mileage, full car specs. No proxy needed.
Pricing
from $2.00 / 1,000 results
Rating
5.0
(1)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
17
Total users
17
Monthly active users
a day ago
Last modified
Categories
Share
FINN.no Scraper — Norway Property, Jobs, Cars & Torget
Turn any FINN.no search into clean, structured data. FINN is Norway's largest marketplace, and this actor covers four of its verticals in one run: property listings (for sale, rentals, new-builds, holiday homes, plots), job ads, cars & vehicles, and Torget classifieds. Paste any FINN search or ad URL, or build a search from filters, and get one flat row per listing.
| Input | Row(s) emitted |
|---|---|
…/realestate/homes/search.html?location=0.20061 | One property row per listing on every page |
…/realestate/lettings/search.html?… | One property row per rental, with deposit and furnishing |
…/realestate/homes/ad.html?finnkode=473282564 | One fully detailed property row |
…/job/search?q=utvikler | One job row per ad on every page |
…/job/ad/472810559 | One fully detailed job row |
…/mobility/search/car?variant=0.817 | One car row per vehicle on every page |
…/mobility/item/441416549 | One fully detailed car row |
…/recommerce/forsale/search?q=sykkel | One torget row per classified ad |
…/recommerce/forsale/item/473315083 | One fully detailed torget row |
| Filter builder (locations, price, area, keyword…) | Same as the matching search URL |
Pure HTTP. No browser, no third-party bypass service, and no proxy needed — FINN serves datacenter IPs without a bot challenge, so proxy traffic costs you nothing.
✨ Why use this scraper?
- Four verticals, one actor — Norwegian property, jobs, vehicles and classifieds from a single run and a single bill, instead of stitching four scrapers together.
- Reads FINN's own data layer — property rows come from the same structured payload FINN's website consumes, so you get exact numbers (
7 490 000 NOK,59.93029 / 10.71958) rather than scraped-and-reparsed strings. - Contact details included — property ads carry the agent's or private seller's phone numbers; job ads carry the named contact person plus their phone and the apply URL.
- Full vehicle records — car ads return FINN's complete spec table: registration number, VIN, owner count, next EU inspection date, CO₂, power, towing capacity, boot volume and colour, alongside price excluding the re-registration fee. EV ads add battery capacity in kWh, WLTP range and km per kWh.
- The dealer, on every row — each car ad carries its seller's whole info card: name, organisation number with the brreg link, years on FINN, street address with postcode, website, authorised marques, opening hours and coordinates. No second request, no separate dealer table to join.
- Seller phone numbers on cars — the number behind FINN's "Se telefonnummer" button, fetched without a login and billed only when FINN actually publishes one.
- Whole markets, not the first 2,450 ads — FINN caps any one search at 50 pages and then silently re-serves page 1. Turn on Split car searches by price and the actor measures the market against FINN's own count, slices it into price bands that fit, and halves any band that is still too big.
- Says so when it is short — every run compares FINN's reported count with what it delivered, band by band, and writes the verdict to the
COMPLETENESSrecord and the run's status message. Past your threshold the run ends as FAILED instead of passing a partial dataset off as a full one. - Rental-aware — lettings rows add deposit, what the rent includes, furnishing level and whether pets are allowed, not just the monthly figure.
- 50 listings per page — property searches paginate in 50s, so large sweeps finish fast.
- Verified filters only — every filter in the input was checked against FINN's live result counts. Filters FINN doesn't honour are not offered, so a search never silently ignores what you asked for.
- JSON, CSV, Excel or API — pipe straight into your sheet, BI tool or pipeline. Billed per listing.
🎯 Use cases
| You are a… | Use it to… |
|---|---|
| Property analyst | Track asking prices, price per m², energy labels and days-on-market across Norwegian counties |
| Estate agency | Monitor competitor listings and viewing schedules in your area |
| Proptech / portal | Seed a Norwegian property dataset with coordinates, photos and full descriptions |
| Recruiter / job board | Track live Norwegian vacancies by keyword, employer, industry and deadline |
| Lead generation | Reach listing agents and hiring contacts through the phone numbers published on the ads |
| Investor / researcher | Compare rent vs sale economics per neighbourhood using deposit, shared cost and collective debt |
| Car dealer / valuation | Track used-vehicle asking prices by make, model, year and mileage, with full spec records |
| Resale / arbitrage | Watch Torget classifieds for underpriced items by keyword and price band |
📥 Supported inputs
- Property search URLs —
https://www.finn.no/realestate/{homes|lettings|newbuildings|leisure-sale|plots}/search.html?…with any filters you set on the site. - Property ad URLs —
https://www.finn.no/realestate/homes/ad.html?finnkode={id}. Always fully detailed. - Job search URLs —
https://www.finn.no/job/search?q=…. See the FAQ aboutlocationin job URLs. - Job ad URLs —
https://www.finn.no/job/ad/{id}. Always fully detailed. - Car search / ad URLs —
https://www.finn.no/mobility/search/car?…andhttps://www.finn.no/mobility/item/{id}. - Torget search / ad URLs —
https://www.finn.no/recommerce/forsale/search?q=…andhttps://www.finn.no/recommerce/forsale/item/{id}. - Filter builder — counties by name (
Oslo,Vestland, …) or FINN codes, plus price, area, bedrooms, property type, ownership type, energy label, car price/year/mileage, and Torget price band.
⚙️ How it works

- Classify every pasted URL into vertical × search/ad, and build extra search URLs from your filters.
- Plan car searches bigger than a single search can serve: probe FINN's result count per price band, halve any band still over the ceiling, and confirm the bands add up to the whole market.
- Paginate each search — property through FINN's structured data feed (50 listings per page); jobs, cars and Torget through their results pages (~50 per page). Car pages are read from the JSON the page ships to its own front end, so seller id, VIN, plate, trim and coordinates arrive without opening a single ad.
- Enrich each listing from its own ad page when Scrape detail pages is on — for cars that adds the equipment list, battery figures, condition report and the dealer's info card, plus the phone number when Get seller phone numbers is on.
- Check what FINN reported against what was delivered, per band, and fail the run if the gap is bigger than your threshold.
- Export one row per listing — JSON, CSV, Excel or API.
⚙️ Input parameters
| Field | Type | Default | What it does |
|---|---|---|---|
startUrls | array | [] | FINN search / ad URLs, auto-classified across all four verticals |
vertical | string | realestate | Which vertical the filter builder targets |
section | string | homes | homes, lettings, newbuildings, leisure-sale, plots |
locations | array | ["Oslo"] | County names or FINN codes (0.20061, 1.22042.20166) |
searchQuery | string | — | Free-text property keyword |
priceFrom / priceTo | integer | — | Price range in NOK (monthly rent for lettings) |
areaFrom / areaTo | integer | — | Usable internal area in m² |
minBedrooms | integer | — | Minimum bedrooms |
propertyTypes | array | all | 1 Enebolig · 2 Tomannsbolig · 3 Leilighet · 4 Rekkehus · 6 Garasje · 9 Industri · 11 Gårdsbruk · 18 Andre · 20 Bygård |
ownershipTypes | array | all | 1 Obligasjon · 2 Aksje · 3 Selveier · 4 Andel · 255 Annet |
energyLabels | array | any | 1 = A … 7 = G |
privateSellerOnly | boolean | false | Only ads posted without an agency |
publishedToday | boolean | false | Only ads first published today |
jobQuery | string | — | Free-text job keyword |
jobOccupations / jobIndustries | array | all | FINN occupation= / industry= codes |
jobLocationContains | string | — | Narrows job rows by location text after parsing |
carQuery | string | — | Free-text vehicle keyword |
carPriceFrom / carPriceTo | integer | — | Vehicle price range in NOK |
carYearFrom / carYearTo | integer | — | Model-year range |
carMileageTo | integer | — | Max odometer reading in km |
splitByPrice | boolean | true | Slice car searches into price bands so none hits FINN's 50-page wall |
priceBands | array | [] | Optional starting band edges in NOK; oversized bands are still halved automatically |
scrapePhone | boolean | false | Fetch the number behind each car ad's "Se telefonnummer" button |
failOnIncomplete | boolean | true | End the run as FAILED when the shortfall exceeds the threshold below |
completenessTolerancePercent | integer | 1 | Relative half of the threshold, as a percentage of FINN's reported count |
completenessToleranceAbsolute | integer | 25 | Absolute floor of the threshold, in ads; the larger of the two wins |
torgetQuery | string | — | Free-text classifieds keyword |
torgetPriceFrom / torgetPriceTo | integer | — | Classifieds price range in NOK |
scrapeDetails | boolean | false | Fetch each ad's own page for the full payload |
maxItems | integer | 1000 | Hard cap on rows for the whole run |
maxItemsPerSearch | integer | 1000 | Cap per search |
maxConcurrency | integer | 6 | Parallel HTTP requests (1–20) |
maxRequestRetries | integer | 8 | Retry budget on transient 403/429/5xx |
proxy | object | none | Optional override; not needed |
📊 Output overview
Each dataset record is one listing. rowType tells the four shapes apart: property carries price, area, rooms and agent details; job carries employer, deadline and hiring contacts; car carries the vehicle spec record; torget carries the classified ad. Columns belonging to one vertical are absent on the others.
📦 Output samples
rowType: "property" (a rental, with detail mode on)
{"rowType": "property","finnkode": "467925455","heading": "Moderne leilighet | Internett og hvitevarer inkludert","url": "https://www.finn.no/realestate/lettings/ad.html?finnkode=467925455","section": "lettings","price": { "amount": 25300, "currency": "NOK" },"deposit": { "amount": 75900, "currency": "NOK" },"rentIncludes": "Internett, hvitevarer, bod","furnishing": "Umøblert","animalsAllowed": false,"propertyType": "Leilighet","areaFrom": 64,"bedrooms": 3,"address": "Hausmanns gate 19 B, Oslo","localArea": "Sentrum","coordinates": { "latitude": 59.9166, "longitude": 10.7563 },"contactPhones": ["98192618"],"facilities": ["Balkong/Terrasse", "Garasje/P-plass", "Moderne", "Sentralt"],"imageUrls": ["https://images.finncdn.no/dynamic/default/…"],"detailScraped": true,"scrapedAt": "2026-08-17T13:03:58.512Z"}
rowType: "job" (with detail mode on)
{"rowType": "job","adId": "469164249","title": "Utvikler kryptoforsering","url": "https://www.finn.no/job/ad/469164249","employer": "Etterretningstjenesten","location": "Lutvannsveien 60, 0676 Oslo","deadline": "18.08.2026","employmentType": "Fast","sector": "Offentlig","industry": "IT","jobTitleRole": "Utvikling","keywords": ["kryptologi", "utvikling", "sikkerhet"],"contactNames": ["HR"],"contactPhones": ["23 09 43 29"],"applyUrl": "https://www.finn.no/job-apply/469164249/job/apply","publishedAt": "2026-07-07T07:41:34.000Z","detailScraped": true,"scrapedAt": "2026-08-17T13:05:12.004Z"}
rowType: "car" (with detail mode and phone numbers on — an EV from a dealer, trimmed for length)
{"rowType": "car","adId": "475907845","title": "Volkswagen e-Golf VII","variant": "100KW/300WLTP/1eier/SKINN/R.KAMERA/GARANTI+++","url": "https://www.finn.no/mobility/item/475907845","price": { "amount": 149000, "currency": "NOK" },"priceExclRegistration": { "amount": 144468, "currency": "NOK" },"registrationFee": { "amount": 4532, "currency": "NOK" },"make": "Volkswagen","model": "e-Golf VII","modelSpecification": "100KW/300WLTP/1eier/SKINN/R.KAMERA/GARANTI+++","year": 2019,"mileageKm": 68000,"fuel": "El","transmission": "Automat","batteryCapacityKwh": 35,"drivingRangeKm": 300,"rangePerKwh": 8.6,"firstRegistered": "2019-06-06","registrationNumber": "EK64027","vin": "WVWZZZAUZKW912345","regno": "EK64027","chassisNumber": "WVWZZZAUZKW912345","orgId": "1638891527","organisationName": "RSA BIL Oslo","dealerSegment": "Merkeforhandler","dealerGroupId": "bd91111c-c942-3eaa-a43e-f60bc654aca2","coordinates": { "latitude": 59.91124, "longitude": 10.8232, "accuracy": 9 },"timestamp": 1788877301000,"publishedAt": "2026-09-08T14:21:41.000Z","equipment": ["Indium Grey Metallic", "Blokkeringsfritt bremsesystem (ABS)", "Autonom nødbremsing (AEB)", "…40 in total"],"conditionReport": {"available": true,"url": "https://cdn.drive.no/documents/9651c91d-…/7f4a9d50-6fa4-46b8-95a9-ccaa7e42a690.pdf"},"phone": "94 01 90 67","dealer": {"orgId": "1638891527","name": "RSA BIL Oslo","orgNumber": "915518389","orgNumberUrl": "https://virksomhet.brreg.no/nb/oppslag/enheter/915518389","yearsOnFinn": "5+ år på FINN","street": "Nils Hansens vei 4","zipCode": "0667","city": "Oslo","country": "NO","coordinates": { "latitude": 59.91124, "longitude": 10.8232, "accuracy": null },"website": "http://rsabil.no/index.php/forhandlere/oslo","email": "tore.fjellheim@rsabil.no","phone": "23 24 20 40","authorizedBrands": ["MAXUS", "ISUZU", "KGM", "BYD", "SUZUKI", "JAC"],"openingHours": [{ "day": "Mandag", "hours": "09:00 - 16:30" },{ "day": "Lørdag", "hours": "10:00 - 14:00" },{ "day": "Søndag", "hours": "Stengt" }],"memberAssociations": ["Medlem av Norges Bilbransjeforbund"],"dealerPageUrl": "https://www.finn.no/mobility/dealer/1638891527/rsa-bil-oslo"},"imageUrls": ["https://images.finncdn.no/dynamic/1600w/item/475907845/…"],"searchMatchCount": 1038,"detailScraped": true}
rowType: "torget" (with detail mode on)
{"rowType": "torget","adId": "473315083","title": "TREK El-sykkel","url": "https://www.finn.no/recommerce/forsale/item/473315083","price": { "amount": 16000, "currency": "NOK" },"brand": "Trek","cardAttribute": "Trek","condition": "Used","category": "Sport og friluftsliv > Sykkelsport > Sykler","location": "Biri","postedLabel": "2 dg.","description": "Svært lite og pent brukt, Borch Powerpack batteri el motor.","detailScraped": true}
🗂 Key output fields
Property
| Field | Description |
|---|---|
finnkode | FINN ad id, e.g. 473282564 |
heading / url | Listing headline and canonical ad URL |
price / totalPrice | Asking price and total incl. costs (monthly rent for lettings) |
sharedCost / collectiveDebt / taxValue | Felleskostnader, collective debt and tax assessment value |
deposit / rentIncludes / furnishing / animalsAllowed | Rental-only economics and terms |
propertyType / ownershipType | Leilighet, Enebolig… / Selveier, Andel… |
areaFrom / areaTo / plotArea | Usable internal area and plot size in m² |
bedrooms / rooms / floor / constructionYear | Layout and age |
energyLabel | Energy class A–G |
address / localArea / coordinates | Street address, neighbourhood, lat/lon |
agencyName / contactPhones / contactNames | Listing agent or private seller |
facilities / imageUrls / viewings | Amenities, photos, scheduled open-house slots |
description | Full ad copy (detail mode) |
Job
| Field | Description |
|---|---|
adId / title / url | FINN ad id, job title, canonical URL |
employer / employerLogo | Hiring company |
location | Workplace address |
deadline | Application deadline, or Snarest (ASAP) |
employmentType / positions / sector | Fast/Vikariat…, number of positions, private/public |
industry / jobTitleRole / keywords | FINN's own taxonomy plus ad keywords |
contactNames / contactPhones / applyUrl | Named hiring contacts and where to apply |
publishedAt | When the ad went live (ISO) |
description | Full ad text (detail mode) |
Car
| Field | Description |
|---|---|
adId / title / variant | FINN ad id, model name, and the trim/engine line |
price / priceExclRegistration / registrationFee | Asking price, and the Norwegian split of price vs re-registration fee |
make / model / year / bodyType | Vehicle identity |
mileageKm / fuel / transmission / drivetrain | Core running gear |
powerHp / engineLitres / co2GramsPerKm / weightKg / towingCapacityKg | Performance and capacity |
seats / doors / bootLitres / colour | Body details |
firstRegistered / nextInspection / owners | History and upcoming EU inspection |
registrationNumber / vin | Plate and chassis number as published on the ad |
regno / chassisNumber | The same two values under FINN's own field names |
location / sellerType / paidPlacement | Where it is, private vs dealer, promoted slot |
batteryCapacityKwh / drivingRangeKm / rangePerKwh | EV pack size in kWh, WLTP range in km, declared km per kWh |
equipment | Factory options and fitted extras (Utstyr), verbatim (detail mode) |
conditionReport | { available, url } — whether a Tilstandsrapport is attached and its PDF. Two thirds of the PDFs sit on the dealer's own platform rather than FINN's CDN |
servicePlanFollowed / rightToExchange | FINN asks every dealer both, so they are answered on effectively every ad — the condition signals that are there when a Tilstandsrapport is not |
warrantyMonths / warrantyDistanceKm / warrantyType | Remaining warranty and what kind: Nybilgaranti, Bruktbilgaranti, Resterende nybilgaranti… |
certifiedProgramme / certifiedProgrammeUrl | Manufacturer certified-used programme, e.g. BMW Premium Selection, Volvo Selekt, Porsche Approved |
interiorColour | Interior trim and colour as the ad describes it |
orgId / organisationName / dealerSegment / dealerGroupId | Seller id, name, Merkeforhandler vs Annet bilutsalg, and the group id that ties a chain's branches together — each its own field, never merged into a label |
modelSpecification | Trim as FINN files it, e.g. Cooper SE Experience |
coordinates | { latitude, longitude, accuracy } — FINN's own precision grade |
timestamp / publishedAt | Publish time as epoch milliseconds and as ISO |
phone | The number behind "Se telefonnummer" (needs scrapePhone) |
dealer | The seller's whole info card: name, orgNumber + orgNumberUrl, yearsOnFinn, street / zipCode / city / country, coordinates, website, email, phone, authorizedBrands, openingHours, memberAssociations, logoUrl, dealerPageUrl |
searchMatchCount | What FINN reported for the search this row came from, when it was fetched |
imageUrls | Every photo at FINN's largest rendition (/dynamic/1600w/) |
Torget
| Field | Description |
|---|---|
adId / title / url | FINN ad id, headline, canonical URL |
price | Asking price in NOK |
brand | Brand from the ad's structured data — only set when detail mode ran |
cardAttribute | The chip FINN prints on the results card; category-dependent (brand on bikes, storage size on phones), so reported verbatim |
condition / category | New / Used, plus the full category path |
location / postedLabel / paidPlacement | Town, ad age as printed, promoted slot |
❓ FAQ
How do I get a whole market when FINN only serves 50 pages? Leave Split car searches by price on. The actor reads FINN's own result count, slices the search into price_from/price_to bands that fit under the wall, and halves any band still too big — so the ladder keeps working as the market grows. Bands are inclusive on both ends, so they share no ad and leave no gap, and their counts add back up to the unfiltered total. A search that already fits is never split, and a URL where you pinned your own price range is left alone.
How often are the car fields actually populated? Measured over the whole Norwegian EV dealer market (17,445 ads, September 2026): phone 99%, WLTP range 93%, equipment list 91%, battery kWh 69%, dealer block 100% with the organisation number on every one, dealer website 89%, opening hours 67%. Where a field is empty it is empty on FINN too — the seller never entered it.
What if an ad has no condition report? Only about a quarter of dealer EV ads carry a Tilstandsrapport, because FINN prints that row only when the dealer uploads one. The other condition signals are far better populated: servicePlanFollowed and rightToExchange are answered on effectively every ad, warrantyType on 94%, and a manufacturer certified-used programme on 10%. Across a full band every single ad carried at least one of them. Of the condition-report PDFs that do exist, two thirds link to the dealer's own platform rather than FINN's CDN, so the URL is not always a finn.no address.
How do I know the dataset is complete? Every car run records what FINN reported against what it delivered, band by band, and writes it to the COMPLETENESS record in the run's key-value store plus the run's status message. Past your threshold — by default 1% or 25 ads, whichever is larger — the run ends as FAILED. The threshold exists because the count moves while a run is in flight: ads are posted and withdrawn by the minute, and on a 2,000-ad band 1% is only 20 ads. Runs you cut short with your own row limits are exempt, and delivering more rows than reported never fails, since rows are deduplicated by ad id.
How much memory and concurrency does a full car sweep need? A whole-market run with detail pages and phone numbers peaks around 1.7 GB at maxConcurrency: 15, so give it 4 GB — 2 GB leaves no headroom for a market that keeps growing. Smaller runs and the other three verticals are comfortable at 1 GB. Raise concurrency and memory together; raising one alone just moves the bottleneck.
Do I need a proxy or an account? No. FINN serves datacenter IPs without a bot challenge, so the actor runs direct and you pay no proxy traffic. The proxy input exists only if you specifically want your own egress.
Why does my job URL with a location filter return nothing? FINN renders location-filtered job results in the browser, so the page a scraper receives is genuinely empty — no code can read rows that were never sent. Every location code format was tested; all return zero server-rendered cards. Use jobLocationContains instead: it fetches the unfiltered search and keeps only the rows whose location matches, and filtered-out rows are never billed.
Why is there no bedroom filter on job searches, or a sort option? Only filters verified against FINN's live result counts are exposed. Anything FINN silently ignores was left out on purpose, so a run never quietly returns something other than what you asked for.
What does Scrape detail pages add? Property: full description, energy label, construction year, floor, shared cost, collective debt, tax value, facilities, every photo, viewing times and contact phones. Jobs: full ad text, employment type, deadline, sector, industry, keywords, contact people and the apply URL. It roughly doubles the requests. Ad URLs you paste are always fully detailed.
A run failed saying FINN returned server errors — what now? FINN's search routes fail independently of one another; we've observed /realestate/homes/search.html returning 500 for everyone while lettings, ads and jobs stayed healthy. That's FINN, not a block, and no proxy changes it. Try another section or run again shortly.
Why is brand empty on Torget rows? It comes from the ad's own structured data, which only the detail page carries — turn on Scrape detail pages to fill it. The card chip is reported separately as cardAttribute because FINN puts different things there per category (a brand on bikes, storage size on phones), and calling that a brand would be wrong.
Which locations does it cover? All of Norway. Use county names (Oslo, Vestland, Trøndelag, …) or paste a municipality code such as 1.22042.20166 from any finn.no search URL.
What format is the output? JSON, CSV, Excel or via API — one row per listing.
💬 Support
Found a missing field or a page that won't parse? Open an issue on the actor's Issues tab with the input you used — fixes usually ship within a day or two.
🛠 Additional services
Need FINN's other verticals (cars, boats, Torget classifieds), a custom field, or a scheduled feed into your database? Reach out via the Issues tab.
🔎 Explore more scrapers
Browse the full portfolio of property and job-board scrapers on the Apify Store — including Rightmove, OnTheMarket, Hemnet, Daft.ie, Funda and Jobindex.
🤖 For AI Agents & LLM Apps
Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/finn-no-scraper).
Purpose: scrape FINN.no — Norway's largest marketplace — into one flat row per listing, across four verticals: property (sale, lettings, new-builds, leisure, plots), jobs, cars & vehicles, and Torget classifieds. Property and job rows include contact phone numbers; car rows include the full spec record, the seller's whole dealer card, and optionally the phone number behind FINN's reveal button.
Minimal input:
{ "vertical": "realestate", "section": "lettings", "locations": ["Oslo"], "maxItems": 20 }
Output: rows are discriminated by rowType. property — finnkode, heading, url, section, price {amount, currency}, totalPrice, sharedCost, collectiveDebt, taxValue, deposit, rentIncludes, furnishing, animalsAllowed, propertyType, ownershipType, areaFrom, areaTo, plotArea, bedrooms, rooms, floor, constructionYear, energyLabel, address, localArea, coordinates {latitude, longitude}, agencyName, contactPhones, contactNames, imageUrls, viewings, facilities, publishedAt, description, detailScraped. job — adId, title, url, employer, employerLogo, location, deadline, publishedAt, employmentType, positions, sector, jobTitleRole, industry, keywords, contactNames, contactPhones, applyUrl, description, detailScraped. car — adId, title, variant, url, price, priceExclRegistration, registrationFee, make, model, year, mileageKm, fuel, transmission, drivetrain, bodyType, powerHp, engineLitres, co2GramsPerKm, weightKg, towingCapacityKg, seats, doors, bootLitres, colour, firstRegistered, nextInspection, owners, registrationNumber, vin, salesForm, location, sellerType, paidPlacement, batteryCapacityKwh, drivingRangeKm, rangePerKwh, orgId, organisationName, dealerSegment, dealerGroupId, chassisNumber, regno, modelSpecification, coordinates {latitude, longitude, accuracy}, timestamp, publishedAt, equipment, conditionReport {available, url}, warrantyMonths, warrantyDistanceKm, warrantyType, servicePlanFollowed, rightToExchange, certifiedProgramme, certifiedProgrammeUrl, interiorColour, dealer {orgId, name, orgNumber, orgNumberUrl, yearsOnFinn, street, zipCode, city, country, coordinates, website, email, phone, authorizedBrands, openingHours, memberAssociations, logoUrl, dealerPageUrl}, phone, searchMatchCount, imageUrls, description, detailScraped. torget — adId, title, url, price, brand, cardAttribute, condition, category, location, postedLabel, paidPlacement, imageUrls, description, detailScraped.
Behaviors an agent should know:
- Always set
maxItems— a single county search can exceed 5,000 property listings (50 per page). startUrlsand the filter builder are additive; the builder only fires when at least one of its fields is set, so pasted URLs are never joined by a phantom search.scrapeDetails: truefetches one extra request per row and is what populates description, energy label, contacts and the apply URL.- Job searches cannot be location-filtered server-side; pass
jobLocationContainsand expect fewer rows than pages fetched. Dropped rows are not billed. - Car rows get seller id, name, dealer segment, VIN, plate, trim, coordinates, WLTP range and every photo from the search results alone — no
scrapeDetailsneeded.scrapeDetails: trueadds the equipment list, battery capacity, condition report, warranty, description and thedealercard. Torget rows needscrapeDetails: trueforbrand,condition,categoryand descriptions. scrapePhone: truereturnsphoneon car rows. It needs the ad page, so it turns on car detail fetching by itself.- A car search bigger than ~2,450 ads cannot be served whole by FINN — it caps at 50 pages and then silently re-serves page 1.
splitByPrice(on by default) slices it into price bands measured against FINN's own count. PasspriceBandsto seed the ladder; oversized bands are halved regardless. - Read the
COMPLETENESSkey-value record for reported-vs-delivered per band. WithfailOnIncomplete(on by default) a shortfall pastmax(completenessTolerancePercent% , completenessToleranceAbsolute)ends the run as FAILED, so a partial dataset is never reported as a success. - Property
sectionmust match the URLs you paste —homesandlettingsreturn different price semantics (priceis monthly rent for lettings). - Billing: one
resultevent per emitted row, plus onephoneevent per car row where FINN actually returned a number. Blocked, failed and filtered-out requests are never billed, and neither are ads that publish no phone number. - No proxy is required; passing one is an explicit override.
⚠️ Disclaimer
This scraper is an independent tool and is not affiliated with, endorsed by, or sponsored by FINN.no, Schibsted, or any of their subsidiaries. All trademarks, service marks and trade names are the property of their respective owners.
It collects only publicly available listing data from FINN.no. It does not access private accounts, bypass authentication, or collect personal data beyond the contact details advertisers themselves publish on public ads. You are responsible for using the scraped data in compliance with FINN's terms, Norwegian and EU law (including GDPR), and any applicable regulations. Use it for legitimate research, aggregation and analysis.
SEO Keywords
FINN.no scraper, finn no scraper, FINN cars scraper, Norway used car data, bruktbil scraper, FINN Torget scraper, Norwegian classifieds data, Norway property scraper, Norwegian real estate data, scrape FINN eiendom, FINN bolig til salgs, Norway rental listings API, leiebolig scraper, Oslo property data, Norwegian housing market data, FINN jobb scraper, Norway jobs scraper, Norwegian job listings API, ledige stillinger data, Schibsted marketplace scraper, finnkode scraper, Norway real estate API, property price data Norway, estate agent leads Norway, Apify FINN.