
Marktplaats & 2dehands Scraper
hipersoft/marktplaats-scraper
Scrape classified ads from Marktplaats.nl, 2dehands.be and 2ememain.be by keyword, category, postcode radius and price. Title, price, bid type, condition, delivery, category, city, coordinates, photos, post date, business seller. Export CSV/JSON.
Total users
2Monthly users
1Total runs
6Per listing
$0.002Last rebuilt
Oct 26, 2026Overview
Marktplaats & 2dehands Scraper extracts second-hand and new classified ads from Marktplaats.nl, the largest classifieds marketplace in the Netherlands, and its Belgian sister sites 2dehands.be (Dutch) and 2ememain.be (French). Search by keyword, category, postcode radius and price range and get for every ad the title, description, link, price, price type (fixed, bidding, minimum bid, free, see description), condition, delivery option (pick-up or shipping), category path, attributes, city, country, coordinates, distance, seller type (private or business), business name, top-ad flag, reserved flag, photos, post date and more. Export to CSV, Excel or JSON. Perfect for resellers, price monitoring, market research, deal hunting, lead generation for dealers and e-commerce pricing in the Netherlands and Belgium.
What does Marktplaats & 2dehands Scraper do?
- 🇳🇱 Marktplaats.nl — the Netherlands' #1 classifieds site.
- 🇧🇪 2dehands.be and 2ememain.be — Belgium's leading classifieds sites (Dutch and French).
- 🔎 Keywords, categories, postcode + radius, min/max price and six sort orders.
- 💶 Price and price type: fixed price, bidding, minimum bid, free, exchange.
- 📦 Condition and delivery (pick-up / shipping).
- 📍 City, coordinates and distance from your postcode.
- 🏪 Private vs business sellers, with business names.
- 🖼️ Photos and post date (normalized to ISO dates).
What data can you scrape from Marktplaats?
| Field | Description |
|---|---|
| Ad | Site, item ID, link, title, description |
| Price | Price in €, price type |
| Item | Category ID and path, condition, delivery, attributes |
| Location | City, country, latitude, longitude, distance |
| Seller | Seller type, seller ID, business name |
| Flags | Top ad, reserved, video, traits |
| Media & dates | Photos, main photo, post date |
Use cases for Marktplaats and 2dehands data
- Resellers and flippers: find under-priced items and track new ads around your postcode.
- Price monitoring: follow second-hand prices of phones, bikes, furniture, consoles and cars.
- Market research: measure supply, pricing and demand across Dutch and Belgian regions.
- Dealers and businesses: monitor competing business sellers and their offers.
- Deal alerts: schedule the actor and get notified about fresh ads.
How to scrape Marktplaats
- Click Try for free to open the actor in Apify Console.
- Choose the sites (Marktplaats, 2dehands, 2ememain).
- Enter search terms, and optionally a category, postcode + distance and price range.
- Click Start and download your ads as CSV, Excel or JSON.
Input
Example input
{
"sites": ["marktplaats", "2dehands"],
"queries": ["fiets", "iphone 15"],
"postcode": "1012AB",
"distanceKm": "25",
"minPrice": 100,
"maxPrice": 800,
"sort": "newest",
"maxItems": 500
}
| Field | Description |
|---|---|
| Sites | marktplaats, 2dehands, 2ememain. |
| Search terms | One or more keywords. |
| Category ID | Optional top-level category number. |
| Postcode / Distance | Search radius around a postcode. |
| Min / max price | Price range in euro. |
| Sort by | Newest, relevance, oldest, price, distance. |
| Max listings | 0 = no limit. |
Output
Ad example
{
"site": "marktplaats",
"itemId": "m2450850046",
"url": "https://www.marktplaats.nl/v/fietsen-en-brommers/fietsen-vouwfietsen/m2450850046-popal-vouwfiets-20-nieuwstaat-6-shimano-versn",
"title": "Popal vouwfiets 20\" nieuwstaat 6 Shimano versnellingen",
"price": 280,
"currency": "EUR",
"priceType": "MIN_BID",
"categoryPath": "fietsen-en-brommers/fietsen-vouwfietsen",
"condition": "Zo goed als nieuw",
"delivery": "Ophalen",
"city": "Amsterdam",
"country": "NL",
"distanceKm": 10,
"sellerType": "private",
"isTopAd": true,
"imageUrl": "https://images.marktplaats.com/...jpg",
"postedDate": "2026-10-08"
}
Output schema
| Field | Type | Description |
|---|---|---|
site, itemId, url, title, description |
string | Ad. |
price, currency, priceType |
mixed | Price. |
categoryId, categoryPath, condition, delivery, attributes |
mixed | Item details. |
city, country, latitude, longitude, distanceKm |
mixed | Location. |
sellerType, sellerId, businessName |
mixed | Seller (business names only). |
isTopAd, isReserved, hasVideo, traits |
mixed | Flags. |
imageCount, imageUrl, images, dateText, postedDate |
mixed | Media and dates. |
Names of private sellers are not collected.
How much does it cost?
The scraper uses pay-per-listing pricing: a small fixed price per ad, with automatic discounts on higher Apify plans. See the Pricing tab for the exact price.
More classifieds and marketplace data
- Kleinanzeigen Scraper: German classifieds.
- Blocket Scraper: Swedish classifieds.
- DBA Scraper: Danish classifieds.
- Bazos Scraper: Czech, Slovak, Polish and Austrian classifieds.
FAQ
How many ads can one search return? Each search returns up to about 2,900 ads. Add more search terms, narrow the price range or use a postcode radius to collect more.
Where do I find a category ID? Open a category on the site; the number is shown in the filter links. For example 445 = Fietsen en Brommers and 820 = Telecommunicatie on Marktplaats.
What formats can I export? CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.
Can I integrate it with other apps? Yes. The actor can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JS/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Is it legal to scrape Marktplaats? The scraper only collects publicly visible ad information and no private seller names or contact data. You are responsible for using the data in line with the sites' terms and GDPR.
Notes
Original clean-room implementation. Returns only public data. Not affiliated with Marktplaats, 2dehands, 2ememain or Adevinta.
Input
| Field | Type | Description |
|---|---|---|
sitesSites | array | Which marketplaces to search: Marktplaats (Netherlands), 2dehands (Belgium, Dutch) or 2ememain (Belgium, French). Default: ["marktplaats"] |
queriesSearch terms | array | Keywords to search, e.g. fiets, iphone 15, bank, lego. Leave empty to list the newest ads (combine with a category). |
categoryIdCategory ID (optional) | string | Top-level category number from the site, e.g. 820 = Telecommunicatie, 445 = Fietsen en Brommers, 91 = Auto's (Marktplaats). Leave empty for all categories. |
postcodePostcode | string | Search around this postcode (e.g. 1012AB or 9000). |
distanceKmDistance (km) | string · 3, 5, 10, 15, 25, 50… | Radius around the postcode. |
minPriceMinimum price (€) | integer | Minimum asking price in euro. |
maxPriceMaximum price (€) | integer | Maximum asking price in euro. |
sortSort by | string · newest, relevance, oldest, price_asc, price_desc, distance | Result order. Default: "newest" |
maxItemsMax listings | integer | Stop after this many listings in total (0 = no limit; each search returns up to ~2,900 ads). Default: 200 |
proxyConfigurationProxy configuration | object | Not needed in most cases. Default: {"useApifyProxy": false} |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~marktplaats-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"queries": [
"fiets"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/marktplaats-scraper").call(run_input={
"queries": [
"fiets"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/marktplaats-scraper').call({
"queries": [
"fiets"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Listing Charged per classified ad returned | $0.002 | $0.001 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Dribbble Shots Scraper
Scrape public design shots from Dribbble: title, high-res image, tags, likes, views and designer credit. Filter by category or sort, export JSON, CSV or Excel.
359 runs · 5 users · $0.003 / shot scrapedComputrabajo Scraper
Scrape Computrabajo job listings across Latin America (Mexico, Colombia, Argentina, Chile, Peru and more): title, company, location, salary, posted date and apply URL. Filter by country and keyword. No setup.
206 runs · 4 users · $0.002 / listing scrapedKraken Market Data Scraper
Fetch Kraken spot market data in bulk: ticker stats (ask, bid, last, 24h high/low/volume/vwap), OHLC candles for any interval, order book depth (top bids/asks), and tradable pair metadata. Fast, clean and cheap.
165 runs · 4 users · $0.001 / pair scrapedBayt Scraper
Scrape Bayt.com job listings across the Middle East (UAE, Saudi Arabia, Egypt, Qatar and more): title, company, location, posted date and apply URL. Filter by country and keyword.
134 runs · 4 users · $0.003 / job scrapedGitHub Scraper
Search GitHub and scrape repositories (stars, forks, language, topics, license, dates) or user profiles (name, company, location, bio, followers, public email, repos). Uses the GitHub REST API; optional token for higher rate limits. For developer lead generation, OSS research and recruiting.
131 runs · 7 users · $0.0008 / item scrapedHacker News Scraper
Scrape Hacker News stories, comments, Ask HN, Show HN, jobs and polls by keyword, points, comments and date range. Sort by relevance or newest. Title, URL, author, points, comment count, text and HN link. Fast clean HTTP via the HN Algolia API, no setup.
130 runs · 2 users · $0.004 / item scrapedSend the site and the fields. We build it and you get it first.