{
  "openapi": "3.0.1",
  "info": {
    "title": "Dubai Real Estate Scraper — DLD Projects & Transactions",
    "description": "Scrape Dubai Land Department open data: off-plan projects with completion %, licensed developers, the area and community gazetteer with coordinates, daily market totals, and sales, mortgage or gift transactions by area, community or project with worth, count and price per sqm. No UAE Pass needed.",
    "version": "0.0",
    "x-build-id": "3y7m5KmhSzebJYPGU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rl1987~dubai-rest-api-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rl1987-dubai-rest-api-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/rl1987~dubai-rest-api-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rl1987-dubai-rest-api-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/rl1987~dubai-rest-api-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rl1987-dubai-rest-api-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": [
              "projects",
              "developers",
              "areas",
              "communities",
              "dailyTransactions",
              "transactions"
            ],
            "type": "string",
            "description": "What to scrape from Dubai Land Department's public data. Projects/Developers list the DLD registry; Areas/Communities are the id+name+coordinate gazetteer; Daily transaction totals is a market time-series; Transactions breaks down sales or mortgage registrations by area, community or project — see the Transactions section for the fields it needs.",
            "default": "projects"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "ar"
            ],
            "type": "string",
            "description": "Response language for names.",
            "default": "en"
          },
          "includeDetails": {
            "title": "Fetch full project details",
            "type": "boolean",
            "description": "Projects mode: also fetch each project's full record (location, buildings, lands, facilities) and merge it in. Adds one request per project.",
            "default": false
          },
          "query": {
            "title": "Project search",
            "type": "string",
            "description": "Projects mode: optional free-text filter (project or developer name)."
          },
          "grouping": {
            "title": "Group by",
            "enum": [
              "area",
              "community",
              "project"
            ],
            "type": "string",
            "description": "Transactions mode: break the market down by area, community or project. Area and Community expand a blank Area / community name into every id in the gazetteer (301 areas, 390 communities); Project cannot — it requires explicit ids.",
            "default": "community"
          },
          "transactionType": {
            "title": "Transaction type",
            "enum": [
              "sales",
              "mortgage"
            ],
            "type": "string",
            "description": "Transactions / Daily transaction totals mode: which registration type. Dubai Land Department publishes sales and mortgage only.",
            "default": "sales"
          },
          "propertyStatus": {
            "title": "Property status",
            "enum": [
              "all",
              "offplan",
              "completed"
            ],
            "type": "string",
            "description": "Transactions mode: off-plan vs completed. Required; defaults to All.",
            "default": "all"
          },
          "location": {
            "title": "Area / community name",
            "type": "string",
            "description": "Transactions mode, Group by = Area or Community: a place name (e.g. 'Dubai Marina', 'Business Bay'), matched against the gazetteer as a case-insensitive substring and resolved to every DLD id it matches — 'Al Barsha' covers nine communities, and all of them are fetched. Leave blank for the whole of Dubai (every id in the gazetteer, fetched in batches). Ignored when Group by = Project, which has no name lookup and needs explicit ids instead."
          },
          "fromDate": {
            "title": "From date",
            "type": "string",
            "description": "Transactions modes: start date (YYYY-MM-DD). Defaults to 90 days ago."
          },
          "toDate": {
            "title": "To date",
            "type": "string",
            "description": "Transactions modes: end date (YYYY-MM-DD). Defaults to today."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Roughly how many rows to return (0 = no limit).",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "type": "integer",
            "description": "Max requests in parallel.",
            "default": 5
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "type": "integer",
            "description": "Retries per request.",
            "default": 5
          },
          "maxSessionRotations": {
            "title": "Max session rotations",
            "minimum": 0,
            "type": "integer",
            "description": "Retries for a blocked status.",
            "default": 10
          },
          "maxRequestsPerCrawl": {
            "title": "Max requests per crawl",
            "minimum": 1,
            "type": "integer",
            "description": "Optional hard cap on HTTP requests made (not rows returned). Leave empty for no cap."
          },
          "ids": {
            "title": "Area/community/project IDs (raw override)",
            "type": "array",
            "description": "Transactions mode: raw DLD ids (area ids like 451, community ids like 'A-230', or DLD project ids), skipping name resolution. Optional for Group by = Area or Community, where it overrides Area / community name. REQUIRED for Group by = Project: there is no project name lookup, so without ids the run stops with an actionable message instead of asking the API for nothing.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The DLD open-data API is not bot-gated; a proxy is not required.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}