Real-time access to PropertyFinder UAE property data: 500K+ listings for sale and rent across Dubai, Abu Dhabi and Sharjah, plus commercial property, off-plan projects, agents, brokerages, price trends, and historical transactions. Everything returns structured JSON over a normal REST API, so there is no scraping, no proxy rotation, and no HTML parsing to maintain.
Built and maintained by Happy Endpoint.
PropertyFinder is one of the two dominant property portals in the UAE. This API exposes its data programmatically:
Coverage is UAE-wide: Dubai, Abu Dhabi, Sharjah, and the northern emirates. Listings are refreshed daily, and responses are Redis-cached for latency.
Subscribe on RapidAPI. There is a free tier: https://rapidapi.com/happyendpoint/api/uae-real-estate-property
Every request needs two headers. Start with a location lookup, because the search endpoints take a location identifier rather than a place name.
curl "https://propertyfinder-uae-data.p.rapidapi.com/autocomplete-location?query=dubai%20marina" \
-H "x-rapidapi-host: propertyfinder-uae-data.p.rapidapi.com" \
-H "x-rapidapi-key: YOUR_RAPIDAPI_KEY"
import os
import requests
HOST = "propertyfinder-uae-data.p.rapidapi.com"
HEADERS = {
"x-rapidapi-host": HOST,
"x-rapidapi-key": os.environ["RAPIDAPI_KEY"],
}
def get(path, **params):
r = requests.get(
f"https://{HOST}{path}",
params={k: v for k, v in params.items() if v is not None},
headers=HEADERS,
timeout=30,
)
r.raise_for_status()
return r.json()
locations = get("/autocomplete-location", query="dubai marina")
listings = get("/search-buy", location_id="1", price_max=2_000_000)
const HOST = 'propertyfinder-uae-data.p.rapidapi.com';
async function get(path, params = {}) {
const url = new URL(`https://${HOST}${path}`);
for (const [k, v] of Object.entries(params)) {
if (v != null) url.searchParams.set(k, v);
}
const res = await fetch(url, {
headers: {
'x-rapidapi-host': HOST,
'x-rapidapi-key': process.env.RAPIDAPI_KEY,
},
});
if (!res.ok) throw new Error(`PropertyFinder API ${res.status}`);
return res.json();
}
const listings = await get('/search-buy', { location_id: '1', price_max: 2000000 });
| Endpoint | Returns |
|---|---|
GET /autocomplete-location |
Location search. Returns the identifiers other endpoints need |
GET /price-trend-of-location |
Price trends over time for a location |
GET /property-insight |
Market insight for a property or area |
| Endpoint | Returns |
|---|---|
GET /search-buy |
Properties for sale |
GET /search-rent |
Properties for rent |
GET /search-new-projects |
Off-plan and new development projects |
GET /property-details |
Full record for a single property |
| Endpoint | Returns |
|---|---|
GET /search-commercial-buy |
Commercial property for sale |
GET /search-commercial-rent |
Commercial property for rent |
| Endpoint | Returns |
|---|---|
GET /search-agents |
Agents matching a search |
GET /search-agents-detailed |
Agents with extended profile data |
GET /agent-properties |
All listings from one agent |
GET /search-brokers |
Brokerages matching a search |
GET /search-brokers-detailed |
Brokerages with extended profile data |
GET /broker-properties |
All listings from one brokerage |
GET /real-estate-developer |
Real estate developers |
| Endpoint | Returns |
|---|---|
GET /get-transactions |
Historical property transactions |
RapidAPI hosts an MCP server, so you can query this API from an AI assistant without writing any code:
{
"mcpServers": {
"PropertyFinder UAE": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.rapidapi.com",
"--header",
"x-api-host: propertyfinder-uae-data.p.rapidapi.com",
"--header",
"x-api-key: YOUR_RAPIDAPI_KEY"
]
}
}
}
| Client | Config path |
|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor | ~/.cursor/mcp.json |
| Claude Code | .mcp.json in your project root |
No. PropertyFinder does not publish a public API for listing data. This API is built and maintained by Happy Endpoint to provide that access.
Yes. RapidAPI hosts a free plan with a monthly request quota, enough to prototype against.
Scraping a property portal means maintaining CSS selectors that break on every redesign, rotating proxies, handling bot challenges, and accepting that it may breach the site’s terms. This is a REST API returning JSON with a stable contract.
Call /autocomplete-location with the area name. The search endpoints take that
identifier rather than a plain place name. A wrong identifier tends to return a
different area rather than an error, so confirm it rather than guessing.
Listings are asking prices, what sellers currently want. Transactions are what
property actually sold for. For valuation and yield work, use
/get-transactions.
Yes. Happy Endpoint sells a PropertyFinder UAE historical transactions dataset of 120K+ records as a one-off file. See happyendpoint.com/datasets or email happyendpointhq@gmail.com.
Yes, separately. See bayut-api. Most people building UAE market coverage use both, since listing inventory only partly overlaps between the two portals.
Happy Endpoint builds and maintains real-time data APIs for property portals, retailers, and marketplaces. All APIs are available on RapidAPI with a free tier.
MIT. See LICENSE.