Marktplaats.nl Auto Scraper avatar

Marktplaats.nl Auto Scraper

Pricing

from $0.99 / 1,000 results

Go to Apify Store
Marktplaats.nl Auto Scraper

Marktplaats.nl Auto Scraper

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

Pricing

from $0.99 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Categories

Share

Marktplaats.nl Auto Scraper

Scrapes used car listings from Marktplaats.nl. 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.

FieldTypeDescriptionExample
brandStringCar brand (94 brands supported, lowercase)volkswagen, bmw, mercedes-benz, tesla
searchKeywordStringFree-text search — combined with other filtersgolf gti, elektrisch nap, youngtimer
fuelEnumFuel type — see values belowelektrisch
transmissionEnumGearbox typeautomaat, handgeschakeld
bodyTypeEnumBody style — see values belowsuv, stationwagon
conditionEnumCondition filtergebruikt, nieuw
minPriceIntegerMinimum price in EUR5000
maxPriceIntegerMaximum price in EUR25000
minYearIntegerEarliest construction year2018
maxYearIntegerLatest construction year2023
minMileageIntegerMinimum mileage in km0
maxMileageIntegerMaximum mileage in km100000
postcodeStringDutch postcode — sorts by proximity, or limits by radius when combined with distanceMeters1012AB
distanceMetersIntegerSearch radius from postcode in meters25000
sortByEnumSORT_INDEX (newest first, default), PRICE, OPTIMIZED (relevance)PRICE
sortOrderEnumDECREASING (default) or INCREASINGINCREASING

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

FieldTypeDescriptionDefault
fetchDetailsBooleanFetch each listing's detail page for 40+ extra fieldsfalse

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

FieldTypeDescriptionDefault
maxItemsIntegerMax total listings to save100
maxPagesIntegerMax pages to fetch — 30 listings per page10
startUrlsArrayCustom 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

{
"fuel": "elektrisch",
"sortBy": "PRICE",
"sortOrder": "INCREASING",
"maxItems": 100
}

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

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

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

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

Budget hatchbacks under €5k — with full detail data

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

Diesel automatic estate cars, newest listings first

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

Output Fields

Core (all runs)

FieldTypeDescription
itemIdStringListing ID (e.g. m2396163685)
urlStringFull URL to the listing detail page
titleStringFull listing title
shortTitleStringShort car name (brand + model)
displayTitleStringVariant/trim line from the listing card
descriptionStringListing description (card-length excerpt)
priceNumberPrice in EUR (null if not shown)
priceCentsNumberPrice in euro cents
priceTypeStringFIXED, MIN_BID, or LEASE
dateStringListing date string (Vandaag, Gisteren, or a date)
priorityProductStringAd promotion type: DAGTOPPER, NONE, etc.
categoryIdNumberMarktplaats category ID
napAvailableBooleanNAP mileage history check available
videoOnVipBooleanListing has a video
reservedBooleanListing is marked reserved

Location

FieldTypeDescription
cityStringSeller's city
latitudeNumberApproximate latitude
longitudeNumberApproximate longitude
abroadBooleanListing is from abroad
distanceMetersNumberDistance from search postcode in meters (null if no postcode set)

Seller

FieldTypeDescription
sellerIdNumberSeller account ID
sellerNameStringSeller display name
sellerLogoUrlStringSeller 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.

