DEVELOPING

Monthly quota and limits

Zonaprop limits the number of calls that can be made per agency. The limit belongs to the portal, not to us, and each agency agrees it with them.

Usual quota1500 calls per month
Counted pereach agency, not per your application
Renewson the 1st at 00:00 (Argentina time), all at once
Leftoverdoes not carry over — whatever you did not use is lost

The fact that it is per agency has a practical consequence: one client's usage does not affect the others, and if one runs out of quota, only their operations stop.

What consumes quota and what does not

This is what is most worth being clear about, because it is not obvious:

OperationDoes it consume?
Connecting the account (when your client authorizes)yes, 1
Disconnecting the accountyes, 1
Publishing, updating or taking down a listingyes
Checking the connection status (GET /connections)no
Requesting a connection linkno

The last two read our own record, not the portal's.

Errors consume quota too. A call that fails because of invalid data is deducted just like a successful one. Retrying a failing operation in a loop burns through your client's monthly quota without achieving anything.

How much they have left

We return it in the connection, without you having to ask the portal:

curl https://property-api.mapaprop.com/connections/zonapropapi \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -H "x-client-ref: cliente-42"
{
  "connection": {
    "portal": "zonapropapi",
    "status": "active",
    "appMeta": {
      "quotaRemaining": 1494,
      "quotaLimit": 1500,
      "quotaReadAt": "2026-10-01T20:44:40.323Z"
    }
  }
}

quotaRemaining is the last value the portal reported to us, not a live query. That is why it comes with quotaReadAt: check it to know how recent it is. If your client operated through another channel since then, the real number may be lower.

Checking it does not consume quota precisely because we are not asking the portal.

Publication plans

Zonaprop also limits how many listings each agency can have published, according to the plans they have contracted. That is independent of the call quota.

"plans": [
  { "plan": "Destacado", "planTotal": 50, "planAvailable": 12 }
]

We return it in the same response. Just like the quota, it is the last known value: if your client publishes from the Zonaprop panel, it drops without us finding out.

An account with no plans connects just the same. plans: [] means Zonaprop has not assigned any yet — the connection is valid, but they will not be able to publish until they contract them with the portal. That is something your client resolves directly with them.

Disconnecting

DELETE /connections/zonapropapi does two things: it stops recognizing the connection on our side and tells the portal that we no longer operate on behalf of that agency.

Both are needed. In Zonaprop there is no per-account credential we could delete, so if we only noted it on our side, the portal would keep recognizing us.

The response tells you how it went:

{ "status": "revoked", "remoteUnlink": "ok", "externalListingsUntouched": true }
  • remoteUnlink: "ok" — unlinked in the portal as well.
  • remoteUnlink: "pending" — your client is already disconnected on our side, but the portal did not respond. Call again later.

Disconnecting does not take listings down. The listings published on Zonaprop belong to your client and stay online. If they want to remove them, they have to do it before disconnecting, or directly from the portal.