# Holidu Rental Search API Documentation

<p><strong>Holidu Rental Search API Documentation</strong> Search Holidu vacation rentals by destination or map area, with dates, guests, price band, property type, bedrooms, rating and amenity filters. Each offer has price (total, per night, discount, currency), details, bed types, location, provider, rating, photos in four sizes, amenities, cancellation policy and booking flags.</p><p><strong>Pages:</strong> 30 offers per page, page 1 to 101. A page above 101 is rejected. Every page of one query comes from one result set. Holidu changes its offer set after about 12 minutes, so a deep walk should run fast.</p><p><strong>Price:</strong> the price band needs check_in and check_out and applies to the total of the stay. Without dates, prices are per night. Totals marked is_exact false are estimates, so an estimate can sit slightly outside the band.</p><p><strong>Sort:</strong> sort and order only reorder the returned page. They never change which offers a page holds.</p><p><strong>Filters:</strong> a card that contradicts the type, bedroom or exact price filter fails the request. Unrated offers are removed when a rating filter is set; removed_unrated shows how many.</p>

- **Documentation:** [https://scrappa.co/docs/holidu-api/holidu_search](https://scrappa.co/docs/holidu-api/holidu_search)
- **API group:** Holidu API
- **Endpoint:** `GET https://scrappa.co/api/holidu/search`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | string | No | Destination text, e.g. Paris. Send query or a map area, not both. |
| `ne_lat` | number | No | Map area, north-east corner latitude. Send all four map values together. |
| `ne_lng` | number | No | Map area, north-east corner longitude. |
| `sw_lat` | number | No | Map area, south-west corner latitude. |
| `sw_lng` | number | No | Map area, south-west corner longitude. |
| `check_in` | string | No | Check-in date, YYYY-MM-DD, today or later. Send with check_out. |
| `check_out` | string | No | Check-out date, after check-in, at most 30 nights. |
| `adults` | integer | No | Number of adults, 1 to 30. Defaults to 2. |
| `children_ages` | string | No | Comma-separated ages of the children, each 0 to 17, up to 6. Example: 5,7. |
| `property_type` | string | No | Comma-separated: VACATION_APARTMENT, VACATION_HOME, VILLA, HOTEL. |
| `bedrooms` | integer | No | Minimum number of bedrooms. A studio counts as one. |
| `rating` | integer | No | Minimum guest rating bucket: 90, 80, 70, 60, or 0 for properties without rating. |
| `amenities` | string | No | Comma-separated amenity codes from the filters endpoint, e.g. POOL,KITCHEN. All must apply. |
| `min_price` | integer | No | Minimum total of the stay in the market currency. Needs check_in and check_out. |
| `max_price` | integer | No | Maximum total of the stay in the market currency. Needs check_in and check_out. |
| `page` | integer | No | Page number, 1 to 101. Defaults to 1. |
| `sort` | string | No | Reorders the returned page: price, total_price, rating, distance. |
| `order` | string | No | asc or desc. Defaults to the natural order of the sort. |
| `market` | string | No | Country site: com (USD), de (EUR), uk (GBP) or fr (EUR). Defaults to com. An unknown value is rejected. |

## Example response

```json
{
    "data": {
        "page": 1,
        "sort": "rating",
        "query": "Paris",
        "total": 10,
        "market": "com",
        "offers": [
            {
                "id": "57639048",
                "url": "https://www.holidu.com/d/57639048",
                "tags": [],
                "usps": [
                    {
                        "id": "USP_PEOPLE",
                        "unit": null,
                        "group": "PEOPLE",
                        "value": 4,
                        "format": "NUMBER"
                    },
                    {
                        "id": "USP_BED_ROOM",
                        "unit": null,
                        "group": "LAYOUT",
                        "value": 2,
                        "format": "NUMBER"
                    }
                ],
                "dates": {
                    "to": "2027-03-18",
                    "from": "2027-03-14"
                },
                "likes": null,
                "price": {
                    "ccy": "USD",
                    "daily": 327,
                    "total": 1310,
                    "nights": 4,
                    "currency": "USD",
                    "is_exact": false,
                    "discount_type": null,
                    "discount_amount": null,
                    "discount_percentage": null,
                    "discount_description": null,
                    "strike_through_daily": null,
                    "strike_through_total": null
                },
                "photos": [
                    {
                        "large": "https://img.holidu.com/images/7311b7d1-d35f-4a64-8f7f-89af73c259e8/l.jpg",
                        "medium": "https://img.holidu.com/images/7311b7d1-d35f-4a64-8f7f-89af73c259e8/m.jpg",
                        "overlay": false,
                        "high_res": "https://img.holidu.com/images/7311b7d1-d35f-4a64-8f7f-89af73c259e8/hr.jpg",
                        "thumbnail": "https://img.holidu.com/images/7311b7d1-d35f-4a64-8f7f-89af73c259e8/t.jpg"
                    },
                    {
                        "large": "https://img.holidu.com/images/7139915f-e37b-40a9-b7f1-4a59321837fc/l.jpg",
                        "medium": "https://img.holidu.com/images/7139915f-e37b-40a9-b7f1-4a59321837fc/m.jpg",
                        "overlay": false,
                        "high_res": "https://img.holidu.com/images/7139915f-e37b-40a9-b7f1-4a59321837fc/hr.jpg",
                        "thumbnail": "https://img.holidu.com/images/7139915f-e37b-40a9-b7f1-4a59321837fc/t.jpg"
                    }
                ],
                "rating": {
                    "count": 9,
                    "value": 100
                },
                "details": {
                    "area": null,
                    "name": "Panoramic Views of Paris and Pool",
                    "bed_types": [
                        "BED_DOUBLE",
                        "BED_SLEEPING_COUCH"
                    ],
                    "long_name": "Vacation apartment for 4 people",
                    "unit_name": null,
                    "pets_count": null,
                    "short_name": [
                        "4 Guests",
                        "Apartment"
                    ],
                    "guests_count": 4,
                    "apartment_type": "APARTMENT",
                    "bedrooms_count": 2,
                    "short_description": null,
                    "apartment_type_name": "Apartment",
                    "apartment_type_title": "Apartment",
                    "alternative_long_name": null,
                    "sleeping_arrangements": {
                        "rooms": [
                            [],
                            []
                        ]
                    }
                },
                "group_id": "57639048",
                "location": {
                    "lat": 48.834175,
                    "lng": 2.306001,
                    "name": "Paris, Ile de France",
                    "geo_hash": "u09tu3zptwnb",
                    "distance_to_search_region_center": {
                        "id": null,
                        "unit": "UNIT_MI",
                        "value": 0.9,
                        "format": "NUMBER_WITH_UNIT"
                    },
                    "distance_to_original_search_region_center": null
                },
                "position": 1,
                "provider": {
                    "id": "HOMEAWAY",
                    "logo_url": "https://static.holidu.com/img/provider/logos/722/HOMEAWAY.png",
                    "legal_name": "HomeAway.com Inc.",
                    "short_name": "Vrbo",
                    "statistics": null,
                    "is_premium_partner": false
                },
                "meta_data": {
                    "multi_unit_data": {
                        "units": [],
                        "number_of_units": 0,
                        "part_of_multi_unit": false
                    }
                },
                "fuzzy_tags": [],
                "amenities_v2": {
                    "AMENITY_IMPORTANT": [
                        {
                            "id": "KITCHEN",
                            "count": 1,
                            "group": "KITCHEN",
                            "value": "Kitchen",
                            "format": "STRING"
                        },
                        {
                            "id": "PARKING",
                            "count": 1,
                            "group": "PARKING",
                            "value": "Parking",
                            "format": "STRING"
                        }
                    ]
                },
                "amenities_v3": null,
                "is_available": null,
                "routing_type": "OUTBOUND",
                "holidu_rating": null,
                "review_extract": null,
                "missing_filters": [],
                "ski_resort_names": [],
                "external_group_id": null,
                "cancellation_policy": {
                    "free_cancellation": {
                        "amount": null,
                        "percentage": null,
                        "until_date": "2027-02-27",
                        "days_before_arrival": 15
                    },
                    "light_cancellation": null
                },
                "is_express_bookable": false,
                "is_instant_bookable": false,
                "alternative_price_rates": []
            }
        ],
        "region": {
            "id": 22458,
            "name": "Paris",
            "level": 16,
            "prefix": "in",
            "themes": [],
            "availability": null,
            "in_high_demand": false,
            "booked_percentage": null,
            "marketing_campaign_id": 53,
            "total_number_of_offers": 8659
        },
        "currency": "USD",
        "has_more": false,
        "viewport": {
            "ne": {
                "lat": 48.902155961841345,
                "lng": 2.469757441431284
            },
            "sw": {
                "lat": 48.81557547021657,
                "lng": 2.224121997132898
            }
        },
        "page_size": 30,
        "site_path": "/s/Paris--France?propertyType=VACATION_APARTMENT&amenities=POOL",
        "sort_scope": "page",
        "price_basis": "stay_total",
        "total_pages": 1,
        "removed_unrated": 0
    },
    "meta": {
        "billable": true,
        "endpoint_family": "rental_search"
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A required query parameter is missing or invalid. This response is not billable. |
| 503 | Service Unavailable | Holidu could not be reached, answered with an unexpected shape or returned a result that does not match the request. This response is not billable. Retry later. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
