
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Bayut property listings from the UAE, Saudi Arabia, Qatar, Oman and Jordan: prices, beds, baths, area, location, agency, agent phone, photos, amenities and more, from search URLs, location searches, listing pages, brokers and companies.
Turn any Bayut search into a clean spreadsheet of property listings: price, bedrooms, bathrooms, area, full location, agency, agent and phone, photos, amenities, completion status and more. Works on bayut.com (UAE), bayut.sa (Saudi Arabia), bayut.qa, bayut.om and bayut.jo, with no login and no browser.
market and currency.| Field | What it does |
|---|---|
startUrls | Bayut URLs: search results, /property/details-….html listings, /brokers/… and /companies/… pages, on any of the five sites |
locations | Place names to search, e.g. Dubai Marina (uses market and the filters) |
maxItems | Maximum results per URL or location (default 20, 0 = no limit) |
market | Site for location searches: ae, sa, qa, om, jo |
purpose, propertyType, minPrice, maxPrice, beds, minBaths, minArea, maxArea, furnishing, completionStatus, rentFrequency, verifiedOnly, keywords, sort | Filters for location searches (search URLs keep their own filters) |
includeDetails | Also open each listing page for photos with titles, videos, floor plans, 360 tours, full agency profile |
proxyConfiguration | Proxy settings (UAE residential by default) |
{
"startUrls": ["https://www.bayut.com/for-sale/apartments/dubai/"],
"locations": ["Dubai Marina"],
"purpose": "for-rent",
"beds": ["1", "2"],
"maxPrice": 150000,
"maxItems": 100
}
One row per listing. The table view shows the key columns; the JSON keeps every field Bayut's search index returns.
| Field | Description |
|---|---|
url | Listing page |
title, purpose, price, currency, rentFrequency | What is offered and for how much |
propertyType, rooms, baths, area (m²), areaSqft | Specs |
city, community, subCommunity, locationPath, location[], geography | Where it is, with the full location tree and coordinates |
agencyName, agentName, mobile, whatsapp, agency, ownerAgent, phoneNumber | Who lists it and how to reach them |
coverPhotoUrl, photoUrls, photoCount, videoCount | Media |
completionStatus, completionDetails, paymentPlanSummaries, furnishingStatus, amenities | Status and features |
isVerified, verification, referenceNumber, createdAt, updatedAt | Checks and dates (Unix seconds) |
description | Listing description (when Bayut provides it in search) |
market, externalID, sourceUrl, detailed | Bookkeeping |
Example (shortened, sample values):
{
"url": "https://www.bayut.com/property/details-10000001.html",
"market": "ae",
"currency": "AED",
"externalID": "10000001",
"title": "Sea View | High Floor | Vacant on Transfer",
"purpose": "for-sale",
"price": 1850000,
"propertyType": "Apartments",
"rooms": 2,
"baths": 3,
"area": 118.08,
"areaSqft": 1271.0,
"city": "Dubai",
"community": "Dubai Marina",
"subCommunity": "Marina Gate",
"locationPath": "Dubai > Dubai Marina > Marina Gate",
"agencyName": "Example Homes Real Estate",
"agentName": "Sample Agent",
"mobile": "+971500000000",
"coverPhotoUrl": "https://images.bayut.com/thumbnails/100000001-1066x800.jpeg",
"completionStatus": "completed",
"furnishingStatus": "unfurnished",
"isVerified": true,
"isAvailable": true,
"detailed": false
}
Broker and company rows have type (agent or agency), url, name, logoUrl, externalID and every public profile field from the index: for brokers the agency, business phone, WhatsApp and e-mail where published, languages, specialities, service areas and listing counts; for companies licences (RERA/ORN), agent count, locations and listing counts.
You pay a small fee per result saved (see the pricing tab), plus the platform usage of the run: a little compute and the proxy traffic. Empty searches cost nothing in results. Search rows are compact, so proxy traffic stays low; Full listing details opens one page per listing and uses noticeably more traffic.
Is it legal to scrape Bayut? The scraper only reads public listing pages that anyone can open without an account. You are responsible for how you use the data, especially personal data such as agent phone numbers; follow the UAE PDPL, GDPR and Bayut's terms where they apply.
Do I need a Bayut account or my own proxy? No. No login is used. Bayut UAE and Saudi Arabia only open for visitors in the UAE, so those requests automatically use a UAE residential exit.
How many results can I get? As many as the search has. Bayut shows the total for each search; each input stops at your Maximum results or when the search is exhausted.
Why is a field empty? Bayut only fills what the agent entered. For example, description, completionDetails or paymentPlanSummaries are not available for every listing; turn on Full listing details to get the most fields.
Can I schedule it or use the API? Yes. Save a task with your input and schedule it (e.g. daily price tracking), or start runs and read the dataset through the API.
Do filters apply to my URLs? No, a URL keeps the filters it already contains. The Filters section applies to Locations to search.
/ar/للبيع/...) are not supported; open the English version of the page and copy that URL.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalBayut URLs
Bayut pages to scrape, from bayut.com (UAE), bayut.sa (Saudi Arabia), bayut.qa, bayut.om or bayut.jo. Search result URLs keep every filter you set on the site. Listing pages (/property/details-....html), broker and company profiles, and broker or company directories (e.g. /brokers/dubai/) work too.
locationsarrayOptionalLocations to search
Search by place name instead of a URL, e.g. 'Dubai Marina' or 'Jumeirah Village Circle'. Uses the market and the filters below. The best matching Bayut location is used.
maxItemsintegerOptionaldefault 20Maximum results per URL or location
Maximum results for each URL or location. 0 means no limit (everything the search has).
marketenumOptionaldefault "ae"Market (for location searches)
Which Bayut site the location searches use. URLs always use their own site.
purposeenumOptionaldefault "for-sale"Purpose
Buy or rent. Applies to location searches; search URLs keep their own filters.
propertyTypeenumOptionaldefault ""Property type
Only this property type.
minPriceintegerOptionalMinimum price
In the market's currency (AED, SAR, QAR, OMR or JOD).
maxPriceintegerOptionalMaximum price
In the market's currency.
bedsarrayOptionalBedrooms
Only listings with these bedroom counts. Leave empty for any.
minBathsintegerOptionalMinimum bathrooms
At least this many bathrooms.
minAreaintegerOptionalMinimum area (sq ft)
Built-up area in square feet.
maxAreaintegerOptionalMaximum area (sq ft)
Built-up area in square feet.
furnishingenumOptionaldefault ""Furnishing
Furnished or unfurnished only.
completionStatusenumOptionaldefault ""Completion status
Ready or off-plan (for-sale searches only).
rentFrequencyenumOptionaldefault ""Rent frequency
How the rent is quoted (rent searches only).
verifiedOnlybooleanOptionaldefault falseVerified listings only
Only listings Bayut marks as verified (TruCheck).
keywordsstringOptionalKeywords
Comma-separated keywords, e.g. 'sea view, balcony'.
sortenumOptionaldefault "popular"Sort by
Order of results for location searches.
includeDetailsbooleanOptionaldefault falseFull listing details
Also open each listing page to add the full photo set with titles, videos, floor plans, 360 tours, agency profile and other page-only fields. Slower and uses more proxy traffic; search fields (price, specs, location, agent, phone, amenities, description) are always included.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Bayut UAE and Saudi Arabia only open for visitors in the UAE, so those requests always go through a UAE residential exit. Qatar, Oman and Jordan use the proxy you choose here.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| url | any | Listing |
| title | any | Title |
| purpose | any | Purpose |
| price | any | Price |
| currency | any | Currency |
| rentFrequency | any | Rent period |
| propertyType | any | Type |
| rooms | any | Beds |
| baths | any | Baths |
| areaSqft | any | Area (sq ft) |
| locationPath | any | Location |
| agencyName | any | Agency |
| agentName | any | Agent |
| mobile | any | Phone |
| completionStatus | any | Completion |
| furnishingStatus | any | Furnishing |
| isVerified | any | Verified |
| coverPhotoUrl | any | Photo |
| externalID | any | ID |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One Bayut listing, broker or company saved to the dataset | $0.0005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/bayut-scraper').call({
"startUrls": [
"https://www.bayut.com/for-sale/apartments/dubai/"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
],
"scrapelyProxyCountry": "AE"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/bayut-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/bayut-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Rental villas from a location search and a Dubai Marina URL.
Properties for rent from Bayut Saudi Arabia.
Listings from Bayut Qatar.
Agent and agency profiles from Bayut directory pages.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.