Marktplaats Scraper avatar

Marktplaats Scraper

Pricing

Pay per event

Go to Apify Store
Marktplaats Scraper

Marktplaats Scraper

Scrape Marktplaats.nl search and category listings with prices, sellers, locations, images, and page metadata.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Scrape public listings from Marktplaats.nl search and category pages.

Use this actor when you need structured Dutch classifieds data for price tracking, inventory monitoring, market research, seller discovery, or category analysis.

The actor extracts listings directly from Marktplaats search result pages and returns normalized JSON records with price, seller, location, images, category, source page, and pagination metadata.

What It Does

Marktplaats Scraper collects public marketplace listing rows.

It supports Marktplaats search pages.

It supports Marktplaats category pages.

It supports direct start URLs.

It supports keyword searches.

It paginates through result pages.

It deduplicates listings by Marktplaats item ID.

It stops at your requested result limit.

It stores results in the default Apify dataset.

It charges per extracted result.

Who It Is For

Ecommerce analysts use it to compare second-hand prices.

Resellers use it to monitor supply and demand.

Automotive researchers use it to track used-car inventory.

Category managers use it to watch competitive assortment.

Lead generation teams use it to find active sellers.

Data teams use it to feed dashboards and pricing models.

Market researchers use it to analyze regional inventory changes.

Agencies use it to collect repeatable marketplace snapshots.

Who is it for

This actor is for teams that need repeatable access to public Marktplaats listing data.

It is useful for pricing teams.

It is useful for marketplace operators.

It is useful for resellers.

It is useful for analysts.

It is useful for lead generation teams.

Why Use It

Marktplaats is one of the most important classifieds marketplaces in the Netherlands.

Manual browsing is slow.

Copying listings by hand is error-prone.

Search pages change constantly.

This actor turns public listing pages into consistent structured records.

The output is ready for CSV, JSON, Excel, API, webhook, or database workflows.

Data Extracted

Each result can include the listing ID.

Each result can include the listing URL.

Each result can include the title.

Each result can include short and display titles when Marktplaats provides them.

Each result can include description snippets.

Each result can include category-specific descriptions.

Each result can include category ID.

Each result can include price in cents.

Each result can include price as a decimal number.

Each result can include price currency.

Each result can include price type.

Each result can include city.

Each result can include country.

Each result can include latitude.

Each result can include longitude.

Each result can include listing date text.

Each result can include image URLs.

Each result can include seller ID.

Each result can include seller name.

Each result can include seller verification status.

Each result can include seller logo URL.

Each result can include public listing attributes.

Each result can include reservation status.

Each result can include Marktplaats priority product metadata.

Each result can include source URL.

Each result can include page number.

Each result can include listing position on the page.

Each result can include total result count.

Each result includes the scrape timestamp.

Input Options

startUrls accepts Marktplaats search or category URLs.

Use it when you already have exact pages to scrape.

searchQuery creates a Marktplaats keyword search URL.

Use it when you want to search for a term such as fiets, lego, or iphone.

categoryUrl is the fallback category page.

It is used only when startUrls and searchQuery are empty.

maxResults controls the maximum number of dataset rows.

Keep it small for tests.

Increase it for production collection.

includeSponsored keeps promoted listings when enabled.

maxRequestRetries controls retry attempts for failed HTTP requests.

Example Input

{
"startUrls": ["https://www.marktplaats.nl/l/auto-s/"],
"maxResults": 50,
"includeSponsored": true,
"maxRequestRetries": 3
}

Keyword Search Input

{
"searchQuery": "fiets",
"maxResults": 25,
"includeSponsored": true
}

Category URL Input

{
"categoryUrl": "https://www.marktplaats.nl/l/huis-en-inrichting/",
"maxResults": 100
}

Output Example

{
"id": "m2398940309",
"url": "https://www.marktplaats.nl/v/fietsen-en-brommers/...",
"title": "Elektrische gazelle c7 dames fiets",
"priceCents": 92500,
"price": 925,
"priceCurrency": "EUR",
"priceType": "FIXED",
"locationCity": "Leimuiderbrug",
"sellerName": "sill",
"imageUrls": ["https://images.marktplaats.com/..."],
"sourceUrl": "https://www.marktplaats.nl/q/fiets/",
"pageNumber": 1,
"position": 1,
"scrapedAt": "2026-05-14T08:22:50.079Z"
}

Pagination

The actor reads Marktplaats result pages sequentially.

Page one uses the original URL.

Later pages use the Marktplaats /p/N/ URL pattern.

The actor stops when enough unique listings have been collected.

It also stops when a page has no listings.

It stops when a page only contains duplicates or filtered rows.

How much does it cost to scrape Marktplaats?

Pricing is pay-per-event with two cost components:

  • A one-time run start charge.
  • A per-result charge for each listing pushed to the output.

