Formati di importazione
Skautik legge i formati che il settore già usa, quindi nella maggior parte dei casi invii quello che già mandi a un portale immobiliare e non cambi altro.
In sintesi
| Formato | Dove si usa | Consegna | Identificatore |
|---|---|---|---|
| OpenImmo | Germania, Austria, Svizzera | Consegna SFTP, oppure caricamento dello ZIP nell'API | verwaltung_techn / objektnr_extern |
| RESO Web API | Stati Uniti, Canada | Preleviamo dal tuo endpoint a intervalli programmati | ListingKey |
| RETS | Stati Uniti, sistema datato | Preleviamo dal tuo server RETS a intervalli programmati | Il campo identificatore univoco dell'MLS |
| BLM | Regno Unito | Consegna SFTP, oppure caricamento nell'API | AGENT_REF |
| Kyero XML | Spagna, Portogallo e annunci internazionali | Recuperiamo l'URL del tuo feed a intervalli programmati | id |
| CSV | Ovunque | Caricamento nell'API, consegna SFTP, oppure un URL che recuperiamo | colonna external_id |
| JSON nativo | Ovunque | Caricamento nell'API, oppure POST di schede una alla volta | external_id |
OpenImmo
Lo standard di settore in lingua tedesca, e il formato che quasi ogni CRM di area germanofona sa già produrre.
Area Germania, Austria, Svizzera
Codifica XML 1.2.7, UTF-8, dentro uno ZIP
Consegna Consegna SFTP, oppure caricamento dello ZIP nell'API
Identificatore di scheda verwaltung_techn / objektnr_extern
Un trasferimento è uno ZIP che contiene un documento XML e le immagini che esso richiama per nome di file. L'XML contiene un blocco anbieter per fornitore e un blocco immobilie per immobile. Leggiamo la famiglia 1.2.x e accettiamo i documenti 1.1 più vecchi che alcuni sistemi emettono ancora.
Come funziona il ritiro
In modo esplicito. Ogni immobile porta un elemento aktion il cui aktionart è CHANGE oppure DELETE, quindi un trasferimento dice cosa rimuovere invece di lasciarlo dedurre.
Immagini
Le immagini viaggiano dentro lo ZIP e sono richiamate per nome di file in elementi anhang. L'ordine segue l'ordine del documento, e la prima immagine diventa quella principale a meno che non ne venga contrassegnata un'altra.
Esempio
<?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>Da sapere
- anzahl_zimmer è un conteggio di locali secondo la convenzione tedesca e di solito comprende il soggiorno. Lo mappiamo sui locali, e non ne deduciamo le camere da letto.
- Un trasferimento contrassegnato TEILZUGRIFF è un aggiornamento parziale e non implica mai che gli immobili assenti debbano essere ritirati. Solo VOLLZUGRIFF viene trattato come una sostituzione completa.
- I prezzi sono lordi o netti a seconda dei campi presenti. Leggiamo i campi di prezzo così come vengono forniti invece di ricavarne uno dall'altro.
RESO Web API
Lo standard MLS moderno. Se i tuoi dati provengono da un MLS con una Web API certificata, questa è la via che richiede meno mappatura.
Area Stati Uniti, Canada
Codifica OData 4.0 su JSON, Data Dictionary 1.7 o successivo
Consegna Preleviamo dal tuo endpoint a intervalli programmati
Identificatore di scheda ListingKey
Tu fornisci la radice del servizio e le credenziali, e noi replichiamo la risorsa Property, seguendo Media e OpenHouse dove sono esposte. Poiché il Data Dictionary standardizza già nomi di campo ed enumerazioni, la mappatura è in gran parte automatica.
Come funziona il ritiro
Per stato anziché per cancellazione. Un annuncio il cui StandardStatus esce dall'insieme attivo viene ritirato dalla nostra parte; le schede non vengono cancellate, quindi lo storico sopravvive.
Immagini
Lette dalla risorsa Media e recuperate per URL. MediaModificationTimestamp ci permette di riscaricare solo ciò che è cambiato invece di tutte le immagini a ogni passata.
Esempio
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"
}
]
}Da sapere
- La replica è incrementale su ModificationTimestamp. Facciamo sovrapporre la finestra fra le passate, perché altrimenti una scheda confermata un istante dopo un taglio andrebbe persa per sempre.
- LivingAreaUnits viene rispettato invece che presupposto. Un feed in piedi quadrati viene convertito una volta all'importazione, non trattato in silenzio come metrico.
- I campi locali fuori dal Data Dictionary vengono conservati ma non mappati, dato che il loro significato è specifico di un singolo MLS.
RETS
Supportato per i feed che non sono ancora passati alla Web API, e trattato come un percorso di migrazione più che come una destinazione.
Area Stati Uniti, sistema datato
Codifica RETS 1.7.2, interrogazioni DMQL2
Consegna Preleviamo dal tuo server RETS a intervalli programmati
Identificatore di scheda Il campo identificatore univoco dell'MLS
RETS precede il Data Dictionary, quindi i nomi dei campi sono specifici di ogni MLS e richiedono una mappatura esplicita che costruiamo insieme una volta sola. Tutto il resto dell'importazione si comporta allo stesso modo.
Come funziona il ritiro
Per campo di stato, come con la Web API. Alcuni server espongono le schede cancellate solo tramite un'interrogazione separata, che usiamo dove esiste.
Immagini
Recuperate tramite GetObject, una chiamata per annuncio, il che rende le importazioni RETS più lente di un prelievo equivalente via Web API.
Da sapere
- RETS è in via di dismissione in tutto il settore. Passa alla Web API appena il tuo MLS la offre: il lavoro di mappatura sparisce e le importazioni diventano molto più veloci.
- Nomi dei campi, enumerazioni e perfino formati di data variano da un MLS all'altro, quindi un connettore RETS si configura individualmente invece che automaticamente.
BLM
Il formato di caricamento massivo del Regno Unito. Quasi tutti i CRM delle agenzie britanniche sanno emetterlo, il che ne fa di solito la via più breve per far entrare patrimonio britannico.
Area Regno Unito
Codifica Testo delimitato, a sezioni, di solito con uno ZIP di immagini
Consegna Consegna SFTP, oppure caricamento nell'API
Identificatore di scheda AGENT_REF
Un file .blm è diviso nelle sezioni #HEADER#, #DEFINITION# e #DATA#. La riga di definizione indica i nomi delle colonne, quindi il formato si autodescrive e l'ordine delle colonne non deve essere concordato in anticipo.
Come funziona il ritiro
Per indicatore. PUBLISHED_FLAG impostato a 0 ritira un immobile. Il semplice sparire di una scheda da un file successivo non la ritira, perché altrimenti un export troncato cancellerebbe il patrimonio di un'agenzia.
Immagini
Richiamate per nome di file nelle colonne da MEDIA_IMAGE_00 a MEDIA_IMAGE_NN, con i file forniti a corredo.
Esempio
#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#Da sapere
- L'intestazione dichiara i propri separatori di campo e di record. Li leggiamo dal file invece di presupporre il circonflesso e la tilde convenzionali.
- PROP_SUB_ID codifica il tipo di immobile come un numero il cui significato è fissato dalla specifica, non da chi invia.
- I prezzi sono in sterline intere. Un file passato per un foglio di calcolo e che ha acquisito decimali viene rifiutato invece che arrotondato.
Kyero XML
Uno schema piccolo e leggibile, molto usato per il patrimonio residenziale internazionale, e facile da emettere da un sistema privo di un export specifico per immobili.
Area Spagna, Portogallo e annunci internazionali
Codifica Feed XML, versione 3
Consegna Recuperiamo l'URL del tuo feed a intervalli programmati
Identificatore di scheda id
Un solo documento contiene tutti gli immobili, con prezzi, un tipo, componenti di posizione e descrizioni per lingua. La sua semplicità è il punto: un feed completo è facile da generare e da verificare a occhio.
Come funziona il ritiro
In modo implicito. Il feed è una dichiarazione completa del patrimonio attuale, quindi tutto ciò che manca da un recupero riuscito viene ritirato. È l'unico formato in cui l'assenza significa rimozione.
Immagini
Richiamate per URL in elementi image, ciascuno con un id che fissa l'ordine di visualizzazione.
Esempio
<?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>Da sapere
- Poiché l'assenza significa ritiro, un recupero fallito o troncato potrebbe cancellare il tuo patrimonio. Rifiutiamo un feed che si è ridotto oltre una quota configurabile, e segnaliamo invece.
- price_freq distingue un prezzo di vendita da un periodo di locazione. Ometterlo rende il prezzo ambiguo, e rifiutiamo invece di indovinare.
CSV
Il ripiego quando nient'altro va bene. Ogni sistema sa produrre un foglio di calcolo, e una mappatura trasforma i nomi delle tue colonne nei nostri.
Area Ovunque
Codifica RFC 4180, UTF-8, separato da virgole
Consegna Caricamento nell'API, consegna SFTP, oppure un URL che recuperiamo
Identificatore di scheda colonna external_id
Fornisci una riga di intestazione e mappala una volta; la mappatura viene memorizzata sulla fonte di importazione e riutilizzata. Solo external_id e una manciata di colonne fondamentali sono obbligatori, e qualsiasi colonna che non hai può semplicemente mancare.
Come funziona il ritiro
Per colonna. Una colonna di stato impostata su withdrawn rimuove un immobile. L'assenza non ritira mai nulla, perché un export parziale è fin troppo facile da produrre per sbaglio.
Immagini
Una o più colonne con URL di immagini, oppure nomi di file se fornisci anche uno ZIP.
Esempio
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"Da sapere
- Il denaro è un intero in unità minori, come ovunque altro nell'API. 42900000 con EUR sono 429.000,00. Sbagliarlo di un fattore cento è l'errore CSV più comune, quindi una prova a vuoto riporta il prezzo più alto e quello più basso che ha letto, così puoi controllarli.
- Le colonne con più valori usano una barra verticale, perché una virgola dentro un campo CSV è un problema di virgolette in agguato.
- Un file la cui intestazione non corrisponde alla mappatura memorizzata viene rifiutato per intero invece di essere applicato in parte.
JSON nativo
Il nostro schema, senza alcuno strato di mappatura. La scelta giusta quando controlli il sistema che esporta.
Area Ovunque
Codifica NDJSON o un array JSON, conforme allo schema dell'immobile
Consegna Caricamento nell'API, oppure POST di schede una alla volta
Identificatore di scheda external_id
Le schede corrispondono all'oggetto property che l'API restituisce, con external_id aggiunto perché possiamo abbinare le tue alle nostre. NDJSON è preferibile per qualsiasi cosa di grandi dimensioni, dato che scorre a flusso invece di richiedere l'intero documento in memoria.
Come funziona il ritiro
Per campo di stato, oppure chiamando DELETE direttamente sull'immobile.
Immagini
URL di immagini in un array images, recuperate dopo che la scheda è stata accettata.
Da sapere
- Inviare POST singoli va bene per una manciata di schede ed è sbagliato per migliaia: usa un'importazione così l'intero insieme viene convalidato e applicato insieme.
Qualcosa di completamente diverso
Se il tuo sistema esporta un formato non elencato qui, mandaci un campione invece di scrivere un convertitore. I formati di scambio immobiliare sono un insieme piccolo e ben noto, e aggiungerne uno di solito è una giornata di lavoro dalla nostra parte contro settimane dalla tua.
Comincia da l'importazione massiva per capire come funziona il ciclo di vita, qualunque formato tu scelga.