Importformate
Skautik liest die Formate, die die Branche ohnehin nutzt, Sie senden also meist das, was Sie bereits an ein Immobilienportal senden, und ändern sonst nichts.
Auf einen Blick
| Format | Wo es genutzt wird | Übergabe | Kennung |
|---|---|---|---|
| OpenImmo | Deutschland, Österreich, Schweiz | SFTP-Ablage oder ZIP-Upload an die API | verwaltung_techn / objektnr_extern |
| RESO Web API | USA, Kanada | Wir holen nach Plan von Ihrem Endpunkt | ListingKey |
| RETS | USA, Altsysteme | Wir holen nach Plan von Ihrem RETS-Server | Das eindeutige MLS-ID-Feld |
| BLM | Vereinigtes Königreich | SFTP-Ablage oder Upload an die API | AGENT_REF |
| Kyero XML | Spanien, Portugal und internationale Angebote | Wir holen Ihre Feed-URL nach Plan | id |
| CSV | Überall | Upload an die API, SFTP-Ablage oder geholte URL | Spalte external_id |
| Natives JSON | Überall | Upload an die API oder einzelne POSTs | external_id |
OpenImmo
Der deutschsprachige Branchenstandard, und das Format, das fast jedes deutschsprachige CRM bereits erzeugen kann.
Region Deutschland, Österreich, Schweiz
Kodierung XML 1.2.7, UTF-8, in einem ZIP
Übergabe SFTP-Ablage oder ZIP-Upload an die API
Datensatzkennung verwaltung_techn / objektnr_extern
Eine Übertragung ist ein ZIP mit einem XML-Dokument und den darin über Dateinamen referenzierten Bildern. Das XML enthält je Anbieter einen anbieter-Block und je Objekt einen immobilie-Block. Wir lesen die Familie 1.2.x und nehmen auch die älteren 1.1-Dokumente an, die manche Systeme noch ausgeben.
Wie das Entfernen funktioniert
Ausdrücklich. Jedes Objekt trägt ein aktion-Element, dessen aktionart CHANGE oder DELETE ist, eine Übertragung sagt also, was zu entfernen ist, statt es ableiten zu lassen.
Bilder
Bilder liegen im ZIP und werden in anhang-Elementen über den Dateinamen referenziert. Die Reihenfolge folgt der Dokumentreihenfolge, und das erste Bild wird das Hauptbild, sofern keines gekennzeichnet ist.
Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<openimmo>
<uebertragung art="OFFLINE" umfang="TEILZUGRIFF"
modus="NEW" version="1.2.7"
sendersoftware="YourCRM" />
<anbieter>
<anbieternr>AG-4471</anbieternr>
<immobilie>
<objektkategorie>
<nutzungsart WOHNEN="true" />
<vermarktungsart KAUF="true" />
<objektart><wohnung wohnungtyp="DACHGESCHOSS" /></objektart>
</objektkategorie>
<geo>
<plz>10999</plz>
<ort>Berlin</ort>
<strasse>Oranienstrasse</strasse>
</geo>
<preise><kaufpreis>429000</kaufpreis></preise>
<flaechen>
<wohnflaeche>74</wohnflaeche>
<anzahl_zimmer>3</anzahl_zimmer>
</flaechen>
<freitexte>
<objekttitel>Dachgeschosswohnung mit Balkon</objekttitel>
</freitexte>
<anhaenge>
<anhang location="INTERN" gruppe="BILD">
<anhangtitel>Wohnzimmer</anhangtitel>
<daten><pfad>wohnzimmer.jpg</pfad></daten>
</anhang>
</anhaenge>
<verwaltung_techn>
<objektnr_extern>AG-4471-0812</objektnr_extern>
<aktion aktionart="CHANGE" />
</verwaltung_techn>
</immobilie>
</anbieter>
</openimmo>Wissenswert
- anzahl_zimmer ist eine Zimmerzahl nach deutscher Konvention und schließt meist das Wohnzimmer ein. Wir bilden sie auf rooms ab und leiten daraus keine Schlafzimmerzahl ab.
- Eine als TEILZUGRIFF gekennzeichnete Übertragung ist eine Teilaktualisierung und bedeutet nie, dass fehlende Objekte zurückgezogen werden sollen. Nur VOLLZUGRIFF gilt als vollständiger Ersatz.
- Ob Preise brutto oder netto sind, hängt von den vorhandenen Feldern ab. Wir lesen die Preisfelder so, wie sie geliefert werden, und rechnen keines aus dem anderen.
RESO Web API
Der moderne MLS-Standard. Wenn Ihre Daten aus einem MLS mit zertifizierter Web API kommen, ist das der Weg mit dem geringsten Zuordnungsaufwand.
Region USA, Kanada
Kodierung OData 4.0 über JSON, Data Dictionary 1.7 oder neuer
Übergabe Wir holen nach Plan von Ihrem Endpunkt
Datensatzkennung ListingKey
Sie nennen Service-Root und Zugangsdaten, und wir replizieren die Ressource Property und folgen Media und OpenHouse, wo sie bereitgestellt sind. Da das Data Dictionary Feldnamen und Aufzählungen bereits vereinheitlicht, geschieht die Zuordnung weitgehend automatisch.
Wie das Entfernen funktioniert
Über den Status, nicht über Entfernen. Ein Angebot, dessen StandardStatus die aktive Menge verlässt, wird bei uns zurückgezogen; Datensätze werden nicht gelöscht, die Historie bleibt also erhalten.
Bilder
Werden aus der Ressource Media gelesen und über URL geholt. Über MediaModificationTimestamp holen wir nur, was sich geändert hat, statt jedes Bild bei jedem Lauf.
Beispiel
GET /Property?$filter=ModificationTimestamp gt 2026-08-11T04:00:00Z
&$orderby=ModificationTimestamp
&$expand=Media
&$top=200
{
"@odata.context": "…/$metadata#Property",
"value": [
{
"ListingKey": "MLS-88213004",
"StandardStatus": "Active",
"ListPrice": 429000,
"LivingArea": 796,
"LivingAreaUnits": "Square Feet",
"BedroomsTotal": 2,
"City": "Austin",
"StateOrProvince": "TX",
"ModificationTimestamp": "2026-08-11T09:14:22Z"
}
]
}Wissenswert
- Die Replikation läuft inkrementell über ModificationTimestamp. Wir überlappen das Fenster zwischen Läufen, denn ein Datensatz, der einen Augenblick nach einem Schnitt festgeschrieben wurde, ginge sonst für immer verloren.
- LivingAreaUnits wird beachtet und nicht angenommen. Ein Feed in Quadratfuß wird beim Import einmal umgerechnet und nicht stillschweigend als metrisch gelesen.
- Lokale Felder außerhalb des Data Dictionary bleiben erhalten, werden aber nicht zugeordnet, da ihre Bedeutung nur für ein MLS gilt.
RETS
Wird für Feeds unterstützt, die noch nicht auf die Web API umgestellt haben, und gilt als Migrationsweg und nicht als Ziel.
Region USA, Altsysteme
Kodierung RETS 1.7.2, DMQL2-Abfragen
Übergabe Wir holen nach Plan von Ihrem RETS-Server
Datensatzkennung Das eindeutige MLS-ID-Feld
RETS ist älter als das Data Dictionary, Feldnamen gelten also je MLS und erfordern eine ausdrückliche Zuordnung, die wir einmal gemeinsam mit Ihnen aufbauen. Alles Übrige am Import verhält sich gleich.
Wie das Entfernen funktioniert
Über ein Statusfeld, wie bei der Web API. Manche Server geben gelöschte Datensätze nur über eine gesonderte Abfrage aus, die wir nutzen, wo es sie gibt.
Bilder
Werden über GetObject geholt, ein Aufruf je Angebot, was RETS-Importe langsamer macht als eine gleichwertige Web-API-Abholung.
Wissenswert
- RETS wird branchenweit abgelöst. Wechseln Sie zur Web API, sobald Ihr MLS sie anbietet: Der Zuordnungsaufwand entfällt, und Importe werden deutlich schneller.
- Feldnamen, Aufzählungen und sogar Datumsformate schwanken je MLS, ein RETS-Anschluss wird deshalb einzeln eingerichtet und nicht automatisch.
BLM
Das britische Massenladeformat. Nahezu jedes britische Makler-CRM kann es ausgeben, was es meist zum kürzesten Weg für britischen Bestand macht.
Region Vereinigtes Königreich
Kodierung Getrennter Text, in Abschnitten, meist mit einem Bild-ZIP
Übergabe SFTP-Ablage oder Upload an die API
Datensatzkennung AGENT_REF
Eine .blm-Datei ist in die Abschnitte #HEADER#, #DEFINITION# und #DATA# geteilt. Die Definitionszeile nennt die Spalten, das Format beschreibt sich also selbst, und die Spaltenreihenfolge muss nicht vorab vereinbart werden.
Wie das Entfernen funktioniert
Über ein Kennzeichen. PUBLISHED_FLAG auf 0 zieht ein Objekt zurück. Ein Datensatz, der in einer späteren Datei schlicht fehlt, zieht nichts zurück, denn ein abgebrochener Export würde sonst den Bestand eines Büros löschen.
Bilder
Werden in den Spalten MEDIA_IMAGE_00 bis MEDIA_IMAGE_NN über den Dateinamen referenziert, die Dateien werden mitgeliefert.
Beispiel
#HEADER#
Version : 3
EOF : '^'
EOR : '~'
#DEFINITION#
AGENT_REF^ADDRESS_1^TOWN^POSTCODE1^POSTCODE2^PRICE^
PUBLISHED_FLAG^BEDROOMS^PROP_SUB_ID^MEDIA_IMAGE_00~
#DATA#
BR-10024^12 Oranien Street^London^SE1^4TX^650000^
1^2^1^BR-10024-01.jpg~
#END#Wissenswert
- Der Kopf nennt seine eigenen Feld- und Datensatztrenner. Wir lesen sie aus der Datei, statt das übliche Dach und die Tilde anzunehmen.
- PROP_SUB_ID kodiert die Objektart als Zahl, deren Bedeutung die Spezifikation festlegt und nicht der Absender.
- Preise sind ganze Pfund. Eine Datei, die durch eine Tabellenkalkulation gelaufen ist und Nachkommastellen mitgebracht hat, wird abgelehnt und nicht gerundet.
Kyero XML
Ein kleines, gut lesbares Schema, weit verbreitet für internationalen Wohnbestand, und leicht aus einem System auszugeben, das keinen immobilienspezifischen Export hat.
Region Spanien, Portugal und internationale Angebote
Kodierung XML-Feed, Version 3
Übergabe Wir holen Ihre Feed-URL nach Plan
Datensatzkennung id
Ein Dokument enthält jedes Objekt, mit Preisen, einer Art, Ortsangaben und Beschreibungen je Sprache. Seine Einfachheit ist der Punkt: Ein vollständiger Feed lässt sich unkompliziert erzeugen und mit bloßem Auge prüfen.
Wie das Entfernen funktioniert
Implizit. Der Feed ist eine vollständige Aussage über den aktuellen Bestand, alles also, was nach einer erfolgreichen Abholung fehlt, wird zurückgezogen. Das ist das eine Format, in dem Abwesenheit Entfernen bedeutet.
Bilder
Werden in image-Elementen über URL referenziert, jedes mit einer id, die die Anzeigereihenfolge festlegt.
Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<root>
<kyero><feed_version>3</feed_version></kyero>
<property>
<id>4471-0812</id>
<date>2026-08-11 09:14:22</date>
<ref>AG-4471-0812</ref>
<price>429000</price>
<currency>EUR</currency>
<price_freq>sale</price_freq>
<type>Apartment</type>
<town>Marbella</town>
<province>Malaga</province>
<country>Spain</country>
<beds>2</beds>
<baths>1</baths>
<surface_area><built>74</built></surface_area>
<images>
<image id="1"><url>https://example.com/1.jpg</url></image>
</images>
</property>
</root>Wissenswert
- Weil Abwesenheit Rücknahme bedeutet, könnte eine fehlgeschlagene oder abgebrochene Abholung Ihren Bestand löschen. Wir lehnen einen Feed ab, der um mehr als einen einstellbaren Anteil geschrumpft ist, und alarmieren stattdessen.
- price_freq unterscheidet einen Kaufpreis von einem Mietzeitraum. Fehlt es, ist der Preis mehrdeutig, und wir lehnen ab, statt zu raten.
CSV
Der Rückfall, wenn nichts anderes passt. Jedes System kann eine Tabellenkalkulation erzeugen, und eine Zuordnung macht aus Ihren Spaltennamen unsere.
Region Überall
Kodierung RFC 4180, UTF-8, kommagetrennt
Übergabe Upload an die API, SFTP-Ablage oder geholte URL
Datensatzkennung Spalte external_id
Liefern Sie eine Kopfzeile und ordnen Sie sie einmal zu; die Zuordnung wird an der Importquelle gespeichert und wiederverwendet. Verpflichtend sind nur external_id und eine Handvoll Kernspalten, und jede Spalte, die Sie nicht haben, darf schlicht fehlen.
Wie das Entfernen funktioniert
Über eine Spalte. Eine Statusspalte auf withdrawn entfernt ein Objekt. Abwesenheit zieht nie etwas zurück, denn ein unvollständiger Export entsteht viel zu leicht aus Versehen.
Bilder
Eine oder mehrere Spalten mit Bild-URLs, oder Dateinamen, wenn Sie zusätzlich ein ZIP liefern.
Beispiel
external_id,title,transaction_type,property_type,price,currency,
living_area,bedrooms,street,postal_code,city,country,status,image_urls
AG-4471-0812,Top-floor apartment,sale,apartment,42900000,EUR,
74,2,Oranienstrasse,10999,Berlin,DE,active,"https://…/1.jpg|https://…/2.jpg"Wissenswert
- Geld ist eine Ganzzahl in kleinster Einheit, wie überall sonst in der API. 42900000 mit EUR sind 429.000,00. Das um den Faktor hundert falsch zu machen, ist der häufigste CSV-Fehler, deshalb meldet ein Probelauf den höchsten und niedrigsten gelesenen Preis, damit Sie ihn prüfen können.
- Mehrwertige Spalten nutzen einen senkrechten Strich, denn ein Komma in einem CSV-Feld ist ein Anführungszeichenproblem, das nur darauf wartet zu passieren.
- Eine Datei, deren Kopfzeile nicht zur gespeicherten Zuordnung passt, wird vollständig abgelehnt statt teilweise angewandt.
Natives JSON
Unser eigenes Schema, ganz ohne Zuordnungsschicht. Die richtige Wahl, wenn Sie das exportierende System selbst in der Hand haben.
Region Überall
Kodierung NDJSON oder ein JSON-Array nach dem Objektschema
Übergabe Upload an die API oder einzelne POSTs
Datensatzkennung external_id
Datensätze entsprechen dem Objekt, das die API zurückgibt, ergänzt um external_id, damit wir Ihres unserem zuordnen können. Für Größeres ist NDJSON vorzuziehen, da es strömt, statt das ganze Dokument im Speicher zu verlangen.
Wie das Entfernen funktioniert
Über ein Statusfeld oder durch ein direktes DELETE auf das Objekt.
Bilder
Bild-URLs in einem images-Array, geholt nachdem der Datensatz angenommen wurde.
Wissenswert
- Einzelne POSTs sind für eine Handvoll Datensätze in Ordnung und für tausende falsch: Nutzen Sie einen Import, damit die ganze Menge gemeinsam geprüft und angewandt wird.
Etwas ganz anderes
Wenn Ihr System ein Format exportiert, das hier nicht steht, schicken Sie uns ein Muster, statt einen Konverter zu schreiben. Austauschformate für Immobilien sind eine kleine, gut bekannte Menge, und eines zu ergänzen ist bei uns meist ein Tag Arbeit gegen Wochen bei Ihnen.
Wie der Lebenszyklus funktioniert, steht unter Massenimport, welches Format Sie am Ende auch nutzen.