# Ouest-France Immo Agency Listings API Documentation

List the property ads of one agency by its id, optionally narrowed to sale or rent and a property type. Items have the same shape as /search items. A page past the last one is a valid empty page that keeps the requested page number and the true totals.

- **Documentation:** [https://scrappa.co/docs/ouestfrance-immo-api/ouestfrance_immo_agency_listings](https://scrappa.co/docs/ouestfrance-immo-api/ouestfrance_immo_agency_listings)
- **API group:** Ouest-France Immo API
- **Endpoint:** `GET https://scrappa.co/api/ouestfrance-immo/agency-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 |
| --- | --- | --- | --- |
| `id` | string | Yes | Numeric agency id. Example: 8765. |
| `listing_type` | string | No | sale or rent. Required when property_type is set. |
| `property_type` | string | No | Same values as /search for the chosen listing type. |
| `page` | integer | No | One-based page number. Defaults to 1. |
| `limit` | integer | No | Listings per page, 1 to 50. Defaults to 24. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/ouestfrance-immo/agency-listings?id=8765&listing_type=sale&limit=5"
```

## 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"
                }
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 5,
            "total_results": 47,
            "total_pages": 10,
            "has_next": true
        }
    },
    "meta": {
        "endpoint_family": "agency_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)
