---
title: "Search endpoint for properties"
method: GET
path: "/properties"
tags: ["properties"]
---

# Search endpoint for properties

`GET /properties`

Accepts Search parameters and returns a list of properties. Have a limitation of 50000 records that can be reached.

## Filtering for empty/null values on custom fields

To filter for records where a custom field is empty or null, use the following special values:

- `__empty__` - Find records where the field is null, not set, or equals an empty string
- `__not_empty__` - Find records where the field exists and has a value

### Examples

Find properties where custom field "flur_custom_feld" is empty:
`?cf_flur_custom_feld=__empty__`

Find properties where custom field "notes" has a value:
`?cf_notes=__not_empty__`

## Multilingualism

In Propstack you can set certain texts of an object in several languages. The following fields can be translated:

1. Überschrift (title)
2. Objektbeschreibung (description_note)
3. Lagebeschreibung (location_note)
4. Ausstattung (furnishing_note)
5. Sonstiges (other_note)
6. Käuferprovision (courtage)
7. Provisionshinweis (courtage_note)

To receive the objects in a different language, enter an additional parameter `locale`. By default, you get the German language.
Using `locale=en` would give you the English texts. It is also possible to obtain several languages. Example: `locale=de,en`

## Further filter options

The following fields can also be filtered via the API using "from-to" information:

- Kaufpreis: price
- Kaltmiete: base_rent
- Warmmiete: total_rent
- Fläche: property_space_value
- Wohnfläche: living_space
- Grundstücksfläche: plot_area
- Zimmer: number_of_rooms
- Schlafzimmer: number_of_bed_rooms
- Badezimmer: number_of_bath_rooms
- Etage: floor
- Baujahr: construction_year

The parameters for this always have a `_from` or `_to` appended to determine whether it applies from this value or up to this value. Example:

`?price_from=300000&price_to=350000` returns all properties with a price between €300,000 and €350,000.
`?plot_area=1500` returns all properties with a plot area of more than 1,500 square metres.

## Sorting options

- Auftragsnummer: exposee_id
- Baujahr: construction_year
- Einheitenummer: unit_id.raw
- Etage: floor
- Erstellungsdatum: created_at
- Fläche: property_space_value
- Grundstücksfläche: plot_area
- Kaltmiete: base_rent
- Kaufpreis: price
- Preis: object_price
- Fläche/qm: price_per_sqm
- Status: property_status_position
- Straße: street_number.raw
- Verkaufsdatum: sold_date
- Warmmiete: total_rent
- Zimmer: number_of_rooms
- Zuletzt bearbeitet: updated_at

Possible marketing type (marketing_type):

- `BUY`
- `RENT`

Possible supercategory for object types `object_type`:

- `LIVING`
- `COMMERCIAL`
- `INVESTMENT`

Possible object types `rs_type`:

- `APARTMENT`
- `HOUSE`
- `TRADE_SITE`
- `GARAGE`
- `SHORT_TERM_ACCOMODATION`
- `FLAT_SHARE_ROOM`
- `ASSISTED_LIVING`
- `SENIOR_CARE`
- `OFFICE`
- `GASTRONOMY`
- `INDUSTRY`
- `STORE`
- `SPECIAL_PURPOSE`
- `INVESTMENT`

(Text) fields that can be stored in different languages:

- title
- description_note
- location_note
- furnishing_note
- other_note
- long_description_note
- long_location_note
- long_furnishing_note
- long_other_note
- courtage
- courtage_note

Possible object types `rs_category`:

