Marktplaats.nl Scraper

Scrape Marktplaats.nl listings as clean JSON — titles, prices, categories, locations, images and dates. GDPR-clean by design: no seller names, IDs or contact data, ever. Automatic splitting past the 5,000-result cap, with pay-per-result pricing. Built for price monitoring and market research.

$1.99 / 1,000 · 100.0% success over 1,437 public runs in the last 30 days.

Run it on Apify → Free to try - runs bill per result on your own account.

What you give it

Every field is optional unless marked; sensible defaults do the rest.

FieldTypeWhat it doesDefault
searchQuery string Free-text search. Provide this, a category, or both. fiets
categoryId integer Numeric marketplace category ID to scope the crawl. Every result includes its categoryId, so run a broad search first to discover the IDs you need. Optional. -
listingIds array Fetch these exact listings instead of searching, e.g. ["m2421501285"] - the id is in every listing URL and every dataset item. Useful to re-check price or availability of listings you found earlier. When set, all search filters are ignored. []
postcode string Dutch postcode to search around, e.g. "3511AA" (Utrecht). Combine with radiusKm; results include the distance in meters. -
radiusKm integer Only return listings within this many km of the postcode. Requires postcode. -
conditions array Only return listings in these conditions. Empty = all conditions. []
delivery string Only listings offering pickup, or only listings that ship. "any" = no filter. any
buyItNowOnly boolean Only listings with the "Direct Kopen" (buy it now) option. False
priceMinEur integer Only return listings priced at or above this amount. Optional. -
priceMaxEur integer Only return listings priced at or below this amount. Optional. -
sortBy string Order of the results. Newest first is the default and the right choice for monitoring. date
postedAfter string Only keep listings posted on or after this date (YYYY-MM-DD or ISO timestamp). Listings whose posting date cannot be read are excluded when a window is set. -
postedBefore string Only keep listings posted on or before this date (YYYY-MM-DD or ISO timestamp). -
maxItems integer Stop after this many listings. 1000

What you get back

One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.

FieldTypeMeaning
listingId string Marketplace listing ID, e.g. m2420174899.
title string Listing title as posted.
description string Listing description snippet as returned by the marketplace search.
priceCents integer Asking price in euro cents. Absent when the listing has no price.
priceType string Marketplace price kind, e.g. FIXED or MIN_BID.
city string Municipality of the listing.
country string Country of the listing (usually Nederland).
latitude number Marketplace-provided municipality-level coordinate, not a seller address.
longitude number Marketplace-provided municipality-level coordinate, not a seller address.
postedAt string Posting date as the marketplace displays it: a date, or a relative label like 'Vandaag' (today).
imageUrls array Protocol-relative image URLs; prepend https: to use them.
categoryId integer Numeric marketplace category ID. Reusable as the categoryId input.
url string Direct link to the listing.
attributes object Whitelisted, non-personal listing attributes that vary by category — e.g. condition and delivery on any item; constructionYear, mileage, fuel, transmission and options for cars; livingArea and numberOfRooms for property; storage and cameraResolution for phones. Present when the listing has them.
reserved boolean Whether the listing is currently marked as reserved by the marketplace.
sellerType string Whether the listing comes from a business or a private seller. The only seller-related field in the output.
postedDate string Posting date normalized to YYYY-MM-DD (from the site's display date).

Health

100.0% success over 1,437 public runs in the last 30 days. Live record, failures included: status page.

Full documentation, examples and the AI-assistant prompt live on the store page.