Bayut Scraper | UAE Saudi Egypt Bahrain Qatar
Pricing
from $2.50 / 1,000 results
Bayut Scraper | UAE Saudi Egypt Bahrain Qatar
Scrape Bayut UAE, Saudi Arabia, Egypt, Bahrain & Qatar listings for sale or rent. Extract prices, beds, agency & photos. Bayut API alternative.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape Bayut sale and rent listings across the Middle East — then download structured real estate data as Excel, CSV, or JSON.
This Actor is a practical Bayut API alternative for market research, investor screening, rental comps, and lead lists. Choose a market such as UAE or Saudi Arabia, pick Buy or Rent, and get listing rows with prices, beds, baths, area, agency, verification, amenities, and photos when present on the detail page.
- Pull homes for sale and apartments for rent from Bayut UAE, Saudi Arabia, Egypt, Bahrain, and Qatar
- Enrich search results with detail-page fields (description, amenities, off-plan / payment plans, media)
- Filter by property type (apartments, villas, office-spaces, …) — or paste known search / detail URLs
- Export to Excel / CSV / JSON, or connect Make, n8n, Zapier, Python, or MCP
- Pay per event — Actor start + each Dataset listing; no subscription
What does the Bayut Scraper do?
It turns a Bayut search into a clean Apify Dataset of property listings across five MENA markets.
Under the hood, the Actor:
- Builds the Bayut search URL for your market, channel, location, and property type
- Opens pages in Patchright Chrome (CloakBrowser) with a market-matched residential proxy
- Collects listing cards from
window.state.algolia.content.hits[] - Optionally opens detail pages and merges
window.state.property.data - Writes normalized records you can download or push into automations
Residential proxy matched to the market is recommended. Plain HTTP / curl is blocked by Bayut Captcha on most hosts.
What data can you extract from Bayut?
| Data point | Buy | Rent |
|---|---|---|
| Title & listing URL | ✅ | ✅ |
| List price or rent + period | ✅ | ✅ |
| Beds / baths / size (sqm) | ✅ | ✅ |
| Property type & purpose | ✅ | ✅ |
| Market + currency | ✅ | ✅ |
| Address / location tree | ✅ | ✅ |
| GPS coordinates (when shown) | ✅ | ✅ |
| Agency / contact availability | ✅ | ✅ |
| Verification / product labels | ✅ | ✅ |
| Amenities & photo gallery | ✅ | ✅ |
| Off-plan / payment plans | ✅ | — |
| Completion / furnished | ✅ | ✅ |
Every Dataset row also includes scrapedAt and source = bayut. An OUTPUT / RUN_SUMMARY record in the key-value store reports counts and warnings.
Why scrape Bayut property listings?
Market research and comps
Build sale and rent comps for Dubai, Riyadh, Cairo, Bahrain, and Qatar without copy-pasting from the site.
Investor and off-plan screening
Track prices, completion status, and payment-plan summaries when Bayut exposes them on the detail page.
Lead lists and agency coverage
Collect public agency names, listing URLs, and contact-method availability (without clicking Call / WhatsApp / Email).
Automations and AI agents
Schedule runs and send Datasets to Sheets, Slack, CRM, Make, n8n, Zapier, or an AI agent via Apify MCP / API.
How to scrape Bayut (no code required)
- Click Try for free
- Choose a market (
AE/SA/EG/BH/QA) - Choose a channel (Buy or Rent)
- Optionally set location, property type, max listings, and whether to open detail pages
- Keep Apify RESIDENTIAL proxy enabled (leave country empty for auto match)
- Click Start — open the Dataset tab when the run finishes
Start with maxItems: 5–10 and scrapeDetails: false to verify, then scale up.
Markets covered
| Code | Site | Default location | Currency | URL style |
|---|---|---|---|---|
AE | bayut.com | dubai | AED | /for-sale/{type}/{loc}/ |
SA | bayut.sa | riyadh | SAR | /en/for-sale/{type}/{loc}/ |
EG | bayut.eg | cairo | EGP | /en/{loc}/{type}-for-sale/ |
BH | bayut.bh | bahrain | BHD | /en/for-sale/{type}/{loc}/ |
QA | bayut.qa | qatar | QAR | /en/for-sale/{type}/{loc}/ |
Use markets: ["BH", "QA"] or market: "all" for multi-country runs (maxItems is fair-split). Jordan, Oman, and Kuwait are out of scope for now.
Pricing — how much does it cost to scrape Bayut?
Pay per event. No subscription.
| Event | Price | When charged |
|---|---|---|
apify-actor-start (Actor Start) | $0.005 | When a normal run starts (scaled by allocated memory GB; min 1 event) |
apify-default-dataset-item (result) | $2.50 / 1,000 ($0.0025 each) | Each listing written to the default Dataset |
User pays platform usage costs: Yes — compute, residential proxy, and other platform usage are billed to the user in addition to event charges.
Example product charges (events only):
| Scenario | Approx. event charge |
|---|---|
| Canary: 10 listings | $0.005 + 10 × $0.0025 = $0.030 |
| City scan: 100 listings | $0.005 + $0.25 = $0.255 |
| 1,000 listings | $0.005 + $2.50 = $2.505 |
Platform usage (especially residential proxy + browser memory) is separate and depends on run duration and memory. Default memory is 2048 MB (≈ 2× Actor Start events under PPE).
Note: The Actor path remains
bayut-uae-scraperfor API compatibility; the product covers UAE, Saudi Arabia, Egypt, Bahrain, and Qatar.
Input
| Field | Description |
|---|---|
market / markets | AE, SA, EG, BH, QA, or all |
channel | BUY (for-sale) or RENT (to-rent / for-rent) |
location | Path slug; empty → market default (dubai, riyadh, cairo, …) |
propertyType / propertyTypes | e.g. apartments, villas, office-spaces (property / all = market all-types) |
expandPrimaryCategories | Expand all into primary slugs instead of one all-types URL |
maxItems / maxPages | Caps (1–2000 / 1–100); ≈24 listings per SRP page |
maxMarketConcurrency | Parallel country browser sessions (default 2) |
strictQuality | Fail run if required Dataset fields are missing (default true) |
scrapeDetails | Enrich each card from the listing detail page |
startUrls | Optional SRP or LDP URLs (overrides market/channel/type) |
proxyConfiguration | Apify RESIDENTIAL recommended; omit country for per-market match |
Open the Input tab in Console for the full form and tooltips.
Output example
You can download the Dataset as JSON, CSV, Excel, or HTML.
{"id": 11786692,"listingId": "11786692","externalId": "11786692","url": "https://www.bayut.com/property/details-11786692.html","source": "bayut","market": "AE","channel": "BUY","title": "Spacious 2 Bedroom Apartment in Downtown Dubai","price": "AED 2,100,000","priceAmount": 2100000,"currency": "AED","numBedrooms": 2,"numBathrooms": 2,"propertyType": "Apartments","size": 115.5,"sizeUnit": "sqm","address": "Downtown Dubai · Dubai","agency": { "name": "Example Realty" },"scrapedAt": "2026-07-19T04:00:00+00:00"}
Is it legal to scrape Bayut?
Our scrapers are ethical and do not extract private user data such as emails, phone numbers from lead forms, or WhatsApp chats. They only extract what is publicly shown on listing pages. Personal data may still appear in public listing text; personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason. If you are unsure, consult your lawyers. Always respect Bayut’s Terms of Use and robots rules for automated access.
This Actor does not click Call, WhatsApp, Email, or other lead CTAs.
FAQ
Can I scrape Bayut UAE apartments for sale?
Yes. Set market to AE, channel to BUY, location to dubai (or another slug), and propertyType to apartments.
Can I scrape Bayut Saudi Arabia or Egypt?
Yes. Use market: "SA" (default location riyadh) or market: "EG" (default location cairo). Egypt uses SEO URLs such as /en/cairo/apartments-for-rent/.
Does this work as a Bayut API?
There is no official public Bayut listings API for this use case. This Actor is a practical Bayut API alternative that returns structured Dataset rows you can call via the Apify API, schedules, or integrations.
Why do I need a residential proxy?
Bayut challenges non-browser and many datacenter IPs with Captcha. Apify RESIDENTIAL proxies matched to the market country are strongly recommended.
What about Live View / Standby?
Standby mode exposes operational endpoints only (/, /health, /input-example, /openapi.json) — documented in the Standby tab. It does not run a full scrape. Always start a normal Actor run to collect listings.
Can I request Jordan / Oman / Kuwait?
Not yet. Those markets raise a clear input validation error (JO / OM / KW). Supported markets: AE, SA, EG, BH, QA.
Where can I get help?
Open an Issue on the Actor page in Apify Console with the Run ID, input JSON, and a short description of the failure. Include whether Captcha or empty results appeared in the log.
Tips for better Bayut scraping
- Start small (
maxItems: 5,scrapeDetails: false) to validate a market before large runs - Leave
apifyProxyCountryempty so each market uses a matching residential country - Prefer specific
propertyTypevalues when you need a category;property/alluses the market all-types slug - For multi-market runs, leave
locationempty so each market uses its default city - Raise memory only if the browser is unstable — higher memory increases Actor Start event count under PPE