- `ROOF_STOREY` - Dachgeschoss
- `LOFT` - Loft
- `MAISONETTE` - Maisonette
- `PENTHOUSE` - Penthouse
- `TERRACED_FLAT` - Terrassenwohnung
- `GROUND_FLOOR` - Erdgeschosswohnung
- `APARTMENT` - Etagenwohnung
- `RAISED_GROUND_FLOOR` - Hochparterre
- `HALF_BASEMENT` - Souterrain
- `OTHER` - Sonstige
- `SINGLE_FAMILY_HOUSE` - Einfamilienhaus
- `TWO_FAMILY_HOUSE` - Zweifamilienhaus
- `TERRACE_HOUSE` - Reihenhaus
- `MID_TERRACE_HOUSE` - Reihenmittelhaus
- `TERRACE_END_HOUSE` - Reihenendhaus
- `END_TERRACE_HOUSE` - Reiheneckhaus
- `MULTI_FAMILY_HOUSE` - Mehrfamilienhaus
- `TOWNHOUSE` - Stadthaus
- `FINCA` - Finca
- `BUNGALOW` - Bungalow
- `FARMHOUSE` - Bauernhaus
- `SEMIDETACHED_HOUSE` - Doppelhaushälfte
- `VILLA` - Villa
- `CASTLE_MANOR_HOUSE` - Burg/Schloss
- `SPECIAL_REAL_ESTATE` - Besondere Immobilie
- `TWIN_SINGLE_FAMILY_HOUSE` - Doppeleinfamilienhaus
- `GARAGE - Garage`
- `STREET_PARKING` - Außenstellplatz
- `CARPORT` - Carport
- `DUPLEX` - Duplex
- `CAR_PARK` - Parkhaus
- `UNDERGROUND_GARAGE` - Tiefgarage
- `DOUBLE_GARAGE` - Doppelgarage
- `NO_INFORMATION` - Keine Angabe
- `STUDIO` - Atelier
- `OFFICE` - Büro
- `OFFICE_FLOOR` - Büroetage
- `OFFICE_BUILDING` - Bürohaus
- `OFFICE_CENTRE` - Bürozentrum
- `OFFICE_STORAGE_BUILDING` - Büro-/ Lagergebäude
- `SURGERY` - Praxis
- `SURGERY_FLOOR` - Praxisetage
- `SURGERY_BUILDING` - Praxishaus
- `COMMERCIAL_CENTRE` - Gewerbezentrum
- `LIVING_AND_COMMERCIAL_BUILDING` - Wohn- und Geschäftsgebäude
- `OFFICE_AND_COMMERCIAL_BUILDING` - Büro- und Geschäftsgebäude
- `BAR_LOUNGE` - Barbetrieb/Lounge
- `CAFE` - Café
- `CLUB_DISCO` - Club/Diskothek
- `GUESTS_HOUSE` - Gästehaus
- `TAVERN` - Gaststätte
- `HOTEL` - Hotel
- `HOTEL_RESIDENCE` - Hotelanwesen
- `HOTEL_GARNI` - Hotel garni
- `PENSION` - Pension
- `RESTAURANT` - Restaurant
- `SHOWROOM_SPACE` - Ausstellungsfläche
- `SHOPPING_CENTRE` - Einkaufszentrum
- `FACTORY_OUTLET` - Factory Outlet
- `DEPARTMENT_STORE` - Kaufhaus
- `KIOSK` - Kiosk
- `STORE` - Laden
- `SELF_SERVICE_MARKET` - SB-Markt
- `SALES_AREA` - Verkaufsfläche
- `SALES_HALL` - Verkaufshalle
- `RESIDENCE` - Anwesen
- `FARM` - Bauernhof
- `HORSE_FARM` - Reiterhof
- `VINEYARD` - Weingut
- `REPAIR_SHOP` - Werkstatt
- `LEISURE_FACILITY` - Freizeitanlage
- `INDUSTRIAL_AREA` - Gewerbefläche
- `SPECIAL_ESTATE` - Spezialobjekt
- `LIVING_BUSINESS_HOUSE` - Wohn- und Geschäftshaus
- `HOUSING_ESTATE` - Wohnanlage
- `MICRO_APARTMENTS` - Micro-Apartments
- `COMMERCIAL_BUILDING` - Geschäftshaus
- `SHOP_SALES_FLOOR` - Laden/Verkaufsfläche
- `SUPERMARKET` - Supermarkt
- `RETAIL_PARK` - Fachmarktzentrum
- `BOARDING_HOUSE` - Boarding House
- `CLINIC` - Klinik
- `ASSISTED_LIVING` - Betreutes Wohnen
- `HALL_STORAGE` - Halle/Logistik
- `INDUSTRIAL_PROPERTY` - Produktion/Fertigung

## Query parameters

- `with_total` boolean
- `page` integer
- `per` integer
- `updated_at_from` string, date
- `updated_at_to` string, date
- `status` string
- `order` string
- `sort_by` string
- `group` string
- `q` string
- `country` string
- `project_id` integer
- `marketing_type` 'BUY' | 'RENT'
- `rs_type` 'APARTMENT' | 'HOUSE' | 'TRADE_SITE' | 'GARAGE' | 'OFFICE' | 'SHORT_TERM_ACCOMODATION' | 'GASTRONOMY' | 'INDUSTRY' | 'STORE' | 'SPECIAL_PURPOSE' | 'INVESTMENT' | 'FLAT_SHARE_ROOM' | 'ASSISTED_LIVING' | 'SENIOR_CARE'
- `exact` boolean

