Suelo Public API
Read-only access to every publicly listed property on suelo.casa: houses, apartments, land, townhouses and multi-family buildings across Venezuela, for sale and for rent.
The API is anonymous, read-only and CORS-open. There is no key to request and no OAuth flow to complete, because every response contains exactly what an anonymous visitor already sees on the website. See auth.md for the long answer.
- Base URL:
https://suelo.casa/api/v1 - Machine description:
/api/v1/openapi.json(OpenAPI 3.1) - Catalog:
/.well-known/api-catalog(RFC 9727) - Health:
/api/v1/health
Please send a descriptive User-Agent. Responses are edge-cached for five
minutes with a one-hour stale window, so polling faster than that returns the
same bytes.
Search listings
GET /api/v1/listings
Every parameter is optional. With none, you get the whole live inventory, newest first, 24 per page.
| Parameter | Values | Notes |
|---|---|---|
operation |
sale, rent |
Omit for both. |
propertyType |
house, apartment, land, townhouse, multi_family |
Repeatable, or comma-separated. |
place |
a place slug path, e.g. miranda/chacao |
See Places below. |
bbox |
south,west,north,east |
WGS84 degrees. Narrows place when both are sent. |
priceMin, priceMax |
integers | In the listing's own currency. |
bedsMin, bathsMin, parking |
integers | Minimums. |
areaMin, areaMax |
integers | Built area in m². |
yearMin, yearMax |
integers | Year built. |
condition |
new, good, fair, needs_renovation |
|
furnished |
furnished, semi_furnished, unfurnished |
|
feature |
pool, generator, water_tank, gym, terrace, balcony |
Repeatable; all must match. |
sort |
newest, price_asc, price_desc, featured |
Default newest. |
page |
integer ≥ 1 | 1-based. |
limit |
1–100 | Default 24. |
Example:
GET /api/v1/listings?operation=sale&propertyType=apartment&place=miranda/chacao&priceMax=150000&sort=price_asc
The response carries three keys:
listings— the page of results.pagination—page,limit,total(all matches, not just this page),totalPages, and a ready-madenextPageUrlthat isnullon the last page.place— the resolved place, echoed back so you can confirm what the slug matched.
One listing
GET /api/v1/listings/{listingId}
404 covers both an id that never existed and a listing that is no longer
publicly visible. The API does not distinguish the two.
Places
GET /api/v1/places # the 24 states
GET /api/v1/places?parent=miranda # that state's municipios and neighborhoods
Place slugs are the same ones the crawlable landing pages use, so
/api/v1/listings?place=miranda/chacao and
/ve/venta/apartamentos/miranda/chacao describe the same set. Each entry
carries a path to pass back as place and a pageUrl for the human page.
Do not guess slugs: an unknown place is a 400, never an empty result set, so
a typo can never be mistaken for "no inventory here".
What a listing means
price.amountis the asking price for a sale and the monthly rent for a rental. It is what the lister published, not an appraisal and not a sale price.addresscarries locality only — neighborhood, city, municipality, state, country, and a one-linelocalitystring. There is no street field: the website does not print one on a search card either.locationis the exact point, ornullwhen the lister chose to withhold it. An approximate area pin is never returned dressed up as an address.underInvestigation: truemeans a reported data problem is being checked. Cite such a listing with that caveat, or leave it out.sourcenames the originating system of a syndicated listing. Attribute it.urlis the canonical page. Link people there rather than reproducing the listing wholesale.
Aggregate market data
Do not compute a market average from a page of search results — it is a filtered, sorted, paginated sample. Suelo publishes monthly asking-price reports at /datos, with the method behind them at /datos/metodologia.
Errors
Errors are RFC 9457 problem details
with Content-Type: application/problem+json:
{
"type": "about:blank",
"title": "Invalid query",
"status": 400,
"detail": "One or more query parameters were rejected.",
"errors": ["place: unknown place path \"mirandaa\""]
}
Markdown
Every HTML page on suelo.casa, this one included, answers
Accept: text/markdown with a markdown rendering and an x-markdown-tokens
estimate. HTML stays the default for browsers.
Esta página en español
This page is also published in Spanish at /docs/api.
Terms
Use of the API is covered by the terms of use. Attribute Suelo and link back to the listing you are describing. Questions: hola@suelo.casa.