# GET /get-transactions-v2

> Get property transactions with insights (v2)

Source: https://uaepropertyapi.com/documentation/endpoints/get-transactions-v2

Get Dubai sale and rental transactions with richer filters than `/get-transactions`: price and area ranges, multiple bedroom counts, new vs renewed rental contracts (`contract_status`), developer vs individual sellers (`sold_by`) and commercial usage. Each response also includes `insights` (average new and renewed rents, sale price per sq ft, ROI and volume change for the period) and `pagination`. Each page holds up to 10 transactions and a query exposes at most 500 matches; check `pagination.is_truncated` and narrow the filters if it is `true`. Dubai locations only.

- Base URL: `https://uae-real-estate-property.p.rapidapi.com`
- Category: Market Data
- Headers: `x-rapidapi-key: <YOUR_RAPIDAPI_KEY>`, `x-rapidapi-host: uae-real-estate-property.p.rapidapi.com`

## Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `transaction_type` | string | yes | Transaction history to retrieve. Required; there is no default.; `sold`: completed property sales; `rented`: registered rental transactions, including new and renewed contracts; Use `contract_status` with `rented`, or `sold_by` with `sold`. |
| `usage` | string | no | How the property is used. Omit it for `residential`.; `residential`: homes, such as apartments, villas, and townhouses (default); `commercial`: commercial properties, such as offices, shops, and warehouses; The available `property_type` values depend on this choice. Price-per-square-foot and plot-size sorting require `commercial` and `transaction_type=sold`. |
| `location_id` | string | no | Dubai location to search. Omit it or use `1` to search all Dubai.; Use `/autocomplete-location` to find a location ID for a community or building.; `1`: all Dubai (default); `50`: Dubai Marina; Send a numeric ID, not a location name. Only supported Dubai locations are accepted; unknown IDs or locations in other emirates return 400. |
| `period` | string | no | Time range for the transaction history. Omit it for `ytd`.; `ytd`: from January 1 of the current year to today (default); `1w`: the most recent week; `1m`: the most recent month; `3m`: the most recent three months; `6m`: the most recent six months; `1y`: the most recent year; `3y`: the most recent three years; This filters transaction dates. A narrower period can reduce the number of matches. |
| `property_type` | string | no | Property type to include. Omit it to include all types available for the selected transaction and usage.; Residential sales and rentals: `apartment`, `villa`, `townhouse`, `penthouse`, `whole-building`, `hotel-apartment`; Residential sales also allow `land`; Commercial sales and rentals: `office-space`, `warehouse`, `shop`, `villa`, `show-room`, `whole-building`, `land`, `factory`, `labor-camp`; Send one value. A type unavailable for your `transaction_type` and `usage` returns 400. |
| `bedrooms` | string | no | Bedroom counts to include. Omit it to apply no bedroom filter.; `0`: studio; `1` through `7`: the corresponding bedroom count; `8`: the 7+ bedroom group; Send one value or a comma-separated list without spaces, such as `0,1,2` to include studios, one-bedroom, and two-bedroom properties. |
| `price_min` | string | no | Minimum transaction price to include, in AED. Omit it for no lower price limit.; Use a nonnegative amount without currency symbols or thousands separators, such as `50000` or `50000.50`. Zero is accepted.; When `price_max` is also supplied, this value must be less than or equal to it; a reversed range returns 400. |
| `price_max` | string | no | Maximum transaction price to include, in AED. Omit it for no upper price limit.; Use a nonnegative amount without currency symbols or thousands separators, such as `100000` or `100000.50`. Zero is accepted.; When `price_min` is also supplied, this value must be greater than or equal to it; a reversed range returns 400. |
| `area_min` | string | no | Minimum property area to include, in square feet (ft²). Omit it for no lower area limit.; Use a nonnegative number without unit labels or thousands separators, such as `500` or `500.5`. Zero is accepted.; When `area_max` is also supplied, this value must be less than or equal to it; a reversed range returns 400. |
| `area_max` | string | no | Maximum property area to include, in square feet (ft²). Omit it for no upper area limit.; Use a nonnegative number without unit labels or thousands separators, such as `2000` or `2000.5`. Zero is accepted.; When `area_min` is also supplied, this value must be greater than or equal to it; a reversed range returns 400. |
| `contract_status` | string | no | Rental contract status to include. Omit it to include both statuses.; `new`: new rental contracts; `renewed`: renewals of existing rental contracts; Available only with `transaction_type=rented`. Sending it for `sold` returns 400. |
| `sold_by` | string | no | Seller type to include in sale transactions. Omit it to include both seller types.; `individual`: individual sellers; `developer`: property developers; Available only with `transaction_type=sold`. Sending it for `rented` returns 400. |
| `sort` | string | no | Order of the returned transactions. Omit it for `newest`.; `newest`: latest transaction date first (default); `oldest`: earliest transaction date first; `high_price`: highest transaction price first; `low_price`: lowest transaction price first; With `transaction_type=sold` and `usage=commercial`, these additional values are available:; `high_price_per_sqft`: highest price per square foot first; `low_price_per_sqft`: lowest price per square foot first; `high_plot_size`: largest plot first; `low_plot_size`: smallest plot first; Sending an additional sort for any other transaction/usage combination returns 400. |
| `page` | string | no | Results page to return. Omit it for page `1`.; Send a whole number from `1` to `50`. Each page contains up to 10 transactions; fewer pages may be available for your filters.; Use `data.pagination.total_pages` and `has_next_page` to decide whether to request another page. A page beyond the available results returns 404.; A query exposes at most 500 matching transactions. `total_matching` can be larger; `accessible_count` shows the accessible matches and `is_truncated` indicates the limit was reached. Narrow your location, period, or other filters for a more specific result set. |

