# PAP Search API Documentation

<p><strong>PAP Search API</strong> lists French homes for sale or for rent that private owners post on PAP. Pass a <code>location_id</code> from autocomplete. Filter by price, rooms, bedrooms and living area, choose apartments or houses, sort by price and page through results with up to 15 listings per page.</p><p>Every listing that breaks a requested filter is dropped, and the count is in <code>pagination.filtered_out</code>. Because filters are applied to the returned page, a filtered page can hold fewer than 15 listings. Keep paging while <code>has_next_page</code> is true.</p><p><strong>Sale and rent:</strong> sale prices are totals and rent prices are per month. Each item has a <code>price_period</code> of <code>total</code> or <code>month</code>.</p><p><strong>Promoted listings:</strong> PAP mixes promoted listings into the page. They carry <code>promoted: true</code>. A price sort orders the returned page by price.</p><p><strong>Not available:</strong> PAP lists private sellers only, so there is no agency data. PAP has no bathroom filter, so this endpoint has none.</p><p>A page that cannot be confirmed as the requested page returns a non-billable 503, never the data of another page.</p>

- **Documentation:** [https://scrappa.co/docs/pap-fr-api/pap_fr_search](https://scrappa.co/docs/pap-fr-api/pap_fr_search)
- **API group:** PAP API
- **Endpoint:** `GET https://scrappa.co/api/pap-fr/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 |
| --- | --- | --- | --- |
| `location_id` | integer | Yes | Numeric location id from autocomplete. Example: 439 for Paris. |
| `location_name` | string | No | Label from autocomplete, such as Paris (75). Optional. |
| `listing_type` | string | No | sale or rent. Default sale. |
| `property_type` | string | No | apartment or house. Default apartment. |
| `price_min` | integer | No | Minimum price in euros. For rent this is per month. |
| `price_max` | integer | No | Maximum price in euros. For rent this is per month. |
| `rooms_min` | integer | No | Minimum number of rooms. |
| `rooms_max` | integer | No | Maximum number of rooms. |
| `bedrooms_min` | integer | No | Minimum number of bedrooms. |
| `bedrooms_max` | integer | No | Maximum number of bedrooms. |
| `surface_min` | integer | No | Minimum living area in square metres. |
| `surface_max` | integer | No | Maximum living area in square metres. |
| `sort` | string | No | price_asc or price_desc. Orders the returned page by price. |
| `page` | integer | No | One-based page number, default 1. |

## Example response

```json
{
    "data": {
        "items": [
            {
                "id": "458401326",
                "url": "https://www.pap.fr/annonces/appartement-paris-17e-r458401326",
                "badge": "exclusif",
                "price": 740000,
                "rooms": 3,
                "title": "Paris 17E",
                "photos": [
                    "https://cdn.pap.fr/photos/pap/d8/e7/d8e7d6645b989afdfa85d3a17129671f/d-p3.jpg"
                ],
                "bedrooms": 2,
                "currency": "EUR",
                "promoted": false,
                "price_from": false,
                "surface_m2": 70,
                "description": "Id\u00e9alement situ\u00e9, dans une rue calme, proche de tous commerces et du Palais des Congr\u00e8s.",
                "only_on_pap": true,
                "energy_class": "D",
                "listing_type": "sale",
                "price_period": "total",
                "virtual_tour": true,
                "property_type": "apartment"
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 15,
            "returned": 1,
            "filtered_out": 0,
            "has_next_page": true,
            "total_reported": 893
        },
        "applied_filters": {
            "price_max": 800000,
            "location_id": 439,
            "listing_type": "sale",
            "property_type": "apartment"
        }
    },
    "meta": {
        "billable": true,
        "endpoint_family": "search"
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A parameter is missing or outside its allowed values. This response is not billable. |
| 503 | Upstream Unavailable | PAP could not be reached, or the page could not be confirmed as the requested one. Retry shortly. This response is not billable. |

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