Filters on /properties
Combine query parameters by group.
Paging
- page
- limit
- cursor
Search
- q
- city
- district
- neighborhood
Type
- deal
- property_kind
Range
- price
- area
- price/m²
Geo
- source
- map
- bbox
§ Developers · v1
Read-only, unauthenticated at launch, JSON over HTTPS. Personal and light commercial use with attribution. Heavy usage needs approval.
$ curl https://estate.sh/api/v1/properties\
?city=Tbilisi&deal=buy&limit=20
{
"items": [
{
"id": 42,
"city": "Tbilisi",
"district": "Vake",
"price_gel": 260000,
"area_m2": 86,
"location_confidence": "street"
}
],
"page": 1,
"limit": 20
} Endpoints
Everything you need to render a property search, a detail page, location typeahead, currency conversion, and source attribution. Everything else is filters, sort, and paging on /properties.
/api/v1/properties List current properties. /api/v1/properties/{id} Return one property by estate.sh ID. /api/v1/options City, district, and neighborhood filter options. /api/v1/suggestions?q=tbi Location suggestions for typeahead. /api/v1/rates GEL-based exchange rates used for display. Filters on /properties
Paging
Search
Type
Range
Geo
Sort values
updated_desc
sort=
best_deal
sort=
price_asc
sort=
price_desc
sort=
area_desc
sort=
Examples
GET /api/v1/properties?limit=20 GET /api/v1/properties?city=Tbilisi&deal=buy&property_kind=apartment GET /api/v1/properties?deal=rent&sort=updated_desc GET /api/v1/properties/42 GET /api/v1/rates GET /api/v1/options?city=Tbilisi GET /api/v1/suggestions?q=Batumi Rules of the road
Attribution to estate.sh, source attribution preserved on listings, no scraping or resale without approval. API responses may be cached and rate-limited; back off on 429 and retry.
Responses are JSON. Listing fields can be null or omitted when the source did not publish reliable data. Location confidence is exposed with accuracy and radius fields where available.
Currency values are stored in GEL and may include source USD fields. Public listing responses use a safe field allowlist that excludes raw source payloads, owner names, contact numbers, and internal fields.
Errors use standard HTTP status codes with JSON where possible. Breaking changes will use a new versioned base path. The machine-readable schema is at /openapi.json.
Need more
Write to api@estate.sh with use case, expected volume, and attribution plan. We respond within a few working days.