## Example request

```bash
curl --request GET \
  --url 'https://uae-real-estate-property.p.rapidapi.com/get-transactions-v2?transaction_type=rented&location_id=50&period=1m&bedrooms=1' \
  --header 'x-rapidapi-host: uae-real-estate-property.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
```

```python
import requests

url = "https://uae-real-estate-property.p.rapidapi.com/get-transactions-v2"
querystring = {"transaction_type": "rented", "location_id": "50", "period": "1m", "bedrooms": "1"}
headers = {
    "x-rapidapi-key": "YOUR_API_KEY",
    "x-rapidapi-host": "uae-real-estate-property.p.rapidapi.com"
}

response = requests.get(url, headers=headers, params=querystring)
print(response.json())
```

## Example response (shortened)

```json
{
  "success": true,
  "data": {
    "transaction_type": "rented",
    "usage": "residential",
    "location": {
      "id": "50",
      "name": "Dubai Marina"
    },
    "period": "1m",
    "sort": "newest",
    "transactions": [
      {
        "id": "13069747a6bab9d88ffd3afd6dd4f8a8",
        "transactionDate": "2026-10-29",
        "bedrooms": 1,
        "builtupArea": null,
        "plotArea": 862.3,
        "price": 62000,
        "pricePerSqft": 5.99,
        "propertyType": "Apartment",
        "propertyNumber": "3309",
        "locationId": "3092",
        "locationName": "Princess Tower",
        "highLevelLocationName": "Dubai Marina",
        "locationPath": "Dubai, Dubai Marina",
        "locationSlug": "dubai-marina-princess-tower",
        "locationUrl": "/en/transactions/buy/dubai/dubai-marina-princess-tower",
        "status": "New",
        "contractStartDate": "2026-10-29",
        "contractEndDate": "2027-10-28",
        "isBulkTransaction": false,
        "showLink": true
      },
      {
        "id": "148cfe4c92df0df76e0abc916b07461c",
        "transactionDate": "2026-10-28",
        "bedrooms": 1,
        "builtupArea": null,
        "plotArea": 811.49,
        "price": 90000,
        "pricePerSqft": 9.24,
        "propertyType": "Apartment",
        "propertyNumber": "313",
        "locationId": "3172",
        "locationName": "Silverene Tower B",
        "highLevelLocationName": "Dubai Marina",
        "locationPath": "Dubai, Dubai Marina, Silverene",
        "locationSlug": "dubai-marina-silverene-silverene-tower-b",
        "locationUrl": "/en/transactions/buy/dubai/dubai-marina-silverene-silverene-tower-b",
        "status": "New",
        "contractStartDate": "2026-10-26",
        "contractEndDate": "2027-10-25",
        "isBulkTransaction": false,
        "showLink": true
      }
    ],
    "insights": {
      "newRentalsAveragePrice": 90598.56,
      "newRentalsAveragePriceChange": 1.39,
      "renewedRentalsAveragePrice": 95197.95,
      "renewedRentalsAveragePriceChange": 0.15,
      "roi": 6.1,
      "roiChange": null,
      "saleAveragePrice": null,
      "saleAveragePriceChange": null,
      "saleAveragePricePerSqft": null,
      "saleAveragePricePerSqftChange": null,
      "totalTransactionCount": 887,
      "volumeChange": -5.4
    },
    "pagination": {
      "page": 1,
      "page_size": 10,
      "total_pages": 50,
      "total_matching": 887,
      "accessible_count": 500,
      "is_truncated": true,
      "has_next_page": true
    }
  }
}
```

Related endpoints: https://uaepropertyapi.com/documentation/endpoints/get-get-transactions.md, https://uaepropertyapi.com/documentation/endpoints/price-trend-of-location.md, https://uaepropertyapi.com/documentation/endpoints/get-adrec-transactions.md
