Werkspot APIwerkspot.nl ↗
Browse Werkspot.nl's public vakman directory by city and profession. Get provider names, ratings, review counts, locations, and profile links for 55 categories.
What is the Werkspot API?
The Werkspot.nl API exposes 1 endpoint — list_providers — that returns paginated service provider listings from Werkspot's Dutch tradesperson directory across 55 profession categories. Each response includes provider name, slug, rating, review count, location, and a direct profile link, giving you structured access to Werkspot's publicly listed vakman profiles filtered by city and profession.
curl -X GET 'https://api.parse.bot/scraper/011399eb-0fef-4691-ab26-13ebf3544df2/list_providers?city=utrecht&category=schoonmaakbedrijf' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace werkspot-nl-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Werkspot provider directory — browse professionals by city and trade."""
from parse_apis.werkspot_nl_api import Werkspot, ProfessionCategory, InputNotFound
client = Werkspot()
# List painters in Amsterdam, capped to 5 results.
for provider in client.providers.list(city="amsterdam", category=ProfessionCategory.SCHILDER, limit=5):
review_note = ""
if provider.latest_review is not None:
review_note = f" — latest review on {provider.latest_review.service_name or 'general'}"
print(f"{provider.provider_name} ({provider.provider_location}): "
f"{provider.rating_score}/10 from {provider.total_reviews} reviews{review_note}")
# Drill into the first plumber in Utrecht.
try:
plumber = client.providers.list(
city="utrecht", category=ProfessionCategory.LOODGIETER, limit=1,
).first()
except InputNotFound:
plumber = None
print("No plumber directory found for that city.")
if plumber is not None:
print(f"\n{plumber.provider_name} — {plumber.description[:120]}...")
print(f" Profile: {plumber.profile_url}")
print(f" Featured: {plumber.is_featured} New: {plumber.is_new}")
print(f" Verifications: {', '.join(plumber.verifications)}")
print("\nexercised: providers.list (paginated + first) / ProfessionCategory enum / InputNotFound")
Returns one page of service providers from Werkspot's public directory for a profession category in a city (e.g. schoonmaakbedrijf in utrecht). Each row is one provider card as the site lists it: name, the page's profession label as service_type, the requested city as region, the provider's own base town, bio text, rating_score on the site's 0-10 scale, total review count, verification badges, the most recent review and the public profile URL. Featured (sponsored) providers are listed first with is_featured=true. The site returns about 16 providers per page in its own ranking order; page selects the directory page (omitted = page 1), total_pages/total_count come from the site and has_more tells whether a further page exists. A page number beyond total_pages returns an empty providers array with success. Category labels map to site professions: cleaning = schoonmaakbedrijf, handyman/repairs = klusbedrijf, garden maintenance = tuinman (also hovenier), furniture assembly is a service of klusbedrijf (the site has no separate directory for it) while meubelmaker lists furniture makers. Note the site's directory is not strictly filtered: a provider's own content_cluster may differ from the requested category. An unknown city or category yields a stale_input error, because the site redirects to its generic find-a-professional page.
| Param | Type | Description |
|---|---|---|
| cityrequired | string | Dutch locality as a lowercase URL slug (e.g. utrecht, amsterdam, den-haag). Unknown localities are rejected by the site. |
| page | integer | Directory page number, 1-based. |
| categoryrequired | string | Profession directory slug as used on the site. The enum lists the 55 profession directories the site publishes; another slug is forwarded to the site and rejected if it has no directory. |
{
"type": "object",
"fields": {
"city": "locality name as the site displays it",
"page": "integer page returned",
"category": "profession slug as resolved by the site",
"has_more": "boolean, true when page < total_pages",
"providers": "array of provider cards: provider_id (integer), provider_slug, provider_name, service_type, region (requested city), provider_location (provider's own town), description (bio), rating_score (number, 0-10 scale), total_reviews (integer), is_new, is_featured, verifications (array of badge codes), content_cluster (provider's own trade cluster slug, may be null), avatar_url (may be null), latest_review {text, service_name (may be null), created_at ISO datetime} or null, profile_url",
"total_count": "integer total providers the site reports for this directory",
"total_pages": "integer number of directory pages the site reports",
"service_type": "profession label of the directory page (same value repeated on each provider)"
},
"sample": {
"data": {
"city": "Utrecht",
"page": 1,
"category": "schoonmaakbedrijf",
"has_more": true,
"providers": [
{
"is_new": false,
"region": "Utrecht",
"avatar_url": "https://www.werkspot.nl/images/sp/thumbnail_small/29efa0de-0bc8-4ef1-8a17-e77fcd70ca12.jpg",
"description": "Verweij Cleaning is een modern en betrouwbaar schoonmaakbedrijf dat zich richt op zowel industriële reiniging als kantoorruimtes.",
"is_featured": true,
"profile_url": "https://www.werkspot.nl/profiel/verweij-cleaning",
"provider_id": 2352003,
"rating_score": 7,
"service_type": "Schoonmaakbedrijf",
"latest_review": {
"text": "Korte termijn beschikbaarheid was snel en initiële respons op aanvraag vlot, maar werk was goed uitgevoerd",
"created_at": "2026-08-24T09:23:31+00:00",
"service_name": "Glazenwassen"
},
"provider_name": "Verweij Cleaning",
"provider_slug": "verweij-cleaning",
"total_reviews": 8,
"verifications": [
"VALID_ID",
"VERIFIED_LICENSE"
],
"content_cluster": "schoonmaak",
"provider_location": "IJsselstein"
}
],
"total_count": 4188,
"total_pages": 262,
"service_type": "Schoonmaakbedrijf"
},
"status": "success"
}
}About the Werkspot API
What the API Returns
The list_providers endpoint returns one page of provider cards from Werkspot's public directory for a given profession category and Dutch city. Each call requires a category slug (chosen from 55 supported profession directories, such as schoonmaakbedrijf or loodgieter) and a city slug (e.g. utrecht, amsterdam, den-haag). The optional page parameter (1-based) lets you paginate through results.
Response Fields
At the page level, the response includes total_count (total providers reported for that directory), total_pages, has_more (boolean indicating whether additional pages exist), and the resolved city, category, and service_type (the human-readable profession label). Each item in the providers array contains a provider_id, provider_slug, provider_name, service_type, region (the requested city), and provider_loca (the provider's listed location). Provider cards also carry rating and review count data as displayed in the directory listing.
Coverage and Scope
The API covers all 55 profession categories Werkspot publishes in its public directory. City inputs must be valid Dutch locality slugs; unrecognized localities are rejected. Data reflects Werkspot's public-facing directory pages and does not include content behind login walls, such as private job requests, pricing offers, or direct contact details.
The Werkspot API is a managed, monitored endpoint for werkspot.nl — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when werkspot.nl changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official werkspot.nl API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a lead-generation tool for Dutch home services by collecting provider names and profile links across cities and categories.
- Aggregate review counts and ratings from Werkspot's vakman directory to benchmark reputation across tradespeople in a region.
- Map service provider density by city using the
total_countfield for each category and locality combination. - Monitor the Werkspot directory for new providers entering a specific profession category in a target city.
- Compile a comparison database of cleaning companies (
schoonmaakbedrijf) in multiple Dutch cities usingprovider_nameandregion. - Power a local services search interface that surfaces Werkspot-listed tradespeople by profession and location.
- Research market coverage for specific trades (e.g. plumbers, electricians) across Dutch municipalities using
total_pagesandtotal_count.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Werkspot have an official developer API?+
What does `list_providers` return and how do I paginate through all results?+
category and city. The response includes total_pages and has_more so you can walk through subsequent pages by incrementing the page parameter until has_more is false.Does the API return contact details, phone numbers, or pricing for providers?+
Is individual provider profile data (full bio, portfolio, past jobs) available?+
What happens if I pass a city or category that Werkspot doesn't recognise?+
category parameter must be one of the 55 supported profession directory slugs; values outside that enum are not accepted. Use the documented enum list to validate inputs before calling.