Bayut Scraper
Pricing
from $0.69 / 1,000 listings
Go to Apify Store
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.
Bayut Scraper
Pricing
from $0.69 / 1,000 listings
Extract real estate listings from Bayut.com: prices, rooms, area, agent and agency contacts, TruCheck verification, permits, and payment plans for UAE properties.
You can access the Bayut Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.3", "x-build-id": "bv5ESPlV7VsPt5YRC" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/parsebird~bayut-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-parsebird-bayut-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/parsebird~bayut-scraper/runs": { "post": { "operationId": "runs-sync-parsebird-bayut-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/parsebird~bayut-scraper/run-sync": { "post": { "operationId": "run-sync-parsebird-bayut-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "properties": { "mode": { "title": "Mode", "enum": [ "search", "url" ], "type": "string", "description": "`search` = pick locations and filters below, `url` = paste Bayut search URLs directly.", "default": "search" }, "locations": { "title": "Locations", "type": "array", "description": "Search mode. City or area slugs, e.g. `dubai`, `abu-dhabi`, `dubai/dubai-marina`. One search is run per location.", "items": { "type": "string" } }, "urls": { "title": "Bayut URLs", "type": "array", "description": "URL mode. Paste Bayut search-result URLs (with any filters already applied in your browser). Each URL is paginated forward independently; filter fields below are ignored in this mode.", "items": { "type": "string" } }, "purpose": { "title": "Purpose", "enum": [ "for-sale", "to-rent" ], "type": "string", "description": "Search mode.", "default": "for-sale" }, "propertyType": { "title": "Property type", "enum": [ "property", "apartments", "villas", "townhouses", "penthouses", "hotel-apartments", "compounds", "duplex", "land", "full-floors", "half-floors", "whole-buildings", "bulk-units", "commercial" ], "type": "string", "description": "Search mode.", "default": "property" }, "minPrice": { "title": "Min price (AED)", "minimum": 0, "type": "integer", "description": "Search mode. Sent to Bayut and re-checked locally." }, "maxPrice": { "title": "Max price (AED)", "minimum": 0, "type": "integer", "description": "Search mode." }, "minBedrooms": { "title": "Min bedrooms", "minimum": 0, "maximum": 7, "type": "integer", "description": "Search mode. 0 = studio." }, "maxBedrooms": { "title": "Max bedrooms", "minimum": 0, "maximum": 7, "type": "integer", "description": "Search mode." }, "minArea": { "title": "Min area (sqft)", "minimum": 0, "type": "integer", "description": "Search mode. Applied locally." }, "maxArea": { "title": "Max area (sqft)", "minimum": 0, "type": "integer", "description": "Search mode. Applied locally." }, "furnishing": { "title": "Furnishing", "enum": [ "any", "furnished", "unfurnished" ], "type": "string", "description": "Search mode. Applied locally.", "default": "any" }, "completionStatus": { "title": "Completion status", "enum": [ "any", "completed", "off-plan" ], "type": "string", "description": "Search mode. Applied locally.", "default": "any" }, "rentFrequency": { "title": "Rent frequency", "enum": [ "any", "yearly", "monthly", "weekly", "daily" ], "type": "string", "description": "Search mode, rent only.", "default": "any" }, "verifiedOnly": { "title": "Verified (TruCheck) listings only", "type": "boolean", "description": "Search mode. Applied locally.", "default": false }, "sortBy": { "title": "Sort by", "enum": [ "popular", "newest", "oldest", "price-asc", "price-desc", "verified-score-desc" ], "type": "string", "description": "Applied locally to the collected results per location/URL.", "default": "popular" }, "maxPages": { "title": "Max pages per location / URL", "minimum": 0, "type": "integer", "description": "Safety bound on result pages walked per location or URL (~24 listings per page). 0 (default) = unlimited: the walk stops on its own once a page comes back empty, once Bayut's own last-page count is reached, or once Max listings is hit. Set a number only for an explicit page cap below that natural stop.", "default": 0 }, "maxListings": { "title": "Max listings", "minimum": 0, "type": "integer", "description": "The sole soft cap on the run, applied across all locations/URLs. 0 = unlimited.", "default": 5 }, "fetchDetails": { "title": "Fetch full details", "type": "boolean", "description": "Visit each listing's page for a complete description, grouped amenities, and Trakheesi permit number when available. Adds the enrichment charge per listing.", "default": true }, "proxy": { "title": "Proxy configuration", "type": "object", "description": "Bayut is protected by an anti-bot challenge; a UAE residential proxy is required and is the default.", "default": { "useApifyProxy": true, "apifyProxyGroups": [ "RESIDENTIAL" ], "apifyProxyCountry": "AE" } }, "resumeFromRunId": { "title": "Resume from run / dataset ID", "type": "string", "description": "Continue ONE interrupted or previous large pull. Paste a previous run ID or dataset ID; listings already collected there are skipped and only new ones are appended. For recurring monitoring of the same search, use Incremental mode instead." }, "incrementalMode": { "title": "Incremental mode", "type": "boolean", "description": "Track changes across scheduled runs of the same search. Adds a `changeType` (NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED) and `changedFields` to every row. The first run returns everything as NEW.", "default": false }, "stateKey": { "title": "State key", "type": "string", "description": "Name a monitoring campaign, or leave empty to derive one automatically from mode + locations/URLs + filters + fetchDetails." }, "emitUnchanged": { "title": "Emit unchanged rows", "type": "boolean", "description": "Incremental mode only. Also return (and bill) listings identical to the last run.", "default": false }, "emitExpired": { "title": "Emit expired rows", "type": "boolean", "description": "Incremental mode only. Also return (and bill) listings tracked before but no longer found. Only produced once a run scans every tracked search to its natural end (not capped, blocked, or resumed).", "default": false } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Bayut Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: