> ## Documentation Index
> Fetch the complete documentation index at: https://docs.proptyerp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pull properties

> search_read on real_estate.real_estate

Model technical name: **`real_estate.real_estate`**.

Always request fields by **technical name** (API), not the Dutch UI label.

## JSON-RPC `search_read`

```python theme={null}
import json
import urllib.request

url = "https://YOUR_HOST"
db = "YOUR_DB"
uid = 2
password = "YOUR_API_KEY"

fields = [
    "id",
    "record_name",
    "name",
    "reference",
    "street",
    "street_number",
    "zip",
    "city",
    "estate_asking_price",
    "estate_rental_price",
    "is_sale_transaction",
    "is_rent_transaction",
    "real_estate_type",
    "responsible_realtor_id",
    "website_published",
    "is_live_on_immoweb",
    "is_live_on_immoscoop",
    "whise_estate_id",
    "advertisement_title",
]

payload = {
    "jsonrpc": "2.0",
    "method": "call",
    "params": {
        "service": "object",
        "method": "execute_kw",
        "args": [
            db,
            uid,
            password,
            "real_estate.real_estate",
            "search_read",
            [[["active", "=", True], ["website_published", "=", True]]],
            {"fields": fields, "limit": 50},
        ],
    },
    "id": 2,
}

req = urllib.request.Request(
    f"{url}/jsonrpc",
    data=json.dumps(payload).encode(),
    headers={"Content-Type": "application/json"},
)
records = json.load(urllib.request.urlopen(req))["result"]
```

## XML-RPC equivalent

```python theme={null}
records = models.execute_kw(
    db, uid, password,
    "real_estate.real_estate",
    "search_read",
    [[["active", "=", True]]],
    {"fields": ["id", "record_name", "estate_asking_price", "city"], "limit": 50},
)
```

## Useful domains

| Goal | Domain |
| - | - |
| Active listings | `[["active", "=", True]]` |
| Published on website | `[["website_published", "=", True]]` |
| For sale | `[["is_sale_transaction", "=", True]]` |
| For rent | `[["is_rent_transaction", "=", True]]` |
| Appartement | `[["real_estate_type", "=", "appartement"]]` |
| Nieuwbouw | `[["state_of_property", "=", "new_build"]]` |
| City filter | `[["city", "ilike", "Antwerpen"]]` |
| Min asking price | `[["estate_asking_price", ">=", 250000]]` |
| Imported from WHISE | `[["whise_estate_id", "!=", False]]` |
| One WHISE estate | `[["whise_estate_id", "=", "12345"]]` |
| Live on Immoweb | `[["is_live_on_immoweb", "=", True]]` |
| Live on Immoscoop | `[["is_live_on_immoscoop", "=", True]]` |
| Dossierverantwoordelijke | `[["responsible_realtor_id", "=", 6]]` |

Full key lists: [Allowed values](/docs/api-reference/allowed-values). WHISE CSV mapping: [WHISE import](/docs/guides/whise-import).

Combine with `&` logic by listing multiple leaf domains (AND). For OR, use `"|"` operators as in the [Odoo domain docs](https://www.odoo.com/documentation/18.0/developer/reference/backend/orm.html#search-domains).

## How values look in the API

| Field type | Returned as |
| - | - |
| `Char`, `Text`, `Selection` | string (selection = **key**, not label) |
| `Float`, `Integer` | number |
| `Boolean` | `true` / `false` |
| `Date` | `"YYYY-MM-DD"` or `false` |
| `Datetime` | `"YYYY-MM-DD HH:MM:SS"` (UTC) or `false` |
| `Many2one` | `[id, "display name"]` or `false` |
| `Many2many` / `One2many` | `[id, id, …]` |
| `Html` | HTML string |
| empty | `false` |

## Discover fields at runtime

```python theme={null}
fields_get = models.execute_kw(
    db, uid, password,
    "real_estate.real_estate",
    "fields_get",
    [],
    {"attributes": ["string", "help", "type", "relation", "selection"]},
)
```

## Related models you may join

| Field | Related model |
| - | - |
| `owner_ids` | `res.partner` |
| `responsible_realtor_id` | `res.users` |
| `transaction_id` | `real_estate.real_estate_transaction_tag` |
| `selling_state_id` | `real_estate.real_estate_selling_state_tag` |
| `image_ids` | `real_estate.image` |
| `bedroom_ids` | `real_estate.real_estate_bedroom` |
| `crm_lead_ids` | `crm.lead` |
| `meeting_ids` | `calendar.event` |
| `whise_import_batch_id` | `ots.whise.import.batch` |

Read related records with another `search_read` on that model and `[["id", "in", ids]]`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.