Bayut Scraper avatar

Bayut Scraper

Pricing

from $0.69 / 1,000 listings

Go to Apify Store
Bayut Scraper

Bayut Scraper

Extract real estate listings from Bayut.com: prices, rooms, area, agent and agency contacts, TruCheck verification, permits, and payment plans for UAE properties.

Pricing

from $0.69 / 1,000 listings

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Bayut Scraper

Extract real estate listings from Bayut.com, the UAE's largest property portal, without writing a single line of scraping code.

Search any UAE city or area for sale or rent, filter by price, bedrooms, area, furnishing, and completion status, and get clean, structured listing data — prices, agent and agency contacts, TruCheck verification, permits, and payment plans — ready for analysis or integration.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Use the Apify actor "parsebird/bayut-scraper" via the ApifyClient. Example (Python): from apify_client import ApifyClient; client = ApifyClient("<APIFY_TOKEN>"); run = client.actor("parsebird/bayut-scraper").call(run_input={"mode": "search", "locations": ["dubai"], "purpose": "for-sale", "propertyType": "apartments", "maxListings": 20, "fetchDetails": True}); items = list(client.dataset(run["defaultDatasetId"]).iterate_items()). Key inputs: mode ("search" or "url", default "search"), locations (array of city/area slugs, default ["dubai"]), urls (array, for URL mode), purpose ("for-sale"/"to-rent", default "for-sale"), propertyType (default "property" = any type), minPrice/maxPrice, minBedrooms/maxBedrooms, minArea/maxArea, furnishing, completionStatus, rentFrequency, verifiedOnly, sortBy, maxPages (default 0 = unlimited), maxListings (default 5, 0 = unlimited), fetchDetails (default true), incrementalMode, stateKey, resumeFromRunId. Output fields per listing: externalID, url, purpose, propertyType, title, price, currency, rentFrequency, rooms, baths, area, areaUnit, furnishingStatus, completionStatus, country, city, neighbourhood, building, latitude, longitude, isVerified, verificationStatus, agentName, agencyName, phoneMobile, phoneWhatsapp, permitNumber, referenceNumber, images, amenities, description, paymentPlans, createdAt, updatedAt, scrapedAt. Full API reference: https://apify.com/parsebird/bayut-scraper/api. Get an API token at https://console.apify.com/account/integrations.

What does Bayut Scraper do?

Bayut Scraper crawls Bayut.com — the UAE's largest real estate portal, part of the Dubizzle Group — and returns every listing as a clean JSON/CSV/Excel row instead of raw HTML. It works as a Bayut.com API alternative for anyone who needs UAE property data without maintaining their own scraper or paying for site access.

  • 🔍 Search by city or area — Dubai, Abu Dhabi, Sharjah, Ajman, Ras Al Khaimah, and every sub-area (e.g. dubai/dubai-marina), for sale or for rent
  • 🧭 Or paste search URLs — copy any filtered Bayut search URL from your browser and let the actor paginate it automatically
  • 🏷️ Filter by price, bedrooms, area, furnishing, completion status, and verification — applied server-side where Bayut supports it and re-checked locally so results are always accurate
  • 📄 Optional full-detail enrichment — complete description, grouped amenities, and Trakheesi permit number per listing
  • 🔁 Incremental (change-tracking) mode — schedule daily runs and get only NEW, UPDATED, and REAPPEARED listings, with EXPIRED tracking once a search is fully scanned
  • ⏸️ Resume support — continue an interrupted large pull from a previous run or dataset ID without re-scraping what you already have
  • ⚙️ Runs on Apify: scheduling, REST API access, webhooks/integrations (Zapier, Make, Google Sheets), and export to JSON, CSV, or Excel

What data can you extract from Bayut.com?

