Marktplaats.nl Scraper — Search, Paste-URL & Seller · 24 Fields
Pricing
from $1.50 / 1,000 listings
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
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.

✨ 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
racefietsenortelefoons— 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 / flipper | Track underpriced listings in a category or price band, watch specific sellers, spot arbitrage. |
| Market analyst | Measure pricing, supply and condition mix across categories and regions over time. |
| Dealer / shop | Monitor competitors' inventory and pricing (seller mode). |
| Researcher | Build a dataset of second-hand prices, locations and attributes for any product type. |
| Deal-alert builder | Feed fresh matching listings (keyword + filters) into your own alerts or app. |
📥 Supported inputs
| Mode | Input | Output |
|---|---|---|
| Search | queries: ["racefiets"] | Every listing matching the term(s), board-wide |
| Search URL | searchUrls: ["https://www.marktplaats.nl/q/racefiets/"] | The listings for that pasted search / category URL |
| Seller | sellerIds: ["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
- 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.
- 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.
- Emit — listings are de-duplicated by item ID, flattened to one row each, and pushed — no browser, no CAPTCHA.
⚙️ Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
queries | array | — | Keyword search terms. Runs a board-wide search per term. |
searchUrls | array | — | Marktplaats search / category URLs; their filters are carried over. |
sellerIds | array | — | Seller IDs — returns each seller's active listings. |
searchInTitleAndDescription | boolean | false | Match the term in title + description (broader), not just the title. |
priceMin / priceMax | integer | — | Price range in euros. |
condition | string | — | Nieuw, Zo goed als nieuw, Gebruikt, Refurbished. |
delivery | string | — | Ophalen (pickup) or Verzenden (shipping). |
category | string | — | Category by name (Dutch), e.g. Fietsen, Racefietsen — resolved to an ID. |
l1CategoryId / l2CategoryId | integer | — | Exact category IDs (override the name lookup). |
postcode / distanceKm | string / int | — | Location centre + radius in km. |
sortBy / sortOrder | string | Relevance | SORT_INDEX / PRICE / DATE, ascending or descending. |
maxItems | integer | 200 | Max listing rows per run. Free-tier capped at 100. |
maxConcurrency | integer | 6 | Parallel source fetches. |
proxy | object | Residential | Residential 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
| Field | Meaning |
|---|---|
itemId / url | Marktplaats item ID and the public listing (VIP) URL. |
title / description | Listing title and the full description text. |
price / priceCents / priceType | Price in euros, in cents, and the kind (fixed / bid / reserved / see-description). |
condition / delivery | Item condition and how it's handed over (pickup / shipping). |
attributes | All listing attributes as a key→value map. |
cityName / countryName / latitude / longitude | Where the item is, including coordinates. |
sellerId / sellerName / sellerIsVerified | The seller's id, display name and verified flag. |
categoryId | Marktplaats category the listing sits in. |
imageCount / imageUrls | Number of photos and their URLs. |
postedDate | ISO timestamp the listing was posted. |
source | search (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