{
  "openapi": "3.0.1",
  "info": {
    "title": "Marktplaats.nl Auto Scraper",
    "description": "Scrapes used car listings from Marktplaats.nl. No proxy required.",
    "version": "0.0",
    "x-build-id": "QnZoP1zgETIRQkyPL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unfenced-group~marktplaats-auto-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unfenced-group-marktplaats-auto-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/unfenced-group~marktplaats-auto-scraper/runs": {
      "post": {
        "operationId": "runs-sync-unfenced-group-marktplaats-auto-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/unfenced-group~marktplaats-auto-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-unfenced-group-marktplaats-auto-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": {
          "brand": {
            "title": "Brand",
            "type": "string",
            "description": "Car brand (e.g. volkswagen, bmw, mercedes-benz, toyota). Used as a server-side filter via Marktplaats category ID — 94 brands supported."
          },
          "searchKeyword": {
            "title": "Search keyword",
            "type": "string",
            "description": "Free-text search query (e.g. 'golf gti', 'elektrisch nap'). Server-side — reduces the result set before pagination."
          },
          "fuel": {
            "title": "Fuel type",
            "enum": [
              "benzine",
              "diesel",
              "elektrisch",
              "hybride",
              "hybride-benzine",
              "hybride-diesel",
              "lpg",
              "cng",
              "overige"
            ],
            "type": "string",
            "description": "Server-side fuel filter."
          },
          "transmission": {
            "title": "Transmission",
            "enum": [
              "automaat",
              "handgeschakeld"
            ],
            "type": "string",
            "description": "Server-side transmission filter."
          },
          "bodyType": {
            "title": "Body type",
            "enum": [
              "hatchback",
              "sedan",
              "stationwagon",
              "suv",
              "mpv",
              "cabriolet",
              "coupe",
              "overige"
            ],
            "type": "string",
            "description": "Server-side body style filter."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "gebruikt",
              "nieuw"
            ],
            "type": "string",
            "description": "Server-side condition filter."
          },
          "minPrice": {
            "title": "Min price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum listing price in EUR. Server-side range filter — only matching listings are returned by the API."
          },
          "maxPrice": {
            "title": "Max price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum listing price in EUR. Server-side range filter."
          },
          "minYear": {
            "title": "Min construction year",
            "minimum": 1900,
            "maximum": 2030,
            "type": "integer",
            "description": "Minimum year of manufacture. Server-side range filter."
          },
          "maxYear": {
            "title": "Max construction year",
            "minimum": 1900,
            "maximum": 2030,
            "type": "integer",
            "description": "Maximum year of manufacture. Server-side range filter."
          },
          "minMileage": {
            "title": "Min mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum mileage in km. Server-side range filter."
          },
          "maxMileage": {
            "title": "Max mileage (km)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum mileage in km. Server-side range filter."
          },
          "postcode": {
            "title": "Postcode",
            "type": "string",
            "description": "Dutch postcode to search near (e.g. 1012AB). Use with distanceMeters to filter by radius."
          },
          "distanceMeters": {
            "title": "Distance (meters)",
            "minimum": 1000,
            "type": "integer",
            "description": "Search radius from postcode in meters (e.g. 25000 = 25 km). Requires postcode."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "SORT_INDEX",
              "PRICE",
              "OPTIMIZED"
            ],
            "type": "string",
            "description": "Sort order for results. SORT_INDEX = newest first (default), PRICE = by price, OPTIMIZED = relevance."
          },
          "sortOrder": {
            "title": "Sort direction",
            "enum": [
              "DECREASING",
              "INCREASING"
            ],
            "type": "string",
            "description": "Sort direction. Only relevant when sortBy is set.",
            "default": "DECREASING"
          },
          "fetchDetails": {
            "title": "Fetch detail pages",
            "type": "boolean",
            "description": "Visit each listing's detail page to extract extra fields: licensePlate, trim, numberOfDoors/Seats, dateApk, totalNumberOfOwners, batteryCapacity, powerHp, listedSince, viewCount, favoritedCount, NAP/APK/warranty flags, and seller phone/type/years.",
            "default": false
          },
          "startUrls": {
            "title": "Start URLs (advanced)",
            "type": "array",
            "description": "Custom Marktplaats search URLs. Use only if the filter fields above don't cover your use case. When set without any filter fields, these are scraped via HTML extraction (legacy mode). When filter fields are also set, they take priority and startUrls is ignored.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum total listings to save.",
            "default": 100
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum pages to fetch (30 listings per page). Caps the run regardless of total results available.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}