FieldDescription
externalID, urlBayut's internal listing ID and canonical URL
purpose, propertyTypefor-sale / to-rent, and apartment / villa / townhouse / etc.
title, descriptionListing title and full seller description (with fetchDetails)
price, currency, rentFrequencyPrice in AED, and rent period for rentals
rooms, baths, area, areaUnitBedrooms, bathrooms, and floor area
furnishingStatus, completionStatusFurnished/unfurnished, ready/off-plan
country, city, neighbourhood, building, latitude, longitudeFull location hierarchy and coordinates
isVerified, verificationStatus, trucheckedAtBayut TruCheck™ verification
agentName, agencyName, phoneMobile, phoneWhatsappAgent and agency contact details
permitNumber, referenceNumberTrakheesi permit (with fetchDetails) and Bayut reference
images, imageCount, amenities, paymentPlansFull photo gallery, grouped amenities, and off-plan payment plans

How to scrape Bayut.com with Bayut Scraper

  1. Open the actor's Input tab on Apify Console.
  2. Pick Search by location mode, choose a city/area (e.g. dubai), a purpose (for-sale or to-rent), and a property type.
  3. Optionally set price, bedroom, area, furnishing, or verification filters, and a maxListings cap.
  4. Click Start and watch listings land in the Dataset tab in real time.
  5. Export the results as JSON, CSV, or Excel, or pull them via the API tab.
  6. To track a search over time, turn on Incremental mode and attach a Schedule so it only returns what changed.

Prefer to paste URLs instead? Open Bayut.com in your browser, apply any filters you like, copy the resulting URL, and paste it into URL mode — one or many URLs, each paginated forward independently.

Input parameters

ParameterTypeRequiredDefaultDescription
modestringNosearchsearch (filters) or url (paste URLs)
locationsarraySearch mode["dubai"]City/area slugs, e.g. dubai, dubai/dubai-marina
urlsarrayURL modeBayut search URLs, paginated automatically
purposestringNofor-salefor-sale or to-rent
propertyTypestringNopropertyproperty (any), apartments, villas, townhouses, penthouses, hotel-apartments, compounds, duplex, land, full-floors, half-floors, whole-buildings, bulk-units, commercial
minPrice / maxPriceintegerNoPrice range in AED
minBedrooms / maxBedroomsintegerNoBedroom range (0 = studio)
minArea / maxAreaintegerNoArea range in sqm
furnishingstringNoanyany, furnished, unfurnished
completionStatusstringNoanyany, completed, off-plan
rentFrequencystringNoanyany, yearly, monthly, weekly, daily (rent only)
verifiedOnlybooleanNofalseOnly TruCheck-verified listings
sortBystringNopopularpopular, newest, oldest, price-asc, price-desc, verified-score-desc
maxPagesintegerNo0Safety cap on pages walked per location/URL. 0 = unlimited (walks until a natural stop)
maxListingsintegerNo5Sole soft cap across all locations/URLs. 0 = unlimited
fetchDetailsbooleanNotrueAdds description, amenities, and permit number per listing
proxyobjectNoUAE residentialApify Proxy configuration
resumeFromRunIdstringNoContinue one interrupted/previous pull by run or dataset ID
incrementalModebooleanNofalseDaily/recurring monitoring — only changed listings are returned
stateKeystringNoautoName a monitoring campaign
emitUnchanged / emitExpiredbooleanNofalseIncremental mode: also return (and bill) unchanged/expired rows

Output example

{
"externalID": "16478448",
"url": "https://www.bayut.com/property/details-16478448.html",
"purpose": "for-sale",
"propertyType": "apartments",
"title": "Fresh Cancellation | Trophy Asset | Sea View",
"price": 4289000,
"currency": "AED",
"rentFrequency": null,
"rooms": 2,
"baths": 3,
"area": 113.09,
"areaUnit": "sqm",
"furnishingStatus": "unfurnished",
"completionStatus": "under-construction",
"country": "UAE",
"city": "Dubai",
"neighbourhood": "Palm Jebel Ali",
"isVerified": true,
"agentName": "Tamara Kenia",
"agencyName": "K U N Real Estate",
"phoneMobile": "+971585498662",
"referenceNumber": "102520-BX0Lxl",
"images": ["https://images.bayut.com/thumbnails/865731748-800x600.jpeg"],
"imageCount": 12,
"amenities": [{ "group": "Features", "items": [{ "slug": "furnished", "text": "Furnished", "value": null }] }],
"description": "Palm Central Private Residences by Nakheel | Frond N ...",
"scrapedAt": "2026-09-12T12:00:00.000Z"
}