## Response `200`

Search endpoint for properties

- EndpointsProperties — Endpoints_Properties model
  - `data` PropertyEntity[]
    - `id` string
    - `name` string
    - `title` string
    - `unit_id` string
    - `exposee_id` string
    - `project_id` string
    - `broker_id` string
    - `archived` string
    - `token` string
    - `street` string
    - `house_number` string
    - `zip_code` string
    - `city` string
    - `lat` string
    - `lng` string
    - `country` string
    - `region` string
    - `hide_address` string
    - `location_name` string
    - `property_space_value` string
    - `for_bidding` string
    - `group_ids` string
    - `property_status_id` string
    - `price_on_inquiry` string
    - `marketing_type` string
    - `object_type` string
    - `rs_type` string
    - `rs_category` string
    - `custom_fields` object
    - `sold_date` string
    - `sold_price` number, float
    - `total_commission` string
    - `internal_commission` string
    - `external_commission` string
    - `internal_commission_percentage` string
    - `external_commission_percentage` string
    - `valuation_price` string
    - `valuation_price_from` string
    - `valuation_price_to` string
    - `openimmo_firstname` string
    - `openimmo_lastname` string
    - `openimmo_email` string
    - `openimmo_phone` string
    - `short_address` string
    - `number_of_rooms` integer
    - `price` integer
    - `base_rent` integer
    - `living_space` integer
    - `number_of_bed_rooms` integer
    - `number_of_bath_rooms` integer
    - `currency` string
    - `free_from` string
    - `rented` boolean
    - `construction_year` integer
    - `energy_certificate_construction_year` integer
    - `energy_efficiency_class` string
    - `energy_efficiency_value` number, float
    - `thermal_characteristic` number, float
    - `plot_area` number, float
    - `additional_area` number, float
    - `heating_costs` number, float
    - `heating_type` string
    - `address` string
    - `apartment_number` string
    - `building_energy_rating_type` string
    - `condition` string
    - `courtage` string
    - `courtage_note` string
    - `deposit` string
    - `description_note` string
    - `short_note` string
    - `energy_certificate_availability` string
    - `firing_types` string
    - `furnishing_note` string
    - `land_registry` string
    - `local_court` string
    - `location_note` string
    - `long_description_note` string
    - `long_furnishing_note` string
    - `long_location_note` string
    - `long_other_note` string
    - `other_note` string
    - `net_floor_space` number, float
    - `parking_space_price` number, float
    - `price_per_sqm` number, float
    - `service_charge` number, float
    - `total_rent` number, float
    - `usable_floor_space` number, float
    - `warning_notice` string
    - `system_warning_notice` string
    - `floor` string
    - `number_of_floors` integer
    - `number_of_parking_spaces` integer
    - `number_of_ev_charging` integer
    - `cellar` boolean
    - `balcony` boolean
    - `garden` boolean
    - `suitable_for_investment` boolean
    - `window_shutter` boolean
    - `bicycle_storage` boolean
    - `laundry_room` boolean
    - `smart_home` boolean
    - `guest_toilet` boolean
    - `kitchen_complete` boolean
    - `ramp` boolean
    - `site_development_type` string
    - `site_constructible_type` string
    - `aut_building_certificates` string[]
    - `primary_outdoor_orientation` string
    - `is24_id` string
    - `is24_contact_id` string
    - `translations` string[]
    - `images` ImageEntity[]
      - `id` string
      - `title` string
      - `url` string
      - `urls` object
      - `is_floorplan` boolean
      - `is_private` boolean
      - `tags` boolean
      - `position` integer
      - `connection_ids` integer[]
      - `updated_at` string
    - `documents` string[]
    - `links` string[]
    - `rent_subsidy` string
    - `maintenance_reserve` number, float
    - `fork_ids` integer[]
    - `fork_id` integer
    - `location_id` integer
    - `public_expose_url` string
    - `created_at` string
    - `updated_at` string
  - `total` integer — Show the total count of properties

## Other responses

- `400` — validation_error
- `401` — authentication_error
- `403` — authorization_error
- `404` — not_found_error
- `422` — validation_error
- `500` — internal_server_error

---

[API](https://skmtc.net/propstack/apis/propstack-api-v2-beta.md) · [All operations](https://skmtc.net/propstack/apis/propstack-api-v2-beta/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/propstack/propstack-api-v2-beta/revisions/ae1e0fe6da1a/schema)
