Marktplaats.nl Scraper — Search, Paste-URL & Seller · 24 Fields avatar

Marktplaats.nl Scraper — Search, Paste-URL & Seller · 24 Fields

Pricing

from $1.50 / 1,000 listings

Go to Apify Store
Marktplaats.nl Scraper — Search, Paste-URL & Seller · 24 Fields

Marktplaats.nl Scraper — Search, Paste-URL & Seller · 24 Fields

Scrape Marktplaats.nl listings — keyword search, paste any search/category URL, or pull a seller's items. Each row: title, price + bid type, condition, delivery, location with lat/lng, seller, photos, attributes & full description. Filter by price, condition, postcode radius. JSON or CSV.

Pricing

from $1.50 / 1,000 listings

Rating

5.0

(1)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

Marktplaats.nl Scraper 🇳🇱

Scrape listings from Marktplaats.nl — the Netherlands' biggest classifieds marketplace. Search by keyword across the whole board, paste any Marktplaats search or category URL, or pull every listing from a seller. Each listing is one clean, flat row: title, price (with bid type), condition, delivery, location with coordinates, seller, photos, attributes and the full description. Pure HTTP — no login, no browser, no CAPTCHA. JSON or CSV.

How the Marktplaats.nl Scraper works

✨ Why use this scraper

  • Three ways to run. Keyword search the whole board · paste any search / category URL · or pull a seller's full listing list. Most Marktplaats scrapers only accept a single URL.
  • Rich server-side filters. Narrow by price range, condition, delivery method, category (by name), postcode + radius, and sort order — all applied at the source, so you only pull (and pay for) the listings you actually want.
  • The deepest schema — 24 fields per listing. Title, price (+ bid type: fixed, bidding, reserved…), condition, delivery, full description, all attributes, office coordinates (lat/lng), seller (id / name / verified), category, every photo URL and posting date.
  • Category by name, built in. Type racefietsen or telefoons — the actor resolves it to the right category ID from a built-in tree of 2,100+ Marktplaats categories. No need to hunt for numeric IDs.
  • Up to ~5,000 listings per search, paginated automatically (100 per page).
  • Pure HTTP. No headless browser, no CAPTCHA solver. Fast, cheap and reliable, via residential proxies.
  • Flat, spreadsheet-ready rows. Everything denormalised onto one row. Open the CSV and filter.

🎯 Use cases

You are…Use it to…
Reseller / flipperTrack underpriced listings in a category or price band, watch specific sellers, spot arbitrage.
Market analystMeasure pricing, supply and condition mix across categories and regions over time.
Dealer / shopMonitor competitors' inventory and pricing (seller mode).
ResearcherBuild a dataset of second-hand prices, locations and attributes for any product type.
Deal-alert builderFeed fresh matching listings (keyword + filters) into your own alerts or app.

📥 Supported inputs

ModeInputOutput
Searchqueries: ["racefiets"]Every listing matching the term(s), board-wide
Search URLsearchUrls: ["https://www.marktplaats.nl/q/racefiets/"]The listings for that pasted search / category URL
SellersellerIds: ["10188200"]Every active listing from each seller

You can combine modes in one run; results merge and de-duplicate by item ID. Not supported: private/login-only data, seller phone numbers (gated behind the app login), buyer messaging.

🔄 How it works

  1. Build sources — each keyword, pasted URL and seller ID becomes a search source. Pasted URLs are read for their on-site filters so they carry over automatically.
  2. Fetch — the actor queries Marktplaats' own listing search API (open JSON, no login) and paginates 100 listings per page, applying your filters server-side, all via rotating residential proxies.
  3. Emit — listings are de-duplicated by item ID, flattened to one row each, and pushed — no browser, no CAPTCHA.

⚙️ Input parameters

FieldTypeDefaultDescription
queriesarrayKeyword search terms. Runs a board-wide search per term.
searchUrlsarrayMarktplaats search / category URLs; their filters are carried over.
sellerIdsarraySeller IDs — returns each seller's active listings.
searchInTitleAndDescriptionbooleanfalseMatch the term in title + description (broader), not just the title.
priceMin / priceMaxintegerPrice range in euros.
conditionstringNieuw, Zo goed als nieuw, Gebruikt, Refurbished.
deliverystringOphalen (pickup) or Verzenden (shipping).
categorystringCategory by name (Dutch), e.g. Fietsen, Racefietsen — resolved to an ID.
l1CategoryId / l2CategoryIdintegerExact category IDs (override the name lookup).
postcode / distanceKmstring / intLocation centre + radius in km.
sortBy / sortOrderstringRelevanceSORT_INDEX / PRICE / DATE, ascending or descending.
maxItemsinteger200Max listing rows per run. Free-tier capped at 100.
maxConcurrencyinteger6Parallel source fetches.
proxyobjectResidentialResidential rotation keeps large pulls stable.

