# Private Property Search

Search residential, commercial and farm listings across South Africa. Combine type with deal_type to pick a market. Listings keep their upstream fields, and description_truncated marks the one field that arrives shortened. A malformed location filter is silently ignored upstream rather than rejected, so compare the returned selected_shapes against the location_id you requested to confirm the area filter was applied.

- **Documentation:** [https://scrappa.co/docs/privateproperty-api/privateproperty_search](https://scrappa.co/docs/privateproperty-api/privateproperty_search)
- **API group:** Private Property API
- **Endpoint:** `GET https://scrappa.co/api/privateproperty/listings/search`

## 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 |
| --- | --- | --- | --- |
| `type` | string | No | residential, commercial, or farm. Default residential. |
| `deal_type` | string | No | sale or rent. Default sale. |
| `location_id` | integer | No | Location id from locations/children or locations/autocomplete. |
| `location_name` | string | No | Name of the chosen location, used for display. |
| `location_descriptor` | string | No | Parent region of the chosen location, used for display. |
| `min_price` | integer | No | Minimum price in rand. |
| `max_price` | integer | No | Maximum price in rand. |
| `min_bedrooms` | integer | No | Minimum bedrooms. Residential only. |
| `min_baths` | integer | No | Minimum bathrooms. Residential only. |
| `sub_category[]` | string | No | Sub category filter. Valid values depend on type and deal_type. |
| `rental_price_type` | string | No | PerMonth, PerWeek, PerDay, or PerSquareMetre. |
| `location_shape_type` | integer | No | Shape type of the chosen location, used for display. |
| `has_pool` | boolean | No | Restrict to listings with a pool. Residential only. |
| `has_staff_quarters` | boolean | No | Restrict to listings with staff quarters. Residential only. |
| `has_flatlets` | boolean | No | Restrict to listings with flatlets. Residential only. |
| `has_borehole` | boolean | No | Restrict to listings with a borehole. Residential and farm only. |
| `has_scenic_view` | boolean | No | Restrict to listings with a scenic view. Residential and farm only. |
| `has_alarm` | boolean | No | Restrict to listings with an alarm. Residential only. |
| `has_electric_fencing` | boolean | No | Restrict to listings with electric fencing. Residential only. |
| `has_security_post` | boolean | No | Restrict to listings with a security post. Residential only. |
| `has_access_gate` | boolean | No | Restrict to listings with an access gate. Residential only. |
| `has_intercom` | boolean | No | Restrict to listings with an intercom. Residential only. |
| `page` | integer | No | Page number, starting at 1. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/privateproperty/listings/search?type=residential&deal_type=sale&min_bedrooms=3"
```

## Example response

```json
{
    "success": true,
    "page": 1,
    "total_filtered_results": 110757,
    "selected_shapes": [
        {
            "id": 10326,
            "name": "Waterfall Valley"
        }
    ],
    "results": [
        {
            "portalRef": "T5642440",
            "listingPrice": {
                "price": 1850000
            }
        }
    ]
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 503 | Upstream Unavailable | Private Property returned an unsuccessful, empty or malformed answer. |

## 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)
