holland2stay.com APIwww.holland2stay.com ↗
Access Holland2Stay rental property listings via API. Filter by city and availability, retrieve pricing, building details, and direct booking URLs for properties across the Netherlands.
curl -X GET 'https://api.parse.bot/scraper/8f5c9324-e3f0-44e2-b5b9-e0351eec1b50/get_listings?page=1&page_size=2' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve a paginated page of property listings. Returns listings with full location details, pricing, and URLs. Supports filtering by city and availability status.
| Param | Type | Description |
|---|---|---|
| city | string | City filter ID (e.g., '24' for Amsterdam, '29' for Eindhoven). Get IDs from get_filters endpoint. |
| page | integer | Page number (1-indexed). |
| sort_by | string | Sort field. Accepted values: 'price', 'name', 'basic_rent', 'next_contract_startdate'. Omitting defaults to 'next_contract_startdate'. |
| sort_dir | string | Sort direction: 'ASC' or 'DESC'. |
| page_size | integer | Number of listings per page (max 100). |
| availability | string | Availability filter ID (e.g., '179' for Available to book, '336' for Available in lottery). Get IDs from get_filters endpoint. |
{
"type": "object",
"fields": {
"listings": "array of listing objects with name, sku, url, city, building_name, availability, pricing, and other property details",
"pagination": "object with current_page, page_size, total_pages, total_count, items_on_page"
},
"sample": {
"data": {
"listings": [
{
"sku": "r-cey-56",
"url": "https://www.holland2stay.com/residences/azieweg-56.html",
"city": "Haarlem",
"name": "Aziëweg 56",
"floor": "2",
"url_key": "azieweg-56",
"bedrooms": "2",
"currency": "EUR",
"finishing": "Semi furnished",
"inventory": 60,
"basic_rent": 1721,
"offer_text": "FRIENDS",
"total_rent": 1915,
"living_area": "87",
"availability": "Available to book",
"energy_label": "A+++",
"minimum_stay": "12 months",
"building_name": "Ceylonpoort",
"contract_type": "Indefinite",
"max_occupants": "Two",
"resident_type": "FRIENDS apartment",
"offer_text_two": null,
"service_charge": 92,
"allowance_price": 0,
"caretaker_costs": 12,
"available_startdate": "2026-05-15 00:00:00",
"energy_common_areas": 10,
"price_analysis_text": "servicekosten, stoffering & warmte",
"cleaning_common_areas": 20,
"next_contract_startdate": "2026-05-15 00:00:00",
"current_lottery_subscribers": null
}
],
"pagination": {
"page_size": 3,
"total_count": 12398,
"total_pages": 4133,
"current_page": 1,
"items_on_page": 3
}
},
"status": "success"
}
}About the holland2stay.com API
The Holland2Stay API covers 4 endpoints that expose rental property listings from holland2stay.com, including pricing, availability status, city, building name, and direct URLs. The get_listings endpoint supports pagination, city filtering by ID, and sorting by price or contract start date. A companion get_filters endpoint returns all valid filter IDs needed to drive those queries.
Endpoints and Data Coverage
The API exposes four endpoints. get_listings returns a paginated array of listing objects, each containing fields like name, sku, url, city, building_name, availability, and pricing details. Pagination is controlled via page, page_size (up to 100), and the response includes a pagination object with current_page, total_pages, total_count, and items_on_page. Sorting is available on price, name, basic_rent, and next_contract_startdate in either ASC or DESC direction.
Filtering
City and availability filters accept numeric ID strings — for example, '24' for Amsterdam or '179' for "Available to book". These IDs come from get_filters, which returns all filterable dimensions: city, available_to_book, building_name, finishing, no_of_rooms, resident_type, floor, and others, each with item counts. Always call get_filters first to get current IDs before constructing a filtered query.
Bulk Retrieval and Detail
get_all_listings iterates all pages automatically and returns a flat listings array alongside a total_count and items_retrieved count. The source has roughly 12,000 listings total, so use the max_pages parameter to cap how many pages are fetched when you only need a subset. For full property details including image galleries, call get_listing_detail with the url_key slug (e.g., 'victoriapark-881') obtained from any listing in get_listings. This endpoint adds image_url and a media_gallery array not present in the list responses.
- Monitor newly available Amsterdam rentals by polling
get_listingsfiltered to city ID'24'and availability ID'179'. - Build a price comparison dashboard across Dutch cities using
basic_rentandcityfields fromget_all_listings. - Track lottery-eligible units by filtering
get_listingswith the availability ID for 'Available in lottery'. - Generate building-level availability reports by grouping listings on
building_nameusing data fromget_all_listings. - Populate a property detail page with photos using the
media_galleryarray fromget_listing_detail. - Sync a CRM or alerting system with current rental inventory using
total_countandpagination.total_pagesfor change detection.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Holland2Stay have an official developer API?+
How do I know which city or availability ID to pass as a filter?+
get_filters first. It returns all valid filter categories — including city and available_to_book — with their numeric ID strings and listing counts. Pass those IDs as the city or availability parameters in get_listings or get_all_listings.What does `get_listing_detail` return that `get_listings` does not?+
get_listing_detail adds image_url and a media_gallery array to the standard listing fields. The list endpoints return no image data, so if you need photos you must call get_listing_detail per listing using the url_key from the list response.Does the API expose tenant reviews, resident forum posts, or historical rent data?+
Are there any limitations when using `get_all_listings` to fetch all properties?+
max_pages will result in a large number of sequential page fetches. Use max_pages to limit the request scope when you only need a city or availability subset, and combine it with the city and availability filters to reduce the result set before iterating.