Bayut API Documentation

UAE Real Estate Data Scraping Made Easy


Welcome to the Bayut API documentation.

This is the "Getting Started" Guide for the Bayut REST API, listed on the RapidAPI Platform.

Bayut API Documentation

Bayut API helps you to quickly extract clean, structured and reliable data from bayut.com, effortlessly.

It makes it super easy to programmatically scrape up-to-date property data from the Bayut website, in JSON format.

Using this API, you can search for UAE real estate properties, look up Dubai transaction, find agents, agencies, developers, and much more.

💡 Checkout our swagger documentation for the details on each endpoint!


Before getting started, you must first get your API Key to authenticate your calls. You'll need to pass it in the headers, along with the requests, to use the API smoothly.

Header -

x-rapidapi-key: [RAPIDAPI_KEY]

Wondering how to subscribe to Bayut API and get your API Key? Read this step by step guide -


API's Base URL:

https://bayut-api1.p.rapidapi.com

Endpoints:
 
· Locations Search
· Properties Search
· Property Info
· Agency Info
· Agencies by Name
· Agencies by Locations
· Developers Search
· Amenities Search
· Agent Info
· Agents by Name
· Agents by Filters
· Agents in Agency
· Transactions
 

🔗 View on swagger

This endpoint helps you find places in UAE (like cities, streets, neighbourhoods, buildings) based on your search query.

This endpoint works like an auto-complete. When a user types something like "dub" or "abu", it returns matching locations such as "Dubai" or "Abu Dhabi" along with their sub-areas. Each result includes details like IDs, location hierarchy, and coordinates.

Endpoint -

GET /locations_search?query={query}

GET /locations_search?query={query}&page={page}&langs={langs}

Query Parameters -

ParameterTypeRequiredDescription
querystring✅ YesThe search term (e.g., "dub", "abu") — usually what your user types into a search box.
pageinteger❌ NoPagination index (starting from 0).
langsstring❌ NoComma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Usage -

Each location in the response includes a unique id. You can plug them into other endpoints like Properties Search, Agencies by Location, or Agents by Filters to filter results for specific locations.

This way, your app can support dynamic, location-aware browsing and filtering.


🔗 View on swagger

Returns a list of real estate listings from Bayut based on the given filters.

You can search by purpose (for-sale / for-rent), category (like apartments, villas, commercial, etc.), locations, number of rooms/baths, price range, developer, agency, agent, and even include advanced filters like floorplans, 360 tours, amenities, and more.

Endpoint -

/properties_search

/properties_search?page={page}&langs={langs}

Query Parameters

ParameterTypeRequiredDescription
pageinteger❌ NoPagination index (starting from 0).
langsstring❌ NoComma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Request Body Parameters (JSON)

FieldTypeDescription
purposestringListing type: for-sale or for-rent
categorystringProperty category (residential, hotel-apartments, apartments, townhouses, villas, penthouse, villa-compound, residential-plots, residential-floors, residential-building, commercial, offices, shops, warehouses, labour-camps, commercial-villas, bulk-units, commercial-plots, commercial-floors, commercial-buildings, factories, industrial-land, mixed-use-land, showrooms, commercial-properties)
locations_idsarray of integersList of location IDs (from /locations_search).
indexstringSort by popular, verified, latest, lowest_price, highest_price, or projects
is_completedbooleantrue for completed, false for under-construction
agent_id, agency_id, developer_idintegerFilters for agent, agency, or developer
rooms, bathsarray of integersNumber of bedrooms/bathrooms (e.g., [1, 2, 3])
is_furnishedbooleanFilter furnished/unfurnished listings
completion_percent_min, completion_percent_maxintegerFor filtering construction progress
price_min, price_maxfloatPrice range (AED)
area_min, area_maxfloatArea range (sqft)
has_video, has_360_tour, has_floorplanbooleanMultimedia filters
amenitiesarray of stringsDesired amenities (e.g., ["Sauna", "ATM Facility"]). You can get these from /amenities endpoint.
completion_datestringExpected completion date (format: DD-MM-YYYY)
sale_typestringType of off-plan sale (any, new, resale, by_developer)

Usage -

Example 1 — For Sale

Example 2 — For Rent


Property Info

🔗 View on swagger

This endpoint gives you complete, in-depth details of a single property listing from Bayut, for the given property_id. The response output would include property's pricing, layout, location, amenities, agent/agency details, photos, videos, floor plans, and more.