FieldTypeDescription
brandStringCar brand (lowercase, e.g. volkswagen)
modelStringCar model (e.g. Golf)
constructionYearNumberYear of manufacture
mileageNumberMileage in km
mileageUnitStringAlways km
fuelStringFuel type (e.g. Benzine, Elektrisch)
transmissionStringHandgeschakeld or Automaat
bodyStringBody style (e.g. Hatchback, SUV of Terreinwagen)
energyLabelStringEnergy label A–G
colorString†Exterior colour (e.g. Zwart, Zilver of Grijs)
interiorColorString†Interior colour
upholsteryString†Upholstery type (e.g. Leder, Stof)
driveTrainString†Drive type (e.g. Voorwielaandrijving, 4WD permanent)
engineHorsepowerNumber†Engine power in pk
engineDisplacementString†Engine displacement in litres (e.g. 3.0)
numberOfCylindersString†Number of cylinders (e.g. 6)
euronormString†Emission standard (e.g. Euro 6)
conditionString†Gebruikt or Nieuw
importedString†Import status (e.g. Origineel Nederlands)
fuelConsumptionString†Fuel economy in km/l
roadTaxString†Monthly road tax (e.g. € 298,67)
emptyWeightString†Empty weight in kg
rangeString†Electric range in km
bovagWarrantyString†BOVAG warranty description
towingWeightNoBrakesString†Max towing weight without brakes in kg
serviceHistoryString†Service history type (e.g. Dealer onderhouden, Onderhoudsboekje)
optionsArrayList of car options/features
highlightsArrayTrust indicator keys (e.g. napCheck, BookFromDealer)
imagesArrayAll image URLs (large format)
thumbnailUrlStringFirst 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

FieldTypeDescription
licensePlateStringDutch license plate number
trimStringTrim/variant level (e.g. 350 BlueTEC 4-Matic)
dateApkStringAPK (roadworthiness) expiry date
totalNumberOfOwnersNumberTotal number of previous owners
firstRecordInNlStringDate first registered in the Netherlands
newCarPriceStringOriginal new-car list price
lastOwnerTypeStringLast owner type: Particulier, Autobedrijf, etc.
ownerSinceStringDate current seller has owned the car

Engine & performance

FieldTypeDescription
powerHpNumberEngine power in pk (same value as engineHorsepower)
cylinderCapacityStringEngine displacement in litres (e.g. 3.0)
numberOfCylindersStringNumber of cylinders
torqueStringEngine torque (e.g. 620 nm / 1.600 tpm)
isTurboBooleanTurbocharged engine
topSpeedStringTop speed in km/h
accelerationString0–100 km/h time in seconds
batteryCapacityStringBattery capacity in kWh (EVs and plug-in hybrids)

Eco

FieldTypeDescription
co2emissionStringCO₂ emission in g/km

Dimensions

FieldTypeDescription
lengthInMetersStringVehicle length in metres
widthInMetersStringVehicle width in metres
heightInMetersStringVehicle height in metres
wheelBaseStringWheelbase in metres
fuelTankCapacityStringFuel tank capacity in litres
bootVolumeMinMaxStringBoot volume range in litres (e.g. 620 - 2300)
maxWeightWithBrakesStringMax towing weight with brakes in kg

Brakes

FieldTypeDescription
frontBrakesStringFront brake type (e.g. Schijfrem)
rearBrakesStringRear 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.

FieldTypeDescription
estimatedFuelPerMonthStringEstimated monthly fuel cost
estimatedRepairPerMonthStringEstimated monthly maintenance cost
estimatedTiresPerMonthStringEstimated monthly tyre cost
estimatedTotalPerMonthStringEstimated total monthly ownership cost
estimatedCostPerKmStringEstimated cost per kilometre
estimatedCostPerYearStringEstimated total annual cost

Engagement

FieldTypeDescription
listedSinceStringISO 8601 timestamp when listing was first published
viewCountNumberNumber of times the listing has been viewed
favoritedCountNumberNumber of times saved to favourites

Trust indicators

FieldTypeDescription
napCheckedBooleanNAP mileage check passed
apkValidBooleanAPK valid indicator shown
maintenanceBookletBooleanMaintenance booklet present
firstOwnerBooleanListed as first owner

Seller detail

FieldTypeDescription
sellerTypeStringTRADER (dealer) or CONSUMER (private seller)
sellerPhoneStringPhone number (null for private sellers or if hidden)
sellerYearsNumberYears active on Marktplaats
sellerWebsiteStringSeller website display URL
sellerPageUrlStringFull 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 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