athome.lu APIathome.lu ↗
Access Luxembourg property listings, agency profiles, and agent details from atHome.lu via 8 structured endpoints. Filter by price, area, rooms, city, and more.
curl -X GET 'https://api.parse.bot/scraper/c5977a9f-4e77-4f30-9a5b-83c1c0b9671b/search_properties?page=1&page_size=3&transaction=buy&property_types=Apartment' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for property listings on atHome.lu with various filters. Returns paginated results ordered by recency. Unrecognized property_types values will return empty results rather than an error.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| max_area | integer | Maximum surface area in square meters. |
| min_area | integer | Minimum surface area in square meters. |
| max_price | integer | Maximum price in EUR. |
| max_rooms | integer | Maximum number of rooms. |
| min_price | integer | Minimum price in EUR. |
| min_rooms | integer | Minimum number of rooms. |
| page_size | integer | Number of results per page. |
| transaction | string | Transaction type: 'buy' or 'rent'. |
| property_types | string | Comma-separated property type keys to filter by. Confirmed working values include: 'Apartment', 'House', 'Semi-detached house', 'Terraced', 'Apartment block', 'New project', 'Housing project'. Values are case-sensitive and must match the site's type labels exactly. |
{
"type": "object",
"fields": {
"data": "array of property listing objects with id, type, address, contact, media, prices, surfaces, rooms, and permalink fields",
"total": "integer total count of matching results"
},
"sample": {
"data": {
"data": [
{
"id": 9113567,
"type": "Apartment",
"prices": {
"max": 535000,
"min": 535000,
"unit": "€"
},
"address": {
"city": "Luxembourg-Bonnevoie",
"country": "Luxembourg"
},
"contact": {
"name": "Cimm Immobilier"
},
"typeKey": "apartment",
"surfaces": {
"max": 51,
"min": 51,
"unit": "m²"
},
"transaction": "buy"
}
],
"total": 0
},
"status": "success"
}
}About the athome.lu API
The atHome.lu API covers 8 endpoints that expose property listings, agency profiles, and agent data from Luxembourg's atHome.lu real estate platform. Use search_properties to query listings by price, area, and room count, or get_agency_agents to retrieve the full roster of agents for any agency. Responses include structured fields for addresses, photos, transaction types, pricing, and contact details.
Property Search and Listing Details
The search_properties endpoint accepts filters including min_price, max_price, min_area, max_area, min_rooms, max_rooms, and page/page_size for pagination. Results return an array of listing objects with id, type, address, contact, media, prices, surfaces, rooms, and permalink fields, plus a total count of matching records. Results are ordered by recency. Note that unrecognized property_types values silently return empty results rather than an error.
get_property_details takes a numeric listing_id (from search_properties results) and returns the full listing record, including descriptions, media, prices, characteristics, and a children array for multi-unit projects. Passing a non-existent ID returns an input_not_found response rather than an HTTP error.
Agency and Agent Data
search_agencies lets you find agencies by optional city parameter (e.g. 'Luxembourg' or 'Esch-sur-Alzette'); omitting it returns all active agencies in Luxembourg. Each result includes id, name, addresses, and facets showing buy, rent, and sold counts. From there, get_agency_details returns the full agency profile: businessHours, description, services, languages, email, and external links.
get_agency_properties ties listings back to an agency via agency_id, with optional filters for agent_id and transaction type ('buy' or 'rent'). get_agency_agents returns every agent at a given agency with fields id, firstName, lastName, email, phoneNumber, and photo. get_agent_details adds languages, experienceSince, and agencyId for individual agents. get_all_agents returns a curated list of active agents platform-wide, each including a nested agency object with id, name, city, and logo.
- Build a Luxembourg property search tool filtering by price range and minimum area using
search_properties. - Aggregate agency contact details and business hours across Luxembourg cities with
search_agenciesandget_agency_details. - Map all listings belonging to a specific agency by combining
search_agenciesandget_agency_properties. - Display agent bio pages with experience dates and languages sourced from
get_agent_details. - Compare buy-vs-rent inventory counts per agency using the
facetsfield fromsearch_agencies. - Build a multi-unit project explorer using the
childrenarray returned byget_property_details. - Monitor new Luxembourg listings by polling
search_propertieswith recency ordering and tracking newidvalues.
| 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 atHome.lu offer an official developer API?+
What does `get_agency_properties` return, and can I filter by transaction type?+
id, transaction, price, address, characteristic, and photos for the specified agency. You can pass transaction: 'buy' or transaction: 'rent' to narrow results, and optionally supply an agent_id to filter to a single agent's listings. The meta object includes the total count of matching properties.Are property listings outside Luxembourg covered?+
search_agencies endpoint defaults to Luxembourg-wide results when no city filter is supplied.Does the API expose historical sold-price data or valuation estimates?+
What happens if I pass an invalid listing ID to `get_property_details`?+
input_not_found response rather than an HTTP error code. Similarly, passing an unrecognized value for property_types in search_properties returns empty results without an error, so validating IDs and type values against known data before querying is advisable.