Skip to content

Bayut + Property Finder

UAE Real Estate API documentation

One API for listings, agents, agencies and transactions from Bayut and Property Finder. Every request names its portal with platform, and the endpoints are the same for both. Product overview and plans: UAE Real Estate API. This page is separate from the Property Finder API documentation, which is a different API.

Base URL, keys and the platform parameter

Base URL: https://uae-real-estate-api.p.rapidapi.com. All endpoints are GET. The API is sold on RapidAPI: subscribe, copy your key, and send these two headers with every request.

Required headers
{
  "x-rapidapi-key": "YOUR_API_KEY",
  "x-rapidapi-host": "uae-real-estate-api.p.rapidapi.com"
}

Choosing the portal

  • Bayut: send platform=other, the name RapidAPI lists for the Bayut source. platform=bayut is accepted too.
  • Property Finder: send platform=propertyfinder.
  • Every Bayut response comes back with "platform": "other". That is the Bayut data: treat other as Bayut in your code.

Responses and errors

Every success is JSON wrapped in success, platform and data. Inside data, each portal keeps its own field names, listed under each endpoint below.

Every response
{
  "success": true,
  "platform": "other",
  "data": { ... }
}

A missing or invalid parameter returns 400 with the problem listed under error.issues. Asking a portal for data it does not have also returns a 400, with "error": "PLATFORM_LIMITATION", instead of an empty result.

400: validation
{
  "success": false,
  "error": {
    "issues": [
      { "code": "custom", "message": "PropertyFinder requires 'location' parameter.", "path": ["location"] }
    ],
    "name": "ZodError"
  }
}
400: PLATFORM_LIMITATION
{
  "success": false,
  "message": "Agent details is not available for PropertyFinder. Use /search-agents to find agents or /agent-properties to view their listings.",
  "error": "PLATFORM_LIMITATION"
}

Which id goes where

Ids belong to one portal. Pass them back to the same platform they came from.

FromFieldUse as
/search-properties (Bayut) externalID /property-details property_id
/search-properties (Property Finder) property_id /property-details property_id
/search-agents (Bayut) agent_external_id /agent-details and /agent-properties agent_id
/search-agents (Property Finder) id /agent-properties agent_id
/search-agencies (Bayut) externalID /agency-details and /agency-properties agency_id
/search-agencies (Property Finder) id /agency-properties agency_id
/autocomplete location_id location_id on the same portal
GET

/autocomplete

Both

Find a location

Locations matching a name, each with the portal's own location id, its path and coordinates.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
query yes text, e.g. Dubai Marina, JBR

Returns

  • Both: data: a list of {location_id, name, type, path, coordinates}
  • Location ids belong to one portal: a Bayut id does not work on Property Finder, and the other way round.
  • You rarely need this call: /search-properties, /search-agents, /search-agencies and /get-transactions all take a location name.
curl /autocomplete
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/autocomplete?platform=other&query=Dubai+Marina' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/search-properties

Both

Search listings

Listings for rent or sale in one location, with filters, sorting and paging.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
purpose yes rent, buy
location see notes area name, e.g. Dubai Marina Resolved to the portal's location id for you. Required on Property Finder.
location_id see notes id from /autocomplete Skips the name lookup. Bayut only: on Property Finder send location.
page no integer, default 1 Starts at 1.
sort no popular (default), newest, price_low, price_high
property_type no comma-separated: apartment, villa, townhouse, penthouse, office, shop, warehouse, hotel-apartment
bedrooms no comma-separated, 0 = studio e.g. 0,1,2
bathrooms no comma-separated
price_min no AED
price_max no AED
area_min no square feet
area_max no square feet
furnishing no furnished, unfurnished
completion_status no ready, off_plan
rent_frequency no yearly, monthly, weekly, daily Rent only. Default yearly.

Returns

  • Both: data: {properties, total, page, totalPages, hitsPerPage}
  • Bayut: Each listing has id, externalID, title, price, rentFrequency, rooms, baths, area, location, agency, ownerAgent, completionStatus, furnishingStatus, amenities
  • Property Finder: Each listing has property_id, property_type, price, bedrooms, bathrooms, size, location_tree, agent_details, broker_id, listed_date, property_url
  • Send location or location_id. On Property Finder, location_id alone returns a 400 ("PropertyFinder requires 'location' parameter").
  • The same search returns different totals on each portal, because they hold different listings. On 5 Nov 2026, 1-bedroom rentals in Dubai Marina: 2,158 on Bayut, 2,269 on Property Finder.
curl /search-properties
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/search-properties?platform=other&purpose=rent&location=Dubai+Marina&bedrooms=1' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/property-details

Both

Get one listing

The full record for one listing: description, photos, amenities, agent and agency, permit details.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
property_id yes Bayut: externalID; Property Finder: property_id Both come from /search-properties.

Returns

  • Bayut: data: the listing record (id, ownerID, purpose, price, rentFrequency, title, description, geography, ...)
  • Property Finder: data.property: {id, property_type, price, title, location, images, agent, broker, bedrooms, bathrooms, size, amenities, completion_status, furnished, rera, description, ...}
  • On Bayut, use the listing's externalID, not its id.
curl /property-details
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/property-details?platform=other&property_id=EXTERNAL_ID' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/search-agents

Both

Search agents

Agents active in a location, or by name on Bayut.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
query no agent name Bayut only.
location see notes area name, e.g. Dubai Marina Resolved to the portal's location id for you. Required on Property Finder.
location_id see notes id from /autocomplete Skips the name lookup. Bayut only: on Property Finder send location.
purpose no rent, buy (default)
category no residential (default), commercial Bayut location searches only.
page no integer, default 1 Starts at 1.

