This service will return the list of properties of your account (the agency that owns the token). The scope comes from the access token, it is not sent as a parameter.
| Resource information | |
|---|---|
| Authentication | Required (API Token, Bearer) |
| Scope | express-base |
| HTTP Method | GET |
| Response | JSON |
| Version | 1 |
Resource URL
https://mapaprop.app/api/action/express-v1/properties
Sample code
GET /api/action/express-v1/properties?operation=1&buildingStatus=5&tempOccupancy=2&dateFrom=20-02-2019&dateTo=28-02-2019 HTTP/1.1
Host: mapaprop.app
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Authorization: Bearer {access_token}
Parameters
| Key | Type | Required | Description |
|---|---|---|---|
| term | string | no | A term that will try to match at least 3 characters in the zone, address, code, or title of the property. Full text search capabilities. |
| address | string | no | A term that will try to match at least 3 characters in address field. Full text search capabilities. |
| type | int | no | A type of property. Constants |
| operation | int | no | An operation of the property. Constants |
| from | int | no | The start record number. Default is 0. |
| size | int | no | The amount of records to bring in each query. Default is 10. Maximum is 20 (validation error: "You cannot retrieve more than 20 properties at a time"). |
| branchId | int | no | The ID of the branch where the properties are located. |
| buildingStatus | int | no | The physical condition of the building. Constants |
| bedrooms | int | no | The amount of bedrooms of the property |
| ambiences | int | no | Exact number of rooms |
| ambiencesFrom | int | no | Search from a number upwards |
| ambiencesTo | int | no | Search up to the assigned number |
| bathrooms | int | no | The amount of bathrooms of the property |
| priceFrom | number | no | Minimum price filter. Accepts decimals (for example 1500000.50). |
| priceTo | number | no | Maximum price filter. Accepts decimals (for example 1500000.50). |
| stateId | int | no | The state ID of the property |
| countyId | int | no | The county ID of the property |
| cityId | int | no | The city ID of the property |
| tempOccupancy | int | no | The number of people who can live in a property |
| dateFrom | string | no | The date you want to arrive (format is "dd-MM-yyyy") |
| dateTo | string | no | The date you want to leave (format is "dd-MM-yyyy") |
Pagination
This endpoint uses offset-based pagination via the from and size query parameters.
| Parameter | Meaning | Default | Maximum |
|---|---|---|---|
from | Zero-based offset of the first record to return | 0 | — |
size | Number of records returned per request | 10 | 20 |
The response always includes a total field with the total number of records matching your filters (not just the ones returned in the current page). Use it to know when to stop paginating.
How to paginate
To retrieve page N (1-indexed) with a fixed page size:
from = (N - 1) * size
Keep requesting the next page while from + size < total.
Example: paginate through 45 results, 20 per page
Assume a search returns "total": 45. To get every result you need 3 requests:
Page 1 — records 1 to 20:
GET /api/action/express-v1/properties?operation=1&from=0&size=20
Response: { "took": 12, "total": 45, "properties": [ ...20 items... ] }
Page 2 — records 21 to 40:
GET /api/action/express-v1/properties?operation=1&from=20&size=20
Response: { "took": 9, "total": 45, "properties": [ ...20 items... ] }
Page 3 — records 41 to 45:
GET /api/action/express-v1/properties?operation=1&from=40&size=20
Response: { "took": 7, "total": 45, "properties": [ ...5 items... ] }
At this point from + size = 60 >= total = 45, so there are no more pages.
Notes
- Keep filters consistent across pages. Changing any filter between requests (e.g.
operation,priceFrom,stateId) resets the result set and your offset will point to a different collection. sizecannot exceed 20. Requestingsize=21or more returns a validation error:"You cannot retrieve more than 20 properties at a time". To retrieve large result sets you must paginate.fromis an offset, not a page number.from=2returns records starting at position 3, not "page 2".- Numeric filters expect an integer. A value outside the range of an integer (a 20-digit number, for instance) or one with decimals returns a validation error instead of being silently ignored.
priceFromandpriceToare the exception: they accept decimals. - The
tookfield is the time in milliseconds the search took on the server side for that page only.
Response
A JSON document with the list of zones in a hierarchy where the customer has properties.
| Object | Field | Type | Required | Description |
|---|---|---|---|---|
| Response | took | int | yes | How long the search took in milliseconds |
| total | int | yes | How many total records are in the context of this search. You can paginate thru them | |
| properties | Array of Property | yes | The list of Property objects | |
| Property | propertyHash | string | yes | A unique ID for the property |
| timestamp | string | yes | ISO8601 timestamp of when the property was created | |
| lastUpdate | string | yes | ISO8601 timestamp of when the property was last updated | |
| code | string | yes | A unique code of the property entered by the customer | |
| branchId | int | yes | The ID of the branch that this property is related to. GET /api/action/express-v1/branches. | |
| type | int | yes | The Id of property type. GET /api/action/express-v1/types | |
| operation | int | yes | The Id of property operation. Constants | |
| propertyType | string | yes | The translated description of the property type. GET /api/action/express-v1/types | |
| propertyOperation | string | yes | The translated description of the property operations. Constants | |
| status | string | yes | The translated description of the building status. Constants | |
| mainImage | string | no | The Id of property type. GET /api/action/express-v1/types | |
| currency | string | yes | The currency symbol of the price of the property. Constants | |
| price | int | yes | The price of the property | |
| expensesCurrency | string | no | The currency symbol of the monthly / yearly expenses of the property. Constants | |
| expensesPrice | int | no | The price of the monthly / yearly expenses of the property | |
| taxCurrency | string | no | The currency symbol of the monthly / yearly taxes of the property. Constants | |
| taxPrice | int | no | The price of the monthly / yearly taxes of the property | |
| title | string | yes | A title entered by the customer | |
| address | string | yes | The street address and number of the property | |
| zipCode | string | yes | The postal code of property location | |
| zone | string | yes | A friendly description combining from city (if available) to state | |
| countryId | int | yes | The ID of the property country location | |
| stateId | int | yes | The ID of the property state location. GET /api/action/express-v1/zones | |
| countyId | int | yes | The ID of the property county location. GET /api/action/express-v1/zones | |
| cityId | int | no | The ID of the property city location. GET /api/action/express-v1/zones | |
| countryId | int | yes | The ID of the property country location. GET /api/action/express-v1/zones | |
| country | string | yes | The name of the country | |
| state | string | yes | The name of the state | |
| county | string | yes | The name of the county or 2nd division location | |
| city | string | no | The name of the city / neighborhood or 3rd division | |
| suspended | boolean | yes | The publication has been suspended | |
| reserved | boolean | yes | The property has been reserved | |
| rented | boolean | yes | The property has been rented | |
| sold | boolean | yes | The property has been sold | |
| description | string | yes | The long description of the property | |
| conditions | string | no | The long conditions statement of the property. Usually related to payments | |
| bedrooms | int | no | Number of bedrooms of the property | |
| ambiences | int | no | The number of ambiences / spaces for the property | |
| bathrooms | int | no | Number of bathrooms of the property | |
| dependencies | int | no | Number of dependency rooms (extra rooms) | |
| occupancy | int | no | Number of occupants (generally if this is a temp rental) | |
| toilettes | int | no | Number of toilettes (half bathrooms) in the property | |
| buildingArea | int | no | Square meters of the built area | |
| landArea | int | no | Square meters of the land of the property | |
| yearsOld | int | no | How old the property is | |
| ubication | string | no | The property cardinal ubication in the building | |
| totalFloors | int | no | The total floors in the building | |
| apartmentsPerFloor | int | no | The amount of apartments per floor | |
| airConditionerType | string | no | Type of air conditioner. | |
| waterHeaterType | string | no | Type of water heater. | |
| heatingType | string | no | Type of heating appliances. | |
| balconyType | string | no | Type of balcony. | |
| garage | int | no | The total garages of the property | |
| garageType | string | no | Type of garage. | |
| images | Array of Image | no | Array of Image object | |
| location | Location | yes | Location object | |
| Location | lon | string | yes | Longitude location of the property |
| lat | string | yes | Latitude location of the property | |
| Image | image | string | yes | URL for image |
| thumbnail | string | yes | URL for the thumbail | |
| orientation | int | yes | Orientation of the image. 1 = PORTRAIT, 2 = LANDSCAPE | |
| type | int | yes | Type of image. 1 = PHOTO, 2 = BLUEPRINT | |
| contentType | string | yes | The image content type | |
| timestamp | string | yes | The ISO8601 timestamp of when the image was uploaded | |
| Labels | labels | Array of labels | no | The labels of property. Constants |
| attributes | attributes | Array of json attributes | no | All property attributes |
| descriptionFormatted | description | string | no | Description with new formatting that accepts line breaks |
Additional property fields
Besides the ones in the table, every property brings these. They are the most used ones when building sheets and listings:
| Field | Type | Required | Description |
|---|---|---|---|
| seoUrl | string | yes | The property slug, ready to build the URL of your sheet |
| typeDesc | string | yes | The property type already resolved to text (House, Apartment). It saves you cross-referencing the type against types |
| operationDesc | string | yes | The operation already resolved to text (Sale, Rent) |
| descriptionFormatted | string | no | The description with the line breaks the customer typed |
| publishedAt | string | no | ISO8601 date on which the property was published. Useful for sorting by newest |
| floors | int | no | Number of floors |
| garages | int | no | Number of parking spaces |
| branchSeoUrl | string | no | The seoUrl of the branch that owns the property |
| customerCountry | int | yes | The Id of the agency's country |
| customerCountryDesc | string | yes | The agency's country, as text |
| urlWebExternal | string | no | The property URL on the customer's site, if they have one |
| videos | Array | no | The videos loaded on the property. Empty if there are none |
| alternativePrices | Array | no | Alternative prices (per week, per season). Empty if there are none |
| reservations | Array | no | The property reservations, when it handles temporary rental |
| tempOccupied | boolean | no | Whether the property is occupied today, on temporary rental |
In the optional integers, a 0 means "not declared", not "zero".
When the agency does not fill in one of these fields, the service returns 0 instead of
omitting it: totalFloors, floors, apartmentsPerFloor, toilettes, dependencies,
expensesPrice and taxPrice. So "toilettes": 0 does not state that the property has no
toilettes — it states that nobody reported how many.
If you are going to display the value, treat 0 as absence. It is the object's convention, and it
also holds for the development's counters in
GET /developments.
developmentId — whether the property is part of a project
Since 2026-10-27 every property in this service carries three fields of the development group, always, whether or not it is a development:
| Field | Type | Required | Description |
|---|---|---|---|
| developmentId | int | yes | Id of the development this property is a unit of. 0 = it belongs to none |
| development | boolean | yes | true only if this property IS a development |
| developmentProperties | Array of int | yes | The Ids of its units if it is a development; [] if not |
developmentId is what lets you spot, in any listing, that four nearly identical apartments belong
to the same project — and fetch the project with
GET /developments.
To know whether something is a development, check development === true.
Until 2026-10-26 these three fields did not appear in a regular property, so checking for the
existence of the key worked to tell it apart from a development. Not any more: the three keys
always come. The change is additive and does not break a read of values, but code using
'developmentProperties' in prop to detect a development now returns the opposite result.
Only developments carry developmentStats. The block of derived indicators — how many units
there are, how many sold, the price range — does not appear in a regular property: it has no units
to derive it from. It is documented in
GET /developments.
The response also includes some fields for Mapaprop's internal use that are not part of
this contract and may change or disappear without notice: embeddingVersion, vectorizedAt,
configs, moderationStatus and publication. Do not build anything on them.
Sample response
{
"took": 111,
"total": 13,
"properties": [
{
"country": "Argentina",
"county": "Caballito",
"type": 20,
"zone": "Caballito, Capital Federal, Argentina",
"price": 54554,
"state": "Capital Federal",
"branchId": 773,
"images": [],
"suspended": false,
"labels": [
"mortgage-ready",
"professional-available",
"furnished",
"janitor",
"grill",
"storage",
"security",
"security-box",
"swimming-pool",
"party-saloon",
"cable-included",
"telephone-line",
"daily-dinning",
"alarm",
"front-garden",
"laundry",
"patio",
"playroom",
"private-elevator",
"suite"
],
"propertyOperation": "Alquiler Temporario",
"reserved": false,
"lastUpdate": "2019-10-29T14:13:54.000-03:00",
"customerCountryDesc": "Argentina",
"code": "1-6454656",
"description": "gran casa en haedo capital de ahora morona",
"alternativePrices": [],
"title": "gran casa en haedo capital de ahora morona",
"customerCountry": 1,
"countryId": 1,
"seoUrl": "alquiler-temporario-de-loft-en-caballito-capital-federal-1-147874",
"rented": false,
"countyId": 18,
"propertyType": "Loft",
"ambiences": 2,
"hightlight": {},
"currency": "USD",
"timestamp": "2019-10-29T00:00:00.000-03:00",
"sold": false,
"address": "paysandu 984",
"stateId": 1,
"propertyHash": "e86a6a15b7f93ae633b0b009c5c51120",
"mainImage": "https://s3.amazonaws.com/mapaprop-dev/photos/noimage.gif",
"location": {
"lon": "-58.45284939999999",
"lat": "-34.6125374"
},
"operation": 3
},
{
"country": "Argentina",
"county": "Saavedra",
"cityId": 1774,
"type": 17,
"zone": "Arroyo Corto, Saavedra, Buenos Aires, Argentina",
"price": 1,
"state": "Buenos Aires",
"branchId": 773,
"images": [
{
"image": "https://s3.amazonaws.com/mapaprop-dev/photos/1/145148/1342116.jpg",
"thumbnail": "https://s3.amazonaws.com/mapaprop-dev/photos/1/145148/1342116t.jpg",
"orientation": 2,
"imageId": 1342116,
"main": true,
"type": 2,
"contentType": "image/jpeg",
"order": 0,
"timestamp": "2017-12-20T16:27:58Z"
}
],
"suspended": false,
"labels": [],
"propertyOperation": "Alquiler Temporario",
"reserved": false,
"lastUpdate": "2018-01-16T15:36:31.000-03:00",
"paymentPeriod": "Por día",
"customerCountryDesc": "Argentina",
"code": "1-ABC635265",
"city": "Arroyo Corto",
"description": "una descripcion larga es mucho mejor que nada.",
"alternativePrices": [],
"title": "Una gran casa requiere una casita",
"customerCountry": 1,
"countryId": 1,
"seoUrl": "alquiler-temporario-de-complejo-turistico-en-arroyo-corto-saavedra-buenos-aires-1-145148",
"rented": false,
"countyId": 300,
"propertyType": "Complejo Turístico",
"hightlight": {},
"currency": "ARS",
"timestamp": "2018-01-16T00:00:00.000-03:00",
"sold": false,
"address": "Maipu 191",
"stateId": 2,
"propertyHash": "c6ed3571d0215b75c19de96d40783a1b",
"mainImage": "https://s3.amazonaws.com/mapaprop-dev/photos/1/145148/1342116t.jpg",
"location": {
"lon": "-62.40793050000002",
"lat": "-37.5996419"
},
"operation": 19
},
{
"country": "Argentina",
"occupancy": 2,
"county": "Balvanera",
"type": 1,
"zone": "Balvanera, Capital Federal, Argentina",
"price": 90000,
"state": "Capital Federal",
"branchId": 773,
"images": [
{
"image": "https://s3.amazonaws.com/mapaprop-dev/photos/1/139555/1335004.jpg",
"thumbnail": "https://s3.amazonaws.com/mapaprop-dev/photos/1/139555/1335004t.jpg",
"orientation": 2,
"imageId": 1335004,
"main": false,
"type": 1,
"contentType": "image/png",
"timestamp": "2017-12-09T16:27:54Z"
},
],
"suspended": false,
"labels": [],
"propertyOperation": "Alquiler Temporario",
"reserved": false,
"lastUpdate": "2017-11-28T21:16:48.000-03:00",
"paymentPeriod": "Por día",
"customerCountryDesc": "Argentina",
"code": "1-389398",
"expensesCurrency": "ARS",
"description": "Buena prop a estrenar",
"alternativePrices": [
{
"price": 50000.0,
"description": "Casa",
"currency": "ARS",
"id": "1863"
},
{
"price": 6500.0,
"description": "Por dia",
"currency": "ARS",
"id": "12216"
}
],
"title": "Nueva propeidad here",
"customerCountry": 1,
"countryId": 1,
"seoUrl": "alquiler-temporario-de-departamento-en-balvanera-capital-federal-1-139555",
"rented": false,
"expensesPrice": 2323,
"countyId": 91,
"propertyType": "Departamento",
"hightlight": {},
"currency": "ARS",
"timestamp": "2017-09-29T00:00:00.000-03:00",
"sold": false,
"address": "Balvanera 3993",
"zipCode": "1661",
"stateId": 1,
"propertyHash": "74f6dd0e4809f9ba1b044f3704cfef62",
"mainImage": "https://s3.amazonaws.com/mapaprop-dev/photos/1/139555/1272968t.jpg",
"taxCurrency": "ARS",
"taxPrice": 2000,
"location": {
"lon": "-58.392606099999966",
"lat": "-34.6098208"
},
"attributes": [
{
"group_sub": "label",
"country": "ar",
"key_legacy": "accessible",
"group_subtype": "ammenities",
"id": "accessible",
"label": "Accesible",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
],
"descriptionFormatted": "Test Images, Propiedad TestTest Images, \n\nPropiedad Test",
"operation": 19,
"status": "En Construcción"
},
]
}