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

GEThttps://api.habiata.lu/public-properties/by-company/{companyId}

Pfadparameter

companyId

string (UUID) · Pflichtfeld

Die eindeutige Kennung des Unternehmens, dessen veröffentlichte Eigenschaften Sie abrufen möchten. Diese finden Sie in Ihrem Habiata-Dashboard unter Integrationen.

Abfrageparameter

page

integer

Seitenzahl für die Paginierung (1-indiziert).

Standard 1

limit

integer

Anzahl der Eigenschaften pro Seite. Maximal 100.

Standard 20

portal

string

Portal, 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.

Standard habiata

habiataathome.luwortimmo.luimmotopnextimmofiliaimmoweltle_figarokleinanzeigenwillhabenderstandardnewhomehomegatesrealityotodomingatlanimmowebselogerleboncoinkyerogreenacresproperstarjamesedition
search

string

Freitextsuche nach Titel, Beschreibung, Adresse und Stadt.

property_type

string

Nach 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_washworkshopcommerciallandother
transaction_type

string

Nach 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_market
min_price

number

Mindestpreis.

max_price

number

Maximalpreis.

city

string

Kommagetrennte Städtenamen; exakter Vergleich, unabhängig von der Groß-/Kleinschreibung.

canton

string

Nach Kanton filtern (unabhängig von der Groß-/Kleinschreibung).

zip_code

string

Nach Postleitzahl filtern (unabhängig von der Groß-/Kleinschreibung).

country

string

Nach Land filtern (unabhängig von der Groß-/Kleinschreibung).

district

string

Kommagetrennte Stadtteil-/Quartiernamen (z. B. Limpertsberg,Hamm); exakter Vergleich, unabhängig von der Groß-/Kleinschreibung.

min_bedrooms

integer

Minimale Anzahl Schlafzimmer.

max_bedrooms

integer

Maximale Anzahl Schlafzimmer.

min_bathrooms

number

Minimale Anzahl Badezimmer.

min_area

number

Minimale Wohnfläche (in der Flächeneinheit des Inserats, meist m²).

max_area

number

Maximale Wohnfläche (in der Flächeneinheit des Inserats, meist m²).

min_land_area

number

Minimale Grundstücksfläche (in der Flächeneinheit des Inserats, meist m²).

max_land_area

number

Maximale Grundstücksfläche (in der Flächeneinheit des Inserats, meist m²).

min_year_built

integer

Minimales Baujahr.

max_year_built

integer

Maximales Baujahr.

min_floor_level

integer

Minimales Stockwerk der Einheit.

max_floor_level

integer

Maximales Stockwerk der Einheit.

min_garages

integer

Minimale Anzahl Garagen (Autos in geschlossenen, abschließbaren Garagen).

min_indoor_parking_spaces

integer

Minimale Anzahl Plätze in einer gemeinsamen überdachten Anlage.

min_outdoor_parking_spaces

integer

Minimale Anzahl Außenstellplätze.

min_carports

integer

Minimale Anzahl Carport-Plätze (überdacht, seitlich offen).

max_monthly_charges

number

Maximale monatliche Nebenkosten (nützlich für Mietobjekte).

energy_class

string

Kommagetrennte Energieklassen (ODER), unabhängig von der Groß-/Kleinschreibung. Bekannte Werte: A+, A, B, C, D, E, F, G, H, I.

A+ABCDEFGHI
environmental_class

string

Kommagetrennte Umweltklassen (ODER), unabhängig von der Groß-/Kleinschreibung.

thermal_insulation_class

string

Kommagetrennte Wärmedämmklassen (ODER), unabhängig von der Groß-/Kleinschreibung.

heating_type

string

Kommagetrennte Heizungsarten (ODER); Teilstring-Vergleich. Bekannte Werte: gas, oil, electric, wood, pellet, solar, heat pump, geothermal, district.

gasoilelectricwoodpelletsolarheat pumpgeothermaldistrict
glazing_type

string

Kommagetrennte Verglasungstypen (ODER); Teilstring-Vergleich. Bekannte Werte: simple, double, triple.

simpledoubletriple
construction_type

string

Kommagetrennte Bauarten (ODER); Teilstring-Vergleich, unabhängig von der Groß-/Kleinschreibung.

amenities

string

Kommagetrennte Ausstattungs-Schlüssel; die Immobilie muss JEDE genannte Ausstattung haben (UND). Werte in Kleinbuchstaben-snake_case, z. B. air_conditioning.

pets_allowed

boolean

Haustierfreundliche Inserate filtern. Boolean-Filter akzeptieren true/false/1/0 und treffen nur, wenn das Flag gesetzt ist (null trifft nie).

is_furnished

boolean

Möblierte Inserate filtern.

has_elevator

boolean

Inserate mit Aufzug filtern.

has_balcony

boolean

Inserate mit Balkon filtern.

has_garden

boolean

Inserate mit Garten filtern.

has_terrace

boolean

Inserate mit Terrasse filtern.

has_separate_wc

boolean

Inserate mit getrenntem WC filtern.

has_cave