You can get the property_id from:

  1. Directly from any Bayut listing URL — it's the number at the end of the URL.

    For example:

    https://www.bayut.com/property/details-11065329.html → the property ID is 11065329.
  2. The results of the Properties Search endpoint (each result includes an id).

Endpoint -

code GET /property/{property_id}

code GET /property/{property_id}?langs={langs}

Parameters -

ParameterTypeRequiredDescription
property_idinteger✅ Yes(Path parameter) The unique ID of the property you want to retrieve.
langsstring❌ No(Query parameter) Comma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Usage -


Agency Info

🔗 View on swagger

This endpoint returns the full profile of a real estate agency on Bayut using the given agency_id.

It includes details like the agency’s name, logo, contact info, license, location, service areas, performance tier, property stats, and more.

You can get the agency_id from:

  1. The URL of the agency’s profile page on Bayut.

    For example:

    https://www.bayut.com/companies/k-a-homes-properties-102062/ → the agency_id is 102062.
  2. The responses of other endpoints, such as: agencies_by_name, agencies_by_locations, properties_search, property_info, or any of the agent-related endpoints.

Endpoint -

code GET /agency/{agency_id}

code GET /agency/{agency_id}?langs={langs}

Parameters

ParameterTypeRequiredDescription
agency_idinteger✅ Yes(Path parameter) Unique ID of the agency.
langsstring❌ No(Query parameter) Comma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Usage -


Agencies by Name

🔗 View on swagger

This endpoint works like an auto-complete for real estate agencies on Bayut.

Enter part of an agency’s name, and it returns matching agencies with details like ID, logo, license info, contact numbers, service areas, property stats, and agents.

Endpoint -

code GET /agencies_by_name?query={query}

code GET /agencies_by_name?query={query}&page={page}&langs={langs}

Parameters -

ParameterTypeRequiredDescription
querystring✅ YesAgency name or partial name to search (e.g. "k a").
pageinteger❌ NoPagination index (starting from 0).
langsstring❌ NoComma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Usage -


Agencies by Locations

🔗 View on swagger

This endpoint helps you find real estate agencies active in specific areas — places where they’ve listed properties on Bayut. It’s useful to discover agencies that operate within a city, community, or any location hierarchy.

Just pass one or more location_ids (from the Locations Search endpoint), and it returns matching agencies with their name, logo, contact info, license details, service areas, agent count, property stats and more.

Endpoint -

code GET /agencies_by_locations?locations_ids={locations_ids}

code GET /agencies_by_locations?locations_ids={locations_ids}&page={page}&langs={langs}

Parameters

ParameterTypeRequiredDescription
locations_idsstring✅ YesComma-separated list of location IDs to filter agencies by service areas. Get these from the Locations Search endpoint.
pageinteger❌ NoPagination index (starting from 0).
langsstring❌ NoComma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Usage -


🔗 View on swagger

This endpoint works like an auto-complete for real estate developers on Bayut. Enter a full or partial name, and it returns matching developers with their ID, logo, contact info, project stats, service areas, categories and more.

You can use the developer_id to filter properties in the Properties Search endpoint.

Endpoint -

code GET /developers_search?query={query}

code GET /developers_search?query={query}&page={page}&langs={langs}

Parameters -

ParameterTypeRequiredDescription
querystring✅ YesSearch keyword (full or partial name of the developer).
pageinteger❌ NoPagination index (starts from 0).
langsstring❌ NoComma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Usage -


🔗 View on swagger

This endpoint works like an auto-complete for amenities on Bayut. Enter a partial query, and it returns matching amenity names.

You can use these exact strings to filter properties in the Properties Search endpoint — for example, "Sauna", "Gym", or "Central Air Conditioning".

Endpoint -

code GET /amenities_search?query={query}

Parameters -

NameTypeRequiredDescription
querystring✅ YesA keyword to search for amenity names.

Usage -


Agent Info

🔗 View on swagger

This endpoint returns the full profile of a real estate agent on Bayut for the given agent_id.

It provides detailed information such as the agent’s name, bio, experience, photo, contact info, agency, service areas, specialties, stats, languages, social media links and more.

You can get the agent_id from:

Endpoint -

code GET /agent/{agent_id}

code GET /agent/{agent_id}?langs={langs}

Parameters -

NameTypeRequiredDescription
agent_idinteger✅ Yes(Path parameter) Unique ID of the agent you want to look up.
langsstring❌ No(Query parameter) Comma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Usage -


Agents by Name

🔗 View on swagger

This endpoint works like an auto-complete for real estate agents on Bayut.