Current rates:

  • Run started: $0.005
  • Result extracted (FREE): $0.000028771
  • Result extracted (BRONZE): $0.000025018
  • Result extracted (SILVER): $0.000019514
  • Result extracted (GOLD): $0.000015011
  • Result extracted (PLATINUM): $0.000010007
  • Result extracted (DIAMOND): $0.0000070051

Example costs:

  • 20 results on FREE: about 0.00558 USD
  • 1000 results on BRONZE: about 0.03002 USD
  • 5000 results on GOLD: about 0.08006 USD

The actor is cost-efficient for both small checks and realistic-sized dataset extraction.

Performance

This actor uses HTTP requests.

It does not launch a browser.

That keeps runs fast and memory usage low.

The default memory configuration is tuned for typical result-page scraping.

Most small jobs finish in under a minute.

Large jobs depend on page count and Marktplaats response speed.

Data Quality

The actor extracts data from Marktplaats page data.

Fields are included when Marktplaats exposes them publicly.

Some listings may omit coordinates.

Some listings may omit seller logos.

Some listings may omit long descriptions.

Price type values come from Marktplaats.

Date text is returned as displayed by Marktplaats.

Use Cases

Track used-car asking prices.

Monitor second-hand electronics supply.

Find sellers in a specific city.

Build Dutch classifieds price indexes.

Watch category inventory over time.

Compare private and business seller activity.

Collect image URLs for moderation workflows.

Feed business intelligence dashboards.

Integrations

Export results as JSON.

Export results as CSV.

Export results as Excel.

Read results through the Apify Dataset API.

Send results to a webhook.

Load results into a database.

Connect results to Make, Zapier, or custom automation.

API Usage

You can run the actor from the Apify Console.

You can run it with the Apify API.

You can schedule recurring runs.

You can call it from another actor.

You can use dataset URLs for downstream processing.

Node.js API Example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/marktplaats-scraper').call({
searchQuery: 'fiets',
maxResults: 20,
includeSponsored: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python API Example

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/marktplaats-scraper").call(
run_input={
"searchQuery": "fiets",
"maxResults": 20,
"includeSponsored": True,
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL API Example

curl -X POST "https://api.apify.com/v2/acts/automation-lab~marktplaats-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQuery":"fiets","maxResults":20,"includeSponsored":true}'

MCP

Use this actor with the hosted Apify MCP endpoint for all supported MCP clients:

https://mcp.apify.com?tools=automation-lab/marktplaats-scraper

Add the server with your Apify token (example patterns below).

Claude Desktop / Claude Code

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/marktplaats-scraper",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}

Cursor

Open Cursor MCP settings and add the same tool URL and Authorization header with your Apify token.

VS Code

Use any MCP extension that accepts the Apify hosted MCP URL and headers, then set the URL to:

https://mcp.apify.com?tools=automation-lab/marktplaats-scraper

MCP Example Prompts

Run Marktplaats Scraper for searchQuery "fiets" with maxResults 20 and summarize the price range by city.
Scrape https://www.marktplaats.nl/l/auto-s/ with maxResults 50 and list the sellers with the most visible inventory.
Collect 30 Marktplaats listings for "lego" and return the median price plus the five cheapest listings.

CLI Registration (Claude)

claude mcp add -s user apify-marktplaats \
--transport http \
--url "https://mcp.apify.com?tools=automation-lab/marktplaats-scraper" \
--header "Authorization: Bearer YOUR_APIFY_TOKEN"

Tips

Start with maxResults set to 20.

Review the dataset output.

Then increase the result limit.

Use direct category URLs for stable recurring monitoring.

Use keyword search for ad hoc research.

Use multiple start URLs to monitor several categories in one run.

Keep retry counts moderate.

Limitations

The actor scrapes public listing data only.

It does not log in.

It does not contact sellers.

It does not bypass private account features.

It does not guarantee fields that Marktplaats does not expose on result pages.

It may need updates if Marktplaats changes its page data structure.

Legality

This actor collects public listing data from Marktplaats result pages.

Users are responsible for deciding whether their use case complies with Marktplaats terms, privacy law, and applicable local regulations.

Do not collect more data than needed.

Do not use the data for spam.

Do not use the data for prohibited profiling.

Scrape only public pages.

Respect Marktplaats terms and applicable law.

Avoid collecting personal data you do not need.

Use reasonable result limits.

Do not use scraped data for spam.

Do not use scraped data for prohibited profiling.

FAQ

Can I scrape any Marktplaats category?

Yes, provide a public Marktplaats category URL in startUrls or categoryUrl.

Can I search by keyword?

Yes, set searchQuery and leave startUrls empty.

Does it return seller names?

Yes, when Marktplaats exposes seller names in public listing data.

Does it return images?

Yes, image URLs are returned when present.

Does it scrape detail pages?

The first version focuses on result-page data because those pages expose rich structured listing objects. Detail-page enrichment can be added if users need fields that are not present on result pages.

Does it need proxies?

The actor is HTTP-only and does not require browser automation. Proxy needs may change if Marktplaats changes access controls.