# Marktplaats.nl Auto Scraper (`unfenced-group/marktplaats-auto-scraper`) Actor

Scrapes used car listings from Marktplaats.nl. No proxy required.

- **URL**: https://apify.com/unfenced-group/marktplaats-auto-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.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.

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

## Marktplaats.nl Auto Scraper

![Marktplaats.nl Auto Scraper](https://api.apify.com/v2/key-value-stores/lJlifu6C8YQfZMPKE/records/marktplaats-auto-scraper)

Scrapes used car listings from [Marktplaats.nl](https://www.marktplaats.nl/l/auto-s/). No proxy required.

**Method:** Marktplaats internal JSON API (`/lrp/api/search`) — pure JSON responses, no HTML parsing. All filters are server-side; only matching listings are returned.

### Features

- **All filters are server-side** — brand, keyword, fuel, transmission, body type, condition, price, year, mileage, postcode + radius
- Sort by price (low→high or high→low), newest first, or relevance
- Optional detail-page scraping (`fetchDetails`) for 40+ extra fields: color, license plate, APK date, engine specs, dimensions, monthly cost estimates, seller info, and more
- 94 brands supported with direct category lookup
- Automatic pagination up to 200 pages (~6,000 listings per run)
- No proxy required — works on datacenter IPs

### Input

#### Search & Filters

All filters are processed server-side — only listings matching every filter you set are returned.

| Field | Type | Description | Example |
|-------|------|-------------|---------|
| `brand` | String | Car brand (94 brands supported, lowercase) | `volkswagen`, `bmw`, `mercedes-benz`, `tesla` |
| `searchKeyword` | String | Free-text search — combined with other filters | `golf gti`, `elektrisch nap`, `youngtimer` |
| `fuel` | Enum | Fuel type — see values below | `elektrisch` |
| `transmission` | Enum | Gearbox type | `automaat`, `handgeschakeld` |
| `bodyType` | Enum | Body style — see values below | `suv`, `stationwagon` |
| `condition` | Enum | Condition filter | `gebruikt`, `nieuw` |
| `minPrice` | Integer | Minimum price in EUR | `5000` |
| `maxPrice` | Integer | Maximum price in EUR | `25000` |
| `minYear` | Integer | Earliest construction year | `2018` |
| `maxYear` | Integer | Latest construction year | `2023` |
| `minMileage` | Integer | Minimum mileage in km | `0` |
| `maxMileage` | Integer | Maximum mileage in km | `100000` |
| `postcode` | String | Dutch postcode — sorts by proximity, or limits by radius when combined with `distanceMeters` | `1012AB` |
| `distanceMeters` | Integer | Search radius from postcode in meters | `25000` |
| `sortBy` | Enum | `SORT_INDEX` (newest first, default), `PRICE`, `OPTIMIZED` (relevance) | `PRICE` |
| `sortOrder` | Enum | `DECREASING` (default) or `INCREASING` | `INCREASING` |

**Fuel type values:** `benzine`, `diesel`, `elektrisch`, `hybride`, `hybride-benzine`, `hybride-diesel`, `lpg`, `cng`, `waterstof`, `overige`

**Body type values:** `hatchback`, `sedan`, `stationwagon`, `suv`, `mpv`, `cabriolet`, `coupe`, `overige`

> **Postcode behaviour:** `postcode` alone sorts results by distance to that postcode (national scope). Add `distanceMeters` to restrict results to a radius.

#### Detail Pages

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `fetchDetails` | Boolean | Fetch each listing's detail page for 40+ extra fields | `false` |

When `fetchDetails: true`, each listing gets one extra request to its detail page. This populates fields that Marktplaats does not include in search card data — color, engine specs, dimensions, cost estimates, and more. See the full output field list below.

> **Note:** `fetchDetails` roughly doubles run time — one extra request per listing.

#### Paging & Limits

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `maxItems` | Integer | Max total listings to save | `100` |
| `maxPages` | Integer | Max pages to fetch — 30 listings per page | `10` |
| `startUrls` | Array | Custom Marktplaats search URLs (advanced — see note below) | — |

> **`startUrls` note:** Providing `startUrls` without any filter fields activates legacy HTML mode, which scrapes `__NEXT_DATA__` JSON from the page. This exists for backward compatibility with custom Marktplaats search URLs. When any filter field is also set, the JSON API is used and `startUrls` is ignored.

### Examples

**Cheapest electric cars, low to high**
```json
{
  "fuel": "elektrisch",
  "sortBy": "PRICE",
  "sortOrder": "INCREASING",
  "maxItems": 100
}
````

**BMW SUVs €15k–€45k, automatic, max 100k km**

```json
{
  "brand": "bmw",
  "bodyType": "suv",
  "transmission": "automaat",
  "minPrice": 15000,
  "maxPrice": 45000,
  "maxMileage": 100000,
  "maxItems": 100
}
```

**VW Golf GTI 2018–2023, near Amsterdam, 50 km radius**

```json
{
  "brand": "volkswagen",
  "searchKeyword": "golf gti",
  "minYear": 2018,
  "maxYear": 2023,
  "postcode": "1012AB",
  "distanceMeters": 50000,
  "maxItems": 50
}
```

**Budget hatchbacks under €5k — with full detail data**

```json
{
  "bodyType": "hatchback",
  "maxPrice": 5000,
  "maxMileage": 150000,
  "fetchDetails": true,
  "maxItems": 100
}
```

**Diesel automatic estate cars, newest listings first**

```json
{
  "fuel": "diesel",
  "transmission": "automaat",
  "bodyType": "stationwagon",
  "sortBy": "SORT_INDEX",
  "maxItems": 200
}
```

### Output Fields

#### Core (all runs)

| Field | Type | Description |
|-------|------|-------------|
| `itemId` | String | Listing ID (e.g. `m2396163685`) |
| `url` | String | Full URL to the listing detail page |
| `title` | String | Full listing title |
| `shortTitle` | String | Short car name (brand + model) |
| `displayTitle` | String | Variant/trim line from the listing card |
| `description` | String | Listing description (card-length excerpt) |
| `price` | Number | Price in EUR (`null` if not shown) |
| `priceCents` | Number | Price in euro cents |
| `priceType` | String | `FIXED`, `MIN_BID`, or `LEASE` |
| `date` | String | Listing date string (`Vandaag`, `Gisteren`, or a date) |
| `priorityProduct` | String | Ad promotion type: `DAGTOPPER`, `NONE`, etc. |
| `categoryId` | Number | Marktplaats category ID |
| `napAvailable` | Boolean | NAP mileage history check available |
| `videoOnVip` | Boolean | Listing has a video |
| `reserved` | Boolean | Listing is marked reserved |

#### Location

| Field | Type | Description |
|-------|------|-------------|
| `city` | String | Seller's city |
| `latitude` | Number | Approximate latitude |
| `longitude` | Number | Approximate longitude |
| `abroad` | Boolean | Listing is from abroad |
| `distanceMeters` | Number | Distance from search postcode in meters (`null` if no postcode set) |

#### Seller

| Field | Type | Description |
|-------|------|-------------|
| `sellerId` | Number | Seller account ID |
| `sellerName` | String | Seller display name |
| `sellerLogoUrl` | String | Seller logo URL (dealers only, else `null`) |

#### Car specs (search card level)

These fields come from the search API and are present on most listings. Some (marked †) are only populated on listings where Marktplaats includes them in the card-level data — use `fetchDetails` to guarantee them.

| Field | Type | Description |
|-------|------|-------------|
| `brand` | String | Car brand (lowercase, e.g. `volkswagen`) |
| `model` | String | Car model (e.g. `Golf`) |
| `constructionYear` | Number | Year of manufacture |
| `mileage` | Number | Mileage in km |
| `mileageUnit` | String | Always `km` |
| `fuel` | String | Fuel type (e.g. `Benzine`, `Elektrisch`) |
| `transmission` | String | `Handgeschakeld` or `Automaat` |
| `body` | String | Body style (e.g. `Hatchback`, `SUV of Terreinwagen`) |
| `energyLabel` | String | Energy label A–G |
| `color` | String† | Exterior colour (e.g. `Zwart`, `Zilver of Grijs`) |
| `interiorColor` | String† | Interior colour |
| `upholstery` | String† | Upholstery type (e.g. `Leder`, `Stof`) |
| `driveTrain` | String† | Drive type (e.g. `Voorwielaandrijving`, `4WD permanent`) |
| `engineHorsepower` | Number† | Engine power in pk |
| `engineDisplacement` | String† | Engine displacement in litres (e.g. `3.0`) |
| `numberOfCylinders` | String† | Number of cylinders (e.g. `6`) |
| `euronorm` | String† | Emission standard (e.g. `Euro 6`) |
| `condition` | String† | `Gebruikt` or `Nieuw` |
| `imported` | String† | Import status (e.g. `Origineel Nederlands`) |
| `fuelConsumption` | String† | Fuel economy in km/l |
| `roadTax` | String† | Monthly road tax (e.g. `€ 298,67`) |
| `emptyWeight` | String† | Empty weight in kg |
| `range` | String† | Electric range in km |
| `bovagWarranty` | String† | BOVAG warranty description |
| `towingWeightNoBrakes` | String† | Max towing weight without brakes in kg |
| `serviceHistory` | String† | Service history type (e.g. `Dealer onderhouden`, `Onderhoudsboekje`) |
| `options` | Array | List of car options/features |
| `highlights` | Array | Trust indicator keys (e.g. `napCheck`, `BookFromDealer`) |
| `images` | Array | All image URLs (large format) |
| `thumbnailUrl` | String | First image URL |

#### With `fetchDetails: true`

All fields below are populated from the detail page. They also backfill any `†` fields above that were null from the search card.

##### Identity & history

| Field | Type | Description |
|-------|------|-------------|
| `licensePlate` | String | Dutch license plate number |
| `trim` | String | Trim/variant level (e.g. `350 BlueTEC 4-Matic`) |
| `dateApk` | String | APK (roadworthiness) expiry date |
| `totalNumberOfOwners` | Number | Total number of previous owners |
| `firstRecordInNl` | String | Date first registered in the Netherlands |
| `newCarPrice` | String | Original new-car list price |
| `lastOwnerType` | String | Last owner type: `Particulier`, `Autobedrijf`, etc. |
| `ownerSince` | String | Date current seller has owned the car |

##### Engine & performance

| Field | Type | Description |
|-------|------|-------------|
| `powerHp` | Number | Engine power in pk (same value as `engineHorsepower`) |
| `cylinderCapacity` | String | Engine displacement in litres (e.g. `3.0`) |
| `numberOfCylinders` | String | Number of cylinders |
| `torque` | String | Engine torque (e.g. `620 nm / 1.600 tpm`) |
| `isTurbo` | Boolean | Turbocharged engine |
| `topSpeed` | String | Top speed in km/h |
| `acceleration` | String | 0–100 km/h time in seconds |
| `batteryCapacity` | String | Battery capacity in kWh (EVs and plug-in hybrids) |

##### Eco

| Field | Type | Description |
|-------|------|-------------|
| `co2emission` | String | CO₂ emission in g/km |

##### Dimensions

| Field | Type | Description |
|-------|------|-------------|
| `lengthInMeters` | String | Vehicle length in metres |
| `widthInMeters` | String | Vehicle width in metres |
| `heightInMeters` | String | Vehicle height in metres |
| `wheelBase` | String | Wheelbase in metres |
| `fuelTankCapacity` | String | Fuel tank capacity in litres |
| `bootVolumeMinMax` | String | Boot volume range in litres (e.g. `620 - 2300`) |
| `maxWeightWithBrakes` | String | Max towing weight with brakes in kg |

##### Brakes

| Field | Type | Description |
|-------|------|-------------|
| `frontBrakes` | String | Front brake type (e.g. `Schijfrem`) |
| `rearBrakes` | String | Rear brake type (e.g. `Trommelrem`) |

##### Monthly cost estimates

Marktplaats provides these cost estimates based on mileage and vehicle data. All values are formatted strings with € prefix.

| Field | Type | Description |
|-------|------|-------------|
| `estimatedFuelPerMonth` | String | Estimated monthly fuel cost |
| `estimatedRepairPerMonth` | String | Estimated monthly maintenance cost |
| `estimatedTiresPerMonth` | String | Estimated monthly tyre cost |
| `estimatedTotalPerMonth` | String | Estimated total monthly ownership cost |
| `estimatedCostPerKm` | String | Estimated cost per kilometre |
| `estimatedCostPerYear` | String | Estimated total annual cost |

##### Engagement

| Field | Type | Description |
|-------|------|-------------|
| `listedSince` | String | ISO 8601 timestamp when listing was first published |
| `viewCount` | Number | Number of times the listing has been viewed |
| `favoritedCount` | Number | Number of times saved to favourites |

##### Trust indicators

| Field | Type | Description |
|-------|------|-------------|
| `napChecked` | Boolean | NAP mileage check passed |
| `apkValid` | Boolean | APK valid indicator shown |
| `maintenanceBooklet` | Boolean | Maintenance booklet present |
| `firstOwner` | Boolean | Listed as first owner |

##### Seller detail

| Field | Type | Description |
|-------|------|-------------|
| `sellerType` | String | `TRADER` (dealer) or `CONSUMER` (private seller) |
| `sellerPhone` | String | Phone number (`null` for private sellers or if hidden) |
| `sellerYears` | Number | Years active on Marktplaats |
| `sellerWebsite` | String | Seller website display URL |
| `sellerPageUrl` | String | Full URL to seller's Marktplaats profile page |

### Technical Notes

- Uses Marktplaats's internal JSON search API (`/lrp/api/search`) — the same endpoint the website calls itself
- All filters and range queries are evaluated server-side; only matching listings come back
- No proxy required — the API responds normally on datacenter IPs
- Many car spec fields (color, engine specs, roadTax, etc.) are **not included** in search card data by Marktplaats. They are only available on the detail page. Use `fetchDetails: true` to populate them reliably
- The `†` markers in the table above indicate fields that are sometimes present in search results but inconsistently — `fetchDetails` guarantees them
- `condition` is often `null` on search card results regardless of filter; it is reliably present with `fetchDetails: true`
- `postcode` without `distanceMeters` returns national results sorted by proximity to the postcode
- `startUrls` (legacy HTML mode) strips `#fragment` portions before fetching
- Marktplaats caps result sets at approximately 200 pages (~6,000 listings) per query

### Changelog

#### v3.0.2

- Fixed color, interiorColor, upholstery, driveTrain, engineHorsepower, engineDisplacement, numberOfCylinders, euronorm, condition, fuelConsumption, roadTax, emptyWeight, towingWeightNoBrakes, serviceHistory, bovagWarranty — these fields were always null because they are not in Marktplaats search card data. They are now populated from the detail page when `fetchDetails: true`
- Fixed `towingWeightNoBrakes` mapping: VDP key is `maxWeightWithoutBrakes`, not `towingWeightNoBrakes`
- Fixed `numberOfCylinders`: search API returns `"4 cilinders"` — now strips the text suffix to return just the number
- Added 21 new `fetchDetails` fields: `co2emission`, `cylinderCapacity`, `torque`, `isTurbo`, `lastOwnerType`, `ownerSince`, `lengthInMeters`, `widthInMeters`, `heightInMeters`, `wheelBase`, `fuelTankCapacity`, `bootVolumeMinMax`, `maxWeightWithBrakes`, `frontBrakes`, `rearBrakes`, `estimatedFuelPerMonth`, `estimatedRepairPerMonth`, `estimatedTiresPerMonth`, `estimatedTotalPerMonth`, `estimatedCostPerKm`, `estimatedCostPerYear`

#### v3.0.1

- Fixed `sellerPhone` returning `""` instead of `null` for private sellers
- Added `distanceMeters` output field (distance from postcode per listing)

#### v3.0.0

- Switched from HTML/`__NEXT_DATA__` parsing to Marktplaats internal JSON API
- All range filters (price, year, mileage) are now true server-side API params
- Added `sortBy` / `sortOrder`: sort by price, date, or relevance
- Added `postcode` + `distanceMeters`: geo radius search
- Added `fetchDetails`: optional detail-page scrape for extra fields
- Brand filter now resolves to a direct category ID (94 brands mapped)
- Backward-compatible `startUrls` legacy mode preserved

#### v2.0.0

- Added URL builder for brand, model, fuel, transmission, body type, condition, and keyword
- Added post-scrape range filters for price, year, and mileage

#### v1.0.0

- Initial release: JSON-HTML extraction via `__NEXT_DATA__`

***

### Need a custom scraper?

**[Unfenced Group](https://www.unfencedgroup.nl)** builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

**Get in touch:** [www.unfencedgroup.nl](https://www.unfencedgroup.nl)

# Actor input Schema

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

Car brand (e.g. volkswagen, bmw, mercedes-benz, toyota). Used as a server-side filter via Marktplaats category ID — 94 brands supported.

## `searchKeyword` (type: `string`):

Free-text search query (e.g. 'golf gti', 'elektrisch nap'). Server-side — reduces the result set before pagination.

## `fuel` (type: `string`):

Server-side fuel filter.

## `transmission` (type: `string`):

Server-side transmission filter.

## `bodyType` (type: `string`):

Server-side body style filter.

## `condition` (type: `string`):

Server-side condition filter.

## `minPrice` (type: `integer`):

Minimum listing price in EUR. Server-side range filter — only matching listings are returned by the API.

## `maxPrice` (type: `integer`):

Maximum listing price in EUR. Server-side range filter.

## `minYear` (type: `integer`):

Minimum year of manufacture. Server-side range filter.

## `maxYear` (type: `integer`):

Maximum year of manufacture. Server-side range filter.

## `minMileage` (type: `integer`):

Minimum mileage in km. Server-side range filter.

## `maxMileage` (type: `integer`):

Maximum mileage in km. Server-side range filter.

## `postcode` (type: `string`):

Dutch postcode to search near (e.g. 1012AB). Use with distanceMeters to filter by radius.

## `distanceMeters` (type: `integer`):

Search radius from postcode in meters (e.g. 25000 = 25 km). Requires postcode.

## `sortBy` (type: `string`):

Sort order for results. SORT\_INDEX = newest first (default), PRICE = by price, OPTIMIZED = relevance.

## `sortOrder` (type: `string`):

Sort direction. Only relevant when sortBy is set.

## `fetchDetails` (type: `boolean`):

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.

## `startUrls` (type: `array`):

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.

## `maxItems` (type: `integer`):

Maximum total listings to save.

## `maxPages` (type: `integer`):

Maximum pages to fetch (30 listings per page). Caps the run regardless of total results available.

## Actor input object example

```json
{
  "brand": "volkswagen",
  "searchKeyword": "golf gti",
  "minPrice": 5000,
  "maxPrice": 25000,
  "minYear": 2018,
  "maxYear": 2023,
  "maxMileage": 100000,
  "postcode": "1012AB",
  "distanceMeters": 25000,
  "sortOrder": "DECREASING",
  "fetchDetails": false,
  "startUrls": [],
  "maxItems": 20,
  "maxPages": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "startUrls": [],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/marktplaats-auto-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 = {
    "startUrls": [],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/marktplaats-auto-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 '{
  "startUrls": [],
  "maxItems": 20
}' |
apify call unfenced-group/marktplaats-auto-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