Example input

{
"queries": ["racefiets"],
"category": "racefietsen",
"priceMin": 100,
"priceMax": 800,
"condition": "Gebruikt",
"maxItems": 200
}

📊 Output overview

Every listing becomes one flat, denormalised row — search results, pasted-URL results and seller listings all share the same shape, so you can open the CSV and filter immediately. Prices are given both in euros (price) and raw cents (priceCents), with priceType telling you whether it's a fixed price, a bidding listing, reserved, and so on.

📦 Output sample

{
"itemId": "m2313216853",
"title": "Batavus Course racefiets maat 58",
"url": "https://www.marktplaats.nl/v/fietsen-en-brommers/fietsen-racefietsen/m2313216853-batavus-course-racefiets-maat-58",
"price": 150,
"priceCents": 15000,
"priceType": "MIN_BID",
"condition": "Gebruikt",
"delivery": "Ophalen",
"attributes": { "condition": "Gebruikt", "delivery": "Ophalen" },
"cityName": "Aalsmeer",
"countryName": "Nederland",
"latitude": 52.2519,
"longitude": 5.0254,
"sellerId": "10188200",
"sellerName": "Zaal",
"sellerIsVerified": false,
"categoryId": 464,
"imageCount": 2,
"imageUrls": ["https://images.marktplaats.com/api/v1/listing-mp-p/images/..."],
"reserved": false,
"postedDate": "2026-01-30T23:00:00.000Z",
"source": "search",
"scrapedAt": "2026-06-29T10:30:00.000Z"
}

🗂 Key output fields

FieldMeaning
itemId / urlMarktplaats item ID and the public listing (VIP) URL.
title / descriptionListing title and the full description text.
price / priceCents / priceTypePrice in euros, in cents, and the kind (fixed / bid / reserved / see-description).
condition / deliveryItem condition and how it's handed over (pickup / shipping).
attributesAll listing attributes as a key→value map.
cityName / countryName / latitude / longitudeWhere the item is, including coordinates.
sellerId / sellerName / sellerIsVerifiedThe seller's id, display name and verified flag.
categoryIdMarktplaats category the listing sits in.
imageCount / imageUrlsNumber of photos and their URLs.
postedDateISO timestamp the listing was posted.
sourcesearch (keyword), url (pasted URL) or seller.

❓ FAQ

Do I need a Marktplaats account or API key? No — no login and nothing for you to supply. The actor reads public listing data only.

How do I scrape a specific search I set up on the site? Configure the filters on Marktplaats, copy the URL from your browser, and paste it into searchUrls. The actor reads the search's filters and pulls all matching listings.

How many listings can one search return? Up to ~5,000 per search term (the search engine's page cap). For larger pulls, split into narrower terms, categories or price bands.

Can I get the seller's phone number? No — phone numbers are only exposed behind the Marktplaats app login, which this actor does not access. Seller id, name and verified status are included.

Why is price sometimes null? Listings marked "see description", "by negotiation" or reserved carry no fixed amount; priceType tells you which. priceCents still reflects what the API returns.

How fresh is the data? Live — each run hits the current listings.

💬 Support

Found a bug or need an extra field? Open an issue on the actor's Issues tab and we'll take a look.

🛠 Additional services

Need a custom feed, scheduled runs, or another marketplace scraped? Reach out via the Apify contact form on the actor page.

🔎 Explore more scrapers

See the full memo23 actor catalog →


⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Marktplaats, Adevinta, eBay, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available listing pages — no authenticated endpoints, account-only features, or content behind a Marktplaats login. Users are responsible for ensuring their use complies with Marktplaats' Terms of Service, applicable data-protection law (GDPR, etc.), and any contractual obligations of their own organisation.


SEO Keywords

marktplaats scraper, marktplaats.nl scraper, scrape marktplaats, marktplaats api, marktplaats data extractor, dutch classifieds scraper, netherlands marketplace scraper, marktplaats listings scraper, marktplaats search scraper, marktplaats seller scraper, second hand prices netherlands, classifieds data scraper, marktplaats price monitoring, reseller arbitrage data, marktplaats category scraper, apify marktplaats, marktplaats json csv export, tweedehands scraper, marktplaats product data, marktplaats listing api