# realestateVIEW Property Search API Documentation

Scrappa's `GET /api/realestateview/search` returns Australian property for sale, for rent or sold on realestateVIEW as structured JSON. Set `mode=buy`, `mode=rent` or `mode=sold` and give one suburb.

## What you get

Each listing has `id`, `status`, `listing_type`, `price_text`, `price_numeric`, `rent_per_week`, `sold_price`, `sold_on`, `beds`, `baths`, `cars`, `land_size_sqm`, `property_type`, `address`, `lat`, `lng`, `images`, `inspections`, `auction_at`, the dates the listing was created and updated, `agents` and the `agency`. Prices are in Australian dollars and rent is per week. Image fields are public links.

## One suburb per search

Take `state`, `suburb` and `postcode` from `/api/realestateview/location-autocomplete`. A search covers that suburb only, never its neighbours. To cover several suburbs, send one request per suburb.

## Filters are honoured

Beds, baths and car spaces take a minimum (`_min`) or an exact value (`_exact`), not both. The portal can return a listing that breaks a filter, so every listing is checked again. A listing that breaks a filter is never returned and is counted in `filtered_out_count`. `applied_filters` echoes what was used.

## Hidden prices

Many agents hide the price. With `price_min` or `price_max`, a listing with a hidden or zero price is left out, because it cannot be shown to match. Without a price filter such a listing is returned with `is_price_hidden` set to `true` and `price_numeric` empty. A price of 0 is never shown as a price.

## Sorting

`recommended` is the default. `price_asc` and `price_desc` sort by price. `newest` sorts by listing date and `recently_updated` by the last change. `bedrooms_asc` and `bedrooms_desc` sort by bedrooms. Listings with a hidden price can lead a price sort.

## Pagination

`page` is 1-based and a page holds up to 25 listings. `pagination.page` is always the page you asked for. The portal serves the first 9 pages of a search, about 200 listings (`pagination.max_pages`). A page past the last one returns an empty `listings` list with the true `total_results`, never the data of another page. Narrow the search with filters to reach the rest.

- **Documentation:** [https://scrappa.co/docs/realestateview-api/realestateview_search](https://scrappa.co/docs/realestateview-api/realestateview_search)
- **API group:** realestateVIEW API
- **Endpoint:** `GET https://scrappa.co/api/realestateview/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 |
| --- | --- | --- | --- |
| `mode` | string | Yes | buy for sale listings, rent for rental listings or sold for sold listings. |
| `state` | string | Yes | State code from location-autocomplete: act, nsw, nt, qld, sa, tas, vic or wa. |
| `suburb` | string | Yes | Suburb name from location-autocomplete, for example Melbourne. |
| `postcode` | string | Yes | Four-digit postcode from location-autocomplete, for example 3000. |
| `property_types` | string | No | house, apartment, apartment_unit, studio, townhouse, villa, land or rural. Repeat the parameter or separate with commas. |
| `beds_min` | integer | No | Minimum number of bedrooms. Do not combine with beds_exact. |
| `beds_exact` | integer | No | Exact number of bedrooms. |
| `baths_min` | integer | No | Minimum number of bathrooms. Do not combine with baths_exact. |
| `baths_exact` | integer | No | Exact number of bathrooms. |
| `cars_min` | integer | No | Minimum number of car spaces. Do not combine with cars_exact. |
| `cars_exact` | integer | No | Exact number of car spaces. |
| `price_min` | integer | No | Minimum price in Australian dollars. For rent this is per week. For sold it is the sold price. |
| `price_max` | integer | No | Maximum price in Australian dollars. For rent this is per week. For sold it is the sold price. |
| `land_size_min` | integer | No | Minimum land size in square metres. |
| `land_size_max` | integer | No | Maximum land size in square metres. |
| `exclude_under_contract` | boolean | No | true to leave out listings that are under contract. |
| `sort` | string | No | recommended (default), price_asc, price_desc, newest, recently_updated, bedrooms_asc or bedrooms_desc. |
| `page` | integer | No | Result page, 1-based. Each page holds up to 25 listings. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/realestateview/search?mode=buy&state=vic&suburb=Melbourne&postcode=3000&beds_min=2"
```

## Example response

```json
{
    "success": true,
    "total_results": 538,
    "total_results_is_estimate": false,
    "returned": 1,
    "filtered_out_count": 0,
    "pagination": {
        "page": 1,
        "per_page": 25,
        "total_pages": 9,
        "max_pages": 9,
        "has_next_page": true
    },
    "applied_filters": {
        "mode": "buy",
        "state": "vic",
        "suburb": "Melbourne",
        "postcode": "3000",
        "beds_min": 2,
        "sort": "recommended"
    },
    "listings": [
        {
            "id": 18245247,
            "status": "On Market",
            "listing_type": "sale",
            "sale_method": "Sale",
            "listing_path": "/property/vic/melbourne-3000/1409-260-spencer-street-18245247/",
            "price_text": "$645,000",
            "price_numeric": 645000,
            "price_to": null,
            "is_price_hidden": false,
            "rent_per_week": null,
            "sold_price": null,
            "is_sold_price_hidden": false,
            "sold_on": null,
            "beds": 2,
            "baths": 2,
            "cars": 0,
            "land_size_sqm": 84,
            "property_type": "Apartment & Unit",
            "property_types": [
                "Apartment & Unit"
            ],
            "source_property_type": "Apartment",
            "is_new_construction": false,
            "is_home_and_land": false,
            "address": {
                "unit_number": "1409",
                "street_number": "260",
                "street": "Spencer Street",
                "suburb": "Melbourne",
                "postcode": "3000",
                "state": "VIC",
                "city": "Melbourne",
                "region": "Melbourne",
                "lga": "Melbourne Council",
                "gnaf_id": "GAVIC720552251",
                "is_street_hidden": false
            },
            "lat": -37.814655,
            "lng": 144.952675,
            "images": [
                {
                    "sequence": 1,
                    "caption": null,
                    "url": "https://view.com.au/viewstatic/images/listing/2-bedroom-apartment-in-melbourne-vic-3000/750-w/18245247-1-D2A9EB3.jpg",
                    "thumbnail_url": "https://view.com.au/viewstatic/images/listing/2-bedroom-apartment-in-melbourne-vic-3000/400-w/18245247-1-D2A9EB3.jpg",
                    "large_url": "https://view.com.au/viewstatic/images/listing/2-bedroom-apartment-in-melbourne-vic-3000/1200-w/18245247-1-D2A9EB3.jpg"
                }
            ],
            "inspections": [
                {
                    "starts_at": "2026-10-31 12:00:00",
                    "ends_at": "2026-10-31 12:15:00"
                }
            ],
            "auction_at": null,
            "created_at": "2026-10-26 07:50:49",
            "updated_at": "2026-10-26 07:50:55",
            "on_market_at": "2026-10-26 07:50:49",
            "agents": [
                {
                    "id": 104933,
                    "name": "Sample Agent",
                    "first_name": "Sample",
                    "last_name": "Agent",
                    "position": null,
                    "phone": "1300 000 000",
                    "mobile": "0400 000 000",
                    "email": null,
                    "photo_url": null,
                    "profile_path": "/agent-profile/sample-agent-104933/",
                    "agency_id": null,
                    "sold_listings": 16,
                    "average_sold_price": 569161
                }
            ],
            "agency": {
                "id": 24798,
                "name": "Sample Realty",
                "slug": "sample-realty",
                "address": "Suite 1, Level 2, 34 Sample Street, Melbourne, VIC 3000",
                "suburb": "Melbourne",
                "postcode": "3000",
                "logo_url": "https://view.com.au/viewstatic/images/listing/300-min/f9a416dc651440608bd7cbc8b2450bae.png",
                "brand_colour": "00202F",
                "profile_path": "/real-estate-agency/sample-realty-24798/"
            }
        }
    ],
    "meta": {
        "endpoint_family": "search",
        "billable": true,
        "attempts": 1
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A query parameter is missing, unknown or unusable. Unknown parameters are rejected, never ignored (`request_rejected` is the same failure raised by the source). Non-billable. |
| 503 | Source Unavailable | realestateVIEW could not be reached in time, refused the request, or its answer changed shape (`upstream_unavailable`, `request_blocked`, `deadline_exhausted`, `parser_drift`). Retryable and never billed. Clients are never rate limited. |

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