Returns

  • Bayut: data: {agents, total, page, totalPages}; each agent has agent_external_id, agent_name_en, agency_name_en and badge fields
  • Property Finder: data: {agents, total, page}; each agent has id, name, position, nationality, total_properties, broker_name
  • Property Finder needs a location: a name search alone returns a 400.
curl /search-agents
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/search-agents?platform=propertyfinder&location=Dubai+Marina' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/agent-details

Bayut only

Get an agent's profile

An agent's profile: listing counts for sale and rent, agency, service areas, languages and contact options.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
agent_id yes agent_external_id from /search-agents

Returns

  • Bayut: data: {externalID, name, sale_count, rent_count, agency, service_areas, user_langs, isTruBroker, ...}
  • On Property Finder this returns a 400 with "error": "PLATFORM_LIMITATION". Use /search-agents and /agent-properties there instead.
curl /agent-details
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/agent-details?platform=other&agent_id=AGENT_EXTERNAL_ID' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/agent-properties

Both

List an agent's listings

Every listing an agent has live.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
agent_id yes Bayut: the agent's externalID; Property Finder: id from /search-agents
page no integer, default 1 Starts at 1.
sort no popular, newest, price_low, price_high Property Finder only; ignored on Bayut.
transaction_type no sale, rental Property Finder only; ignored on Bayut.

Returns

  • Bayut: data: {properties, total, page, totalPages, hitsPerPage}
  • Property Finder: data: {properties: {listings, total_count}, total, page}
  • On Bayut, pass the agent's externalID (the agent_external_id from /search-agents). Other ids return an empty list rather than an error, so check total.
curl /agent-properties
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/agent-properties?platform=other&agent_id=AGENT_EXTERNAL_ID' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/search-agencies

Both

Search agencies and brokers

Agencies (Bayut) or brokers (Property Finder) in a location, or by name on Bayut. Both portals mean the same thing: the brokerage.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
query no agency name Bayut only.
location see notes area name, e.g. Dubai Marina Resolved to the portal's location id for you. Required on Property Finder.
location_id see notes id from /autocomplete Skips the name lookup. Bayut only: on Property Finder send location.
page no integer, default 1 Starts at 1.

Returns

  • Bayut: data: {agencies, total, page, totalPages, hitsPerPage}; each agency has externalID, name, agentsCount, location, stats
  • Property Finder: data: {agencies, total, page}; each broker has id, name, total_properties, address, location
  • Property Finder needs a location; name search is Bayut only.
curl /search-agencies
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/search-agencies?platform=other&location=Dubai' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/agency-details

Bayut only

Get an agency's profile

An agency's profile: licences, agent count, the areas it covers, listing counts and description.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
agency_id yes externalID from /search-agencies

Returns

  • Bayut: data: {externalID, name, agentsCount, licenses, locations, stats, description, ...}
  • On Property Finder this returns "error": "PLATFORM_LIMITATION".
curl /agency-details
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/agency-details?platform=other&agency_id=AGENCY_EXTERNAL_ID' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/agency-properties

Both

List an agency's listings

Every listing an agency or broker has live.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
agency_id yes Bayut: externalID; Property Finder: broker id Both from /search-agencies.
page no integer, default 1 Starts at 1.
sort no popular, newest, price_low, price_high Property Finder only; ignored on Bayut.
transaction_type no sale, rental Property Finder only; ignored on Bayut.

Returns

  • Bayut: data: {properties, total, page, totalPages, hitsPerPage}
  • Property Finder: data: {properties: {listings, total_count}, total, page}
curl /agency-properties
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/agency-properties?platform=propertyfinder&agency_id=BROKER_ID' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/get-transactions

Both

Get past transactions

Historical sale or rental transactions for a location, by property type and bedrooms, over 3 months to 2 years.

Parameter Required Values Notes
platform yes other (Bayut), propertyfinder bayut is accepted too. Bayut responses say "platform": "other".
transaction_type yes sale, rental
location see notes area name, e.g. Dubai Marina Resolved to the portal's location id for you.
location_id see notes id from /autocomplete Send location or location_id.
property_type no comma-separated, same values as /search-properties Property Finder uses the first value only.
bedrooms no comma-separated Property Finder uses the first value only.
sort no newest (default), oldest, price_high, price_low
time_period no 3m, 6m, 1y (default), 2y
page no integer, default 1 Starts at 1.

Returns

  • Bayut: data: {hits, nbHits, nbPages}; each hit has date_transaction_nk, transaction_amount, builtup_area_sqm, beds, bayut_leaf_location_name_en
  • Property Finder: data.data.attributes: {transactions, summary, total_items}
  • The two portals return different shapes here, so read them with separate code paths.
curl /get-transactions
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/get-transactions?platform=propertyfinder&transaction_type=sale&location=Dubai+Marina&time_period=1y' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
GET

/health

n/a

Health check

Checks that the API is up. No parameters.

curl /health
curl --request GET \
  --url 'https://uae-real-estate-api.p.rapidapi.com/health' \
  --header 'x-rapidapi-host: uae-real-estate-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'

Try it without writing code

Every endpoint is in the Postman collection (fork it from the public workspace and paste your key). Python and JavaScript examples are on GitHub. This page is also available as markdown for AI agents.

The UAE Real Estate API is an independent, third-party API from Happy Endpoint. It is not affiliated with or endorsed by Bayut or Property Finder.

Bayut and Property Finder in one API

Subscribe on RapidAPI, copy your key, and query both UAE portals with one parameter.