Marktplaats Scraper: Listings & Prices avatar

Marktplaats Scraper: Listings & Prices

Pricing

from $1.00 / 1,000 listings

Go to Apify Store
Marktplaats Scraper: Listings & Prices

Marktplaats Scraper: Listings & Prices

Marktplaats.nl listings from any keyword or search, category or seller URL: title, price and price type, condition, city and distance, posted date, attributes, photos, shipping options, seller name and business flag, with optional full descriptions. Dutch classifieds data, no login.

Pricing

from $1.00 / 1,000 listings

Rating

0.0

(0)

Developer

Trevor Ortega

Trevor Ortega

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Features

Limited permissions

Share

Marktplaats Scraper: Listings, Prices & Sellers

Scrape Marktplaats listings from Marktplaats.nl, the largest classifieds site in the Netherlands: title, price and price type (fixed, "Bieden", free, "Zie omschrijving"), condition, delivery option, category, city and distance, posting date, attributes, all photos, seller name and listing URL. Start from any Marktplaats search, category or seller URL (with the filters you set on the site), or just type a few keywords with a price range, a postcode and a radius. Turn on Include listing details to add the full description, the complete "Kenmerken" table, the seller type (private or business), views and favourites, the exact posting time and the shipping options.

It reads the same JSON search service the Marktplaats website loads, so one request returns up to 100 listings and a run of a few hundred listings finishes in seconds on Apify's datacenter proxies. Export to JSON, CSV or Excel, or pull the results through the API into your app, a spreadsheet, a price-monitoring workflow or an LLM pipeline.

What data does Marktplaats Scraper extract?

