Using Tamleek Plus via the REST API
The current API (/v0/*) is the same underlying data as MCP, over plain HTTP with JSON responses — for your own backend, script, or notebook. It is an indicative, pre-release surface: a versioned, hardened, token-gated /v1 is planned (see roadmap note below). Treat /v0 as stable enough to build against today, but expect it to be superseded.
Auth
Every /v0/* request requires an X-API-Key header. There is no unauthenticated data endpoint — /health is the only public route. Missing or invalid keys return 401; a key over its quota returns 429.
Endpoint catalog
MoJ registered sales
| Endpoint | Query params |
|---|---|
GET /v0/volume-trend | municipality, year (2020–2026) |
GET /v0/district-count | municipality, year |
GET /v0/price-index | municipality, property_type (default villa) |
GET /v0/price-sqm | district, property_type (optional) |
GET /v0/null-rate | district |
Aqarat QREP — rental & mortgage
| Endpoint | Query params |
|---|---|
GET /v0/aqarat/rent-price-sqm | municipality, property_type |
GET /v0/aqarat/rent-by-bedrooms | municipality, property_type (default Apartment) |
GET /v0/aqarat/rent-trend | municipality, year, property_type |
GET /v0/aqarat/mortgage-value-index | municipality, year |
GET /v0/aqarat/mortgage-activity | municipality, year |
Active listings (The Pearl pilot)
| Endpoint | Query params |
|---|---|
GET /v0/listings/market | district, tower, property_type, bedrooms, size_band (studio/1br/2br/3br_plus) |
GET /v0/listings/price-band | district, property_type, bedrooms, size_band |
GET /v0/listings/deal-check | district, asking_price, area_sqm, property_type — compares an offer against the district band |
Listings are active asking prices, never sold values. The pilot dataset covers The Pearl only.
Pearl synthetic demo (AVM methodology testing)
| Endpoint | Query params |
|---|---|
GET /v0/pearl-demo/towers | none — lists the demo tower registry |
GET /v0/pearl-demo/unit-history | unit_id |
GET /v0/pearl-demo/tower-summary | tower_code, view, size_band |
GET /v0/pearl-demo/comps | unit_id OR view + size_band, tower_code, floor_window, months |
Every row from this family is fully synthetic — a seeded generator anchored to real UDC unit structure, not a real transaction. Confidence on the comps endpoint is a computed tier (high/medium/low) from comparable count, price spread, and freshness — never a narrated guess.
Geo & enrichment
| Endpoint | Query params |
|---|---|
GET /v0/geo/listings | none — GeoJSON FeatureCollection of active listing points |
GET /v0/geo/choropleth | none — median price/m² per Qatar municipality, as GeoJSON polygons |
GET /v0/maps/catchment | lat, lng, radius (100–5000m) — a 0-100 catchment-density score around a point |
What you can build against this API
- Internal dashboards or reports over registered sale / rent / mortgage trends.
- A pricing sanity-check tool using
deal-checkorprice-band. - A map layer using the GeoJSON endpoints.
- An AVM prototype against the Pearl synthetic dataset, clearly labelled as synthetic downstream.
What you cannot do with this API
- There are no write/mutate endpoints — every route is
GET. - No unit-level, individually-identifiable real transaction data (PDPPL).
- No cross-source "merged truth" endpoint — MoJ, Aqarat, listings, and the Pearl demo are separate families on purpose; combine them client-side with their individual disclaimers intact, never as one blended number.
- No SLA guarantee yet — this is the pre-
/v1surface.
Roadmap: /v1
A versioned, token-gated, hardened /v1 API (served from api.tamleekplus.com) is planned. It will formalize rate limits, response schemas, and versioning guarantees on top of the same data families documented here. This page will be updated when it ships.