# Immobilier Notaires Property Search API Documentation

Scrappa's `GET /api/notaires-immo/search` returns notary real estate in France as structured JSON: homes, land, garages and commercial property for sale, for rent or at auction.

## What you get

Each listing has `id`, `reference`, `agency_id` (the notary office), dates, `transaction`, `property_type` with its label, `price`, `price_total`, `fees` (sales) or `rent` (rentals), `location` (locality id, city, postal code, INSEE code, department, region), `surface`, `land_surface`, `rooms`, `bedrooms`, `condition`, `viager`, a short `description`, the main `image`, `photo_count`, `phone`, `energy_rating_date`, `auction` facts and the public `url`. Search results carry no coordinates, bathrooms or features; call `listing` for them.

## Transactions

`transaction` is `sale` (default), `rent` or `auction`. Auctions are online notary sales (VNI and VAE).

## Places

Pass `locality` ids from `autocomplete` (comma-separated), or `department` codes such as `75` or `2A`. Free text is not accepted. For an "all postal codes" place, call `autocomplete` with `kind=group`, then `locality-group`, and send the returned `locality` list. `radius_km` widens the search around the localities.

## Prices

Immobilier Notaires filters on the total price (price plus fees). Scrappa checks every listing again: `min_price` and `max_price` apply to both `price` and `price_total`. For rentals `price_total` is rent plus charges.

## Filters are honoured

Scrappa checks every returned listing against transaction, price, surface, rooms, bedrooms, property type, department, locality, office and reference, and drops any that does not match. `meta.filtered_out_count` counts the dropped ones, so a page can hold fewer than `per_page` listings. `rooms` and `bedrooms` take exact counts; use `min_rooms` for "5 or more".

## Not available

Immobilier Notaires has no bathroom filter and no new-build filter. A `bathrooms` or `new_build` parameter returns `422` (`unsupported_filter`) instead of unfiltered data. `listing` shows the bathroom count per listing.

## Pagination

`page` is 1-based and `per_page` is 1 to 100 (default 24). A page past the last returns `422` (`page_out_of_range`) with an empty `listings` list and costs nothing. A page is never labelled with another page's listings.

- **Documentation:** [https://scrappa.co/docs/notaires-immo-api/notaires_immo_search](https://scrappa.co/docs/notaires-immo-api/notaires_immo_search)
- **API group:** Immobilier Notaires API
- **Endpoint:** `GET https://scrappa.co/api/notaires-immo/search`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `transaction` | string | No | sale (default), rent or auction. |
| `locality` | string | No | Comma-separated locality ids from the autocomplete endpoint. |
| `department` | string | No | Comma-separated INSEE department codes, for example 75 or 2A. |
| `radius_km` | integer | No | Search radius in km around the localities, 1-100. Needs locality. |
| `min_price` | integer | No | Minimum price in EUR. Applies to price and price_total. |
| `max_price` | integer | No | Maximum price in EUR. Applies to price and price_total. |
| `min_surface` | number | No | Minimum living area in square metres. |
| `max_surface` | number | No | Maximum living area in square metres. |
| `rooms` | string | No | Comma-separated exact room counts, for example 2,3. |
| `min_rooms` | integer | No | Minimum number of rooms. |
| `max_rooms` | integer | No | Maximum number of rooms. |
| `bedrooms` | string | No | Comma-separated exact bedroom counts, for example 2,3. |
| `min_bedrooms` | integer | No | Minimum number of bedrooms. |
| `max_bedrooms` | integer | No | Maximum number of bedrooms. |
| `property_type` | string | No | Comma-separated codes: APP, MAI, IMM, GAR, DIV, LAC, COM, AGR, VIG, TER. |
| `viager` | boolean | No | true for life-annuity sales only, false to exclude them. |
| `crpcen` | string | No | Notary office id (agency_id), to list the listings of one office. |
| `reference` | string | No | The ad reference of an office. |
| `sort` | string | No | price_asc, price_desc, date_asc or date_desc (date of last update). |
| `page` | integer | No | Result page, 1-based. |
| `per_page` | integer | No | Listings per page, 1-100. Default 24. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/notaires-immo/search?transaction=sale&department=75&max_price=300000&property_type=APP&sort=price_asc&per_page=5"
```

## Example response

```json
{
    "success": true,
    "listings": [
        {
            "id": 2095555,
            "property_id": 2326478,
            "reference": "1263",
            "agency_id": "94026",
            "created_at": "2026-10-16T04:44:22Z",
            "updated_at": "2026-10-26T05:51:12Z",
            "transaction": "sale",
            "transaction_type": "VENTE",
            "property_type": "APP",
            "property_type_label": "Apartment",
            "price": 120000,
            "price_total": 130000,
            "currency": "EUR",
            "fees": {
                "amount": 10000,
                "percent": 8.3,
                "paid_by": "ACQUEREUR"
            },
            "rent": null,
            "location": {
                "locality_id": "32471",
                "locality": "PARIS 15",
                "city": "Paris 15e Arrondissement",
                "postal_code": "75015",
                "insee_code": "75115",
                "department_code": "75",
                "department": "Paris",
                "region_code": "11",
                "region": "\u00cele-de-France"
            },
            "surface": 10,
            "land_surface": null,
            "rooms": 1,
            "bedrooms": 0,
            "condition": "old",
            "viager": false,
            "description": "Paris 15e, rue Fondary : studio id\u00e9alement situ\u00e9 au coeur du 15e arrondissement...",
            "image": "https://media.immobilier.notaires.fr/inotr/media/32/94026/2095555/5b918dc_VGA.jpg",
            "photo_count": 1,
            "phone": "0766706033",
            "energy_rating_date": "2025-06-15",
            "auction": null,
            "url": "https://www.immobilier.notaires.fr/fr/annonce-immo/vente/appartement/paris-15-75015/2095555",
            "url_en": "https://www.immobilier.notaires.fr/en/real-estate-advert/sale/apartment/paris-15-75015/2095555"
        }
    ],
    "pagination": {
        "page": 1,
        "per_page": 5,
        "total_pages": 9,
        "total_results": 42,
        "has_next": true
    },
    "applied_filters": {
        "transaction": "sale",
        "department": [
            "75"
        ],
        "property_type": [
            "APP"
        ],
        "max_price": 300000,
        "sort": "price_asc"
    },
    "meta": {
        "endpoint_family": "search",
        "currency": "EUR",
        "returned": 1,
        "filtered_out_count": 0,
        "billable": true
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Page Out Of Range | The `page` is past the last page of the search (`page_out_of_range`). The answer has an empty `listings` list and never shows another page under this number. Non-billable. |
| 422 | Validation Error | A query parameter is missing, unknown or unusable. Unknown parameters are rejected with `unsupported_filter`, never ignored. There is no bathroom or new-build filter. Non-billable. |
| 503 | Upstream Unavailable | Immobilier Notaires could not be reached after retries, blocked the request, returned another page than asked for, or returned data this API could not read (`upstream_unavailable`, `upstream_blocked`, `page_mismatch`, `parser_drift`, `no_exit_available`). Retryable and never billed. Clients are never rate limited. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
