{
  "info": {
    "name": "WAQOV Dubai Property API",
    "description": "Dubai Land Department transactions, Ejari rents, buildings, projects and analytics. Set the apiKey variable to your key (get a free one at https://dldapi.waqov.com/signup). Generated from https://dldapi.waqov.com/openapi.json (API v2.39.5).",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "version": "2.39.5"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://dldapi.waqov.com"
    },
    {
      "key": "apiKey",
      "value": "",
      "description": "Your WAQOV API key (starts with bos24_). Keep it out of shared workspaces."
    }
  ],
  "item": [
    {
      "name": "Account & API Keys",
      "item": [
        {
          "name": "Account usage",
          "request": {
            "method": "GET",
            "header": [],
            "description": "The caller's limits and how much of each is used: monthly quota, today's requests against the daily cap (resets 00:00 UTC), per-minute limit and AI calls, with reset times. Also the last 7 UTC days of activity across all of the account's keys (requests and 429s per day, top endpoint families) from the request log, when the account last made a request, and when the current key was created and last used. An account route: free on every plan, not counted, and it keeps working when the monthly quota is used up. `rate_limited` counts per-minute and daily 429s; monthly-quota 429s are not in the request log.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/auth/usage",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "auth",
                "usage"
              ]
            }
          }
        },
        {
          "name": "Confirm API key reset",
          "request": {
            "method": "POST",
            "header": [],
            "description": "Uses the one-time token from a key-reset email (sent by POST /api/v1/auth/reset) and replaces the account's API key. The new key keeps the plan, this month's usage, password and subscription. Returns the new key once. 400 if the token is invalid, used or older than 1 hour.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/auth/reset/confirm",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "auth",
                "reset",
                "confirm"
              ]
            }
          }
        },
        {
          "name": "Confirm email and create the API key",
          "request": {
            "method": "POST",
            "header": [],
            "description": "Uses the one-time token from the signup email and creates the account's free API key. The emailed link opens the website's /account/verify page, which calls this when the user clicks Confirm. Returns the key once, plus an access/refresh token pair. 400 link_invalid if the token was used or is older than 24 hours; 409 account_exists if the email already has an account.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/auth/verify/confirm",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "auth",
                "verify",
                "confirm"
              ]
            }
          }
        },
        {
          "name": "Current Account",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns the current authenticated user's profile: key id, recoverable key prefix, plan, and current quota usage (API + AI calls).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/auth/me",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "auth",
                "me"
              ]
            }
          }
        },
        {
          "name": "Request password reset link",
          "request": {
            "method": "POST",
            "header": [],
            "description": "Emails a one-time link to set a password for an existing active account. Always returns 'pending' so it never reveals whether the email has an account.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/auth/forgot-password",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "auth",
                "forgot-password"
              ]
            }
          }
        },
        {
          "name": "Rotate API key",
          "request": {
            "method": "POST",
            "header": [],
            "description": "Deactivates the caller's current API key (transactionally) and issues a fresh one. The new raw key is returned exactly once — save it immediately; it cannot be shown again. Required because API keys are stored only as SHA-256 hashes.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/auth/rotate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "auth",
                "rotate"
              ]
            }
          }
        },
        {
          "name": "Set password from reset token",
          "request": {
            "method": "POST",
            "header": [],
            "description": "Verifies a one-time reset token and sets the account password. Lets legacy (pre-login) accounts recover. Requires token + password (>= 8 chars).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/auth/set-password",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "auth",
                "set-password"
              ]
            }
          }
        },
        {
          "name": "Sign in with a waqov.com account",
          "request": {
            "method": "POST",
            "header": [],
            "description": "Uses the one-time code from waqov.com (its dashboard's Get your API key button, or Continue with Waqov on the website: both open the website's /account/sso?code=). The code is redeemed with waqov.com server to server, works once and expires after 60 seconds. Signs in to the account with the same verified email, or creates a free account and returns its API key once (status created). Returns an access/refresh token pair. 400 link_invalid if the code was used or expired; 403 email_unverified if the waqov.com email isn't verified; 403 banned; 502 upstream if waqov.com can't be reached; 503 sso_disabled if not configured.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/auth/sso/waqov",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "auth",
                "sso",
                "waqov"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "AI Reports",
      "item": [
        {
          "name": "AI Analyze Transaction",
          "request": {
            "method": "POST",
            "header": [],
            "description": "AI-powered transaction analysis. **Response time:** 2-5 seconds (Gemini/llama inference). **Quota:** Enforced per plan — Free: 0, Starter: 50/mo, Pro: 200/mo, Enterprise: 9,999/mo. Returns X-AI-Remaining header with remaining calls.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/analyze-transaction/:transaction_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "analyze-transaction",
                ":transaction_id"
              ],
              "variable": [
                {
                  "key": "transaction_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "AI Market Report",
          "request": {
            "method": "POST",
            "header": [],
            "description": "AI-generated market report for an area. **Response time:** 3-8 seconds (AI + DB aggregation). **Quota:** Enforced per plan. Returns X-AI-Remaining header.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/market-report/:area_name",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "market-report",
                ":area_name"
              ],
              "variable": [
                {
                  "key": "area_name",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "AI Project Report",
          "request": {
            "method": "POST",
            "header": [],
            "description": "AI-generated project report. **Response time:** 3-8 seconds (AI + DB aggregation). **Quota:** Enforced per plan. Returns X-AI-Remaining header.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/project-report/:project_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "project-report",
                ":project_id"
              ],
              "variable": [
                {
                  "key": "project_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Broker Cheat Sheet",
          "request": {
            "method": "POST",
            "header": [],
            "description": "Generate 5 bullet-point talking points for a building. **Response time:** 3-8 seconds (AI + DB + news search). **Quota:** Enterprise only, 500/month.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/pitch/:building_name",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "pitch",
                ":building_name"
              ],
              "variable": [
                {
                  "key": "building_name",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Comparable Sales PDF Report",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Generate a PDF comparable sales report for a building or area. Returns a downloadable PDF with last 20 sales, price statistics, and area context. Enterprise only.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/reports/comparable-sales",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "reports",
                "comparable-sales"
              ],
              "query": [
                {
                  "key": "building",
                  "value": "",
                  "description": "Exact building name. Either building or area is required.",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Area name, used when building is not given or has too few sales",
                  "disabled": true
                },
                {
                  "key": "size_sqft",
                  "value": "",
                  "description": "Unit size in sqft; without it the estimate is the mean comparable sale",
                  "disabled": true
                },
                {
                  "key": "lookback_months",
                  "value": "18",
                  "description": "Months of sales to use (6-36)",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Smart Research Assistant",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "description": "Natural language market analysis using Groq 70B + pgvector news. **Response time:** 5-15 seconds (LLM + vector search). **Plans:** Startup Growth (50/month) and Enterprise (500/month). Returns X-Research-Remaining header.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/research",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "research"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"question\": \"What was the average apartment sale price in Business Bay in 2026?\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Analytics",
      "item": [
        {
          "name": "Analytics Off-Plan Premium",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Off-plan vs ready price per sqft by area and property type: median AED/sqft of residential sales (no offices, shops or hotel rooms) in the last 24 months. premium_pct and premium_aed_per_sqft come from the medians; avg_psf_* are the means of the same sales, in AED/sqft. The premium compares new launches with resale stock in the same area, not identical homes. Returns a JSON array.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/offplan-premium",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "offplan-premium"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name (aliases accepted)",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results (1-100)",
                  "disabled": true
                },
                {
                  "key": "min_count",
                  "value": "30",
                  "description": "Minimum off-plan and ready sales each (default 30)",
                  "disabled": true
                },
                {
                  "key": "property_type",
                  "value": "",
                  "description": "Filter by property type: Unit, Villa, Building",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "premium",
                  "description": "premium (AED/sqft difference, default) or pct (premium_pct)",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Analytics Off-Plan vs Secondary",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Off-plan vs ready (secondary) sales per area and master project: median AED/sqft and median price of residential sales (Unit/Villa, no offices, shops or hotel rooms) in the last 24 months. developer is DLD's master project (community), not the developer company, and is empty when DLD records none. psf_premium_* and price_premium_* come from the medians; avg_* are means of the same sales (psf in AED/sqft). property_type=All (default) combines units and villas; each row needs min_count off-plan and ready sales. The premium compares new launches with resale stock, not identical homes.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/offplan-vs-secondary",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "offplan-vs-secondary"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name (aliases accepted)",
                  "disabled": true
                },
                {
                  "key": "developer",
                  "value": "",
                  "description": "Filter by master project / community (case-insensitive, community aliases accepted). Alias: master_project",
                  "disabled": true
                },
                {
                  "key": "property_type",
                  "value": "All",
                  "description": "All (default), Unit or Villa",
                  "disabled": true
                },
                {
                  "key": "min_count",
                  "value": "30",
                  "description": "Minimum off-plan and ready sales each (default 30, floor 10)",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "psf",
                  "description": "psf (median AED/sqft difference, default), pct (psf_premium_pct) or price (median price difference)",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results (1-50)",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Analytics Seasonality",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Seasonal transaction patterns by month.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/seasonality",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "seasonality"
              ],
              "query": [
                {
                  "key": "trans_group",
                  "value": "",
                  "description": "Filter by transaction type: Sales, Mortgages, Gifts (case-insensitive; singular Mortgage, Gift, Sale accepted)",
                  "disabled": true
                },
                {
                  "key": "years",
                  "value": "3",
                  "description": "Number of years to analyze",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "property_type",
                  "value": "",
                  "description": "Filter by property type",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Market Entry",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Finds buildings that entered the market recently (first-ever sale within lookback window) with corrected AED/sqft PSF, avg sale price, off-plan share and direct-developer sales. Filters: limit, lookback_months (6-36, default 12), min_tx, area. New-supply tracking for a developer's CRM.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/market-entry",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "market-entry"
              ]
            }
          }
        },
        {
          "name": "Mortgage Activity by Area",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Mortgage count, volume, and mortgage-to-sales ratio by area — a financing-demand proxy.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/mortgage-activity",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "mortgage-activity"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Max results",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Price per SqFt by Bedroom",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Average/min/max price per sqft split by bedroom configuration (Studio, 1BR, 2BR...). Optional area filter and months lookback.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/psf-by-bedroom",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "psf-by-bedroom"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "months",
                  "value": "18",
                  "description": "Months lookback",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Undersupply Detection",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Detects areas where rent is rising but sales are stalling — a signal of housing undersupply and development opportunity.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/undersupply",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "undersupply"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Unit Inventory & Absorption",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Unit supply by area from the units table with 12-month absorption rate (units sold / total units).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/inventory",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "inventory"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Max results",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Areas & Locations",
      "item": [
        {
          "name": "Analytics Top Areas",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Top areas by transaction volume with trend analysis.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/top-areas",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "top-areas"
              ],
              "query": [
                {
                  "key": "sort_by",
                  "value": "volume",
                  "description": "Sort field: volume, price, yield",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "10",
                  "description": "Max results",
                  "disabled": true
                },
                {
                  "key": "property_type",
                  "value": "",
                  "description": "Filter by property type",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Area Comparison",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Compare multiple areas side by side on key metrics.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/insights/area-comparison?areas=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "insights",
                "area-comparison"
              ],
              "query": [
                {
                  "key": "areas",
                  "value": "",
                  "description": "Comma-separated area names (max 5)"
                }
              ]
            }
          }
        },
        {
          "name": "Area Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns area info with transaction statistics.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas/:area_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas",
                ":area_id"
              ],
              "variable": [
                {
                  "key": "area_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Area Investment Scores",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Area investment metrics: yield, momentum, liquidity. Supports fuzzy area matching.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/area-investment",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "area-investment"
              ],
              "query": [
                {
                  "key": "sort_by",
                  "value": "yield",
                  "description": "Sort field: yield, momentum, volume",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Max results",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Area Search",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Fuzzy area name search. Returns matching areas for partial/misspelled queries (e.g. ?q=marina).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/area-search?q=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "area-search"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "",
                  "description": "Search query (area name)"
                }
              ]
            }
          }
        },
        {
          "name": "Area Stats",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns detailed statistics for an area.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas/:area_id/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas",
                ":area_id",
                "stats"
              ],
              "variable": [
                {
                  "key": "area_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Area Summary",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns transaction summary for an area by name (case, apostrophes and hyphens ignored). Community names (e.g. `Dubai Marina`, `JVC`) resolve to their official DLD area; the area actually queried is returned as `resolved_area`. District names (e.g. `Bur Dubai`) aggregate all their DLD areas; see `matched`, `match_type` and `areas`.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas/summary/:area_name",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas",
                "summary",
                ":area_name"
              ],
              "variable": [
                {
                  "key": "area_name",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Area Transactions",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns transactions for an area.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas/:area_id/transactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas",
                ":area_id",
                "transactions"
              ],
              "variable": [
                {
                  "key": "area_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Compare Areas",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Compare statistics across multiple areas.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas/compare?areas=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas",
                "compare"
              ],
              "query": [
                {
                  "key": "areas",
                  "value": "",
                  "description": "Area name, repeated once per area: `?areas=Business Bay&areas=Dubai Marina`. Aliases (`JVC`, `Downtown`) are accepted."
                }
              ]
            }
          }
        },
        {
          "name": "Compare Areas (Detailed)",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Compare 2-5 areas side-by-side with 15+ metrics: PSF, yield, off-plan split, trends.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas/compare-detail?areas=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas",
                "compare-detail"
              ],
              "query": [
                {
                  "key": "areas",
                  "value": "",
                  "description": "Area name, repeated once per area: `?areas=Business Bay&areas=Dubai Marina`. Aliases (`JVC`, `Downtown`) are accepted."
                }
              ]
            }
          }
        },
        {
          "name": "List Areas",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns all Dubai areas with building counts.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Max results to return",
                  "disabled": true
                },
                {
                  "key": "page",
                  "value": "1",
                  "description": "Page number",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "50",
                  "description": "Results per page",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Maps Area Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns coordinates and bounds for a specific area.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/maps/areas/:area_name",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "maps",
                "areas",
                ":area_name"
              ],
              "variable": [
                {
                  "key": "area_name",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Maps Areas",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns area coordinates for map display.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/maps/areas",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "maps",
                "areas"
              ]
            }
          }
        },
        {
          "name": "Resolve Area Name",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Look up how an area, community or district name maps to official DLD area(s), without fetching figures. Query: `name` (required). `match_type`: `area` (an official DLD area), `alias` (another name for a whole area), `community` (a community inside an area — `master_project` is its name in `master_project_en`), `district` (spans several DLD areas, all listed in `areas`), `none` (not recognised; `matched` is false). Case, apostrophes and hyphens are ignored (`Meaisem First`, `meaisem-first` and `Me'Aisem First` all match `Me'Aisem First`), unless two names would then collide. Never fuzzy-matches.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas/resolve?name=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas",
                "resolve"
              ],
              "query": [
                {
                  "key": "name",
                  "value": "",
                  "description": "Area, community or district name (e.g. 'JVC', 'Discovery Gardens', 'Bur Dubai')"
                }
              ]
            }
          }
        },
        {
          "name": "Top Areas",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Top performing areas by volume, transactions, or other metrics.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/insights/top-areas",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "insights",
                "top-areas"
              ],
              "query": [
                {
                  "key": "sort_by",
                  "value": "volume",
                  "description": "Sort field: volume, transactions, price",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "10",
                  "description": "Max results",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Transaction Area Summary",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Detailed transaction summary for an area by name (case, apostrophes and hyphens ignored: `Meaisem First` finds `Me'Aisem First`). Community names (e.g. `Dubai Marina`, `Discovery Gardens`) resolve to their official DLD area, and district names that span several DLD areas (e.g. `Bur Dubai`, `Al Quoz`, `Deira`) aggregate all of them. `matched` is false when the name is not a known area, community or district (figures are then usually empty); `match_type` is one of `area`, `alias`, `community`, `district`, `none`. `last_transaction_date` is the latest sale in the queried area(s). `by_property_type` and `price_trends` include `median_price` (a few very large deals dominate the mean); `price_trends[].low_sample` flags years with fewer than 20 sales. `rental_stats.residential` covers single-unit residential Ejari leases only (no commercial or whole-building leases), with `flats_by_size` (Ejari has no bedroom count for flats, so flats are banded by size; `typical_bedrooms` is the type usually found at that size in Dubai sales) and `villas_by_rooms`; the top-level `total_rentals` / `avg_annual_rent` cover all leases. Use `GET /areas/resolve` to look a name up without fetching figures. Optional `?master_project=` (e.g. `Discovery Gardens`, `Al Furjan`, or a community alias such as `jvc`) narrows **sales** figures to one community, matched in every DLD area it spans (`community.areas`); `community.matched` is false if no sales carry that master project. Rents and `buildings_count` stay area-level (`rental_scope: \"area\"`) because Ejari leases carry no master project.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/area/:area_name/summary",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "area",
                ":area_name",
                "summary"
              ],
              "variable": [
                {
                  "key": "area_name",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Transactions by Area",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Transaction counts grouped by area.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/areas",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "areas"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Brokers",
      "item": [
        {
          "name": "Broker Areas (not available)",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Not available: DLD transaction records do not identify the broker, agent or office on a deal, so no transaction can be attributed to a broker. Returns HTTP 200 with `available: false`, a `reason` and an empty `data` list (the response used to be a bare array) for a broker that exists, and 404 for an unknown `broker_id`. Until v2.39.1 this endpoint matched building names against broker names and returned empty results or zeros for every broker. Broker profile and licence data: `GET /api/v1/brokers/{broker_id}`; the broker's office: `GET /api/v1/brokers/by-number/{broker_number}`.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/brokers/:broker_id/areas",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "brokers",
                ":broker_id",
                "areas"
              ],
              "variable": [
                {
                  "key": "broker_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Broker by BRN",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Looks a broker up by DLD broker registration number (BRN) and returns the office they are registered with. data is a list because DLD has reused a BRN across offices in rare cases; the current license comes first. 404 if the BRN is not in the register.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/brokers/by-number/:broker_number",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "brokers",
                "by-number",
                ":broker_number"
              ],
              "variable": [
                {
                  "key": "broker_number",
                  "value": "",
                  "description": "DLD broker registration number (BRN)"
                }
              ]
            }
          }
        },
        {
          "name": "Broker Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns a single broker with all fields.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/brokers/:broker_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "brokers",
                ":broker_id"
              ],
              "variable": [
                {
                  "key": "broker_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Broker Stats (not available)",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Not available: DLD transaction records do not identify the broker, agent or office on a deal, so no transaction can be attributed to a broker. Returns HTTP 200 with `available: false`, a `reason` and every count and amount `null` (not 0: zero would claim the broker had no deals) for a broker that exists, and 404 for an unknown `broker_id`. Until v2.39.1 this endpoint matched building names against broker names and returned empty results or zeros for every broker. Broker profile and licence data: `GET /api/v1/brokers/{broker_id}`; the broker's office: `GET /api/v1/brokers/by-number/{broker_number}`.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/brokers/:broker_id/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "brokers",
                ":broker_id",
                "stats"
              ],
              "variable": [
                {
                  "key": "broker_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Broker Transactions (not available)",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Not available: DLD transaction records do not identify the broker, agent or office on a deal, so no transaction can be attributed to a broker. Returns HTTP 200 with `available: false`, a `reason` and an empty `data` list (`total` and `total_pages` are null) for a broker that exists, and 404 for an unknown `broker_id`. Until v2.39.1 this endpoint matched building names against broker names and returned empty results or zeros for every broker. Broker profile and licence data: `GET /api/v1/brokers/{broker_id}`; the broker's office: `GET /api/v1/brokers/by-number/{broker_number}`.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/brokers/:broker_id/transactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "brokers",
                ":broker_id",
                "transactions"
              ],
              "variable": [
                {
                  "key": "broker_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "List Brokers",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated broker list with license info.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/brokers",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "brokers"
              ],
              "query": [
                {
                  "key": "search",
                  "value": "",
                  "description": "Search by broker name",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "page",
                  "value": "1",
                  "description": "Page number",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Results per page",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Top Brokers",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Brokers ranked by profile data quality score (`?limit=`, default 10, max 100). DLD transactions do not identify brokers, so this is not a ranking by deals.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/brokers/top",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "brokers",
                "top"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Buildings",
      "item": [
        {
          "name": "Area Buildings",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns buildings in an area.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas/:area_id/buildings",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas",
                ":area_id",
                "buildings"
              ],
              "variable": [
                {
                  "key": "area_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Building Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns a single building with full details: orientation, views, nearby amenities, OSM POIs, Makani entrances, nearby buildings, and row-level data provenance.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/buildings/:building_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "buildings",
                ":building_id"
              ],
              "variable": [
                {
                  "key": "building_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Building Rankings",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Rank buildings by appreciation, yield, liquidity, volume or PSF (`sort_by=appreciation|yield|liquidity|volume|psf`). Sales with no building name (common in 2026+ DLD data) are ranked under their project name, flagged `name_source: \"project\"`. Rent and yield use single-unit residential leases in the same area; `avg_annual_rent`, `median_annual_rent`, `rental_count`, `gross_yield_pct` and `appreciation_pct` are null when there is no matching lease or no sales in the prior 6-month window. Optional `?master_project=` restricts to one community (e.g. `Discovery Gardens` within `Jabal Ali First`); combinable with `area`. Since v2.39.4 the numbers come from a materialized view rebuilt after every data import (`refreshed_at`), so the 6-month windows behind `appreciation_pct` and `recent_transaction_count` are relative to that rebuild; `master_project` is the community most of the building's sales are filed under. Medians (`median_psf`, `median_price`, `median_annual_rent`) are less sensitive to bulk deals than the means.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/buildings/rankings",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "buildings",
                "rankings"
              ]
            }
          }
        },
        {
          "name": "Building ROI",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Buildings ranked by gross rental yield. gross_yield_pct = median single-unit residential Ejari rent (no shops, offices or whole-building leases) / median residential Unit+Villa sale of the last 24 months (no offices, shops or hotel rooms), matched on building name and area. Only buildings with both sales and leases are listed. median_psf and avg_psf are AED/sqft; means are returned alongside the medians. DLD's 2026 sales carry no building name, so sales_period mostly ends in 2025 except for single-building projects. avg_sc_sqft is null when no service charge is recorded.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/building-roi",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "building-roi"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name (aliases accepted, e.g. ?area=jlt)",
                  "disabled": true
                },
                {
                  "key": "min_rentals",
                  "value": "20",
                  "description": "Minimum residential leases (default 20)",
                  "disabled": true
                },
                {
                  "key": "min_sales",
                  "value": "10",
                  "description": "Minimum sales in the last 24 months (default 10)",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "yield",
                  "description": "yield (default), price (median sale price), sales or rentals",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results (1-100)",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Building Stats",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Transaction statistics for a building.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/buildings/:building_id/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "buildings",
                ":building_id",
                "stats"
              ],
              "variable": [
                {
                  "key": "building_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Building Transactions",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Transactions for a building.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/buildings/:building_id/transactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "buildings",
                ":building_id",
                "transactions"
              ],
              "variable": [
                {
                  "key": "building_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Building Units",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Units in a building.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/buildings/:building_id/units",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "buildings",
                ":building_id",
                "units"
              ],
              "variable": [
                {
                  "key": "building_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "List Buildings",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated building list with filters.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/buildings",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "buildings"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "project",
                  "value": "",
                  "description": "Filter by project name",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "",
                  "description": "Sort field: yield, appreciation, volume, psf",
                  "disabled": true
                },
                {
                  "key": "min_transactions",
                  "value": "",
                  "description": "Minimum transaction count",
                  "disabled": true
                },
                {
                  "key": "page",
                  "value": "1",
                  "description": "Page number",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Results per page",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Search Buildings",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Search buildings by name, area, or master project.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/search/buildings?q=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "buildings"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "",
                  "description": "Search query"
                },
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Search Buildings Autocomplete",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Building name autocomplete.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/search/buildings/autocomplete?q=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "buildings",
                "autocomplete"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "",
                  "description": "Search query"
                },
                {
                  "key": "limit",
                  "value": "10",
                  "description": "Max results",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Calculators",
      "item": [
        {
          "name": "DLD Fee Calculator",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Calculate DLD registration fees, agent fees, and total transaction costs.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/calculators/dld-fees?property_value=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "calculators",
                "dld-fees"
              ],
              "query": [
                {
                  "key": "property_value",
                  "value": "",
                  "description": "Purchase price in AED (must be > 0)"
                },
                {
                  "key": "has_mortgage",
                  "value": "false",
                  "description": "Add the mortgage registration fee",
                  "disabled": true
                },
                {
                  "key": "is_first_home",
                  "value": "false",
                  "description": "Apply the first-home discount",
                  "disabled": true
                },
                {
                  "key": "is_offplan",
                  "value": "false",
                  "description": "Adds the AED 525 NOC fee",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Geospatial (Makani)",
      "item": [
        {
          "name": "List Makani Entrances",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated list of Dubai Municipality Makani entrances (124K+). Filter by community name or exact makani number.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/makani",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "makani"
              ]
            }
          }
        },
        {
          "name": "Makani Communities",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns entrance counts per community plus transaction, rental, and building stats for the matching area, ordered by entrance count descending.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/makani/communities",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "makani",
                "communities"
              ]
            }
          }
        },
        {
          "name": "Makani Entrance Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns a single Makani entrance by its Makani number, including MGRS coordinates, the makani.ae short URL, nearby buildings, and area transaction statistics.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/makani/:makani_number",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "makani",
                ":makani_number"
              ],
              "variable": [
                {
                  "key": "makani_number",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Makani Stats",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns aggregate statistics for the Makani entrances dataset.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/makani/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "makani",
                "stats"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Health",
      "item": [
        {
          "name": "Health Check",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns server health, database stats, and cache status.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/health",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "health"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Lands",
      "item": [
        {
          "name": "Land Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns a single land plot.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/lands/:land_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "lands",
                ":land_id"
              ],
              "variable": [
                {
                  "key": "land_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "List Lands",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated land plot list.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/lands",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "lands"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Maps",
      "item": [
        {
          "name": "Maps Bounds",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns map bounds for Dubai.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/maps/bounds",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "maps",
                "bounds"
              ]
            }
          }
        },
        {
          "name": "Maps Config",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns map configuration (center, zoom, bounds).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/maps/config",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "maps",
                "config"
              ]
            }
          }
        },
        {
          "name": "Maps Heatmap",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns heatmap data for properties.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/maps/heatmap/properties",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "maps",
                "heatmap",
                "properties"
              ]
            }
          }
        },
        {
          "name": "Maps POI Categories",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns POI categories with icons and colors.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/maps/pois/categories",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "maps",
                "pois",
                "categories"
              ]
            }
          }
        },
        {
          "name": "Maps POIs",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Points of interest within `radius_km` of `lat`/`lng`, up to `limit`, each with its `distance_km`. Served from a fixed list of 8 major Dubai landmarks (malls, metro, beaches, landmarks), not a full POI database. Without `lat`/`lng` the result is empty.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/maps/pois?lat=&lng=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "maps",
                "pois"
              ],
              "query": [
                {
                  "key": "lat",
                  "value": "",
                  "description": "Latitude of the centre point"
                },
                {
                  "key": "lng",
                  "value": "",
                  "description": "Longitude of the centre point"
                },
                {
                  "key": "radius_km",
                  "value": "5",
                  "description": "Search radius in km (max 50)",
                  "disabled": true
                },
                {
                  "key": "category",
                  "value": "",
                  "description": "One of schools, malls, metro, beaches, landmarks",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Max results (1-200)",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Market Insights",
      "item": [
        {
          "name": "Land Pipeline",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Surfaces which developments hold how much land, where, and their off-plan share from the lands dataset. Filters: limit, min_parcels, locality. Land-acquisition lead-gen for a developer's CRM.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/insights/land-pipeline",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "insights",
                "land-pipeline"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results",
                  "disabled": true
                },
                {
                  "key": "min_parcels",
                  "value": "",
                  "description": "Minimum land parcels",
                  "disabled": true
                },
                {
                  "key": "locality",
                  "value": "",
                  "description": "Filter by locality",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Market Overview",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Market overview with key metrics for a given period.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/insights/market-overview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "insights",
                "market-overview"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "12m",
                  "description": "Time period: 3m, 6m, 12m, ytd",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Price Trends",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Price trends over time with granularity options.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/insights/price-trends",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "insights",
                "price-trends"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "metric",
                  "value": "price",
                  "description": "Metric: price, volume, transactions",
                  "disabled": true
                },
                {
                  "key": "granularity",
                  "value": "monthly",
                  "description": "Granularity: monthly, quarterly, yearly",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "12",
                  "description": "Number of periods",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Monitoring & Alerts",
      "item": [
        {
          "name": "Add to Watchlist",
          "request": {
            "method": "POST",
            "header": [],
            "description": "Add an area to your watchlist for investment alerts.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/watchlist",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "watchlist"
              ]
            }
          }
        },
        {
          "name": "List Watchlist",
          "request": {
            "method": "GET",
            "header": [],
            "description": "List your watchlist items.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/watchlist",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "watchlist"
              ]
            }
          }
        },
        {
          "name": "News Digest Feed",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns the authenticated user's AI-summarized news digests, newest first. Mobile digest feed for the Personal Market Radar.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/news-digest",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "news-digest"
              ]
            }
          }
        },
        {
          "name": "Polygon Geo-Query",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "description": "Find transactions whose building falls inside a drawn polygon (micro-market watch). Point-in-polygon ray-cast over buildings lat/lng — no PostGIS required. Returns the same item shape as GET /transactions plus resolved areas/buildings.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/geo-query",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "geo-query"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"date_from\": \"2025-01-01\",\n  \"max_price\": 3000000,\n  \"min_price\": 1000000,\n  \"page\": 1,\n  \"per_page\": 50,\n  \"polygon\": [\n    {\n      \"lat\": 25.07,\n      \"lng\": 55.13\n    },\n    {\n      \"lat\": 25.07,\n      \"lng\": 55.15\n    },\n    {\n      \"lat\": 25.095,\n      \"lng\": 55.15\n    },\n    {\n      \"lat\": 25.095,\n      \"lng\": 55.13\n    }\n  ],\n  \"property_type\": \"Unit\",\n  \"rooms\": \"2 B/R\",\n  \"trans_group\": \"Sales\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Remove from Watchlist",
          "request": {
            "method": "DELETE",
            "header": [],
            "description": "Remove an item from your watchlist.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/watchlist/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "watchlist",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "News",
      "item": [
        {
          "name": "Related News Search",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Search 33K+ Dubai real estate news articles with sentiment analysis. Returns articles with sentiment (positive/negative/neutral), confidence, impact, and factual reason.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/news/related?q=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "news",
                "related"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "",
                  "description": "Search query (e.g., 'Dubai Marina investment')"
                },
                {
                  "key": "limit",
                  "value": "5",
                  "description": "Max results (1-20)",
                  "disabled": true
                },
                {
                  "key": "days",
                  "value": "30",
                  "description": "Days back to search (1-90)",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Offices",
      "item": [
        {
          "name": "Brokerage Office Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "One brokerage office (by ORN) and its brokers. Brokers whose license has ended are listed only with include_expired=1. No phone numbers are returned.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/offices/:office_number",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "offices",
                ":office_number"
              ],
              "query": [
                {
                  "key": "include_expired",
                  "value": "0",
                  "description": "1 to include brokers whose license has ended",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "office_number",
                  "value": "",
                  "description": "DLD office registration number (ORN)"
                }
              ]
            }
          }
        },
        {
          "name": "List Brokerage Offices",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Dubai real estate brokerage offices from the DLD broker register, with how many of their brokers hold a current license. office_number is the DLD office registration number (ORN). Offices with no licensed broker are left out unless include_inactive=1. Ordered by licensed brokers, most first.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/offices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "offices"
              ],
              "query": [
                {
                  "key": "search",
                  "value": "",
                  "description": "Office name (partial), or the exact ORN",
                  "disabled": true
                },
                {
                  "key": "include_inactive",
                  "value": "0",
                  "description": "1 to include offices with no licensed broker",
                  "disabled": true
                },
                {
                  "key": "page",
                  "value": "1",
                  "description": "Page number",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Results per page (max 100)",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Price Estimates & DLD Valuations",
      "item": [
        {
          "name": "Automated Price Estimate",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Rule-based price estimate from comparable recent DLD sales. Not a formal valuation by a licensed valuer. Options: building=, area=, size_sqft= (optional), lookback_months= (6-36, default 18). Returns an estimate (median of IQR-outlier-filtered comparable PSF, converted to AED/sqft) with a confidence range, PSF trend and the comparables used. Output is a 'Proprietary Estimate' — not an official DLD valuation and not financial advice.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/valuations/estimate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "valuations",
                "estimate"
              ],
              "query": [
                {
                  "key": "building",
                  "value": "",
                  "description": "Exact building name. Either building or area is required.",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Area name, used when building is not given or has too few sales",
                  "disabled": true
                },
                {
                  "key": "size_sqft",
                  "value": "",
                  "description": "Unit size in sqft; without it the estimate is the mean comparable sale",
                  "disabled": true
                },
                {
                  "key": "lookback_months",
                  "value": "18",
                  "description": "Months of sales to use (6-36)",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "List Valuations",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated valuation list.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/valuations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "valuations"
              ]
            }
          }
        },
        {
          "name": "Valuation Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns a single valuation.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/valuations/:valuation_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "valuations",
                ":valuation_id"
              ],
              "variable": [
                {
                  "key": "valuation_id",
                  "value": ""
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Projects & Developers",
      "item": [
        {
          "name": "Area Projects",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns projects in an area.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/areas/:area_id/projects",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "areas",
                ":area_id",
                "projects"
              ],
              "variable": [
                {
                  "key": "area_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Developer by License Number",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Finds developers in the DLD register by trade license number. Letters and digits only are compared, so CN-611443 also finds 611443. A list, because two licensing authorities can issue the same number. The license number comes back masked. 404 when no developer matches.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/developers/by-license/:license_number",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "developers",
                "by-license",
                ":license_number"
              ],
              "variable": [
                {
                  "key": "license_number",
                  "value": "",
                  "description": "Trade license number"
                }
              ]
            }
          }
        },
        {
          "name": "Developer Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns a single developer with project count.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/developers/:developer_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "developers",
                ":developer_id"
              ],
              "variable": [
                {
                  "key": "developer_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Developer Performance",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Developer ranking by transaction volume, project count, and avg PSF.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/developer-performance",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "developer-performance"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Max results",
                  "disabled": true
                },
                {
                  "key": "developer",
                  "value": "",
                  "description": "Filter by developer name",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "volume",
                  "description": "Sort field: volume, transactions, projects",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Developer Projects",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Projects by a developer. name is DLD's project name (Arabic for most projects), name_en the English one (empty when DLD has none).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/developers/:developer_id/projects",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "developers",
                ":developer_id",
                "projects"
              ],
              "variable": [
                {
                  "key": "developer_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Developer Share",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Market share by project (developer attribution). Groups sales by project_name_en since DLD transactions do not carry a developer_id — see the projects table for developer attribution. Response includes both 'projects' and 'developers' keys for backward compatibility.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/developer-share",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "developer-share"
              ]
            }
          }
        },
        {
          "name": "Developer Stats",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Statistics for a developer including market share.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/developers/:developer_id/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "developers",
                ":developer_id",
                "stats"
              ],
              "variable": [
                {
                  "key": "developer_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Developer Transactions",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Transactions in the developer's projects, newest first. Optional `?per_page=` (1-100, default 20).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/developers/:developer_id/transactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "developers",
                ":developer_id",
                "transactions"
              ],
              "variable": [
                {
                  "key": "developer_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Development Activity",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Ranks active developments by recent 6-month sales velocity with corrected AED/sqft PSF trend, estimated off-plan share (no-registered-PSF proxy), direct-from-developer sales and total volume. Filters: limit, min_tx, area, developer. Competitor-tracking lead-gen signal for a developer's CRM (Odoo).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/developer-activity",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "developer-activity"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Max results",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "developer",
                  "value": "",
                  "description": "Filter by developer name",
                  "disabled": true
                },
                {
                  "key": "min_tx",
                  "value": "",
                  "description": "Minimum transactions",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "List Developers",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated developer list with license info and the number of DLD projects each developer has (project_count). min_projects=N keeps developers with at least N projects.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/developers",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "developers"
              ],
              "query": [
                {
                  "key": "search",
                  "value": "",
                  "description": "Search by developer name",
                  "disabled": true
                },
                {
                  "key": "min_projects",
                  "value": "",
                  "description": "Only developers with at least this many projects",
                  "disabled": true
                },
                {
                  "key": "page",
                  "value": "1",
                  "description": "Page number",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Results per page",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "List Projects",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated project list with status and developer info. developer_name is DLD's developer name (Arabic for most projects), developer_name_en the same developer in English (taken from the developer register by its Arabic name; names already in English are returned as is; empty when no register entry has that name).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects"
              ],
              "query": [
                {
                  "key": "search",
                  "value": "",
                  "description": "Search by project name",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "description": "Filter by status: UNDER_CONSTRUCTION, FINISHED, ON_HOLD",
                  "disabled": true
                },
                {
                  "key": "developer",
                  "value": "",
                  "description": "Filter by developer name",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "page",
                  "value": "1",
                  "description": "Page number",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Results per page",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Project Buildings",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Buildings in a project.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects/:project_id/buildings",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects",
                ":project_id",
                "buildings"
              ],
              "variable": [
                {
                  "key": "project_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Project Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns a single project with transaction stats.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects/:project_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects",
                ":project_id"
              ],
              "variable": [
                {
                  "key": "project_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Project Price Trends",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Monthly price trends for a project.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects/:project_id/price-trends",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects",
                ":project_id",
                "price-trends"
              ],
              "variable": [
                {
                  "key": "project_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Project Stats",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Transaction statistics for a project.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects/:project_id/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects",
                ":project_id",
                "stats"
              ],
              "variable": [
                {
                  "key": "project_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Project Transactions",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Transactions for a project.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects/:project_id/transactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects",
                ":project_id",
                "transactions"
              ],
              "variable": [
                {
                  "key": "project_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Project Units",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Units in a project.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects/:project_id/units",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects",
                ":project_id",
                "units"
              ],
              "variable": [
                {
                  "key": "project_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Search Projects",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Search projects by name.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/search/projects?q=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "projects"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "",
                  "description": "Search query"
                },
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Top Developers",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Top developers by sales volume, transactions, or average price.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/insights/top-developers",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "insights",
                "top-developers"
              ],
              "query": [
                {
                  "key": "sort_by",
                  "value": "volume",
                  "description": "Sort field: volume, transactions, price",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "10",
                  "description": "Max results",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Top Performing Projects",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Top projects by transaction volume.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects/top-performing",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects",
                "top-performing"
              ]
            }
          }
        },
        {
          "name": "Transactions by Project",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Transactions for a specific project or building (`scope: \"project\"`). When the name is not a project or building it is resolved like the area summary does: an area, alias or community name (e.g. `Barsha Heights`, `JBR`) returns its DLD area's transactions (`scope: \"area\"`), and a district (e.g. `Bur Dubai`) returns all its member areas (`scope: \"district\"`). Those responses add `matched`, `match_type` (`area`, `alias`, `community`, `district`, `none`), `resolved_area`, `areas` and, for communities, `master_project`. Optional <code>?procedure=</code> (e.g. <code>Sell - Pre registration</code>, <code>Sell</code>) and <code>?per_page=</code>.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/by-project/:project_name",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "by-project",
                ":project_name"
              ],
              "variable": [
                {
                  "key": "project_name",
                  "value": ""
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Rental Yield",
      "item": [
        {
          "name": "AI Rent vs Buy",
          "request": {
            "method": "POST",
            "header": [],
            "description": "AI rent vs buy analysis. **Response time:** 5-10 seconds (AI + DB + calculation). **Quota:** Enforced per plan. Returns X-AI-Remaining header.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/ai/rent-vs-buy/:area_name",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ai",
                "rent-vs-buy",
                ":area_name"
              ],
              "variable": [
                {
                  "key": "area_name",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Analytics Rental by Area",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Rental metrics by area sorted by count or avg rent.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/rental-by-area",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "rental-by-area"
              ],
              "query": [
                {
                  "key": "sort_by",
                  "value": "count",
                  "description": "Sort field: count, avg_rent",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Max results",
                  "disabled": true
                },
                {
                  "key": "min_rentals",
                  "value": "",
                  "description": "Minimum rental contracts",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Analytics Yield by Building",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Gross rental yield by project. gross_yield_pct = median single-unit residential Ejari rent (no shops, offices or whole-building leases) / median residential Unit+Villa sale of the last 24 months, matched on project and area. Means are returned alongside the medians; median_price_sqft and avg_psf are AED/sqft. rent_period / sales_period give the date ranges used.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/yield-by-building",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "yield-by-building"
              ],
              "query": [
                {
                  "key": "sort_by",
                  "value": "yield",
                  "description": "Sort field: yield, price (median sale price), rentals",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results (1-100)",
                  "disabled": true
                },
                {
                  "key": "min_rentals",
                  "value": "20",
                  "description": "Minimum residential leases (default 20)",
                  "disabled": true
                },
                {
                  "key": "min_sales",
                  "value": "10",
                  "description": "Minimum residential sales in the last 24 months (default 10)",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name (aliases accepted)",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Building Net-Yield (Simulator)",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Single-building gross + net yield for the yield simulator. Loads the building by property_id. Sales: residential homes (Unit/Villa, no offices, shops or hotel rooms) in the building's area whose building name is the project name or building number, last 24 months (sales.window = 24_months), or the 20 most recent when that window has fewer than 5 (most_recent_20); avg_psf is AED/sqft. Rents: single-unit residential Ejari leases (no shops, offices or whole-building contracts) in the same area whose project is the building's project name or number. Service charge: mv_building_roi.avg_sc_sqft, fallback buildings.service_charge_sqft. avg_sale_price, avg_psf and avg_annual_rent are medians (values > 3x the median dropped when count >= 4). Yields are 0 when sales or rents are missing.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/building-yield/:building_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "building-yield",
                ":building_id"
              ],
              "variable": [
                {
                  "key": "building_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Ejari Contracts",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Ejari-registered rent contracts.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/ejari",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "ejari"
              ]
            }
          }
        },
        {
          "name": "Ejari Stats",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Ejari-equivalent rental statistics for all of Dubai or one area (`?area=`). By default every lease counts, including commercial and whole-building contracts, so a few bulk leases dominate the average. `?usage=residential` counts single-unit residential leases only (the same set as `rental_stats.residential` on the area summary) and adds `median_annual_rent`, `median_monthly_rent`, `period_from` and `period_to`. Prefer the median: even residential leases include a few extreme values.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/ejari/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "ejari",
                "stats"
              ]
            }
          }
        },
        {
          "name": "Ejari Yield",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Ejari-based gross rental yield by area (top 50, or one area with `?area=`). The default compares the average of every lease (commercial and whole-building included) with the average of every sale since 2002, which overstates yield. `?usage=residential` returns `median_annual_rent` (single-unit residential leases) over `median_sale_price` (residential units and villas sold in the last 12 months), with `usage: \"residential\"`. Areas with fewer than 20 leases or sales are left out.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/ejari/yield",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "ejari",
                "yield"
              ]
            }
          }
        },
        {
          "name": "List Rent Contracts",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated rent contract list with filters.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts"
              ]
            }
          }
        },
        {
          "name": "List Rentals",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Alias for rent-contracts — paginated rental contract list.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rentals",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rentals"
              ]
            }
          }
        },
        {
          "name": "Project Rentals",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Rental contracts for a project.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects/:project_id/rentals",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects",
                ":project_id",
                "rentals"
              ],
              "variable": [
                {
                  "key": "project_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Rent Contract Full",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Full rent contract with details and comparable rentals.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/:rental_id/full",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                ":rental_id",
                "full"
              ],
              "variable": [
                {
                  "key": "rental_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Rent Contract Stats",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Global rent contract statistics.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "stats"
              ]
            }
          }
        },
        {
          "name": "Rent Contract Summary",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Monthly rent contract summary for last 24 months.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/summary",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "summary"
              ]
            }
          }
        },
        {
          "name": "Rent Contracts by Area",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Rent contract counts by area.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/areas",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "areas"
              ]
            }
          }
        },
        {
          "name": "Rent Contracts by Building",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Rent contracts for a building.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/building/:building_name",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "building",
                ":building_name"
              ],
              "variable": [
                {
                  "key": "building_name",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Rent Contracts by Project",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Rent contracts for a project.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/project/:project_name",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "project",
                ":project_name"
              ],
              "variable": [
                {
                  "key": "project_name",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Rent per SqFt",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Annual Ejari rent in AED per sqft by area and project (groups with 5+ leases). median_rent_psf is the headline; avg_rent_psf is the mean. Leased area = actual_area x total_properties (sqm, converted at 10.764); leases recording under 10 sqm per unit are left out (placeholder areas). usage=residential keeps single-unit residential leases only.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/rent-psf",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "rent-psf"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                },
                {
                  "key": "usage",
                  "value": "all",
                  "description": "all (default, every lease) or residential (single-unit residential leases)",
                  "disabled": true
                },
                {
                  "key": "months",
                  "value": "24",
                  "description": "Window in months by registration date, 6-60",
                  "disabled": true
                },
                {
                  "key": "sort_by",
                  "value": "median_rent_psf",
                  "description": "Sort field: median_rent_psf, avg_rent_psf, count, avg_annual",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Max results, 1-200",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Rental Trends",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Monthly rental trends.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/trends",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "trends"
              ]
            }
          }
        },
        {
          "name": "Rental Yield by Area",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Rental yield calculated by area.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rent-contracts/yield-by-area",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rent-contracts",
                "yield-by-area"
              ]
            }
          }
        },
        {
          "name": "Rental Yield Trend",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Monthly gross rental yield: median annual rent of single-unit residential Ejari leases registered that month / median price of ready-home sales (flats and villas; off-plan excluded) that month. Rent contracts are stored from 2026-01, so earlier months have rent_available false and null rent and yield. rent_data_from is the first month with rent.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/rental-yield-trends",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "rental-yield-trends"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name (case-insensitive, sales area_name_en and lease area_en)",
                  "disabled": true
                },
                {
                  "key": "months",
                  "value": "24",
                  "description": "Window in months, 6-60",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Yield Arbitrage",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Ranks buildings whose gross rental yield is significantly above their area average (yield_spread = building yield − area-average yield). Yields are median residential rent / median residential sale, as in /analytics/yield-by-building. Buy-to-let investment opportunity leads. Filters: limit, min_spread, area.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/analytics/yield-arbitrage",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "analytics",
                "yield-arbitrage"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results",
                  "disabled": true
                },
                {
                  "key": "min_spread",
                  "value": "",
                  "description": "Minimum yield spread",
                  "disabled": true
                },
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name",
                  "disabled": true
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Search",
      "item": [
        {
          "name": "Search Autocomplete",
          "request": {
            "method": "GET",
            "header": [],
            "description": "General autocomplete for projects and areas.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/search/autocomplete?q=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "autocomplete"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "",
                  "description": "Search query"
                },
                {
                  "key": "limit",
                  "value": "10",
                  "description": "Max results",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Search Describe",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "description": "Describe a property in natural language using AI. Accepts a property_id (looked up from the buildings table) or an inline property_data object with name/area/master_project/property_type/floors/rooms/actual_area. Optional tone and language fields.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/search/describe",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "describe"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"language\": \"en\",\n  \"property_id\": \"12345\",\n  \"tone\": \"professional\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Search Properties",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "description": "Natural-language search over residential units (bedrooms, area, building, budget words are parsed). Send the query as `?q=` or in the JSON body as `q` / `query`. Unit results come from the search index and carry no price (`price` and `meter_sale_price` are 0); `procedure_area` is the unit size in sqm. `total` is the index's estimate and is capped at 1000.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/search/properties",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "search",
                "properties"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "",
                  "description": "Natural-language query; may also be sent in the body as `q` or `query`",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Max results (1-100)",
                  "disabled": true
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"limit\": 20,\n  \"q\": \"2 bedroom apartment in Dubai Marina\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Transactions",
      "item": [
        {
          "name": "Golden Visa Properties",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Properties meeting the AED 2M Golden Visa threshold with area breakdown.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/golden-visa",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "golden-visa"
              ]
            }
          }
        },
        {
          "name": "List Transactions",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated transaction list with filters (area, project, type, date range).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions"
              ],
              "query": [
                {
                  "key": "area",
                  "value": "",
                  "description": "Filter by area name (e.g., 'DUBAI MARINA')",
                  "disabled": true
                },
                {
                  "key": "property_type",
                  "value": "",
                  "description": "Filter by property type: Unit, Building, Land, Villa",
                  "disabled": true
                },
                {
                  "key": "trans_group",
                  "value": "",
                  "description": "Filter by transaction type: Sales, Mortgages, Gifts (case-insensitive; singular Mortgage, Gift, Sale accepted)",
                  "disabled": true
                },
                {
                  "key": "project",
                  "value": "",
                  "description": "Filter by project name",
                  "disabled": true
                },
                {
                  "key": "rooms",
                  "value": "",
                  "description": "Filter by room count (e.g., '2 B/R')",
                  "disabled": true
                },
                {
                  "key": "min_price",
                  "value": "",
                  "description": "Minimum price filter (AED)",
                  "disabled": true
                },
                {
                  "key": "max_price",
                  "value": "",
                  "description": "Maximum price filter (AED)",
                  "disabled": true
                },
                {
                  "key": "date_from",
                  "value": "",
                  "description": "Start date (YYYY-MM-DD)",
                  "disabled": true
                },
                {
                  "key": "date_to",
                  "value": "",
                  "description": "End date (YYYY-MM-DD)",
                  "disabled": true
                },
                {
                  "key": "is_developer_sale",
                  "value": "",
                  "description": "Developer sales only",
                  "disabled": true
                },
                {
                  "key": "page",
                  "value": "1",
                  "description": "Page number",
                  "disabled": true
                },
                {
                  "key": "per_page",
                  "value": "20",
                  "description": "Results per page (max 100)",
                  "disabled": true
                }
              ]
            }
          }
        },
        {
          "name": "Sample CSV (100 home sales, one per area)",
          "request": {
            "method": "GET",
            "header": [],
            "description": "100 recent Dubai Land Department home sales (flats and villas) as CSV: the latest home sale in each of the 100 areas with the most home sales in the last 90 days of data, newest first. Same columns as `GET /api/v1/transactions` plus a `source` attribution column. Rows without an area, a price or a size of at least 10 sqm are left out. Public: no API key. Rebuilt at most once an hour; per-IP rate limited. For more rows and filters, use the API with a key.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/public/sample/transactions.csv",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "public",
                "sample",
                "transactions.csv"
              ]
            },
            "auth": {
              "type": "noauth"
            }
          }
        },
        {
          "name": "Transaction Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns a single transaction by ID or transaction_id.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/:transaction_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                ":transaction_id"
              ],
              "variable": [
                {
                  "key": "transaction_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Transaction Enriched",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns transaction with building/project info and area context.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/:transaction_id/enriched",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                ":transaction_id",
                "enriched"
              ],
              "variable": [
                {
                  "key": "transaction_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Transaction Full",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns full transaction with all related data including area stats.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/:transaction_id/full",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                ":transaction_id",
                "full"
              ],
              "variable": [
                {
                  "key": "transaction_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Transaction Stats",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Global transaction statistics.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "stats"
              ]
            }
          }
        },
        {
          "name": "Transaction Summary",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Monthly transaction summary with counts, avg price, and volume for last 24 months.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/summary",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "summary"
              ]
            }
          }
        },
        {
          "name": "Transaction Trends",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Monthly transaction trends over time.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/trends",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "trends"
              ]
            }
          }
        },
        {
          "name": "Transactions by Property Type",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Transaction counts by property type. Optional <code>?area=</code> scopes the result to a single area (case-insensitive); without it, returns Dubai-wide totals.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/property-types",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "property-types"
              ]
            }
          }
        },
        {
          "name": "Unit Transaction History",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Transaction history for a unit.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/units/:unit_id/transaction-history",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "units",
                ":unit_id",
                "transaction-history"
              ],
              "variable": [
                {
                  "key": "unit_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Volume Trends",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Monthly volume trends.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/transactions/volume-trends",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "transactions",
                "volume-trends"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Units",
      "item": [
        {
          "name": "Unit Detail",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Returns a single unit.",
            "url": {
              "raw": "{{baseUrl}}/api/v1/units/:unit_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "units",
                ":unit_id"
              ],
              "variable": [
                {
                  "key": "unit_id",
                  "value": ""
                }
              ]
            }
          }
        },
        {
          "name": "Units List",
          "request": {
            "method": "GET",
            "header": [],
            "description": "Paginated list of units with optional filters (area, project, building, rooms, property_type).",
            "url": {
              "raw": "{{baseUrl}}/api/v1/units",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "units"
              ]
            }
          }
        }
      ]
    }
  ]
}