Enter a keyword – usually part of the agent’s name – and it returns matching agent profiles with details like name, photo, contact info, agency, service areas, specialties, performance stats, languages, and more.

Endpoint -

code GET /agents_by_name?query={query}

code GET /agents_by_name?query={query}&page={page}&langs={langs}

Parameters -

NameTypeRequiredDescription
querystring✅ YesKeyword to match agent names.
pageinteger❌ NoPagination index (starting from 0).
langsstring❌ NoComma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Usage -


Agents by Filters

🔗 View on swagger

Search real estate agents on Bayut based on specific filters like locations (locations_ids), category (residential/commercial), and property purpose (for-sale/for-rent).

It returns detailed agent profiles along with their agency info, specialties, contact details, stats, supported languages, and more.

Endpoint -

code GET /agents_by_filters

code GET /agents_by_filters?locations_ids={locations_ids}&purpose={purpose}&category={category}&page={page}&langs={langs}

Query Parameters

NameTypeDescription
locations_idsstringComma-separated list of location IDs to filter agents by service areas. Get from Locations Search endpoint.
purposestringListing intent to filter agents (for-sale or for-rent).
categorystringProperty category code to filter agents (e.g., residential, commercial, short_term_residential, long_term_residential).
pageintegerPagination index (starting from 0).
langsstringComma-separated list of preferred language codes (en, ar, ru, zh). Defaults to English if not provided.

Usage -


Agents in Agency

🔗 View on swagger

Returns a list of agents working at a specific real estate agency on Bayut, for the given agency_id.

For each agent, you'll get detailed profile information — including name, photo, experience, contact numbers, languages spoken, specialties, service areas, social links, and performance stats like listing counts and TruCheck status.

To get the agency_id, you can:

  1. Extract it from the agency profile URL on Bayut —

    For example:

    https://www.bayut.com/companies/k-a-homes-properties-102062/ → agency_id is 102062
  2. Or retrieve it via endpoints like Agencies by Name, Agencies by Locations, Properties Search, etc.

Endpoint -

code GET /agents_in_agency/{agency_id}

code GET /agents_in_agency/{agency_id}?langs={langs}

Parameters

NameTypeRequiredDescription
agency_idstring✅ Yes(Path parameter) Agency's unique identifier whose agents will be retrieved
langsstring❌ No(Query parameter) Comma-separated language codes for translated fields. Options: en, ar, ru, zh. Default is en.

Usage -


Transactions

🔗 View on swagger

Fetch detailed real estate transaction records across Dubai using flexible filters like location, price, area, date range, bedroom count, property category, and more.

Each transaction result includes price, property details, location, agent ID, and contract info.

You can also sort results and paginate through them using the page parameter.

Endpoint -

code POST /transactions

code POST /transactions?page={page}

Query Parameters -

NameTypeRequiredDescription
pageinteger❌ NoPagination index (starts from 0).

Request Body (JSON) -

NameTypeDescription
purposestringTransaction purpose: for-sale or for-rent.
locations_idsarray of integersList of location IDs to filter by (get from Locations Search endpoint).
categorystringProperty category code (residential, commercial, villas, apartments, offices, shops, warehouses, factories, labour-camps, commercial-buildings, commercial-properties, residential-plots, commercial-plots, townhouses, residential-building, penthouse, hotel-apartments, industrial-land, mixed-use-land, showrooms, commercial-villas).
completion_statusstringConstruction status: completed or under-construction.
contract_typestringType of contract: New, Renewal, or All.
sort_bystringSort field: date, amount, rent, builtup_area, beds, plot_area, duration.
orderstringSort order: asc or desc.
bedsarray of integersFilter by number of bedrooms.
area_minintegerMinimum built-up area (sqft).
area_maxintegerMaximum built-up area (sqft).
price_minintegerMinimum transaction price (AED).
price_maxintegerMaximum transaction price (AED).
start_datestring (YYYY-MM-DD)Filter from this date (inclusive).
end_datestring (YYYY-MM-DD)Filter up to this date (inclusive).
time_framestringAggregation window: 1m, 3m, 6m, 12m, 36m.

Usage -


Final thoughts -

As of now, this API consists of 13 endpoints, 11 of which use the GET and 2 use POST method. We'll try to add more endpoints in the future and improve its efficiency to provide you with the best Bayut API possible.

If you've any thoughts on it, feel free to share them. We'll appreciate your feedback and try to improve it further.

Our email ID: bayut.restapi@gmail.com

Thanks for reading and happy coding!


PS: We post tutorials, videos, code snippets, and insights related to Bayut and Bayut API. So be sure to follow us on: