# 99.co Development Transactions API Documentation

Read the recorded sale or rental transactions of one development. Sale rows carry the month, block, masked unit, bedrooms, area in square feet, price and price per square foot. Rental rows carry the month, bedrooms, an area band, rent and rent per square foot. Every row keeps the display label and adds parsed numbers. The response also returns the table headers, pagination, and the overview with profitability and price statistics. Take the development_id from a /search item or from /autocomplete. District, area and street ids are not accepted. A development id that does not exist is a non-billable 404, and a page past the last one is an empty page that keeps the requested page number.

- **Documentation:** [https://scrappa.co/docs/99co-api/99co_transactions](https://scrappa.co/docs/99co-api/99co_transactions)
- **API group:** 99.co API
- **Endpoint:** `GET https://scrappa.co/api/99co/v1/transactions`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `development_id` | string | Yes | Development id from the development_id field of a /search item or /autocomplete suggestion. Example: deBww68UZiCQC9buT6HJHn94. |
| `transaction_type` | string | Yes | sale or rent. |
| `page` | integer | No | One-based page number, 1 to 5000. Defaults to 1. |
| `limit` | integer | No | Transactions per page, 1 to 60. Defaults to 20. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/99co/v1/transactions?development_id=deBww68UZiCQC9buT6HJHn94&transaction_type=sale&limit=5"
```

## Example response

```json
{
    "success": true,
    "data": {
        "development_id": "deBww68UZiCQC9buT6HJHn94",
        "transaction_type": "sale",
        "currency": "SGD",
        "headers": [
            {
                "key": "date",
                "title": "Date sold"
            },
            {
                "key": "blk",
                "title": "Block"
            },
            {
                "key": "unit",
                "title": "Unit"
            },
            {
                "key": "beds",
                "title": "Beds"
            },
            {
                "key": "psf_psm",
                "title": "PSF"
            },
            {
                "key": "area",
                "title": "Area (sqft)"
            },
            {
                "key": "price",
                "title": "Price sold"
            }
        ],
        "items": [
            {
                "date": "07/2026",
                "block": "37",
                "unit": "#12-xx",
                "bedrooms": 2,
                "bedrooms_label": "2 BR",
                "area_sqft_min": 915,
                "area_sqft_max": 915,
                "area_label": "915",
                "price": 2150000,
                "price_label": "S$ 2.150M",
                "price_per_sqft": 2350,
                "price_per_sqft_label": "S$ 2,350",
                "is_gfa_harmonised": false,
                "transaction_type": "sale"
            }
        ],
        "pagination": {
            "current_page": 1,
            "page_size": 5,
            "total_results": 432,
            "total_pages": 87,
            "has_next_page": true
        },
        "overview": {
            "profitability": {
                "transactions_description": "of 432 transactions sold at a profit",
                "profit_description": "(33.1% profitable)",
                "trend": "up",
                "highest_sold_psf": "S$ 2,528 psf",
                "average_years_held": "(8.4 yrs)"
            },
            "statistics": {
                "price": {
                    "average_count": "S$ 2.1 M",
                    "description": "-8.2% (YoY)",
                    "trend": "down"
                },
                "psf": {
                    "average_count": "S$ 2,355 psf",
                    "description": "-2.8% (YoY)",
                    "trend": "down"
                }
            }
        }
    },
    "meta": {
        "endpoint_family": "transactions",
        "billable": true
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A public parameter is missing or invalid. No upstream call is made and the response is not billable. |
| 404 | Resource Not Found | The requested 99.co resource does not exist. The response is not billable. |
| 502 | Unexpected Upstream Response | 99.co answered with a body that is not the documented shape. The response is not billable. |
| 503 | Upstream Unavailable | 99.co was temporarily unavailable or blocked the request. The response is not billable and the request never answers 429. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
