# Ouest-France Immo Listing Batch API Documentation

Read several property listings in one request. Pass up to 20 ids from /search. Ids that no longer exist are not an error: they are listed under missing_ids and the other listings are returned.

- **Documentation:** [https://scrappa.co/docs/ouestfrance-immo-api/ouestfrance_immo_listings](https://scrappa.co/docs/ouestfrance-immo-api/ouestfrance_immo_listings)
- **API group:** Ouest-France Immo API
- **Endpoint:** `GET https://scrappa.co/api/ouestfrance-immo/listings`

## 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 |
| --- | --- | --- | --- |
| `ids` | string | Yes | Up to 20 numeric listing ids, separated by commas. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/ouestfrance-immo/listings?ids=20677139%2C20895165"
```

## Example response

```json
{
    "success": true,
    "data": {
        "items": [
            {
                "id": 20677139,
                "reference": "JN0785-NP2",
                "url": "https://www.ouestfrance-immo.com/immobilier/vente/appartement/rennes-35-35238/3-pieces-20677139.htm",
                "listing_type": "sale",
                "property_type": {
                    "id": 201,
                    "label": "Vente appartement",
                    "slug": "appartement",
                    "category_id": 6202,
                    "category_label": "3 pi\u00e8ces",
                    "category_slug": "3-pieces"
                },
                "price": 104500,
                "price_kind": "sale_price",
                "currency": "EUR",
                "pricing": {
                    "agency_fee": 4500,
                    "agency_fee_percent": 4.5,
                    "charges": null,
                    "rent_excluding_charges": null,
                    "deposit": null,
                    "price_drop_amount": null,
                    "price_drop_percent": null,
                    "coownership_lots": 140,
                    "coownership_annual_charges": 2127
                },
                "area_sqm": 64,
                "land_area_sqm": null,
                "rooms": 3,
                "bedrooms": 3,
                "bathrooms": null,
                "shower_rooms": 1,
                "floor": "3",
                "floors_in_building": 8,
                "features": {
                    "balcony": true,
                    "terrace": false,
                    "garden": false,
                    "cellar": true,
                    "elevator": true,
                    "swimming_pool": false,
                    "furnished": false,
                    "heating_type": "autre",
                    "heating_mode": "collectif",
                    "exposure": "Sud"
                },
                "energy": {
                    "dpe_class": "D",
                    "dpe_value": 176,
                    "ges_class": "C",
                    "ges_value": 25
                },
                "location": {
                    "latitude": 48.123177,
                    "longitude": -1.708372,
                    "place_id": 100024,
                    "place_name": "Rennes Villejean",
                    "city": {
                        "id": 15818,
                        "name": "Rennes",
                        "type": "Villes",
                        "postal_code": "35000",
                        "insee_code": "35238"
                    },
                    "district": {
                        "id": 100024,
                        "name": "Rennes Villejean",
                        "type": "Quartiers"
                    }
                },
                "description": "Au 3\u00e8me \u00e9tage avec ascenseur, appartement T3 de 64 m2 \u00e0 r\u00e9nover.",
                "tags": "A r\u00e9nover",
                "dates": {
                    "created_at": "2026-09-17 16:04:23",
                    "published_at": "2026-10-23 00:00:00"
                },
                "photo_count": 7,
                "photos": [
                    "https://www.ouestfrance-immo.com/photo-vente-appartement-rennes-villejean-35/201/appartement-a-vendre-rennes-villejean-20677139_1.jpg"
                ],
                "virtual_tour_url": "https://my.matterport.com/show/?m=mebv5ECRRGi",
                "flags": {
                    "exclusive": false,
                    "professional": true,
                    "sold": false,
                    "new_build_programme": false
                },
                "agency": {
                    "id": 15197,
                    "phone": "0200000000",
                    "profile": null
                },
                "attributes": {
                    "transac_lib": "Vente",
                    "lieu_lib": "Rennes Villejean"
                }
            }
        ],
        "requested_ids": [
            "20677139",
            "20895165"
        ],
        "missing_ids": [
            "20895165"
        ]
    },
    "meta": {
        "endpoint_family": "listings",
        "billable": true
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A public parameter is missing or invalid. No upstream call is made and the response is not billable. |
| 502 | Unexpected Upstream Response | Ouest-France Immo answered with a body that is not the documented shape. The response is not billable. |
| 503 | Upstream Unavailable | Ouest-France Immo was temporarily unavailable or blocked the request. The response is not billable and the request never answers 429. |

## 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)