FieldDescription
listingId, urlMarktplaats listing id (m2116011581; a... for Admarkt business ads) and listing URL
title, descriptionTitle and the description (the search snippet; the full text with Include listing details)
price, priceText, priceType, currencyAsking price in EUR as a number (99.0), the price as shown ("€ 99,00", "Bieden vanaf € 125,00", "Zie omschrijving") and its kind: fixed, bid, free, see_description, exchange, negotiable, on_request, reserved
condition, delivery, shippingAvailablee.g. "Gebruikt", "Ophalen of Verzenden", true
attributesEvery attribute the search shows, as {key: value}: {"condition": "Gebruikt", "delivery": "Ophalen", "brand": "Gazelle", "frameHeight": "50 tot 53 cm", ...}
category, categoryId, l1CategoryId, categoryKeyse.g. "Fietsen | Dames | Damesfietsen", 447, 445, ["fietsen-en-brommers", "fietsen-dames-damesfietsen"]
city, country, latitude, longitude, distanceKmThe town shown on the listing and its centre coordinates (not the seller's address); distance from your postcode when you search around one
postedAt, dateTextThe date the search shows, as ISO ("2026-10-30") and as shown ("Eergisteren", "28 okt 26"); it moves when a seller bumps the listing. With details postedAt is the exact time the listing was first placed ("2026-09-03T08:20:23Z")
sellerId, sellerName, sellerUrl, sellerVerified, sellerWebsiteUrlSeller id, display name, the seller's listings page, verified badge, website link of business advertisers
sellerTypebusiness or private. From a search answer only business advertisers are recognised; with details every listing gets it
photos, photoCount, thumbnailUrlAll photo URLs in large size
status, isReservedactive or reserved
isTopAd, promotionLabel, isAdmarkt, stickerTextPaid placement ("Dagtopper", "Topadvertentie"), Admarkt business ad, promotional sticker text
searchUrl, position, scrapedAtThe search the listing came from, its rank in that search and when it was scraped
With details: specifications, sellerSince, sellerActiveYears, sellerProfileUrl, sellerCity, viewCount, favoriteCount, categoryPath, shippingOptions, biddingEnabled, currentMinimumBid, bids, buyerProtection, adTypeThe "Kenmerken" table as {"Conditie": "Gebruikt", "Merk": "Gazelle"}, "6 jaar" on Marktplaats, profile page, views, favourites, shipping carriers and prices, bidding status, detailsFetched: true

How to scrape Marktplaats listings

  1. Open marktplaats.nl, search, and set the filters you want (category, price, postcode and distance, condition, "Aangeboden sinds", sort).
  2. Copy the URL from the address bar into Start URLs. Add as many searches as you like; category pages, seller pages and single listing URLs work too.
  3. Or skip the browser: type Search terms (one per line) and set Min / Max price, Postcode + Distance, Sort and Offered since.
  4. Set Max items, tick Include listing details if you need the full description and the seller type, and click Start. Download the results as JSON, CSV or Excel, or read them through the API.

Which Marktplaats URLs work

  • Search results: https://www.marktplaats.nl/q/elektrische+fiets/ (page 2: .../p/2/)
  • Category pages: https://www.marktplaats.nl/l/fietsen-en-brommers/fietsen-dames-damesfietsen/, including a keyword inside a category (.../q/gazelle/) and the SEO filter pages (.../f/gazelle/1234/)
  • Seller pages: https://www.marktplaats.nl/u/030-fietsen/39689712/ (all listings of one seller)
  • Single listings: https://www.marktplaats.nl/v/fietsen-en-brommers/fietsen-dames-damesfietsen/m2116011581-... (returns that listing with full details)
  • Filters in the URL hash are applied: #PriceCentsFrom:5000|PriceCentsTo:20000|postcode:1012AB|distanceMeters:10000|sortBy:SORT_INDEX|sortOrder:DECREASING|offeredSince:Vandaag|f:30

Marktplaats serves at most 5,000 listings per search (50 pages of 100). To collect more, split the search by category, price band or distance and add each as its own start URL; listings that appear in several of your searches are saved and charged only once per run.

Input example

{
"startUrls": [
{ "url": "https://www.marktplaats.nl/l/fietsen-en-brommers/elektrische-fietsen/#PriceCentsFrom:50000|PriceCentsTo:150000|postcode:3511AA|distanceMeters:25000" },
{ "url": "https://www.marktplaats.nl/u/030-fietsen/39689712/" }
],
"searchTerms": ["gazelle damesfiets", "cortina u4"],
"minPrice": 100,
"maxPrice": 600,
"postcode": "1012AB",
"distanceKm": 25,
"sort": "newest",
"offeredSince": "Een week",
"maxItems": 300,
"maxPagesPerSearch": 5,
"includeDetails": false
}

Output example

{
"listingId": "m2116011581",
"title": "Dames fietsen heren fietsen oma fietsen Low budget",
"description": "Wij van 030 fietsen hebben weer nieuwe voorraad 2e hands fietsen dames fietsen heren fietsen oma fietsen kinder fietsen zeer grote voorraad van 300 rijklare fietsen nu zeer scherpe prijzen vanaf ...",
"price": 99.0,
"priceText": "€ 99,00",
"priceType": "fixed",
"currency": "EUR",
"condition": "Gebruikt",
"delivery": "Ophalen of Verzenden",
"shippingAvailable": true,
"categoryId": 447,
"l1CategoryId": 445,
"category": "Fietsen | Dames | Damesfietsen",
"categoryKeys": ["fietsen-en-brommers", "fietsen-dames-damesfietsen"],
"city": "Utrecht",
"country": "Nederland",
"latitude": 52.093055771437,
"longitude": 5.1234611252344,
"distanceKm": null,
"postedAt": "2026-10-30",
"dateText": "Eergisteren",
"sellerId": 39689712,
"sellerName": "030 fietsen",
"sellerType": null,
"sellerVerified": false,
"sellerUrl": "https://www.marktplaats.nl/u/030-fietsen/39689712/",
"sellerWebsiteUrl": null,
"attributes": { "condition": "Gebruikt", "delivery": "Ophalen of Verzenden", "brand": "Overige merken" },
"photos": ["https://images.marktplaats.com/api/v1/hz-mp-pro-listing/images/1c/1c1eb733-9db3-4e64-81fd-7db3b013c77d?rule=ecg_mp_eps$_85.jpg"],
"photoCount": 1,
"thumbnailUrl": "https://images.marktplaats.com/api/v1/hz-mp-pro-listing/images/1c/1c1eb733-9db3-4e64-81fd-7db3b013c77d?rule=ecg_mp_eps$_85.jpg",
"url": "https://www.marktplaats.nl/v/fietsen-en-brommers/fietsen-dames-damesfietsen/m2116011581-dames-fietsen-heren-fietsen-oma-fietsen-low-budget",
"status": "active",
"isReserved": false,
"isAdmarkt": false,
"isTopAd": true,
"promotionLabel": "Dagtopper",
"stickerText": null,
"detailsFetched": false,
"searchUrl": "https://www.marktplaats.nl/q/fiets/#sortBy:SORT_INDEX|sortOrder:DECREASING",
"position": 1,
"scrapedAt": "2026-11-01T12:40:00+00:00"
}

With Include listing details the same listing also carries "sellerType": "business", "sellerSince": "6 jaar", "specifications": {"Conditie": "Gebruikt", "Merk": "Overige merken"}, "viewCount": 5933, "favoriteCount": 59, "postedAt": "2024-05-17T12:23:56Z", the full multi-line description, shippingOptions and biddingEnabled.

Monitor new Marktplaats listings on a schedule

Turn on Only new or changed items to watch a search: each run remembers what earlier runs returned and outputs only listings that are new or whose price, price type or status (reserved) changed. Unchanged listings are dropped before they are saved, so they are not charged, and with details on their pages are not even opened. Max items then sets how many listings are checked per run (keep the newest-first sort, e.g. the newest 50-100 of a search, and Offered since "Today" or "Last week" to keep runs small). Save the input as a task and add a Schedule in Apify (every 15 minutes, hourly or daily); give each watch its own Monitoring key if several schedules use the same search. Every output item has changeType (new or changed), and changed items have previousValues with the old values, e.g. {"price": 125.0}.

Does it need a login or a proxy?

No login is needed and none is used: the scraper reads what any visitor sees. Marktplaats answers Apify's standard datacenter proxies (the default) for search results and listing pages, so no residential proxy is needed. A search request returns up to 100 listings in one 0.4 MB answer and a listing page is about 0.1 MB, so a run of 1,000 listings takes a few seconds and a few tenths of a cent of platform usage, which is included in the price.

Pricing

Pay per result: you are charged per listing saved to the dataset, and an extra detail event for each listing page opened when Include listing details is on. There is no start fee, and platform usage (proxy traffic and compute) is included in the event prices. See the Pricing tab for the current prices; use maxItems to cap the cost of each run.

Integrations and API

Run it from the Apify API, schedule it (for example every hour for new listings around your postcode), and send the results to Google Sheets, Slack, Make, Zapier, n8n or a webhook. The run's SUMMARY record in the key-value store lists the request counts, the number of matching listings per search and any errors.

This Actor collects publicly visible listing data that anyone can see without an account. It does not log in, never requests phone numbers (they sit behind a click on the site), and exports no seller address: the coordinates are those of the town shown on the listing, and the description is exported as the seller wrote it. Seller names are personal data under the GDPR when they belong to private individuals: you are responsible for having a legitimate purpose and a legal basis for processing them, and for respecting Marktplaats' terms of use. If in doubt, ask a lawyer.

Support

Found a bug or need a field that is not there? Open an issue on the Issues tab with the input you used and the run link.

Found it useful?

A ★ review on this Actor's Apify Store page helps other users find it and tells us what to improve. Issues and feature requests are welcome in the Actor's Issues tab.

⌂ 换网址