Enquiries for a single property
GET /property-v1/properties/{paId}/leads?portal={portal}
Returns the enquiries for one listing, the one belonging to the property you specify.
To pull everything, use the whole-account method. Walking through your properties one by one spends one call from the allowance for each one, and with the other method they all come in a single call. This method is for when you want to look at just one — the detail view of a listing in your panel.
curl "https://property-api.mapaprop.com/property-v1/properties/01M41AQNXYG4W4SEEEEPHEDNX4/leads?portal=zonapropapi&fromDate=20260101" \
-H "Authorization: Bearer $TOKEN" \
-H "x-client-ref: cliente-42"
The parameters
portal | required | zonapropapi |
fromDate | from which date, YYYYMMDD | if you omit it, the last 7 days |
toDate | up to which date, YYYYMMDD | here it is applied |
size | how many leads at most | 100 |
Always send fromDate whenever you want more than the very recent. Without an explicit window the
portal uses one of its own, a very narrow one: the same listing that returns 8 enquiries with a fromDate
nine months back returns 1 without the parameter. If you omit it, the listing looks as though it had
almost no enquiries.
The response
{
"portal": "zonaprop",
"paId": "2605257",
"from": "20260101",
"to": "20260601",
"leads": [
{
"id": "322337250",
"propertyCode": "2605257___mapaprop",
"name": "Lucía",
"email": "lucia@ejemplo.com",
"phone": "1156781234",
"message": "Hola, quería coordinar una visita",
"date": 1790878040000,
"portalMessageId": null,
"portalAdId": 56801168,
"portalContactId": 49474924,
"portalActionId": 10
}
],
"total": 8,
"quota": { "remaining": 1346, "limit": 1500 }
}
It is the same shape as the whole-account method, plus the paId you requested. The lead object, field by
field, is in the introduction.
to only appears if you sent toDate — and it appears because here the filter was applied.
If the listing is not on the portal
This is not an error: it is 200, with an empty list and the reason.
{
"portal": "zonaprop",
"paId": "01M41AQNXYG4W4SEEEEPHEDNX4",
"from": "20260929",
"leads": [],
"total": 0,
"notPublishedOnPortal": true,
"detail": "Ese aviso no figura en esa inmobiliaria del portal, así que no tiene consultas. Puede que todavía no se haya publicado, que el portal lo haya dado de baja, o que esté publicado bajo otra cuenta.",
"quota": { "remaining": 1346, "limit": 1500 }
}
The portal tells us "that listing does not appear under this agency" and nothing more, so we cannot tell you which of the three reasons it is. We would rather name all three than pick one and risk sending you to look where it is not.
The property does exist in your inventory — if it did not, the response would be a 404.
The errors
| When | What to do | |
|---|---|---|
400 portal_requerido | ?portal= is missing | send it |
| 403 | you are missing the {portal}:leads scope | ask us to grant it |
404 property_not_found | that paId is not in your inventory | check the id. It does not spend allowance: we stop before asking the portal |
409 portal_not_connected | that account is not connected to that portal | connect it |
409 portal_account_unlinked | it was unlinked on the portal's side | it has to be connected again |
429 portal_quota_exhausted | the agency used up its monthly allowance | wait for the following month. The allowance is shared with publishing — see Zonaprop's allowance |
501 leads_no_soportado | that portal does not offer this service yet | — |
502 portal_rejected | the portal did not answer or rejected the request | retrying is safe |