{
  "openapi": "3.0.1",
  "info": {
    "title": "FINN.no Scraper — Property, Jobs, Cars & Torget",
    "description": "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.",
    "version": "0.0",
    "x-build-id": "Q9x5K2XKsqIO43sBw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~finn-no-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-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/memo23~finn-no-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-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/memo23~finn-no-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-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": {
          "startUrls": {
            "title": "FINN URLs (search or ad)",
            "type": "array",
            "description": "FINN.no search-result or ad URLs, auto-classified across all four verticals. Property search: `https://www.finn.no/realestate/homes/search.html?location=0.20061`. Property ad: `https://www.finn.no/realestate/homes/ad.html?finnkode=473282564`. Job search: `https://www.finn.no/job/search?q=utvikler`. Job ad: `https://www.finn.no/job/ad/472810559`. Car search: `https://www.finn.no/mobility/search/car?variant=0.817`. Car ad: `https://www.finn.no/mobility/item/441416549`. Torget search: `https://www.finn.no/recommerce/forsale/search?q=sykkel`. Torget ad: `https://www.finn.no/recommerce/forsale/item/473315083`. Note: job URLs containing a `location=` parameter return 0 rows because FINN renders those results in the browser — use `jobLocationContains` instead. Example: [\"https://www.finn.no/realestate/homes/search.html?location=0.20061\"]. Default: empty.",
            "items": {
              "type": "string"
            }
          },
          "vertical": {
            "title": "Filter builder targets",
            "enum": [
              "realestate",
              "job",
              "car",
              "torget"
            ],
            "type": "string",
            "description": "Which vertical the filter fields below build a search for. `realestate` uses the property filters; `job` uses the job filters. Ignored when you only paste URLs. Example: \"realestate\". Default: \"realestate\".",
            "default": "realestate"
          },
          "section": {
            "title": "Property section",
            "enum": [
              "homes",
              "lettings",
              "newbuildings",
              "leisure-sale",
              "plots"
            ],
            "type": "string",
            "description": "Which FINN property market to search. `homes` = homes for sale, `lettings` = rentals, `newbuildings` = new-builds, `leisure-sale` = holiday homes, `plots` = land. Example: \"homes\". Default: \"homes\".",
            "default": "homes"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Norwegian counties by name (`Oslo`, `Vestland`, `Trøndelag`, `Akershus`, `Rogaland`, `Innlandet`, `Agder`, `Buskerud`, `Vestfold`, `Østfold`, `Telemark`, `Troms`, `Nordland`, `Finnmark`, `Møre og Romsdal`, `Svalbard`) or raw FINN location codes such as `0.20061` (Oslo) and `1.22042.20166` (Arendal municipality). Copy a municipality code from any finn.no search URL. Example: [\"Oslo\"]. Default: empty.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text keyword matched against property ads, e.g. `penthouse`, `enebolig`, `sjøutsikt`. Leave empty to match everything in the selected locations. Example: \"penthouse\". Default: empty."
          },
          "priceFrom": {
            "title": "Min price (NOK)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest total price in NOK. For lettings this is monthly rent. Example: 3000000. Default: no minimum."
          },
          "priceTo": {
            "title": "Max price (NOK)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest total price in NOK. For lettings this is monthly rent. Example: 8000000. Default: no maximum."
          },
          "areaFrom": {
            "title": "Min area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest usable internal area in square metres. Example: 60. Default: no minimum."
          },
          "areaTo": {
            "title": "Max area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Largest usable internal area in square metres. Example: 200. Default: no maximum."
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Minimum number of bedrooms. Example: 3. Default: no minimum."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "FINN property-type codes: `1` Enebolig (detached), `2` Tomannsbolig (semi-detached), `3` Leilighet (apartment), `4` Rekkehus (terraced), `6` Garasje/Parkering, `9` Produksjon/Industri, `11` Gårdsbruk/Småbruk (farm), `18` Andre, `20` Bygård/Flermannsbolig. Repeatable — several codes widen the search. Example: [\"3\"]. Default: all types.",
            "items": {
              "type": "string"
            }
          },
          "ownershipTypes": {
            "title": "Ownership types",
            "type": "array",
            "description": "FINN ownership codes: `1` Obligasjon, `2` Aksje, `3` Selveier (freehold), `4` Andel (co-op), `255` Annet. Repeatable. Example: [\"3\"]. Default: all ownership types.",
            "items": {
              "type": "string"
            }
          },
          "energyLabels": {
            "title": "Energy labels",
            "type": "array",
            "description": "Energy-class codes, where `1` = A through `7` = G. Repeatable. Example: [\"1\", \"2\"]. Default: any energy class.",
            "items": {
              "type": "string"
            }
          },
          "privateSellerOnly": {
            "title": "Private sellers only",
            "type": "boolean",
            "description": "When true, returns only ads posted privately rather than through an estate agency. Example: false. Default: false.",
            "default": false
          },
          "publishedToday": {
            "title": "Published today only",
            "type": "boolean",
            "description": "When true, returns only ads first published today — useful for scheduled daily runs. Example: false. Default: false.",
            "default": false
          },
          "jobQuery": {
            "title": "Job keyword",
            "type": "string",
            "description": "Free-text keyword matched against job ads, e.g. `utvikler`, `sykepleier`, `prosjektleder`. Example: \"utvikler\". Default: empty."
          },
          "jobOccupations": {
            "title": "Occupation codes",
            "type": "array",
            "description": "FINN occupation (Stillingsfunksjon) codes such as `0.38` (Mekanikk og installasjon) or `0.46` (Produksjon). Copy them from an `occupation=` parameter in any finn.no job search URL. Repeatable. Example: [\"0.38\"]. Default: all occupations.",
            "items": {
              "type": "string"
            }
          },
          "jobIndustries": {
            "title": "Industry codes",
            "type": "array",
            "description": "FINN industry (Bransje) codes such as `70` (Industri og produksjon) or `35` (Kraft og energi). Copy them from an `industry=` parameter in any finn.no job search URL. Repeatable. Example: [\"70\"]. Default: all industries.",
            "items": {
              "type": "string"
            }
          },
          "jobLocationContains": {
            "title": "Job location contains",
            "type": "string",
            "description": "Case-insensitive text that a job's location must contain, applied after parsing, e.g. `Oslo` or `Bergen`. This exists because FINN renders location-filtered job searches in the browser, so a `location=` URL parameter returns nothing to a scraper. Rows that don't match are dropped and never billed. Example: \"Oslo\". Default: no location filter."
          },
          "carQuery": {
            "title": "Car keyword",
            "type": "string",
            "description": "Free-text keyword matched against vehicle ads, e.g. `tiguan`, `tesla model 3`, `varebil`. Example: \"tiguan\". Default: empty."
          },
          "carPriceFrom": {
            "title": "Min price (NOK)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest asking price in NOK. Example: 50000. Default: no minimum."
          },
          "carPriceTo": {
            "title": "Max price (NOK)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest asking price in NOK. Example: 200000. Default: no maximum."
          },
          "carYearFrom": {
            "title": "Min model year",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Earliest model year. Example: 2015. Default: no minimum."
          },
          "carYearTo": {
            "title": "Max model year",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Latest model year. Example: 2022. Default: no maximum."
          },
          "carMileageTo": {
            "title": "Max mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest odometer reading in kilometres. Example: 150000. Default: no maximum."
          },
          "torgetQuery": {
            "title": "Torget keyword",
            "type": "string",
            "description": "Free-text keyword matched against classified ads, e.g. `sykkel`, `iphone`, `sofa`. Example: \"sykkel\". Default: empty."
          },
          "torgetPriceFrom": {
            "title": "Min price (NOK)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest asking price in NOK. Example: 500. Default: no minimum."
          },
          "torgetPriceTo": {
            "title": "Max price (NOK)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest asking price in NOK. Example: 5000. Default: no maximum."
          },
          "scrapeDetails": {
            "title": "Scrape detail pages",
            "type": "boolean",
            "description": "Fetch each listing's own page for the full payload — property: description, energy label, construction year, floor, shared cost, collective debt, tax value, facilities, all photos, viewing times and agent phone numbers; jobs: full ad text, employment type, deadline, sector, industry, keywords, contact people and the apply URL; cars: the full spec table (registration number, VIN, owners, CO₂, towing capacity, next EU inspection) plus description and all photos; Torget: description, brand, condition and category. Roughly doubles the requests. Ad URLs you paste are always fully detailed. Example: true. Default: false.",
            "default": false
          },
          "maxItems": {
            "title": "Max results (whole run)",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on rows across the entire run; each row is one paid result. Free-tier accounts are additionally capped at 100. Example: 200. Default: 1000.",
            "default": 1000
          },
          "maxItemsPerSearch": {
            "title": "Max results per search",
            "minimum": 1,
            "type": "integer",
            "description": "Cap per search URL. Property searches return 50 listings per page, job searches about 50 cards per page. Example: 500. Default: 1000.",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many HTTP requests run at once. Raise for speed, lower to be gentler on the site. Example: 6. Default: 6.",
            "default": 6
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "type": "integer",
            "description": "Per-request retry budget for transient 403/429/5xx and network errors, with exponential backoff. Example: 8. Default: 8.",
            "default": 8
          },
          "proxy": {
            "title": "Proxy configuration (optional)",
            "type": "object",
            "description": "Leave empty. FINN.no serves datacenter IPs without any bot challenge, so the actor runs direct by default and costs you no proxy traffic. Set this only if you specifically need requests to exit through your own proxy. Example: {\"useApifyProxy\": true}. Default: no proxy."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}