Python

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("parsebird/bayut-scraper").call(run_input={
"mode": "search",
"locations": ["dubai/dubai-marina"],
"purpose": "for-sale",
"propertyType": "apartments",
"maxListings": 50,
"fetchDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["price"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('parsebird/bayut-scraper').call({
mode: 'search',
locations: ['dubai'],
purpose: 'to-rent',
propertyType: 'apartments',
maxListings: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Use cases

  • Track asking prices and price-per-sqft trends across Dubai communities
  • Build a lead list of verified agents and agencies for a specific area
  • Monitor new off-plan project launches and payment plan terms
  • Feed a property-search app or investment dashboard with live UAE listings
  • Compare rent vs. buy pricing across neighbourhoods

How it works

  1. The actor opens a UAE residential proxy session and passes Bayut's anti-bot check once per run.
  2. For each location/URL, it walks Bayut's own search results page by page, capturing the same structured data Bayut's website itself uses to render listings.
  3. Filters you set (price, bedrooms, area, furnishing, completion, verification) are applied and double-checked against each listing.
  4. With fetchDetails on, each listing's page is read for its full description, amenities, and permit number.
  5. Results are pushed to the dataset as title, price, rooms, contact info, and every other field above, ready to view, filter, and export in Apify Console.

How much does it cost to scrape Bayut.com?

Bayut Scraper uses pay-per-event pricing — you pay only for results, not for platform compute time.

EventPrice per eventPrice per 1,000
listing$0.00099$0.99
enrichment$0.00099$0.99

A listing event fires once per returned listing; an enrichment event fires once per listing when fetchDetails is on and the detail page is read successfully. Scraping 1,000 listings with details enabled costs roughly $1.98 — under $2 for a full page of 1,000 results with contacts, descriptions, and amenities. Apify's monthly platform usage credits (included with every plan) cover the underlying compute and proxy costs.

Yes — scraping publicly available data such as real estate listings is generally legal, and this actor only collects data that Bayut already displays publicly on its website. That said, you're responsible for how you use the data: respect Bayut's terms of service, avoid excessive request rates, and don't republish personal contact data in ways that violate privacy law. See Apify's blog post on the legality of web scraping for more detail.

FAQ

How fresh is the data? Every run scrapes Bayut.com live — there's no cache. For ongoing monitoring, turn on Incremental mode and schedule a daily run.

Can I scrape by neighbourhood, not just city? Yes. Locations accept any Bayut area slug, e.g. dubai/dubai-marina, dubai/downtown-dubai, or abu-dhabi/al-reem-island.

What's the difference between Resume and Incremental mode? Resume (resumeFromRunId) continues one specific interrupted or large pull without re-scraping what's already saved. Incremental mode is for a recurring schedule — it remembers the previous run automatically and returns only what changed.

Can I schedule recurring runs? Yes — use Apify's built-in Schedule feature to run daily, weekly, or at any interval, and combine it with Incremental mode to get only new and updated listings.

Does this work for renting as well as buying? Yes. Set purpose to to-rent and optionally rentFrequency to yearly, monthly, weekly, or daily.

What if a run returns 0 results? Double-check your location slug matches Bayut's own URL structure, and that your price/bedroom filters aren't too narrow. Open an issue on the actor's Issues tab if the problem persists.

Is API access available? Yes — every run can be triggered and its results retrieved via the Apify API, documented on the actor's API tab, with client libraries for Python, JavaScript, and more.