Exclusive Offer Search
POST
comparables/exclusive/offers/search
Returns exclusive offers that match the specified search criteria.
Request#
curl -X POST 'https://api.pricehubble.com/api/v1/comparables/exclusive/offers/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 74126eab0a9048d993bda4b1b55ae074' \
-d '{
"referenceLocation": {
"address": {
"city": "Berlin",
"houseNumber": "30",
"postCode": "10779",
"street": "Heilbronner Str."
}
},
"filters": {
"dealType": "sale",
"isActive": true,
"salePrice": {
"currency": "EUR",
"max": 1000000
},
"location": [
{
"circle": {
"center": {
"coordinates": {
"latitude": 52.49303,
"longitude": 13.34087
}
},
"radius": 30000
}
}
],
"propertyType": [
{
"code": "apartment",
"subcode": "apartment_normal"
},
{
"code": "apartment",
"subcode": "apartment_attic"
}
],
"livingArea": {
"min": 80,
"max": 110
},
"numberOfRooms": {
"min": 4,
"max": 4.5
},
"hasLift": true
},
"offset": 0,
"limit": 10,
"orderBy": [
{
"field": "distance"
},
{
"field": "startDate",
"direction": "desc"
}
],
"countryCode": "DE"
}'
Field | Description | Type | Remarks |
---|---|---|---|
referenceLocation | Reference location of the search. Distances of offers are computed relative to this location | Location | |
filters | Allows to specify various search criteria | object | |
filters.offerIds | Source IDs of offers created earlier (see response.items[i].sourceOfferId ); |
array of strings | min items: 0, max items: 24 |
filters.dealType | Filter on offer deal type | enum | 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.isNew | Filter on offer’s isNew flag |
boolean | |
filters.isFurnished | Filter on offer’s isFurnished flag |
boolean | Only relevant for DE and FR if filters.dealType is rent |
filters.isPrivate | Filter private offers with true or professional offers with false |
boolean | |
filters.salePrice | Filter on offer sale price | PriceValueRange | Only relevant if filters.dealType is sale |
filters.rentGross | Filter on rent gross | PriceValueRange | Only relevant 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.buildingYear | Filter on building year | ValueRange | |
filters.numberOfRooms | Filter on number of rooms | FloatValueRange | |
filters.energyLabel | Filter on energy label | array of enum | For DE: A++ , A+ , A .. H . For NL: A+++ , A++ , A+ , A .. G . For BE : A++ , A+ , A .. G . For others: A .. G . Format a_plus_plus , a_plus , ... h is also allowed. |
filters.daysOnMarket | Filter on days on market | ValueRange | |
filters.hasLift | Filter on the offer's hasLift flag |
boolean | |
filters.hasBalcony | Filter on the offer's hasBalcony flag |
boolean | |
filters.hasIndoorParkingSpaces | Filter on the offer's hasIndoorParkingSpaces flag |
boolean | |
filters.hasOutdoorParkingSpaces | Filter on the offer's hasOutdoorParkingSpaces flag |
boolean | |
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 |
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 | enum | distance , startDate , salePrice , rentGross , daysOnMarket , salePricePerSqm , rentGrossPerSqm or rentNetPerSqm |
direction | Sort direction | enum | asc (default) or desc |
Response#
{
"items": [
{
"offerId": "5de5ef17-1742-4aad-a5dd...",
"countryCode": "DE",
"sourceOfferId": "c8d35a6f-997d-454b-bf26...",
"title": "Schmuckstück über den Dächern Berlins zur Eigennutzung",
"description": "Die sehr schöne und helle 2-Zimmerwohnung...",
"images": [
{
"url": "https://storage.googleapis.com/.../...b7879b37e.jpg",
"filename": "...b7879b37e.jpg"
},
{
"url": "https://storage.googleapis.com/.../...b0030b68e.jpg",
"filename": "...b0030b68e.jpg"
}
],
"property": {
"location": {
"address": {
"city": "Berlin",
"houseNumber": "1",
"postCode": "10781",
"street": "Traunsteiner Str."
},
"coordinates": {
"latitude": 52.4930554287132,
"longitude": 13.3454089228098
}
},
"propertyType": {
"code": "apartment",
"subcode": "apartment_normal"
},
"livingArea": 100,
"buildingYear": 1971,
"numberOfRooms": 4.5,
"numberOfIndoorParkingSpaces": 0,
"numberOfOutdoorParkingSpaces": 1,
"floorNumber": 4,
"hasLift": true,
"isNew": true,
"isFurnished": true
},
"offer": {
"startDate": "2018-07-31",
"daysOnMarket": 35,
"dealType": "sale",
"salePrice": 490000,
"salePricePerSqm": 4900,
"isActive": true,
"currency": "EUR"
},
"distance": 313
},
...
],
"totalItems": 5
}
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 |