# Finn.No Scraper (`logiover/finn-no-scraper`) Actor

Finn.no scraper & API alternative: scrape Norway real estate, cars, jobs & marketplace without login, export listings to CSV/JSON.

- **URL**: https://apify.com/logiover/finn-no-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Real estate, Jobs
- **Stats:** 37 total users, 6 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🇳🇴 Finn.no Scraper — Real Estate, Cars, Jobs & Marketplace Norway

Extract listings from **[Finn.no](https://www.finn.no)** — Norway's largest classified ads platform, used by **4 million Norwegians every month** (75% of the population). Scrape real estate for sale, used cars, job postings, and marketplace items across all Norwegian regions — with prices, GPS coordinates, photos, agent details and more.

Finn.no publishes **35,000+ new listings every day** across 10+ categories. This scraper taps directly into Finn.no's internal JSON APIs to deliver fast, structured, complete data — no HTML parsing, no proxies required for standard use.

---

### 🔍 What can you scrape?

| Category | Input value | Description |
|----------|-------------|-------------|
| 🏠 Real Estate | `realestate/homes` | Homes, apartments, cabins for sale |
| 🚗 Used Cars | `car/used` | All used vehicles across Norway |
| 💼 Jobs | `job/fulltime` | Full-time job postings |
| 🛋️ Marketplace | `bap/forsale` | Second-hand goods for sale |

---

### 💡 Use cases

**Real Estate**
- Track property prices across Oslo, Bergen, Trondheim and all 356 Norwegian municipalities
- Monitor price-per-m², total price (Totalpris) and monthly fees (Felleskostnader) to calculate rental yield
- Build automated property alerts for specific areas, price ranges and property types
- Aggregate agent and broker contact data for lead generation
- Feed property data into valuation models and investment analysis tools

**Cars**
- Build Norwegian used car valuation tools with real market data
- Monitor price trends for specific makes, models and years
- Track dealer inventory and private listings simultaneously
- Compare EV vs combustion pricing, range and dealer segments
- Competitive intelligence for car dealerships

**Jobs**
- Analyse Norwegian labour market trends and hiring patterns
- Track which companies are actively recruiting and in which regions
- Monitor demand for specific skills and roles over time
- Build job alert tools for recruiters and candidates
- Generate datasets for salary benchmarking and market research

**Marketplace**
- Price monitoring for second-hand consumer goods
- Brand presence analysis (who sells what and at what price)
- Build recommendation engines for resale platforms
- AI training data with Norwegian-language product descriptions

---

### 📦 Output fields

#### 🏠 Real Estate
| Field | Description | Example |
|-------|-------------|---------|
| `finnkode` | Unique listing ID | `"455772354"` |
| `url` | Full listing URL | `"https://www.finn.no/realestate/..."` |
| `adType` | Listing subtype | `"realestate"` / `"realestate_project"` |
| `title` | Full listing headline | `"Lys 3-roms med balkong og heis"` |
| `location` | Full address | `"Smedstuvegen 3, Nannestad"` |
| `localAreaName` | Neighbourhood name | `"Majorstuen"` |
| `price` | Asking price (NOK) | `"4 200 000 kr"` |
| `totalPrice` | Total price incl. shared debt | `"4 658 367 kr"` |
| `monthlyFee` | Monthly shared costs | `"5 506 kr"` |
| `size` | Floor area | `"61 m²"` |
| `plotSize` | Land/plot size | `"6 987 m²"` |
| `ownershipType` | Eier / Andel / Aksje | `"Eier (Selveier)"` |
| `propertyType` | Property category | `"Leilighet"` / `"Enebolig"` |
| `bedrooms` | Number of bedrooms | `"2"` |
| `viewingDate` | Open house schedule | `"22. mars 2026, 12:00"` |
| `agent` | Broker/agency name | `"DNB Eiendom AS"` |
| `agentLogoUrl` | Agent logo image URL | `"https://images.finncdn.no/..."` |
| `imageUrl` | Cover photo URL | `"https://images.finncdn.no/..."` |
| `imageUrls` | All photos (comma-separated) | `"url1, url2, url3"` |
| `lat` / `lng` | GPS coordinates | `"59.92119"` / `"10.815"` |

#### 🚗 Cars
| Field | Description | Example |
|-------|-------------|---------|
| `title` | Make and model | `"BMW i4"` |
| `price` | Asking price | `"509 000 kr"` |
| `make` | Car brand | `"BMW"` |
| `model` | Model name | `"i4"` |
| `modelSpec` | Full specification string | `"M50 Supercharged, H/K, Soltak, Laser"` |
| `year` | Model year | `"2023"` |
| `mileage` | Odometer reading | `"63 000 km"` |
| `fuelType` | Fuel/powertrain type | `"El"` / `"Diesel"` / `"Plug-in Bensin"` |
| `gearbox` | Transmission type | `"Automat"` / `"Manuell"` |
| `drivingRange` | Electric range | `"510 km"` |
| `dealerSegment` | Seller type | `"Merkeforhandler"` / `"Privat"` |
| `dealer` | Dealer name | `"Bilia Skøyen"` |
| `warranty` | Remaining warranty | `"24 mnd"` |
| `lat` / `lng` | GPS coordinates | `"59.91825"` / `"10.66111"` |

#### 💼 Jobs
| Field | Description | Example |
|-------|-------------|---------|
| `title` | Job title | `"Senior Backend utvikler"` |
| `heading` | Full ad headline | `"Vil du jobbe hos oss?"` |
| `company` | Employer name | `"Telenor Norge"` |
| `location` | City | `"Trondheim"` |
| `locations` | Full breadcrumb | `"Norge, Trøndelag, Trondheim"` |
| `noOfPositions` | Open positions | `"3"` |
| `publishedAt` | Publication timestamp | `"2026-03-05T13:50:05.000Z"` |
| `deadline` | Application deadline | `"2026-04-06T21:59:59.999Z"` |
| `lat` / `lng` | GPS coordinates | `"63.42207"` / `"10.43776"` |

#### 🛋️ Marketplace (BAP)
| Field | Description | Example |
|-------|-------------|---------|
| `title` | Item name | `"Smedstorp sofa fra IKEA"` |
| `price` | Asking price | `"4 500 kr"` |
| `brand` | Product brand | `"IKEA"` / `"Skeidar"` |
| `tradeType` | Sale type | `"Til salgs"` / `"Gis bort"` |
| `sellerType` | Seller type | `"Privat"` |
| `publishedAt` | Listing timestamp | `"2026-03-16T15:32:49.000Z"` |
| `imageUrls` | All photos | `"url1, url2, url3"` |
| `lat` / `lng` | GPS coordinates | `"59.9218"` / `"10.7757"` |

---

### ⚙️ Input options

#### Basic — scrape by category
```json
{
  "category": "realestate/homes",
  "maxResults": 100,
  "proxyConfiguration": { "useApifyProxy": true }
}
````

#### With keyword search

```json
{
  "category": "realestate/homes",
  "searchQuery": "3 soverom balkong",
  "maxResults": 50,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Filter by city (Oslo)

```json
{
  "category": "car/used",
  "searchQuery": "BMW",
  "location": "0.20061",
  "maxResults": 200,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Jobs search

```json
{
  "category": "job/fulltime",
  "searchQuery": "developer",
  "location": "0.20061",
  "maxResults": 100,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Marketplace search

```json
{
  "category": "bap/forsale",
  "searchQuery": "sofa",
  "maxResults": 50,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

***

### 🏙️ Location IDs

Use these in the `location` field to filter by city:

| City | Location ID |
|------|-------------|
| Oslo | `0.20061` |
| Bergen | `0.20007` |
| Trondheim | `0.20012` |
| Stavanger | `0.20011` |
| Tromsø | `0.20019` |
| Kristiansand | `0.20009` |
| Drammen | `0.20032` |
| Fredrikstad | `0.20001` |

For any other location, open Finn.no, search with the city filter applied, and copy the `location=` value from the URL.

***

### 📊 Sample output — Real Estate

```json
{
  "finnkode": "455808561",
  "url": "https://www.finn.no/realestate/homes/ad.html?finnkode=455808561",
  "adType": "realestate",
  "title": "Lys og gjennomgående 3-roms med solrik balkong",
  "location": "Jacob Aalls gate 3C, Oslo",
  "localAreaName": "Majorstuen",
  "price": "9 450 000 kr",
  "totalPrice": "9 744 733 kr",
  "monthlyFee": "5 580 kr",
  "size": "76 m²",
  "plotSize": "951 m²",
  "ownershipType": "Eier (Selveier)",
  "propertyType": "Leilighet",
  "bedrooms": "2",
  "viewingDate": "22. mars 2026, 12:00, 23. mars 2026, 16:00",
  "agent": "PrivatMegleren Dyve & Partnere",
  "imageUrl": "https://images.finncdn.no/dynamic/default/2026/3/...",
  "imageUrls": "https://images.finncdn.no/..., https://images.finncdn.no/...",
  "lat": "59.92552",
  "lng": "10.71305",
  "scrapedAt": "2026-03-16T15:43:06.025Z"
}
```

### 📊 Sample output — Car

```json
{
  "finnkode": "455806676",
  "url": "https://www.finn.no/mobility/item/455806676",
  "adType": "car/used",
  "title": "BMW i5",
  "location": "Fredrikstad",
  "price": "728 500 kr",
  "make": "BMW",
  "model": "i5",
  "modelSpec": "xDrive40, Fully Ch, M-Sport Pro, Pano, Bower & W",
  "year": "2025",
  "mileage": "9 900 km",
  "fuelType": "El",
  "gearbox": "Automat",
  "drivingRange": "513 km",
  "dealerSegment": "Merkeforhandler",
  "dealer": "Sulland Fredrikstad BMW",
  "warranty": "56 mnd",
  "lat": "59.24063",
  "lng": "10.98364",
  "scrapedAt": "2026-03-16T15:43:41.399Z"
}
```

***

### 💰 Pricing

| Volume | Estimated cost |
|--------|---------------|
| 100 listings | ~$0.50 |
| 500 listings | ~$2.50 |
| 1,000 listings | ~$5.00 |
| 10,000 listings | ~$50.00 |
| 100,000 listings | ~$500.00 |

| Tier | Price per result |
|------|-----------------|
| Default | $0.005 |
| Bronze | $0.0045 |
| Silver | $0.004 |
| Gold | $0.0035 |

***

### ⚡ Performance

- **JSON API** — direct structured data, no browser, no HTML parsing
- **~200–400 listings/minute** depending on category and proxy
- **Automatic pagination** — follows all result pages up to `maxResults`
- **Deduplication** — each listing saved once across pages
- **400ms delay** between pages — polite, stable, avoids rate limiting

***

### 🔒 Proxy usage

Finn.no is accessible without proxies for light use. For scraping thousands of listings, Apify's built-in proxy pool is recommended to maintain consistent access. Keep `"useApifyProxy": true` in the proxy configuration (default setting).

***

### ❓ FAQ

**How large is Finn.no?**
Finn.no is Norway's largest marketplace, with over 1.5 million active listings at any time, 35,000+ new listings added daily, and 4 million unique monthly users — roughly 75% of the Norwegian population.

**Does this work for all Norwegian regions?**
Yes. Leave `location` blank to scrape all of Norway, or add a location ID to target a specific city or region.

**What is Totalpris?**
Total price including any shared debt (fellesgjeld) in co-operative housing. This is the true cost to the buyer and is mandatory in Norwegian property listings.

**What is Felleskostnader / Monthly Fee?**
Monthly shared building costs for co-operative (Andel) or share (Aksje) apartments — covering maintenance, insurance, and sometimes heating. Critical for calculating total ownership cost.

**What do Eier / Andel / Aksje mean?**
Norwegian property ownership types. Eier (Selveier) = freehold — you own the property outright. Andel = co-operative share (Borettslag). Aksje = share in a housing company (Aksjeleilighet). Andel and Aksje properties carry shared debt and monthly fees.

**What does dealerSegment mean for cars?**
Merkeforhandler = authorised brand dealer. Forhandler = used car dealer. Privat = private seller.

**What is drivingRange for electric cars?**
The official WLTP-rated range in kilometres for electric and plug-in hybrid vehicles.

**Can I scrape jobs in a specific industry?**
Yes — use `searchQuery` with keywords like `"developer"`, `"sykepleier"` (nurse), `"leder"` (manager), etc. Combine with `location` to target specific cities.

**Is scraping Finn.no legal?**
This scraper collects publicly available listing data visible to any website visitor without login. Always use the data responsibly and in compliance with applicable laws in your jurisdiction.

#### Is this a Finn.no API alternative?

Yes. Finn.no has no official public listings API, so this actor acts as an unofficial Finn.no API alternative — it reads Finn.no's internal JSON endpoints and returns clean structured records.

#### How do I export Finn.no data to CSV or JSON?

Every run saves results to an Apify dataset that you can download or export as CSV, JSON or Excel, making it easy to bulk export Finn.no listings to CSV for spreadsheets or analysis.

#### Can I scrape Finn.no without login?

Yes. The scraper only reads public listing data, so you can scrape Finn.no real estate, car listings, jobs and marketplace items without any login or account.

### 📝 Changelog

#### 2026-06-15

- Reliability pass: re-verified end-to-end on live data with real-world inputs. Routine maintenance build.

#### 2026-06-07

- Docs: added coverage for Finn.no API alternative use, exporting Finn.no data to CSV/JSON, and scraping without login.

#### 2026-06-05

- 🛡️ Reliability fix: results are no longer dropped by strict output validation — runs now complete cleanly even at high volume (thousands of results).
- ⚡ Stability & performance hardening; fresh rebuild.

#### 2026-06-04

- Verified live & refreshed build — reliability/maintenance pass.

# Actor input Schema

## `category` (type: `string`):

Which Finn.no category to scrape.

## `searchQuery` (type: `string`):

Free text search. E.g. '3 soverom oslo', 'BMW 3-serie', 'frontend developer', 'sofa'.

## `location` (type: `string`):

Finn.no location ID. E.g. '0.20061' for Oslo, '0.20007' for Bergen, '0.20012' for Trondheim. Leave blank for all Norway.

## `maxResults` (type: `integer`):

Maximum number of listings to scrape. Set to 0 for unlimited.

## `proxyConfiguration` (type: `object`):

Apify proxy settings. Residential proxies recommended for high-volume scraping.

## Actor input object example

```json
{
  "category": "realestate/homes",
  "searchQuery": "",
  "location": "",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `finnkode` (type: `string`):

Unique Finn.no listing ID

## `url` (type: `string`):

Full listing page URL

## `adType` (type: `string`):

realestate | car/used | job/fulltime | bap/forsale

## `title` (type: `string`):

Listing headline or job title

## `location` (type: `string`):

Address, city or region

## `price` (type: `string`):

Asking price in NOK

## `imageUrl` (type: `string`):

Cover photo URL

## `imageUrls` (type: `string`):

All photo URLs comma-separated

## `lat` (type: `string`):

GPS latitude

## `lng` (type: `string`):

GPS longitude

## `localAreaName` (type: `string`):

\[Realestate] Local area name e.g. Frogner

## `totalPrice` (type: `string`):

\[Realestate] Total price incl. shared debt (Totalpris)

## `monthlyFee` (type: `string`):

\[Realestate] Monthly shared costs (Felleskostnader)

## `size` (type: `string`):

\[Realestate] Floor area in m²

## `plotSize` (type: `string`):

\[Realestate] Plot/land size in m²

## `ownershipType` (type: `string`):

\[Realestate] Eier (Selveier) / Andel / Aksje

## `propertyType` (type: `string`):

\[Realestate] Leilighet / Enebolig / Rekkehus etc.

## `bedrooms` (type: `string`):

\[Realestate] Number of bedrooms

## `viewingDate` (type: `string`):

\[Realestate] Open house date(s)

## `agent` (type: `string`):

\[Realestate] Broker / estate agent name

## `agentLogoUrl` (type: `string`):

\[Realestate] Agent logo image URL

## `make` (type: `string`):

\[Car] Brand e.g. BMW, Toyota, Volvo

## `model` (type: `string`):

\[Car] Model e.g. 3-Serie, XC60

## `modelSpec` (type: `string`):

\[Car] Detailed specification string

## `year` (type: `string`):

\[Car] Model year

## `mileage` (type: `string`):

\[Car] Mileage in km

## `fuelType` (type: `string`):

\[Car] El / Diesel / Bensin / Plug-in Bensin

## `gearbox` (type: `string`):

\[Car] Automat / Manuell

## `drivingRange` (type: `string`):

\[Car] Electric driving range in km

## `dealerSegment` (type: `string`):

\[Car] Merkeforhandler / Forhandler / Privat

## `dealer` (type: `string`):

\[Car] Dealer or seller organisation name

## `warranty` (type: `string`):

\[Car] Remaining warranty in months

## `heading` (type: `string`):

\[Job] Full job ad headline

## `company` (type: `string`):

\[Job] Employer company name

## `locations` (type: `string`):

\[Job] Full location breadcrumb e.g. Norge, Oslo, Frogner

## `noOfPositions` (type: `string`):

\[Job] Number of open positions

## `publishedAt` (type: `string`):

\[Job/BAP] Publication ISO timestamp

## `deadline` (type: `string`):

\[Job] Application deadline ISO timestamp

## `brand` (type: `string`):

\[BAP] Product brand name

## `tradeType` (type: `string`):

\[BAP] Trade type e.g. Til salgs, Ønskes kjøpt

## `sellerType` (type: `string`):

\[BAP] Privat or business seller

## `scrapedAt` (type: `string`):

ISO timestamp of scrape

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/finn-no-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("logiover/finn-no-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call logiover/finn-no-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/finn-no-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Finn.No Scraper",
        "description": "Finn.no scraper & API alternative: scrape Norway real estate, cars, jobs & marketplace without login, export listings to CSV/JSON.",
        "version": "0.0",
        "x-build-id": "vK7YogtsMIN8IfRT0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~finn-no-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-finn-no-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/logiover~finn-no-scraper/runs": {
            "post": {
                "operationId": "runs-sync-logiover-finn-no-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/logiover~finn-no-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-finn-no-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "category": {
                        "title": "Category",
                        "enum": [
                            "realestate/homes",
                            "car/used",
                            "job/fulltime",
                            "bap/forsale"
                        ],
                        "type": "string",
                        "description": "Which Finn.no category to scrape.",
                        "default": "realestate/homes"
                    },
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Free text search. E.g. '3 soverom oslo', 'BMW 3-serie', 'frontend developer', 'sofa'.",
                        "default": ""
                    },
                    "location": {
                        "title": "Location filter",
                        "type": "string",
                        "description": "Finn.no location ID. E.g. '0.20061' for Oslo, '0.20007' for Bergen, '0.20012' for Trondheim. Leave blank for all Norway.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of listings to scrape. Set to 0 for unlimited.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Residential proxies recommended for high-volume scraping.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
