Passer au contenu principal
POST
/
properties
/
search
Search properties with filters
curl --request POST \
  --url https://api.immoteur.com/public/v1/properties/search \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "page": 1,
  "transactionType": "sale",
  "propertyTypes": [
    "apartment",
    "house"
  ],
  "searchQuery": "terrasse ascenseur",
  "searchThreshold": 0.2,
  "locationDepartments": [
    "75",
    "92"
  ],
  "locationInseeCodes": [
    "75056",
    "92050"
  ],
  "locationPostcodes": [
    "75001",
    "92000"
  ],
  "locationGeoBbox": {
    "sw": {
      "lat": 48.8156,
      "lng": 2.2241
    },
    "ne": {
      "lat": 48.9021,
      "lng": 2.4699
    }
  },
  "locationGeoCircle": {
    "center": {
      "lat": 48.8566,
      "lng": 2.3522
    },
    "radiusMeters": 5000
  },
  "transactionPriceMin": 200000,
  "transactionPriceMax": 1000000,
  "propertyBedroomCountMin": 2,
  "propertyAreaMin": 40,
  "propertyElevatorExists": true,
  "propertyTerraceExists": true,
  "propertyParkingExists": true,
  "sourceDomains": [
    "bienici.com",
    "orpi.com"
  ],
  "sourceDomainsCountMin": 1,
  "sourceDomainsCountMax": 3
}
'
{
  "items": [
    {
      "id": "3a8f1d72-3d0b-4ee6-9a83-a7a9a73ae6c2",
      "status": {
        "current": "available"
      },
      "description": "Appartement lumineux de 3 pièces avec balcon.",
      "location": {
        "city": {
          "name": "Paris",
          "inseeCode": "75056"
        },
        "country": "france",
        "department": "75",
        "postcode": "75001",
        "latitude": 48.8606,
        "longitude": 2.3376
      },
      "media": {
        "images": [
          {
            "id": "2f6bb0f5-1e2f-4dc9-8f46-8fd0c1f7cafe",
            "position": 1,
            "url": "https://images.immoteur.com/sample/apt-paris-1.jpg"
          }
        ]
      },
      "property": {
        "type": "apartment",
        "area": 52.5,
        "bedroomCount": 2,
        "roomCount": 3,
        "balconyExists": true
      },
      "classifieds": [
        {
          "id": "75caa436-207a-4f06-b0d1-3c1a3508dbbb",
          "status": {
            "current": "available"
          },
          "source": {
            "domain": "seloger.com",
            "url": "https://www.seloger.com/annonces/achat/appartement/paris-1er-75/5-pieces/0.htm"
          },
          "publisher": {
            "isProfessional": true,
            "type": "agency",
            "email": "[email protected]",
            "phone": "+33123456789",
            "feesUrl": "https://www.agence-paris.fr/honoraires",
            "siren": "123456789"
          },
          "transaction": {
            "current": 650000,
            "history": [
              {
                "id": "0aa4bc4b-7db0-4bf2-9a4a-f2e6f8d4f99a",
                "value": 680000,
                "timestamp": "2025-06-20T10:23:00Z"
              },
              {
                "id": "4d4744d6-d7f1-4f8b-8c3c-fb8a1e3c0f8a",
                "value": 650000,
                "timestamp": "2025-06-25T07:45:00Z"
              }
            ],
            "initial": 680000,
            "perSquareUnit": 12500
          }
        }
      ],
      "transaction": {
        "type": "sale",
        "price": {
          "current": 650000,
          "history": [
            {
              "id": "0aa4bc4b-7db0-4bf2-9a4a-f2e6f8d4f99a",
              "value": 680000,
              "timestamp": "2025-06-20T10:23:00Z"
            },
            {
              "id": "4d4744d6-d7f1-4f8b-8c3c-fb8a1e3c0f8a",
              "value": 650000,
              "timestamp": "2025-06-25T07:45:00Z"
            }
          ],
          "initial": 680000,
          "perSquareUnit": 12500
        }
      },
      "meta": {
        "firstSeenAt": "2025-05-10T08:00:00Z",
        "lastSeenAt": "2025-06-20T11:00:00Z"
      },
      "energy": {
        "dpe": {
          "date": "2023-05-10",
          "label": "d",
          "value": 180
        },
        "ges": {
          "date": "2023-05-10",
          "label": "e",
          "value": 45
        },
        "heating": {
          "source": "gas",
          "system": "radiator",
          "type": "individual"
        }
      }
    }
  ],
  "meta": {
    "subscriptionPlan": "pro200",
    "dataAccessLimit": {
      "departments": [
        "75",
        "92"
      ],
      "sirens": [
        "123456789"
      ],
      "sirets": [
        "12345678900011"
      ]
    },
    "page": 1,
    "nextPage": 2,
    "perPage": 20,
    "total": 240,
    "totalPages": 12
  }
}

