{
  "openapi": "3.0.1",
  "info": {
    "title": "Nettiauto Scraper - Used Cars, Vans & Dealers in Finland",
    "description": "Scrape nettiauto.com, Finland's used-car marketplace: cars, vans, light trucks and minibuses with EUR price, make, model, year, mileage, fuel, power, equipment, VIN, photos, dealer and sold archive, plus the dealer directory. No login. Export JSON, CSV, Excel or XML.",
    "version": "0.1",
    "x-build-id": "ZMi1TGxmabygTKWFa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~nettiauto-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-nettiauto-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/recordsdata~nettiauto-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-nettiauto-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/recordsdata~nettiauto-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-nettiauto-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": {
          "mode": {
            "title": "What to collect",
            "enum": [
              "search",
              "urls",
              "dealers"
            ],
            "type": "string",
            "description": "search = used-vehicle listings for the filters below (one row per ad). urls = ad, dealer-inventory, saved-search or newest-ads addresses (or ad numbers) you provide, always with full detail. dealers = the car-dealer directory (one row per company).",
            "default": "search"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows (all record types together). Free plans are limited to 10 items per run.",
            "default": 50
          },
          "vehicleTypes": {
            "title": "Vehicle types",
            "type": "array",
            "description": "Which kinds of vehicle to read. Empty means passenger cars.",
            "items": {
              "type": "string",
              "enum": [
                "car",
                "van",
                "light-truck",
                "minibus"
              ],
              "enumTitles": [
                "Passenger car",
                "Van",
                "Light truck",
                "Minibus"
              ]
            },
            "default": [
              "car"
            ]
          },
          "listingStatus": {
            "title": "Listing status",
            "enum": [
              "for-sale",
              "sold"
            ],
            "type": "string",
            "description": "for-sale = ads that are live now. sold = ads the seller marked as sold (kept on the site for a while, price shown as the last asking price).",
            "default": "for-sale"
          },
          "makes": {
            "title": "Makes",
            "type": "array",
            "description": "Optional. One or more makes exactly as nettiauto.com writes them, for example BMW, Volvo, Mercedes-Benz, Skoda. Empty means every make. Several makes cannot be combined with models.",
            "items": {
              "type": "string"
            }
          },
          "models": {
            "title": "Models",
            "type": "array",
            "description": "Optional. Models of the single make above, for example 320 or XC60. Needs exactly one make. Empty means every model of the make.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Optional. Regions (maakunta) of Finland to search in. Empty means all of Finland. In dealer mode it narrows the dealer directory.",
            "items": {
              "type": "string",
              "enum": [
                "Ahvenanmaa",
                "Etelä-Karjala",
                "Etelä-Pohjanmaa",
                "Etelä-Savo",
                "Kainuu",
                "Kanta-Häme",
                "Keski-Pohjanmaa",
                "Keski-Suomi",
                "Kymenlaakso",
                "Lappi",
                "Pirkanmaa",
                "Pohjanmaa",
                "Pohjois-Karjala",
                "Pohjois-Pohjanmaa",
                "Pohjois-Savo",
                "Päijät-Häme",
                "Satakunta",
                "Uusimaa",
                "Varsinais-Suomi",
                "Outside Finland"
              ],
              "enumTitles": [
                "Ahvenanmaa",
                "Etelä-Karjala",
                "Etelä-Pohjanmaa",
                "Etelä-Savo",
                "Kainuu",
                "Kanta-Häme",
                "Keski-Pohjanmaa",
                "Keski-Suomi",
                "Kymenlaakso",
                "Lappi",
                "Pirkanmaa",
                "Pohjanmaa",
                "Pohjois-Karjala",
                "Pohjois-Pohjanmaa",
                "Pohjois-Savo",
                "Päijät-Häme",
                "Satakunta",
                "Uusimaa",
                "Varsinais-Suomi",
                "Outside Finland"
              ]
            }
          },
          "towns": {
            "title": "Towns",
            "type": "array",
            "description": "Optional. Towns inside the single region chosen above, for example Espoo or Tampere. Needs exactly one region in search mode.",
            "items": {
              "type": "string"
            }
          },
          "bodyTypes": {
            "title": "Body types",
            "type": "array",
            "description": "Optional. Keep only these body types (car bodies and van bodies). Empty means any.",
            "items": {
              "type": "string",
              "enum": [
                "convertible",
                "coupe",
                "estate",
                "suv",
                "sedan",
                "mpv",
                "hatchback",
                "racing",
                "other-car",
                "van-platform",
                "van-chassis-cab",
                "van-extended-cab",
                "van-normal",
                "van-long",
                "van-extra-long",
                "van-short-low",
                "van-short-medium",
                "van-short-high",
                "van-semi-long-low",
                "van-semi-long-medium",
                "van-semi-long-high",
                "van-long-low",
                "van-long-medium",
                "van-long-high"
              ],
              "enumTitles": [
                "Convertible",
                "Coupe",
                "Estate",
                "SUV",
                "Sedan",
                "MPV",
                "Hatchback",
                "Racing vehicle",
                "Other (car)",
                "Van: platform truck",
                "Van: chassis cab",
                "Van: extended cab",
                "Van: normal",
                "Van: long",
                "Van: extra long",
                "Van: short, low roof",
                "Van: short, medium roof",
                "Van: short, high roof",
                "Van: semi-long, low roof",
                "Van: semi-long, medium roof",
                "Van: semi-long, high roof",
                "Van: long, low roof",
                "Van: long, medium roof",
                "Van: long, high roof"
              ]
            }
          },
          "fuelTypes": {
            "title": "Fuel types",
            "type": "array",
            "description": "Optional. Keep only these fuels. \"Hybrid\" matches every hybrid sub-type; pick a sub-type to narrow it. Empty means any.",
            "items": {
              "type": "string",
              "enum": [
                "petrol",
                "diesel",
                "e85-petrol",
                "hybrid",
                "hybrid-petrol-electric",
                "hybrid-diesel-electric",
                "hybrid-gas-electric",
                "gas",
                "electric",
                "hydrogen"
              ],
              "enumTitles": [
                "Petrol",
                "Diesel",
                "E85 / petrol",
                "Hybrid",
                "Hybrid (petrol / electric)",
                "Hybrid (diesel / electric)",
                "Hybrid (gas / electric)",
                "Gas",
                "Electric",
                "Hydrogen"
              ]
            }
          },
          "transmission": {
            "title": "Transmission",
            "enum": [
              "any",
              "automatic",
              "manual"
            ],
            "type": "string",
            "description": "Optional. Automatic or manual gearbox. any means both.",
            "default": "any"
          },
          "driveTypes": {
            "title": "Drive types",
            "type": "array",
            "description": "Optional. Keep only these drive layouts. Empty means any.",
            "items": {
              "type": "string",
              "enum": [
                "fwd",
                "rwd",
                "awd",
                "other"
              ],
              "enumTitles": [
                "Front-wheel drive",
                "Rear-wheel drive",
                "Four-wheel drive",
                "Other"
              ]
            }
          },
          "colors": {
            "title": "Colors",
            "type": "array",
            "description": "Optional. Keep only these exterior colors. Empty means any.",
            "items": {
              "type": "string",
              "enum": [
                "beige",
                "grey",
                "silver",
                "yellow",
                "copper",
                "black",
                "orange",
                "red",
                "brown",
                "blue",
                "turquoise",
                "white",
                "green",
                "purple",
                "other"
              ],
              "enumTitles": [
                "Beige",
                "Grey",
                "Silver",
                "Yellow",
                "Copper",
                "Black",
                "Orange",
                "Red",
                "Brown",
                "Blue",
                "Turquoise",
                "White",
                "Green",
                "Purple",
                "Other"
              ]
            }
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Lowest advertised price in euros. 0 means no limit."
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Highest advertised price in euros. 0 means no limit."
          },
          "minYear": {
            "title": "Minimum model year",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Optional. Oldest model year. 0 means no limit."
          },
          "maxYear": {
            "title": "Maximum model year",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Optional. Newest model year. 0 means no limit."
          },
          "minMileage": {
            "title": "Minimum mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Lowest odometer reading in kilometres. 0 means no limit."
          },
          "maxMileage": {
            "title": "Maximum mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Highest odometer reading in kilometres. 0 means no limit."
          },
          "minPowerHp": {
            "title": "Minimum power (hp)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Lowest engine power in horsepower. 0 means no limit."
          },
          "maxPowerHp": {
            "title": "Maximum power (hp)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Highest engine power in horsepower. 0 means no limit."
          },
          "minEngineSize": {
            "title": "Minimum engine size (cm3)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Smallest engine displacement in cubic centimetres, for example 1600. 0 means no limit."
          },
          "maxEngineSize": {
            "title": "Maximum engine size (cm3)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Largest engine displacement in cubic centimetres, for example 2000. 0 means no limit."
          },
          "minSeats": {
            "title": "Minimum seats",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Fewest seats. 0 means no limit."
          },
          "maxSeats": {
            "title": "Maximum seats",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Most seats. 0 means no limit."
          },
          "minDoors": {
            "title": "Minimum doors",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Fewest doors. 0 means no limit."
          },
          "maxDoors": {
            "title": "Maximum doors",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Most doors. 0 means no limit."
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "any",
              "dealer",
              "private"
            ],
            "type": "string",
            "description": "Optional. dealer = car dealers only. private = private persons only (flagged with isPrivateSeller, never named, no contact details). any means both.",
            "default": "any"
          },
          "roadWorthy": {
            "title": "Road-worthiness",
            "enum": [
              "any",
              "yes",
              "no"
            ],
            "type": "string",
            "description": "Optional. yes = vehicles that can be driven on the road. no = vehicles the seller marks as not roadworthy (project cars, parts cars). any means both.",
            "default": "any"
          },
          "maxAgeDays": {
            "title": "Updated within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "28"
            ],
            "type": "string",
            "description": "Optional. Keep only ads created or changed within this many days.",
            "default": "any"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "price-asc",
              "price-desc",
              "year-desc",
              "year-asc",
              "mileage-asc",
              "mileage-desc",
              "make-model-asc"
            ],
            "type": "string",
            "description": "Order of the results. Newest first is the default and the best choice for monitoring.",
            "default": "newest"
          },
          "startUrls": {
            "title": "Addresses",
            "type": "array",
            "description": "Ad addresses (https://www.nettiauto.com/bmw/3-sarja/12345678), dealer pages (https://www.nettiauto.com/yritys/1234), saved-search results (https://www.nettiauto.com/hakutulokset?haku=...) or the newest ads (https://www.nettiauto.com/uusimmat).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Ad numbers",
            "type": "array",
            "description": "Ad numbers (the number at the end of an ad address), for example 16064350.",
            "items": {
              "type": "string"
            }
          },
          "dealerIds": {
            "title": "Dealer numbers",
            "type": "array",
            "description": "Dealer numbers (the number in a dealer page address, https://www.nettiauto.com/yritys/1234). Empty means walk the directory with the regions and towns above.",
            "items": {
              "type": "string"
            }
          },
          "dealerQuery": {
            "title": "Dealer name search",
            "type": "string",
            "description": "Optional. Keep only dealers whose name contains these words, for example \"Kiesi\".",
            "default": ""
          },
          "fetchDetails": {
            "title": "Read ad pages",
            "type": "boolean",
            "description": "On (default): every ad page is read for the full record (description, equipment, VIN, seller, exact dates) and billed as a detail record. Off: only the list card is read (title, price, year, mileage, fuel, transmission, city, first photo), billed as a standard record. For dealers: on adds the profile (website, logo, description).",
            "default": true
          },
          "includeContactDetails": {
            "title": "Dealer contact details (phone, texts)",
            "type": "boolean",
            "description": "Off (default): phone numbers and e-mail addresses written into dealer texts are replaced by a marker and no phone is read. On: dealer texts are kept as written and ad rows of dealers get sellerPhone, the business line behind the call button of the ad (one extra request per dealer ad, needs ad pages on). Private persons never get contact data, whatever this says.",
            "default": false
          },
          "includeRaw": {
            "title": "Include raw data",
            "type": "boolean",
            "description": "Adds a \"raw\" column with the unprocessed data blocks of the site (list card and ad page analytics data).",
            "default": false
          },
          "onlyNew": {
            "title": "Only new listings (monitor mode)",
            "type": "boolean",
            "description": "Schedule the Actor and receive only ads you have not been given before. The first run returns everything and builds the memory. Use together with sort \"Newest first\".",
            "default": false
          },
          "stateKey": {
            "title": "Monitor label",
            "type": "string",
            "description": "Optional name of the monitor memory. Same label plus same filters = same memory. Empty derives the label from the filters.",
            "default": ""
          },
          "resetSeen": {
            "title": "Reset monitor memory",
            "type": "boolean",
            "description": "Forget everything seen before and start the memory again. Use after changing what you want to track.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "Ad pages read at the same time. The site answers slowly; 2 is the polite default.",
            "default": 2
          },
          "maxScanSeconds": {
            "title": "Time limit (seconds)",
            "minimum": 10,
            "maximum": 86400,
            "type": "integer",
            "description": "Stops reading after this many seconds and delivers what was collected.",
            "default": 3000
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}