Find guides, code examples, tutorials, API references, and more.
Updated 07/04/2025
La API está en desarrollo. Puedes enviar todos los parámetros disponibles, aunque algunos aún no se procesan. Todas las peticiones se registran y la funcionalidad se irá ampliando progresivamente.
Domu allows querying data and managing properties through the RESO Web API specification, which is based on OData. For more information about the specification, please visit the RESO website. RESO Data Dictionary Wiki
The application must send an authorization header with each HTTP request to the API:
Authorization: Bearer {token}
By default, the RESO Web API will return 10 listings, regardless of the total number of records available. You can use the $top parameter to request up to 200 listings at a time.
If there are more than 200 records available, you must paginate the results.
All API responses, aside from metadata, are returned in JSON format.
If the total number of records returned by a query exceeds 200 (the maximum limit for a result set), you must paginate the results. This is done by increasing the number of skipped records.
// Returns the next 200 records, sorted by ListPrice https://api.domu.app/reso/Property?$top=200&$skip=200&$orderby=ListPrice desc?$filter=StandardStatus eq 'Active'
Instead of maintaining it as a separate resource, Media is returned as an object directly in the property record.
You can request metadata that returns fields and lookup values made available by the data provider. Metadata is returned in XML according to the RESO specification.
// Request metadata https://api.domu.app/reso/$metadata
You can restrict a resource's result set by passing additional operators with your request. Valid operators include:
Operator | Description |
---|---|
eq | Equals |
ne | Not equal |
gt | Greater than |
lt | Less than |
ge | Greater than or equal to |
le | Less than or equal to |
and | Logical AND |
or | Logical OR |
not | Logical NOT |
You can pass the following query parameters to filter results.
Name | Type | Description |
---|---|---|
ListingKey | string | The property key, available in the /Property resource. // Returns the property data for ListingKey 'Domu-12345' https://api.domu.app/reso/Property('Domu-12345') |
$skip | number | Skips this number of results // Skips the first 10 results https://api.domu.app/reso/Property?$skip=10 |
$select | string | Selects the fields to be returned // Returns only the LivingArea field https://api.domu.app/reso/Property?$select=LivingArea |
$filter | string | Filters the results to be returned // Returns properties where ListPrice is greater than 100000 https://api.domu.app/reso/Property?$filter=ListPrice gt 100000 |
$top | number | Limits the size of the result set. The default is 10, maximum is 200. // Limits results to 2 https://api.domu.app/reso/Property?$top=2 |
$orderby | string | Sorts the results, ascending or descending // Sorts by descending price https://api.domu.app/reso/Property?$orderby=ListPrice desc |
Function | Description |
---|---|
any | Search fields where any element of an array satisfies a condition // Returns properties with the option of electric heating https://api.domu.app/reso/Property?$filter=Heating/any(a: a eq 'Electric') |
all | Search fields where all elements of an array satisfy a condition // Returns properties where all flooring is parquet https://api.domu.app/reso/Property?$filter=Flooring/all(a: a eq 'Parquet') |
geo.distance | Search by coordinates // Return listings that are near specific co-ordinates, to a radius of 0.6 meters https://api.domu.app/reso/Property?$filter=geo.distance(Coordinates, POINT(2.15899 41.38879)) lt 0.6 |
geo.intersects | If you know the extents of a polygonal region, you can provide the each point as co-ordinates // Return listings within a shape https://api.domu.app/reso/Property?$filter=geo.intersects(Coordinates, POLYGON((2.16 41.39, 2.16 41.41, 2.18 41.41, 2.18 41.39, 2.16 41.39))) |
Si la petición es exitosa, se devolverá el código 200 junto al ListingKey de la propiedad listada. Si faltan campos obligatorios, se devolverá el código 400 junto a los campos que faltan. Si la propiedad ya ha sido publicada por otro agente y está activa, se devolverá el código 403. Si indica un ListingAgentId, y este no existe o no pertenece a su agencia, se devolverá el código 403 o 404. Si hay un error de servidor, se devolverá el código 500.
Incluye en el body los datos de la propiedad en formato JSON, siguiendo el diccionario de RESO. Los campos marcados con * no están especificados en dicho diccionario.
ExclusiveListing*, ParcelNumber (Referencia Catastral), StreetName, StreetNumber, City, Latitude, Longitude, Country, ListPrice, PropertyType, PropertySubType, BuildingAreaTotal, YearBuilt, EntryLevel (Planta), BedroomsIndividual*, BedroomsDouble*, BedroomsSuite*, BathroomsFull, BathroomsHalf, BuyerBrokerageCompensation, SellerBrokerageCompensation*
CityRegion, Heating, Cooling, PublicRemarks, Media, VideoURL*, VirtualTourURLUnbranded
// Por defecto, se utiliza el ID del agente del token. Si es propietario de una agencia verificada, puede indicar ListingAgentId con el ID de otro agente de su agencia
ListingAgentId*
Puedes introducir cualquier otro campo que esté dentro del diccionario RESO.
{ "ExclusiveListing": true, "ParcelNumber": "0000000AA0000A0000AA", "StreetName": "Carrer de Balmes", "StreetNumber": "2", "City": "Barcelona", "Latitude": 41.386086, "Longitude": 2.167318, "Country": "ES", "CityRegion": "La Dreta de l'Eixample", "StateOrRegion": "CT", "PostalCode": "08022", "ListPrice": 1200000, "PropertyType": "Residential", "PropertySubType": "Apartment", "BuildingAreaTotal": 180, "YearBuilt": 1993, "EntryLevel": 2, "IndividualBedrooms": 2, "DoubleBedrooms": 1, "SuiteBedrooms": 1, "BathroomsFull": 3, "BathroomsHalf": 1, "BuyerBrokerageCompensation": "2.5", "SellerBrokerageCompensation": "2.5", "Heating": [ "Electric", "Boiler" ], "Cooling": [ "Central Air" ], "PublicRemarks": "Bright and with clear views: every corner of the apartment takes full advantage of natural light, creating a warm and welcoming atmosphere all day long.", "Media": [ { "Order": 0, "MediaUrl": "https://pro.domu.app/imagenes/propiedad/1/1.jpg" }, { "Order": 1, "MediaUrl": "https://pro.domu.app/imagenes/propiedad/1/2.jpg" }, { "Order": 2, "MediaUrl": "https://pro.domu.app/imagenes/propiedad/1/3.jpg" } ] }
Si la petición es exitosa, se devolverá el código 200. Si no proporcionas el ListingKey, se devolverá el código 400. Si la propiedad no existe, o el agente de esta no pertenece a su agencia, se devolverá el código 404 o 403. Si hay un error de servidor, se devolverá el código 500.
ListingKey
{ "ListPrice": 1120000 }
Si la petición es exitosa, se devolverá el código 200. Si se genera un pago, se devolverá PaymentId, PaymentAmount, SellerAgentNetCommission, BuyerAgentNetCommission. Si faltan campos obligatorios, se devolverá el código 400 junto a los campos que faltan. Si la propiedad no existe, o el agente de esta no pertenece a su agencia, se devolverá el código 404 o 403. Si hay un error de servidor, se devolverá el código 500.
Los campos marcados con * no están especificados en el diccionario de RESO.
ListingKey, StandardStatus (Closed o Withdrawn)
// Indica el precio final de venta, las comisiones finales, si el agente comprador es de la misma agencia que el agente vendedor y si es miembro de Domu. ListPrice, BuyerBrokerageCompensation, SellerBrokerageCompensation*, BuyerAgentSameAgency*, BuyerAgentDomuMember*
{ "StandardStatus": "Closed", "ListPrice": 1120000, "BuyerBrokerageCompensation": "2.5", "SellerBrokerageCompensation": "2.5", "BuyerAgentSameAgency": false, "BuyerAgentDomuMember": true }