Autorisations

Authorization
string
header
requis

Send your Immoteur Personal Access Token in the Authorization header: Authorization: Bearer <token>

You can create and manage your Personal Access Tokens here: https://immoteur.com/dashboard/settings status: current: available

Corps

application/json
page
integer
défaut:1
requis

1-based page index.

Plage requise: 1 <= x <= 500
Exemple:

1

propertyTypes
enum<string>[]
requis

One or more property types to include.

  • House: Residential building sold as an entire unit (e.g., a single-family home, villa, or full residence).
  • Apartment: A single residential unit within a larger building.
  • Program: Refers to new-build or off-plan property developments.
  • Shop: Commercial property with public access, such as boutiques, barbers, or butcher shops.
  • Premises: Non-residential units like cellars, attics, or general storage/local spaces.
  • Office: Properties intended for professional work environments.
  • Land: Plots of terrain, undeveloped or partially developed.
  • Building: An entire non-residential building sold as a unit, such as a hotel or hangar.
  • Parking: Spaces or boxes designed for vehicle storage.
Options disponibles:
apartment,
building,
house,
land,
office,
other,
parking,
premises,
program,
shop
Exemple:
["apartment", "house"]
transactionType
enum<string>
requis
Options disponibles:
rent,
sale
energyDpeLabels
enum<string>[]

Filter results to properties whose DPE label matches one of the provided letters.

Options disponibles:
a,
b,
c,
d,
e,
f,
g
Exemple:
["a", "b"]
energyGesLabels
enum<string>[]

Filter results to properties whose greenhouse-gas (GES) label matches one of the provided letters.

Options disponibles:
a,
b,
c,
d,
e,
f,
g
Exemple:
["a", "b"]
locationDepartments
string[]

List of French department codes (e.g., "75" for Paris).

Exemple:
["75", "92"]
locationGeoBbox
object

Bounding box filter built from south-west and north-east corners in EPSG:4326.

locationGeoCircle
object

Circular geo filter defined by a center and radius in meters.

locationInseeCodes
string[]

List of INSEE city codes.

Exemple:
["75056", "92050"]
locationPostcodes
string[]

List of French postcodes.

Exemple:
["75001", "92000"]
orderBy
enum<string>
défaut:desc

Direction applied to sortBy. Defaults to desc.

Options disponibles:
asc,
desc
propertyAreaMax
integer

Maximum property area (m²).

Exemple:

100

propertyAreaMin
integer

Minimum property area (m²).

Exemple:

40

propertyBalconyExists
boolean

Filter results to properties that have a balcony.

Exemple:

true

propertyBedroomCountMin
integer

Minimum number of bedrooms.

Plage requise: x >= 0
Exemple:

2

propertyCellarExists
boolean

Filter results to properties that have a cellar.

Exemple:

false

propertyElevatorExists
boolean

Filter results to properties that have an elevator.

Exemple:

true

propertyGarageExists
boolean

Filter results to properties that have a garage.

Exemple:

false

propertyGardenExists
boolean

Filter results to properties that have a garden.

Exemple:

false

propertyIsProgram
boolean

Limit to new-build/off-plan programs.

Exemple:

false

propertyParkingExists
boolean

Filter results to properties that have parking.

Exemple:

true

propertyRoomCountMin
integer

Minimum total room count.

Plage requise: x >= 0
Exemple:

3

propertySwimmingPoolExists
boolean

Filter results to properties that have a swimming pool.

Exemple:

false

propertyTerraceExists
boolean

Filter results to properties that have a terrace.

Exemple:

true

searchQuery
string

Optional full-text query. When omitted, an empty query is used.

Maximum string length: 400
Exemple:

"terrasse ascenseur"

searchThreshold
number<float>
défaut:0.2

Minimum relevance score required for a hit to be kept.

Plage requise: 0 <= x <= 1
Exemple:

0.2

sortBy
enum<string>
défaut:firstSeenAt

Field used to sort results. Set orderBy to switch between ascending or descending order. Defaults to firstSeenAt with desc.

Options disponibles:
firstSeenAt,
lastSeenAt,
lastUpdatedAt,
price,
priceChangeDate,
pricePerSquareMeter,
relevance
sourceDomains
string[]

Limit results to classifieds originating from the provided domains.

Exemple:
["bienici.com", "orpi.com"]
sourceDomainsCountMax
integer

Maximum number of distinct source domains attached to each property.

Exemple:

3

sourceDomainsCountMin
integer

Minimum number of distinct source domains attached to each property.

Exemple:

1

transactionPriceHasChanged
boolean

Only properties whose price has changed recently.

Exemple:

false

transactionPriceMax
integer

Maximum current price.

Exemple:

1000000

transactionPriceMin
integer

Minimum current price.

Exemple:

200000

Réponse

List of properties matching the filters

items
object[]
requis
meta
object
requis