Marktplaats.nl Auto Scraper
Pricing
from $0.97 / 1,000 results
Marktplaats.nl Auto Scraper
Scrape vehicle listings from Marktplaats.nl, the Netherlands' largest classifieds marketplace. Returns make, model, year, mileage, asking price, fuel type, transmission, seller type and location. Filter by keyword, price range and region.
Pricing
from $0.97 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
2
Monthly active users
9 days ago
Last modified
Categories
Share

Extract vehicle listings from marktplaats.nl at scale: make, model, year, mileage, asking price, fuel type, transmission, seller type and location, in a clean structure ready for price monitoring and market research. No API key required.
Why this scraper?
🎯 Built for marktplaats.nl
A dedicated Dutch scraper tuned for marktplaats.nl — its categories, price formats and currency (EUR), not a generic tool pointed at it.
💶 Structured pricing
Current price as a clean number in EUR, plus discounts and previous prices where the source shows them. Items without a published price return null, never a guess.
🤝 Seller and condition
Seller details and item condition in structured fields, ready for filtering.
🖼️ Photos
Photo URLs for every listing where the source publishes them.
📄 Full item content
Complete description and title for every record, with a direct link back to the source.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
brand | string | (empty) | Car brand (e.g. volkswagen, bmw, mercedes-benz, toyota). Used as a server-side filter via Marktplaats category ID — 94 brands supported. |
searchKeyword | string | (empty) | Free-text search query (e.g. 'golf gti', 'elektrisch nap'). Server-side — reduces the result set before pagination. |
fuel | string | (empty) | Server-side fuel filter. |
transmission | string | (empty) | Server-side transmission filter. |
bodyType | string | (empty) | Server-side body style filter. |
condition | string | (empty) | Server-side condition filter. |
minPrice | integer | (empty) | Minimum listing price in EUR. Server-side range filter — only matching listings are returned by the API. |
maxPrice | integer | (empty) | Maximum listing price in EUR. Server-side range filter. |
minYear | integer | (empty) | Minimum year of manufacture. Server-side range filter. |
maxYear | integer | (empty) | Maximum year of manufacture. Server-side range filter. |
minMileage | integer | (empty) | Minimum mileage in km. Server-side range filter. |
maxMileage | integer | (empty) | Maximum mileage in km. Server-side range filter. |
postcode | string | (empty) | Dutch postcode to search near (e.g. 1012AB). Use with distanceMeters to filter by radius. |
distanceMeters | integer | (empty) | Search radius from postcode in meters (e.g. 25000 = 25 km). Requires postcode. |
sortBy | string | (empty) | Sort order for results. SORT_INDEX = newest first (default), PRICE = by price, OPTIMIZED = relevance. |
sortOrder | string | "DECREASING" | Sort direction. Only relevant when sortBy is set. |
fetchDetails | boolean | false | 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 | array | (empty) | 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 | integer | 20 | Maximum total listings to save. |
maxPages | integer | 10 | Maximum pages to fetch (30 listings per page). Caps the run regardless of total results available. |
Output schema
Every field below is present on every record. Fields the source does not publish for a given item are returned as null rather than omitted.
| 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) |
descriptionMarkdown | string | Description in Markdown/plain text. |
price | number | Price in EUR (null if not shown) |
priceCents | number | Price in euro cents |
priceType | string | FIXED, MIN_BID, or LEASE |
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) |
sellerId | number | Seller account ID |
sellerName | string | Seller display name |
sellerLogoUrl | string | Seller logo URL (dealers only, else null) |
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 |
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 |
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 |
Example record
{"itemId": "m2416692443","url": "https://www.marktplaats.nl/v/auto-s/volkswagen/m2416692443-volkswagen-golf-mk4-gti-1-8-20vt-110kw-1998-grijs","title": "Volkswagen Golf MK4 GTI 1.8 20Vt 110KW 1998 Grijs","shortTitle": "Volkswagen Golf","displayTitle": "MK4 GTI 1.8 20Vt 110KW 1998 Grijs","description": "Te koop volkswagen golf mk4 gti 1.8 20Vt 110kw 1998 grijs hierbij verkoop ik mijn golf gti. Een hele fijne en betrouwbare auto heb hem helaas maar kort gehad maar ben toch opzoek naar iets ruimers en ","descriptionMarkdown": "Te koop volkswagen golf mk4 gti 1.8 20Vt 110kw 1998 grijs hierbij verkoop ik mijn golf gti. Een hele fijne en betrouwbare auto heb hem helaas maar kort gehad maar ben toch opzoek naar iets ruimers en ","price": 0,"priceCents": 0,"priceType": "FAST_BID","city": "Nederweert-Eind","latitude": 51.278335860931,"longitude": 5.7813832658473,"abroad": false,"distanceMeters": -1000,"sellerId": 50632846,"sellerName": "minarelli","sellerLogoUrl": null,"date": "Vandaag","priorityProduct": "DAGTOPPER","categoryId": 157,"napAvailable": false,"videoOnVip": false,"reserved": false,"brand": "volkswagen","model": "Golf","constructionYear": 1998,"mileage": 271000,"mileageUnit": "km","fuel": "Benzine","transmission": "Handgeschakeld","body": "Hatchback","energyLabel": null,"color": null,"interiorColor": null,"upholstery": null,"driveTrain": null,"engineHorsepower": 149,"engineDisplacement": "1781 cc","numberOfCylinders": "4","euronorm": null,"condition": null,"imported": null,"fuelConsumption": null,"roadTax": null,"emptyWeight": null,"range": null,"bovagWarranty": null,"towingWeightNoBrakes": null,"serviceHistory": null,"options": [],"highlights": [],"images": ["https://images.marktplaats.com/api/v1/hz-mp-pro-listing/images/078cf968-6b56-4164-9238-55bdb7571aef?rule=ecg_mp_eps$_83. …"],"thumbnailUrl": "https://images.marktplaats.com/api/v1/hz-mp-pro-listing/images/078cf968-6b56-4164-9238-55bdb7571aef?rule=ecg_mp_eps$_83.jpg"}
Examples
Search for Volkswagen Golf:
{"searchKeyword": "Volkswagen Golf","maxItems": 100}
Cap the price:
{"searchKeyword": "Volkswagen Golf","maxItems": 100,"maxPrice": 24.5}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.marktplaats.nl/"}],"maxItems": 200}
Daily monitoring (run on a schedule):
{"searchKeyword": "Volkswagen Golf","maxItems": 500}
Schedule this input to run once a day in the Apify Scheduler to track prices, stock and new items over time.
💰 Pricing
$0.99 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.10 |
| 1,000 | ~$0.99 |
| 10,000 | ~$9.90 |
| 100,000 | ~$99.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.95 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Some fields (brand, condition, shipping) are only returned when the seller or source publishes them — expect
nullon a share of records. - Prices and stock change constantly; records reflect the moment of scraping.
- Very large result sets are bounded by the source's own paging limits.
- Items can sell or be withdrawn at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: marktplaats.nl
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group 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