API-Dokumente · v1.0
Öffentliche API-Dokumentation
Zeigen Sie Ihre veröffentlichten Immobilienangebote auf jeder Website oder Anwendung an. Öffentlich, schreibgeschützt, keine Authentifizierung erforderlich.
- Keine Authentifizierung
- Öffentlicher Endpunkt, keine API-Schlüssel erforderlich
- RESTful JSON
- Standard-REST-API, die JSON zurückgibt
Endpunkt
https://api.habiata.lu/public-properties/by-company/{companyId}Pfadparameter
companyIdDie eindeutige Kennung des Unternehmens, dessen veröffentlichte Eigenschaften Sie abrufen möchten. Diese finden Sie in Ihrem Habiata-Dashboard unter Integrationen.
Abfrageparameter
pageSeitenzahl für die Paginierung (1-indiziert).
limitAnzahl der Eigenschaften pro Seite. Maximal 100.
portalPortal, aus dem veröffentlichte Inserate gelesen werden. Standard: habiata, die eigene Website (MY_HABIATA_WEBSITE), die auch explizit genannt werden kann. Unbekannte Werte liefern 400.
habiataathome.luwortimmo.luimmotopnextimmofiliaimmoweltle_figarokleinanzeigenwillhabenderstandardnewhomehomegatesrealityotodomingatlanimmowebselogerleboncoinkyerogreenacresproperstarjameseditionsearchFreitextsuche nach Titel, Beschreibung, Adresse und Stadt.
property_typeNach Immobilientyp filtern. Mehrere Werte kommagetrennt (ODER). Unabhängig von der Groß-/Kleinschreibung. Siehe Immobilientypen-Referenz unten.
housedetached_housesemi_detachedterraced_housetownhousevillamansionfarmhousecountry_housechaletbungalowcottageapartmentstudiopenthouseduplextriplexloftmaisonetteattic_apartmentground_floornew_buildoff_planunder_constructionhouse_modelland_with_houseturnkey_projectinvestment_propertyrental_propertybuilding_landagricultural_landindustrial_landcommercial_landgarageparking_spacecarportunderground_parkingofficeoffice_buildingcoworking_spaceretail_spaceshopshopping_centershowroomrestaurantcafehotelbed_breakfastwarehousefactoryindustrial_unitlogistics_centerstorage_facilityhealthcareeducationalleisurereligiousutilitygas_stationcar_washworkshopcommerciallandothertransaction_typeNach Transaktionsrichtung oder Lebenszyklus filtern. Kommagetrennt für mehrere Werte (ODER). buy und rent sind Familien; sold und rented nur bei expliziter Nennung; off_market für zurückgezogene/pausierte Anzeigen.
buyrentnewvaluationothersous_compromisreservedsoldrentedoff_marketmin_priceMindestpreis.
max_priceMaximalpreis.
cityKommagetrennte Städtenamen; exakter Vergleich, unabhängig von der Groß-/Kleinschreibung.
cantonNach Kanton filtern (unabhängig von der Groß-/Kleinschreibung).
zip_codeNach Postleitzahl filtern (unabhängig von der Groß-/Kleinschreibung).
countryNach Land filtern (unabhängig von der Groß-/Kleinschreibung).
districtKommagetrennte Stadtteil-/Quartiernamen (z. B. Limpertsberg,Hamm); exakter Vergleich, unabhängig von der Groß-/Kleinschreibung.
min_bedroomsMinimale Anzahl Schlafzimmer.
max_bedroomsMaximale Anzahl Schlafzimmer.
min_bathroomsMinimale Anzahl Badezimmer.
min_areaMinimale Wohnfläche (in der Flächeneinheit des Inserats, meist m²).
max_areaMaximale Wohnfläche (in der Flächeneinheit des Inserats, meist m²).
min_land_areaMinimale Grundstücksfläche (in der Flächeneinheit des Inserats, meist m²).
max_land_areaMaximale Grundstücksfläche (in der Flächeneinheit des Inserats, meist m²).
min_year_builtMinimales Baujahr.
max_year_builtMaximales Baujahr.
min_floor_levelMinimales Stockwerk der Einheit.
max_floor_levelMaximales Stockwerk der Einheit.
min_garagesMinimale Anzahl Garagen (Autos in geschlossenen, abschließbaren Garagen).
min_indoor_parking_spacesMinimale Anzahl Plätze in einer gemeinsamen überdachten Anlage.
min_outdoor_parking_spacesMinimale Anzahl Außenstellplätze.
min_carportsMinimale Anzahl Carport-Plätze (überdacht, seitlich offen).
max_monthly_chargesMaximale monatliche Nebenkosten (nützlich für Mietobjekte).
energy_classKommagetrennte Energieklassen (ODER), unabhängig von der Groß-/Kleinschreibung. Bekannte Werte: A+, A, B, C, D, E, F, G, H, I.
A+ABCDEFGHIenvironmental_classKommagetrennte Umweltklassen (ODER), unabhängig von der Groß-/Kleinschreibung.
thermal_insulation_classKommagetrennte Wärmedämmklassen (ODER), unabhängig von der Groß-/Kleinschreibung.
heating_typeKommagetrennte Heizungsarten (ODER); Teilstring-Vergleich. Bekannte Werte: gas, oil, electric, wood, pellet, solar, heat pump, geothermal, district.
gasoilelectricwoodpelletsolarheat pumpgeothermaldistrictglazing_typeKommagetrennte Verglasungstypen (ODER); Teilstring-Vergleich. Bekannte Werte: simple, double, triple.
simpledoubletripleconstruction_typeKommagetrennte Bauarten (ODER); Teilstring-Vergleich, unabhängig von der Groß-/Kleinschreibung.
amenitiesKommagetrennte Ausstattungs-Schlüssel; die Immobilie muss JEDE genannte Ausstattung haben (UND). Werte in Kleinbuchstaben-snake_case, z. B. air_conditioning.
pets_allowedHaustierfreundliche Inserate filtern. Boolean-Filter akzeptieren true/false/1/0 und treffen nur, wenn das Flag gesetzt ist (null trifft nie).
is_furnishedMöblierte Inserate filtern.
has_elevatorInserate mit Aufzug filtern.
has_balconyInserate mit Balkon filtern.
has_gardenInserate mit Garten filtern.
has_terraceInserate mit Terrasse filtern.
has_separate_wcInserate mit getrenntem WC filtern.
has_caveInserate mit Keller (Cave) filtern.
has_wine_cellarInserate mit Weinkeller filtern.
has_atticInserate mit Dachboden filtern.
has_solar_panelsInserate mit Solarpanels filtern.
has_fireplaceInserate mit Kamin filtern.
has_underfloor_heatingInserate mit Fußbodenheizung filtern.
has_laundry_roomInserate mit Waschküche filtern.
has_swimming_poolInserate mit Schwimmbad filtern.
has_saunaInserate mit Sauna filtern.
has_hammamInserate mit Hammam filtern.
has_alarmInserate mit Alarmanlage filtern.
has_intercomInserate mit Gegensprechanlage filtern.
has_videophoneInserate mit Videophon filtern.
has_video_surveillanceInserate mit Videoüberwachung filtern.
featuredHervorgehobene Inserate filtern.
highlightMarkierte Inserate filtern.
sortSortierung. Standard: die manuelle Reihenfolge der Agentur.
price_ascprice_descnewestoldestCodebeispiele
Grundlegende Anfrage
curl "https://api.habiata.lu/public-properties/by-company/YOUR_COMPANY_ID?page=1&limit=20"Mit Filtern
# Filter by property type
curl "https://api.habiata.lu/public-properties/by-company/YOUR_COMPANY_ID?property_type=apartment"
# Filter by transaction type (buy/rent are families; sold/rented only when named)
curl "https://api.habiata.lu/public-properties/by-company/YOUR_COMPANY_ID?transaction_type=buy"
curl "https://api.habiata.lu/public-properties/by-company/YOUR_COMPANY_ID?transaction_type=sold,rented"
# Search properties
curl "https://api.habiata.lu/public-properties/by-company/YOUR_COMPANY_ID?search=Luxembourg&limit=10"
# Filter by district / quartier
curl "https://api.habiata.lu/public-properties/by-company/YOUR_COMPANY_ID?district=Limpertsberg,Hamm"
# Filter by portal (habiata, athome.lu, wortimmo.lu, immotop, nextimmo, filia)
curl "https://api.habiata.lu/public-properties/by-company/YOUR_COMPANY_ID?portal=nextimmo&page=1&limit=20"Antwort
Beispielantwort
200 OK{
"properties": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"company_id": "YOUR_COMPANY_ID",
"external_id": "REF-12345",
"project_id": "proj-uuid-residence-du-parc",
"project_name": "Résidence du Parc",
"title": "Beautiful Apartment in Kirchberg",
"titles": {
"en": "Beautiful Apartment in Kirchberg",
"fr": "Bel appartement à Kirchberg",
"de": "Schöne Wohnung in Kirchberg"
},
"description": "Spacious 3-bedroom apartment with panoramic views...",
"descriptions": {
"en": "Spacious 3-bedroom apartment with panoramic views...",
"fr": "Spacieux appartement de 3 chambres avec vue panoramique...",
"de": "Geräumige 3-Zimmer-Wohnung mit Panoramablick..."
},
"property_type": "apartment",
"transaction_type": "buy",
"status": "active",
"price": 850000,
"room_count": 4,
"bedrooms": 3,
"bathrooms": 2,
"area": 120,
"area_unit": "sqm",
"floor_level": 5,
"address": "2 Rue du Fort Thüngen",
"street": "Rue du Fort Thüngen",
"house_number": "2",
"city": "Luxembourg",
"district": "Kirchberg",
"zip_code": "1499",
"country": "Luxembourg",
"publish_address": true,
"latitude": 49.6236,
"longitude": 6.1469,
"parcel_numbers": [
"123/4567"
],
"energy_class": "B",
"indoor_parking_spaces": 1,
"has_elevator": true,
"monthly_charges": 250,
"parking_fees": 35000,
"available_from": "2026-11-01",
"pet_policy": null,
"virtual_tour_url": "https://my.matterport.com/show/?m=EXAMPLE",
"highlighted_image": "https://cdn.habiata.lu/companies/YOUR_COMPANY_ID/living-room.jpg",
"highlighted_image_128": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/128.webp",
"highlighted_image_480": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/480.webp",
"highlighted_image_1080": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/1080.webp",
"highlighted_image_1920": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/1920.webp",
"images": [
{
"url": "https://cdn.habiata.lu/companies/YOUR_COMPANY_ID/living-room.jpg",
"url_128": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/128.webp",
"url_480": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/480.webp",
"url_1080": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/1080.webp",
"url_1920": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/1920.webp",
"is_main": true,
"sort_order": 0,
"caption": "Living room",
"width": 4032,
"height": 3024,
"alt_text": "Bright living room with floor-to-ceiling windows",
"focus_point": "50% 40%"
}
],
"nearby_places": [
{
"name": "Luxexpo tram stop",
"category": "tram_stop",
"distance": 350,
"latitude": 49.6282,
"longitude": 6.1641
}
],
"agents": [
{
"id": "agent-uuid",
"name": "Alex Smith",
"first_name": "Alex",
"last_name": "Smith",
"email": "alex.smith@example.com",
"phone": "+352 27 12 34 56",
"mobile": "+352 691 000 000",
"language": "fr",
"avatar": "https://cdn.habiata.lu/avatars/agent-uuid.jpg"
}
],
"portal_publications": [
{
"portal_integration_id": "portal-uuid",
"portal_type": "MY_HABIATA_WEBSITE",
"status": "PUBLISHED",
"external_id": null,
"published_at": "2025-01-15T10:30:00Z",
"unpublished_at": null,
"last_error": null,
"last_error_at": null
}
],
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-06-20T14:00:00Z"
}
],
"projects": [
{
"id": "proj-uuid-residence-du-parc",
"company_id": "YOUR_COMPANY_ID",
"name": "Résidence du Parc",
"descriptions": {
"fr": "Résidence de 12 appartements au cœur de Kirchberg."
},
"external_id": null,
"cover_images": [],
"property_count": 1
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 42,
"pages": 3
}
}Fehlerantworten
| Status | Beschreibung |
|---|---|
| 400 | Unbekannter Portalwert oder ungültige page / limit |
| 404 | Firma nicht gefunden oder kein Portal konfiguriert. |
Bilder
Jedes Foto gibt es als Original-Upload und in vier komprimierten WebP-Kopien. Zeigen Sie eine Kopie an: Originale können mehrere Megabyte groß sein.
Jede Größe ist ein Begrenzungsrahmen, keine Breite: Das Foto wird in ein Quadrat dieser Größe eingepasst und behält sein Seitenverhältnis. Ein Hochformatfoto, eingepasst in 480, ist 480 px hoch und schmaler als 480 px. Fotos, die kleiner als eine Größe sind, werden nie vergrößert.
Kopien werden kurz nach dem Upload erzeugt. Bis dahin, oder wenn die Erzeugung fehlgeschlagen ist, ist das Größenfeld null. Weichen Sie auf die nächstgrößere Kopie aus, dann auf eine kleinere, und verwenden Sie das Original nur, wenn keine Kopie existiert.
Größen
| images[] | Hauptfoto | Größe |
|---|---|---|
url_128 | highlighted_image_128 | 128 px: Mini-Vorschaubilder, Kartenmarker |
url_480 | highlighted_image_480 | 480 px: Inseratskarten und Raster |
url_1080 | highlighted_image_1080 | 1080 px: Detailseiten und Tablets |
url_1920 | highlighted_image_1920 | 1920 px: Vollbildgalerien und Titelbilder |
url | highlighted_image | Original-Upload: Downloads und letzter Ausweg |
images[] enthält alle Fotos in Galeriereihenfolge, Hauptfoto zuerst. Die highlighted_image-Felder wiederholen die Größen des Hauptfotos direkt an der Immobilie, sodass eine Inseratskarte kein Array durchsuchen muss.
Codebeispiele
Inseratskarte
// Listing card: the main photo's sizes sit on the property itself
const cardUrl =
property.highlighted_image_480 ??
property.highlighted_image_1080 ??
property.highlighted_image_1920 ??
property.highlighted_image_128 ??
property.highlighted_image;Galerie mit srcset
const SIZES = [128, 480, 1080, 1920];
// Requested size first, then larger copies, then smaller ones, then the original
function pickImageUrl(image, size = 1080) {
const larger = SIZES.filter((s) => s > size);
const smaller = SIZES.filter((s) => s < size).reverse();
for (const s of [size, ...larger, ...smaller]) {
if (image[`url_${s}`]) return image[`url_${s}`];
}
return image.url;
}
// Photos are fitted inside the size and never enlarged
function copyWidth(image, size) {
if (!image.width || !image.height) return size;
return Math.round(image.width * Math.min(1, size / Math.max(image.width, image.height)));
}
function srcSet(image) {
return SIZES.filter((s) => image[`url_${s}`])
.map((s) => `${image[`url_${s}`]} ${copyWidth(image, s)}w`)
.join(", ");
}
const gallery = property.images.map((image) => `
<img
src="${pickImageUrl(image, 1080)}"
srcset="${srcSet(image)}"
sizes="(max-width: 768px) 100vw, 1080px"
alt="${image.alt_text ?? image.caption ?? property.title}"
style="object-fit: cover; object-position: ${image.focus_point ?? "50% 50%"}"
loading="lazy"
/>`);Einzelimmobilien-Endpoint
Liefert eine veröffentlichte Immobilie per ID, das Detailseiten-Pendant der by-company-Liste.
Die Immobilie muss eine PUBLISHED-Veröffentlichung auf dem aufgelösten Portal haben; andernfalls ist die Antwort 404, identisch zu einer nicht existierenden ID.
Im Gegensatz zum Listen-Endpoint wird kein Lifecycle-Filter angewendet: Eine veröffentlichte Anzeige bleibt über ihre eigene URL erreichbar, unabhängig vom transaction_type (einschließlich sold, rented und off_market), damit Deep Links weiter funktionieren. Lesen Sie transaction_type, um zu entscheiden, wie ein abgeschlossener Deal dargestellt wird.
https://api.habiata.lu/public-properties/{propertyId}Pfadparameter
propertyIdDie eindeutige Kennung der Immobilie.
Abfrageparameter
portalPortal, auf dem die Immobilie veröffentlicht sein muss. Standard: habiata, die eigene Website (MY_HABIATA_WEBSITE), die auch explizit genannt werden kann. Unbekannte Werte liefern 400.
habiataathome.luwortimmo.luimmotopnextimmofiliaimmoweltle_figarokleinanzeigenwillhabenderstandardnewhomehomegatesrealityotodomingatlanimmowebselogerleboncoinkyerogreenacresproperstarjameseditionBeispielanfrage
curl "https://api.habiata.lu/public-properties/YOUR_PROPERTY_ID"
# With portal filter
curl "https://api.habiata.lu/public-properties/YOUR_PROPERTY_ID?portal=nextimmo"Beispielantwort
200 OK{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"company_id": "YOUR_COMPANY_ID",
"external_id": "REF-12345",
"project_id": "proj-uuid-residence-du-parc",
"project_name": "Résidence du Parc",
"title": "Beautiful Apartment in Kirchberg",
"titles": {
"en": "Beautiful Apartment in Kirchberg",
"fr": "Bel appartement à Kirchberg",
"de": "Schöne Wohnung in Kirchberg"
},
"description": "Spacious 3-bedroom apartment with panoramic views...",
"descriptions": {
"en": "Spacious 3-bedroom apartment with panoramic views...",
"fr": "Spacieux appartement de 3 chambres avec vue panoramique...",
"de": "Geräumige 3-Zimmer-Wohnung mit Panoramablick..."
},
"property_type": "apartment",
"transaction_type": "buy",
"status": "active",
"price": 850000,
"room_count": 4,
"bedrooms": 3,
"bathrooms": 2,
"area": 120,
"area_unit": "sqm",
"floor_level": 5,
"address": "2 Rue du Fort Thüngen",
"street": "Rue du Fort Thüngen",
"house_number": "2",
"city": "Luxembourg",
"district": "Kirchberg",
"zip_code": "1499",
"country": "Luxembourg",
"publish_address": true,
"latitude": 49.6236,
"longitude": 6.1469,
"parcel_numbers": [
"123/4567"
],
"energy_class": "B",
"indoor_parking_spaces": 1,
"has_elevator": true,
"monthly_charges": 250,
"parking_fees": 35000,
"available_from": "2026-11-01",
"pet_policy": null,
"virtual_tour_url": "https://my.matterport.com/show/?m=EXAMPLE",
"highlighted_image": "https://cdn.habiata.lu/companies/YOUR_COMPANY_ID/living-room.jpg",
"highlighted_image_128": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/128.webp",
"highlighted_image_480": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/480.webp",
"highlighted_image_1080": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/1080.webp",
"highlighted_image_1920": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/1920.webp",
"images": [
{
"url": "https://cdn.habiata.lu/companies/YOUR_COMPANY_ID/living-room.jpg",
"url_128": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/128.webp",
"url_480": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/480.webp",
"url_1080": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/1080.webp",
"url_1920": "https://cdn.habiata.lu/image-variants/YOUR_COMPANY_ID/img-uuid/1920.webp",
"is_main": true,
"sort_order": 0,
"caption": "Living room",
"width": 4032,
"height": 3024,
"alt_text": "Bright living room with floor-to-ceiling windows",
"focus_point": "50% 40%"
}
],
"nearby_places": [
{
"name": "Luxexpo tram stop",
"category": "tram_stop",
"distance": 350,
"latitude": 49.6282,
"longitude": 6.1641
}
],
"agents": [
{
"id": "agent-uuid",
"name": "Alex Smith",
"first_name": "Alex",
"last_name": "Smith",
"email": "alex.smith@example.com",
"phone": "+352 27 12 34 56",
"mobile": "+352 691 000 000",
"language": "fr",
"avatar": "https://cdn.habiata.lu/avatars/agent-uuid.jpg"
}
],
"portal_publications": [
{
"portal_integration_id": "portal-uuid",
"portal_type": "MY_HABIATA_WEBSITE",
"status": "PUBLISHED",
"external_id": null,
"published_at": "2025-01-15T10:30:00Z",
"unpublished_at": null,
"last_error": null,
"last_error_at": null
}
],
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-06-20T14:00:00Z"
}Die Antwort ist ein einzelnes Property-Objekt, dieselben Felder wie beim Listen-Endpoint (siehe Property Object Schema oben).
Fehlerantworten
| Status | Beschreibung |
|---|---|
| 400 | Unbekannter Portalwert |
| 404 | Immobilie nicht gefunden, nicht auf diesem Portal veröffentlicht oder gelöscht |
Referenz zu Eigenschaftstypen
Der property_type Das Feld akzeptiert einen der folgenden Werte, sortiert nach Kategorie. Verwenden Sie diese Werte, wenn Sie über die API filtern oder Eigenschaftsdaten interpretieren.
Haus
housedetached_housesemi_detachedterraced_housetownhousevillamansionfarmhousecountry_housechaletbungalowcottageWohnung
apartmentstudiopenthouseduplextriplexloftmaisonetteattic_apartmentground_floorNeubau und Bauprojekte
new_buildoff_planunder_constructionhouse_modelland_with_houseturnkey_projectAnlageobjekt
investment_propertyrental_propertyGrundstück
building_landagricultural_landindustrial_landcommercial_landGarage und Parkplatz
garageparking_spacecarportunderground_parkingGewerbe und Büro
officeoffice_buildingcoworking_spaceretail_spaceshopshopping_centershowroomrestaurantcafehotelbed_breakfastIndustrie und Logistik
warehousefactoryindustrial_unitlogistics_centerstorage_facilitySondernutzung
healthcareeducationalleisurereligiousutilitygas_stationcar_washworkshopAndere
commerciallandotherGruppierte Projekte (Endpoint)
Zum Auslesen ganzer Projekte und gruppierter Immobilien verwenden.
https://api.habiata.lu/public-properties/projects/by-company/{companyId}Abfrageparameter
pageSeitenzahl für die Paginierung (1-indiziert).
limitAnzahl Projekte pro Seite. Maximum 100.
portalPortal, aus dem veröffentlichte Projekte gelesen werden. Standard: habiata, die eigene Website (MY_HABIATA_WEBSITE), die auch explizit genannt werden kann. Unbekannte Werte liefern 400.
habiataathome.luwortimmo.luimmotopnextimmofiliaimmoweltle_figarokleinanzeigenwillhabenderstandardnewhomehomegatesrealityotodomingatlanimmowebselogerleboncoinkyerogreenacresproperstarjameseditionBeispielanfrage
curl "https://api.habiata.lu/public-properties/projects/by-company/YOUR_COMPANY_ID?page=1&limit=20"Beispielantwort
200 OK{
"projects": [
{
"id": "proj-uuid-residence-du-parc",
"company_id": "YOUR_COMPANY_ID",
"name": "Résidence du Parc",
"descriptions": { "fr": "Résidence de 12 appartements au cœur de Belair." },
"external_id": null,
"cover_images": [
{
"image_id": "img-uuid-1",
"property_id": null,
"url": "https://cdn.habiata.lu/…/residence-du-parc.jpg",
"url_128": "https://cdn.habiata.lu/…/128.webp",
"url_480": "https://cdn.habiata.lu/…/480.webp",
"url_1080": "https://cdn.habiata.lu/…/1080.webp",
"url_1920": "https://cdn.habiata.lu/…/1920.webp",
"width": 2400,
"height": 1600,
"alt_text": "Résidence du Parc — façade",
"focus_point": null
}
],
"property_count": 3,
"properties": [
{
"id": "unit-uuid-1",
"title": "Apartment 2.1 — 3 bedrooms",
"project_id": "proj-uuid-residence-du-parc",
"project_name": "Résidence du Parc",
"price": 650000,
"property_type": "apartment",
"transaction_type": "buy"
}
]
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"pages": 1
}
}Projektreferenz
Projekte gruppieren zusammengehörige Immobilien, typischerweise Einheiten im selben Gebäude oder Neubauprogramm.
Zwei Wege, mit Projekten zu arbeiten
| Flacher Immobilien-Endpoint | Gruppierter Projekte-Endpoint | |
|---|---|---|
| Endpunkt | GET /public-properties/by-company/{companyId} | GET /public-properties/projects/by-company/{companyId} |
| Liefert | Alle veröffentlichten Einheiten | Veröffentlichte Projekte mit verschachtelten Einheiten unter properties[] |
| Projektfelder | project_id und project_name pro Einheit | Projekt-Metadaten plus verschachtelte Einheiten in properties[] |
| Veröffentlichen in Habiata | Jede Immobilie einzeln auf dem Portal veröffentlichen | Projekte → benanntes Projekt wählen → Auf Portalen veröffentlichen |
Das Veröffentlichen einer Immobilie veröffentlicht nicht automatisch das Projekt. Einheiten einem Projekt im CRM zuzuweisen reicht für den gruppierten Endpoint nicht. Das Projekt muss separat veröffentlicht werden.
Referenz Transaktionstypen
Der transaction_type gibt die Transaktionsrichtung und den Angebots-Lebenszyklus an. Als Abfragefilter sind buy und rent Familien; sold und rented werden nur zurückgegeben, wenn sie explizit genannt werden.
Laufend (primär)
buyrentLaufend (sekundär)
newvaluationotherLaufend (ausstehend)
sous_compromisreservedAbgeschlossen
soldrentedoff_marketFür KI-Agenten und -Integrationen
Sie entwickeln eine Integration oder nutzen einen KI-Agenten? Hier finden Sie alles Nötige mit einem Klick.