Offer Search
POST
offers/search
Returns offers that match the specified search criteria.
Request#
curl -X POST 'https://api.pricehubble.com/api/v1/offers/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 74126eab0a9048d993bda4b1b55ae074' \
-d '{
"referenceLocation": {
"address": {
"city": "Zurich",
"houseNumber": "19",
"postCode": "8001",
"street": "Gerechtigkeitsgasse"
}
},
"filters": {
"dealType": "sale",
"startDate": {
"min": "2018-01-01"
},
"isActive": true,
"salePrice": {
"currency": "CHF",
"max": 1000000
},
"location": [
{
"circle": {
"center": {
"coordinates": {
"latitude": 47.36925,
"longitude": 8.531118
}
},
"radius": 5000
}
}
],
"propertyType": [
{
"code": "apartment",
"subcode": "apartment_normal"
},
{
"code": "apartment",
"subcode": "apartment_attic"
}
],
"livingArea": {
"min": 80,
"max": 110
},
"numberOfRooms": {
"min": 4,
"max": 4.5
},
"hasLift": true,
"hasParkingSpaces": true
},
"offset": 0,
"limit": 10,
"orderBy": [
{
"field": "distance"
},
{
"field": "startDate",
"direction": "desc"
}
],
"dossierId": "3bac39b8-2d84-4ae9-a693-40502071ea5d",
"countryCode": "CH"
}'
Field | Description | Type | Remarks |
---|---|---|---|
referenceLocation | Reference location of the search. Distances of offers are computed relative to this location | Location | |
dossierId | ID of the dossier | string | If this field is added to the request, then the referenceLocation must be the same as the dossierId's location (address or coordinates) |
filters | Allows to specify various search criteria | object | |
filters.offerIds | IDs of offers returned in a previous call (see response.items[i].offerId ); can be used to get the latest state of the respective offers |
array of strings | min items: 0, max items: 24 |
filters.dealType | Filter on offer deal type | string | Valid values are sale or rent ; required unless offerIds is specified |
filters.startDate | Filter on offer start date | object | |
filters.startDate.min | Lower bound for offer start date | date | Date format: YYYY-MM-DD |
filters.startDate.max | Upper bound for offer start date | date | Date format: YYYY-MM-DD |
filters.isActive | Filter on offer's isActive flag |
boolean | |
filters.isFurnished | Filter on offer’s isFurnished flag |
boolean | Only relevant for DE , FR and UK if filters.dealType is rent |
filters.isNew | Filter on offer’s isNew flag |
boolean | |
filters.isPrivate | Filter private offers with true or professional offers with false |
boolean | Only relevant for DE , FR and BE |
filters.salePrice | Filter on offer sale price | PriceValueRange | Only relevant if filters.dealType is sale |
filters.rentGross | Filter on rent gross | PriceValueRange | Only relevant for AT , BE , CH , CZ , DE , ES , FR , JP , NL and SK if filters.dealType is rent |
filters.rentNet | Filter on rent net | PriceValueRange | Only relevant for UK if filters.dealType is rent |
filters.location | Filters on location. If multiple filters are provided, they are connected by a logical "or" | array of LocationFilters | |
filters.propertyType | Filter on property type. Matches offers which have one of the specified property types | array of PropertyTypes | |
filters.livingArea | Filter on net living area | ValueRange | In m2 For UK : in sq.ft |
filters.landArea | Filter on land area | ValueRange | In m2 For UK : in acres |
filters.energyLabel | Filter on energy label | array of Energy labels | Only relevant for BE , DE , FR , NL , UK |
filters.floorNumber | Filter on floor number | ValueRange | Only for apartments. Only relevant for BE , CH , CZ , DE , SK |
filters.numberOfBathrooms | Filter on number of bathrooms | ValueRange | Only relevant for AT , BE , FR , DE , NL , UK |
filters.buildingYear | Filter on building year | ValueRange | Not available in UK |
filters.numberOfRooms | Filter on number of rooms | FloatValueRange | Not relevant in BE , UK |
filters.hasOpenKitchen | Whether the kitchen is in a separate room or part of the living area | boolean | Only relevant for CZ |
filters.numberOfBedrooms | Filter on number of bedrooms | ValueRange | Only available in BE , UK |
filters.buildingStructure | Filter on building structure | array of Building Structures | Only relevant in JP |
filters.roomConfiguration | Filter on room configuration | array of Room configurations | Only relevant in JP |
filters.daysOnMarket | Filter on days on market | ValueRange | |
filters.noise | Upper and lower bound for noise score | Score | Only available in CH |
filters.slope.min | Lower bound for slope, in degrees | integer | min: 0, max: 90 Only available in CH |
filters.slope.max | Upper bound for slope, in degrees | integer | min: 0, max: 90 Only available in CH |
filters.distanceHospital.max | Upper bound for the distance to the closest hospital POI, in meters | integer | max: 2'000 |
filters.distanceGroceryStore.max | Upper bound for the distance to the closest grocery store POI, in meters | integer | max: 2'000 |
filters.distancePublicTransport.max | Upper bound for the distance to the closest public transport POI, in meters | integer | max: 2'000 |
filters.hasLift | Filter on the offer's hasLift flag |
boolean | Only available in AT , BE , CH , CZ , DE , FR , NL , SK |
filters.hasParkingSpaces | Filter on the offer's hasParkingSpaces flag |
boolean | Only available in AT , BE , CH , CZ , FR , NL , SK |
filters.hasTerrace | Filter on the offer's hasTerrace flag |
boolean | Only available in CH , DE , FR |
filters.hasCellar | Filter on offer's hasCellar flag |
boolean | Only available in CZ , DE , FR |
filters.hasBalcony | Filter on offer's hasBalcony flag |
boolean | Only available in CH , CZ , DE |
filters.hasPool | Filter on offer's hasPool flag |
boolean | Only available in BE |
filters.hasGarden | Filter on offer's hasGarden flag |
boolean | Only available in CZ , DE , FR , NL , SK |
filters.hasLift | Filter on the offer's hasLift flag |
boolean | |
filters.hasParkingSpaces | Filter on the offer's hasParkingSpaces flag |
boolean | |
filters.propertyCondition | Filter on propertyCondition |
array of Conditions | Only relevant in AT , BE , CZ , DE , SK |
filters.numberOfFloorsInBuilding | Filter on numberOfFloorsInBuilding |
ValueRange | Only for apartment . Only relevant in BE , NL |
filters.isWheelchairAccessible | Filter on the offer's isWheelchairAccessible flag |
boolean | |
offset | Offset of the query (allows pagination) | integer | min: 0, max: 1'000, default: 0 |
limit | Maximum number of results to return | integer | min: 0, max: 500, default: 10 |
orderBy | Sort order | array of OrderByCriterions | |
countryCode | ISO country code | string | |
locale | User locale | string |
LocationFilter#
To filter by location, either a circle
or a divisionLevel*
must be provided.
If you would like to filter by division levels but only have an address or coordinates and don't know the official ID of the administrative division, you can use the Administrative Divisions endpoint to look up the administrative division and the respective ID.
Field | Description | Type | Remarks |
---|---|---|---|
circle | Location filter of type "circle". Matches offers which lie within the circle defined by center and radius |
object | |
circle.center | Center of the circle | Location | |
circle.radius | Radius of the circle, in m | integer | min: 0, max: 30'000, default: 20'000 |
divisionLevel4 | The official ID of the level 4 division | string | Only relevant for SK |
divisionLevel6 | The official ID of the level 6 division | string | |
divisionLevel8 | The official ID of the level 8 division | string | |
divisionLevel9 | The official ID of the level 9 division | string | Only relevant for SK |
divisionLevel100 | The official ID of the level 100 division | string |
OrderByCriterion#
Field | Description | Type | Remarks |
---|---|---|---|
field | Field by which to sort | string | Valid values are distance , startDate , salePrice , rentGross , rentNet , salePricePerSqm , rentGrossPerSqm or rentNetPerSqm |
direction | Sort direction | string | Valid values are asc (default) or desc |
Response#
{
"items": [
{
"offerId": "c41924a0fb86b4e2e2da33f2ff468b72f2...",
"dealType": "sale",
"startDate": "2018-07-31",
"isActive": true,
"isFurnished": false,
"isNew": true,
"title": "Wohnen mit Aus- und Weitsicht",
"description": "An toller Lage, angrenzend an die Landwirtschafts-...",
"images": [
{
"url": "https://storage.googleapis.com/.../...b7879b37e.jpg"
},
{
"url": "https://storage.googleapis.com/.../...0f771be42.jpg"
}
],
"contactInfo": {
"organization": {
"raw": "Bachmann & Partner Immobilien\nEglisau\n\n\n044 854 00 00"
}
},
"isExclusive": false,
"url": "https://example.org/realestate/offers/123",
"salePrice": 490000,
"currency": "CHF",
"address": {
"city": "Oberglatt",
"houseNumber": "1",
"postCode": "8154",
"street": "Allmendstrasse"
},
"coordinates": {
"latitude": 47.4741020202637,
"longitude": 8.51667785644531
},
"distance": 11708,
"floorNumber": 2,
"buildingYear": 1971,
"propertyType": {
"code": "apartment",
"subcode": "apartment_normal"
},
"livingArea": 95,
"numberOfRooms": 4.5,
"hasLift": true,
"hasParkingSpaces": true,
"numberOfIndoorParkingSpaces": 0,
"numberOfOutdoorParkingSpaces": 1,
},
...
],
"totalItems": 18
}
Field | Description | Type | Remarks |
---|---|---|---|
totalItems | Total number of matching offers found | integer | min: 0 This field is capped and is only accurate if there are less than 1’500 results. If there are more results, this field will equal 1’500 |
items | List of matching offers | array of Offers | empty array if no results |
Offer#
Field | Description | Type | Remarks |
---|---|---|---|
offerId | Technical ID of the offer | string | |
dealType | Deal type of the offer | string | Valid values are sale or rent |
startDate | Start date of the offer, i.e. date when the offer was first published | date | Format: YYYY-MM-DD |
endDate | End date of the offer, i.e. date when the offer disappeared from the market; only set for historical (inactive) offers | date | Format: YYYY-MM-DD |
daysOnMarket | Number of days that the offer has stayed on the market | integer | |
isActive | Is the offer still active, i.e. is the property still available? | boolean | |
isNew | Has the property never been used before, i.e. has it never been sold or rented out? | boolean | |
isPrivate | true if the offer is private, false if the offer is professional, not present if unknown |
boolean | |
isFurnished | true if the offer is furnished, false if not |
boolean | Only relevant for DE , FR and UK if filters.dealType is rent |
title | Title of the offer | string | |
description | Description of the offer | string | |
images | Images of the offer | array of URLs | e.g. [{"url": "https://storage.googleapis.com/abc/b787e.jpg"}] |
contactInfo | Contact information for the offer | object | Possible subfields: raw , organization.raw , viewPerson.raw , inquiryPerson.raw |
isExclusive | Is the offer exclusively published on one website | boolean | |
url | Original url of the offer ad | string | |
salePrice | Sale price of the offer | integer | Only present if dealType is sale |
salePricePerSqm | Sale price per m2, per sq.ft for UK |
integer | Only present if dealType is sale |
rentNet | Monthly net rent of the offer | integer | Only present if dealType is rent |
rentNetPerSqm | Monthly net rent per m2 of the offer | integer | Only present if dealType is rent |
rentGross | Monthly gross rent of the offer | integer | Only present if dealType is rent |
rentGrossPerSqm | Monthly gross rent per m2 of the offer | integer | Only present if dealType is rent |
currency | Currency of the offer | Currency | |
address | Address of the property | Address | |
coordinates | Coordinates of the property | Coordinates | |
distance | Distance of the property to the reference location, in m | integer | Only returned if the request contains a referenceLocation |
distanceHospital | Distance to the closest hospital POI, in m | integer | Only returned if the request contains filters.distanceHospital.max |
distanceGroceryStore | Distance to the closest grocery store POI, in m | integer | Only returned if the request contains filters.distanceGroceryStore.max |
distancePublicTransport | Distance to the closest public transport POI, in m | integer | Only returned if the request contains filters.distancePublicTransport.max |
floorNumber | Floor number | integer | |
buildingYear | Building year of the property | integer | |
renovationYear | Renovation year of the property | integer | Only relevant in DE |
propertyType | Type of the property | PropertyType | |
livingArea | Net living area (SIA standard) of the property | integer | In m2 For UK : in sq.ft |
landArea | Total area of the lot/parcel on which the house is standing | integer | In m2 For UK : in acres |
volume | Volume of the property (house) | integer | In m3 For UK : in cu.ft |
numberOfRooms | Number of rooms of the property | float | |
energyLabel | Energy label of the property | Energy label | Only relevant in BE , DE , FR , NL and UK |
hasOpenKitchen | Whether the kitchen is in a separate room or part of the living area | boolean | Only relevant for CZ |
hasCellar | Whether the property has a cellar | boolean | Only available in CZ , DE , FR , SK |
numberOfBedrooms | Number of bedrooms of the property | integer | Only relevant in BE |
numberOfBathrooms | Number of bathrooms of the property | integer | Only relevant in DE |
buildingStructure | Building structure | Building Structure | Only relevant in JP and SK |
roomConfiguration | Room configuration | Room Configuration | Only relevant in JP |
propertyCondition | General condition of the property | Condition | Only relevant in AT , BE , CZ , DE , SK |
numberOfFloorsInBuilding | Total number of floors of the building | integer | Only for apartment . Only relevant in BE , NL |
domesticEquipmentQuality | Quality of the equipment in the property | string | Only relevant in DE |
facilityItems | List of facility items | string | Only relevant in JP |
noise | Property area noise levels score | Score | min: 0.0, max: 1.0 Only returned if the request contains noise filter |
slope | Property area slope, in degrees | float | min: 0.0, max: 90.0 Only returned if the request contains slope filter |
hasLift | Does the building have a lift? | boolean | Only available in AT , BE , CH , CZ , DE , FR , NL , SK |
hasParkingSpaces | Does the property have parking spaces? | boolean | Only available in AT , BE , CH , CZ , FR , NL , SK |
hasTerrace | Does the property have a terrace? | boolean | Only available in CH , DE , FR |
hasBalcony | Does the property have a balcony? | boolean | Only available in CH , CZ , DE |
hasPool | Does the property have a pool? | boolean | Only available in BE |
hasGarden | Does the property have a garden? | boolean | Only available in CZ , DE , FR , NL , SK |
isWheelchairAccessible | Is the property wheelchair accessible? | boolean | |
numberOfIndoorParkingSpaces | Number of indoor parking spaces | integer | |
numberOfOutdoorParkingSpaces | Number of outdoor parking spaces | integer | |
priceUpdates | List of price updates | priceUpdate |
Price Update#
Field | Description | Type | Remarks |
---|---|---|---|
price | Price of the property | float | |
date | Date of the update | string | Formatted as YYYY-MM-DD |