Returns a page of the public catalogue and the total number of matching properties. Without filters, it returns every public property, most recently updated first.
Filters
Filters combine with AND and use the same vocabulary as Vestta. operation and city ignore case; the other text filters must match exactly:
Filter
Match
Example
operation
Contains the value, so alquiler also matches venta,alquiler
operation=alquiler
type
Exact, lowercase key
type=apartamento
subtype
Exact, using the subtype key
subtype=atico
city
Exact, ignoring case
city=Madrid
status
Exact
status=reservada
rental_type
temporal or anual
rental_type=anual
min_bedrooms
At least
min_bedrooms=2
is_featured
true or false
is_featured=true
Note that subtype filters by key (atico) while responses return a display label (Ático).
Prices
min_price, max_price and sort compare the price of the operation you filter by:
operation=alquiler → the monthly rent, specs.price_calc.price_alq.
operation=traspaso → the transfer price, specs.price_calc.price_trasp.
any other value, or no operation → the sale price, price.
So a rental search in Madrid between 800 and 1,200 € per month, cheapest first, is:
Text
GET /v1/properties?operation=alquiler&city=Madrid&min_price=800&max_price=1200&sort=price_asc
Map areas
locations restricts results to areas drawn on a map. It is a JSON array, URL-encoded into the query string. Each element is one area; a property matches if it falls inside any of them. Three shapes are supported:
Polygon — at least three coordinates; rectangle is accepted as a synonym. Coordinates can also be [lat, lng] pairs, and lon is accepted in place of lng.
Point — a position and an optional radius in metres, 500 by default. marker is a synonym.
Areas are matched against the published coordinates: rounded ones for approximate locations, none for hidden ones. Approximate properties can match an area up to about 1 km away from their real position, and properties with a hidden location never match an area. Elements without a recognised geometry — for example { "name": "Madrid" } — are ignored, and so is the whole parameter if it is not valid JSON. The filters.locations field of the response echoes the areas that were applied, so you can check what was understood.
Your API key, AC_LIVE_<key_id>.<secret>. Authorization: ApiKey <key> is also accepted.
Query parameters
limitinteger≥ 1≤ 1000 default: 100
Maximum number of properties to return.
offsetinteger≥ 0 default: 0
Number of matching properties to skip before returning results.
statusstring
Exact commercial status match. Only explicitly published properties are returned; drafts are excluded.
operationstring
Operation: venta, alquiler or traspaso. Case-insensitive partial match, so properties offered for several operations match each of them. Also selects which price min_price, max_price and sort use.
rental_typestring
Rental type: temporal for temporary rentals, anual for long-term rentals that are neither temporary nor holiday rentals.
Exact subtype key as stored in Vestta, for example atico, duplex, chalet or villa. Responses return the subtype as a display label.
citystring
City name. Case-insensitive exact match.
locationsstring
URL-encoded JSON array of map areas. Supports circle (center + radius in metres), polygon/rectangle (coordinates) and point/marker (500 m default radius). Invalid JSON is ignored.
min_pricenumber≥ 0
Minimum price, inclusive. Uses the rent or transfer price when operation is alquiler or traspaso.
max_pricenumber≥ 0
Maximum price, inclusive. Uses the rent or transfer price when operation is alquiler or traspaso.
min_bedroomsinteger≥ 0
Minimum number of bedrooms, inclusive.
is_featuredboolean
true returns only featured properties; false only non-featured ones.
sortstring
Sort by price (properties without a price go last). When omitted, results are ordered by last update, newest first.
Numeric property ID. Use it with Retrieve a property.
operationstring
Operations the property is offered for: venta, alquiler, traspaso, or several joined by commas (e.g. venta,alquiler).
typestring
Property type key, e.g. apartamento, casa, local, oficina, terreno or edificio.
subtypestring
Subtype as a Spanish display label (e.g. Ático, Local Comercial), or Sin Especificar.
titlestring
Listing title. May be empty.
pricenumber
Sale price in euros. Rent and transfer prices are in specs.price_calc.
size_totalnumber
Total size in m².
bedroomsinteger
bathroomsinteger
postal_codestring
Omitted when the property's location is hidden.
descriptionstring
Listing description as HTML.
imagesarray of objects
Opaque public copies. New photos are watermarked; legacy copies may remain unmarked. Original paths and IDs are never included.
idstringrequired
urlstringrequired
Permanent opaque public-copy URL. New photos are watermarked; migrated legacy copies may remain unmarked. Never an original or upload URL.
orderinteger default: 1
is_primaryboolean default: false
titlestring default:
videosarray of objects
Processed public videos.
idstringrequired
titlestring
orderinteger
urlstring
hls_urlstring
thumbnail_urlstring
embed_urlstring
specsPublicationSpecs
Listing characteristics. Keys depend on the property type. price_calc.price_alq and price_calc.price_trasp hold the monthly rent and transfer price; address_privacy is public, approximate or hidden; building_name is only present when the address is public.
translationsTranslationSpec
Traducciones de las descripciones
caTranslatedDescription
Traduccion en catalán de la descripción
titlestring
Título de la descripción
descriptionstring
Descripción
enTranslatedDescription
Traduccion en ingles de la descripción
titlestring
Título de la descripción
descriptionstring
Descripción
frTranslatedDescription
Traduccion en francés de la descripción
titlestring
Título de la descripción
descriptionstring
Descripción
deTranslatedDescription
Traduccion en alemán de la descripción
titlestring
Título de la descripción
descriptionstring
Descripción
ptTranslatedDescription
Traduccion en portuges de la descripción
titlestring
Título de la descripción
descriptionstring
Descripción
itTranslatedDescription
Traduccion en italiano de la descripción
titlestring
Título de la descripción
descriptionstring
Descripción
usable_areanumber≥ 0
Metros cuadrados útiles
plot_sizenumber≥ 0
Metros cuadrados parcela
size_builtnumber≥ 0
Superficie construida
porch_sizenumber≥ 0
Metros cuadrados porche
size_terracesnumber≥ 0
Metros cuadrados terrazas
attic_sizenumber≥ 0
Metros cuadrados ático
storage_dimensionsnumber
Dimensiones del trastero
doble_bedroomsinteger≥ 0
Número de habitaciones dobles
suite_bathroomsinteger≥ 0
Número de baños en suite
num_terracesinteger≥ 0
Número de terrazas
conservationstring
Estado de conservación
floorstring
Planta canónica para portales
house_floorsinteger≥ 1
Número de plantas de una casa
elevatorboolean
Tiene ascensor (0/1 o Sí/No)
viewsstring
Vistas de la propiedad
orientationstring
Orientación (norte, sur, este, oeste)
energy_certificatestring
Certificado energético A-G
emissionsstring
Emisiones A-G
energy_consumption_valuenumber≥ 1≤ 999
Consumo (kWh/m² año)
emissions_valuenumber≥ 1≤ 999
Emisiones (kg CO₂/m² año)
heightnumber
Altura del local
facade_metersnumber
Metros de fachada
meters_showcasenumber
Metros de escaparate
entrace_typestring
Tipo de entrada de la oficina
positionstring
1ª/2ª Linea del mar
officesinteger≥ 0
Número de despachos
meeting_roomsinteger≥ 0
Número de salas de reuniones
caminostring
Tipo de suelo
terrain_extensionstring
Tamaño (Grande/Pequeño)
topographystring
Topografía del terreno
num_seatsinteger≥ 0
Número de plazas
dimensionsstring
Dimensiones del aparcamiento
turistic_licensestring
Licencia turística
construction_yearinteger
Año de construcción
exposurestring
Interior o Exterior
stylestring
Conservación
num_viviendasinteger
Número de viviendas
num_localesinteger
Número de locales
num_ascensoresinteger
Número de ascensores
num_parkingsinteger≥ 0
Número de parkings incluidos
num_floorsinteger
Número de plantas
luxury_propertyboolean
Propiedad de lujo
holiday_rentingboolean
Alquiler vacacional
temporal_rentingboolean
Alquiler temporal
purchase_option_rentalboolean
Alquiler con opción a compra
address_privacystring
Privacidad de la ubicación en portales: public | approximate | hidden
activitiesActivitiesSpec
Actividades permitidas
predefinedarray of strings
Actividades predefinidas
customarray of strings
Actividades personalizadas
num_entrancesNumEntrancesSpec
Número de entradas
totalinteger≥ 0 default: 0
Total de entradas
peaton_entrancesinteger≥ 0 default: 0
Entradas de peatones
moto_entrancesinteger≥ 0 default: 0
Entradas de motos
van_entrancesinteger≥ 0 default: 0
Entradas de furgoneta
car_entrancesinteger≥ 0 default: 0
Entradas de coche
floor_breakdownFloorBreakdownSpec
Desglose de plantas
base_floorinteger default: 0
Metros ² de la planta baja
first_floorinteger default: 0
Metros ² de la primera planta
second_floorinteger default: 0
Metros ² de la segunda planta
price_calcPublicPrices
price_alqnumber≥ 0
price_traspnumber≥ 0
building_namestring
Published only when address privacy is public.
featuresarray of objects
Typed amenities. label is a display string; key is stable.
keystringrequired1–100 chars
labelstringrequired1–200 chars
valuestring | boolean | integer | numberrequired
isextraboolean default: false
statusstring
Commercial status of the explicitly published property. Drafts are never returned.
addressstring
Follows the property's address privacy: the full address when public, the approximate address when approximate, omitted when hidden.
citystring
provincestring
countrystring
latnumber
Latitude in decimal degrees. Exact when the address is public, rounded to 2 decimals (about 1 km) when approximate, omitted when hidden.
lonnumber
Longitude in decimal degrees, with the same precision rules as lat.
is_featuredboolean
Whether the business marked the property as featured.
created_atstring
ISO 8601 timestamp with UTC offset.
updated_atstring
ISO 8601 timestamp with UTC offset. The default sort key.
countintegerrequired
Total number of properties matching the filters, across all pages.
limitintegerrequired
The limit that was applied.
offsetintegerrequired
The offset that was applied.
filtersobjectrequired
Echo of the filters that were applied; null for filters that were not sent. locations contains only the areas that were understood.
authenticated_asstring
Name of the business that owns the API key.
Errors
Status
When
401 Unauthorized
The API key is missing, malformed, unknown, revoked or expired.
403 Forbidden
The API key lacks the required scope.
404 Not Found
The resource does not exist in this business.
409 Conflict
Duplicate contact or idempotency key reused with a different payload.
422 Unprocessable Content
A path parameter, query parameter or body field is invalid.
500 Internal Server Error
Unexpected server error while processing the request.