boolean

Inserate mit Keller (Cave) filtern.

has_wine_cellar

boolean

Inserate mit Weinkeller filtern.

has_attic

boolean

Inserate mit Dachboden filtern.

has_solar_panels

boolean

Inserate mit Solarpanels filtern.

has_fireplace

boolean

Inserate mit Kamin filtern.

has_underfloor_heating

boolean

Inserate mit Fußbodenheizung filtern.

has_laundry_room

boolean

Inserate mit Waschküche filtern.

has_swimming_pool

boolean

Inserate mit Schwimmbad filtern.

has_sauna

boolean

Inserate mit Sauna filtern.

has_hammam

boolean

Inserate mit Hammam filtern.

has_alarm

boolean

Inserate mit Alarmanlage filtern.

has_intercom

boolean

Inserate mit Gegensprechanlage filtern.

has_videophone

boolean

Inserate mit Videophon filtern.

has_video_surveillance

boolean

Inserate mit Videoüberwachung filtern.

featured

boolean

Hervorgehobene Inserate filtern.

highlight

boolean

Markierte Inserate filtern.

sort

string

Sortierung. Standard: die manuelle Reihenfolge der Agentur.

price_ascprice_descnewestoldest

Codebeispiele

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

StatusBeschreibung
400Unbekannter Portalwert oder ungültige page / limit
404Firma 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[]HauptfotoGröße
url_128highlighted_image_128128 px: Mini-Vorschaubilder, Kartenmarker
url_480highlighted_image_480480 px: Inseratskarten und Raster
url_1080highlighted_image_10801080 px: Detailseiten und Tablets
url_1920highlighted_image_19201920 px: Vollbildgalerien und Titelbilder
urlhighlighted_imageOriginal-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.

GEThttps://api.habiata.lu/public-properties/{propertyId}

Pfadparameter

propertyId

string (UUID) · Pflichtfeld

Die eindeutige Kennung der Immobilie.

Abfrageparameter

portal

string

Portal, 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.

Standard habiata

habiataathome.luwortimmo.luimmotopnextimmofiliaimmoweltle_figarokleinanzeigenwillhabenderstandardnewhomehomegatesrealityotodomingatlanimmowebselogerleboncoinkyerogreenacresproperstarjamesedition

Beispielanfrage

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

StatusBeschreibung
400Unbekannter Portalwert
404Immobilie 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_housechaletbungalowcottage

Wohnung

apartmentstudiopenthouseduplextriplexloftmaisonetteattic_apartmentground_floor

Neubau und Bauprojekte

new_buildoff_planunder_constructionhouse_modelland_with_houseturnkey_project

Anlageobjekt

investment_propertyrental_property

Grundstück

building_landagricultural_landindustrial_landcommercial_land

Garage und Parkplatz

garageparking_spacecarportunderground_parking

Gewerbe und Büro

officeoffice_buildingcoworking_spaceretail_spaceshopshopping_centershowroomrestaurantcafehotelbed_breakfast

Industrie und Logistik

warehousefactoryindustrial_unitlogistics_centerstorage_facility

Sondernutzung

healthcareeducationalleisurereligiousutilitygas_stationcar_washworkshop

Andere

commerciallandother

Gruppierte Projekte (Endpoint)

Zum Auslesen ganzer Projekte und gruppierter Immobilien verwenden.

GEThttps://api.habiata.lu/public-properties/projects/by-company/{companyId}

Abfrageparameter

page

integer

Seitenzahl für die Paginierung (1-indiziert).

Standard 1

limit

integer

Anzahl Projekte pro Seite. Maximum 100.

Standard 20

portal

string

Portal, 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.

Standard habiata

habiataathome.luwortimmo.luimmotopnextimmofiliaimmoweltle_figarokleinanzeigenwillhabenderstandardnewhomehomegatesrealityotodomingatlanimmowebselogerleboncoinkyerogreenacresproperstarjamesedition

Beispielanfrage

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-EndpointGruppierter Projekte-Endpoint
EndpunktGET /public-properties/by-company/{companyId}GET /public-properties/projects/by-company/{companyId}
LiefertAlle veröffentlichten EinheitenVeröffentlichte Projekte mit verschachtelten Einheiten unter properties[]
Projektfelderproject_id und project_name pro EinheitProjekt-Metadaten plus verschachtelte Einheiten in properties[]
Veröffentlichen in HabiataJede Immobilie einzeln auf dem Portal veröffentlichenProjekte → 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)

buyrent

Laufend (sekundär)

newvaluationother

Laufend (ausstehend)

sous_compromisreserved

Abgeschlossen

soldrentedoff_market

Für KI-Agenten und -Integrationen

Sie entwickeln eine Integration oder nutzen einen KI-Agenten? Hier finden Sie alles Nötige mit einem Klick.

KI- & Cookie-Hinweis

Bilder auf dieser Website werden mit künstlicher Intelligenz generiert.

Wir verwenden Cookies, um Ihre Erfahrung zu verbessern und den Website-Traffic zu analysieren. Unsere Datenschutzerklärung lesen