Skip to content
Scrappa Get API key
PAP API 1 credit/request

PAP Search API Documentation

GET https://scrappa.co/api/pap-fr/search

PAP Search API lists French homes for sale or for rent that private owners post on PAP. Pass a location_id 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.

Every listing that breaks a requested filter is dropped, and the count is in pagination.filtered_out. Because filters are applied to the returned page, a filtered page can hold fewer than 15 listings. Keep paging while has_next_page is true.

Sale and rent: sale prices are totals and rent prices are per month. Each item has a price_period of total or month.

Promoted listings: PAP mixes promoted listings into the page. They carry promoted: true. A price sort orders the returned page by price.

Not available: PAP lists private sellers only, so there is no agency data. PAP has no bathroom filter, so this endpoint has none.

A page that cannot be confirmed as the requested page returns a non-billable 503, never the data of another page.

PAP Search API Documentation 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/pap-fr/search
Auth header
x-api-key
Cost
1 credit/request
location_id = 1234567890
Response preview
200 OK
{
    "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,
...

Parameters

Start with the required fields, then add optional filters only when your use case needs them.

Runnable path

1 required parameter needed before sending a request.

13 optional filters available.

location_id integer Required

Numeric location id from autocomplete. Example: 439 for Paris.

Example value 1234567890
location_name string Optional

Label from autocomplete, such as Paris (75). Optional.

Example value example
listing_type string Optional

sale or rent. Default sale.

Example value example
property_type string Optional

apartment or house. Default apartment.

Example value example
price_min integer Optional

Minimum price in euros. For rent this is per month.

Example value 10
price_max integer Optional

Maximum price in euros. For rent this is per month.

Example value 10
rooms_min integer Optional

Minimum number of rooms.

Example value 10
rooms_max integer Optional

Maximum number of rooms.

Example value 10
bedrooms_min integer Optional

Minimum number of bedrooms.

Example value 10
bedrooms_max integer Optional

Maximum number of bedrooms.

Example value 10
surface_min integer Optional

Minimum living area in square metres.

Example value 10
surface_max integer Optional

Maximum living area in square metres.

Example value 10
sort string Optional

price_asc or price_desc. Orders the returned page by price.

Example value relevance
page integer Optional

One-based page number, default 1.

Example value 1

Response Schema

Example response fields are illustrative; inspect the JSON before integrating.

Example response fields

Scan these fields before integrating.

data meta success
JSON Response
200 OK
{
    "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

Handle these documented responses before retrying or showing customer-facing failures.

422

Validation Error

A parameter is missing or outside its allowed values. This response is not billable.

{
    "errors": {
        "location_id": [
            "The location id field is required."
        ]
    },
    "message": "The request validation failed"
}
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.

{
    "meta": {
        "billable": false,
        "retryable": true,
        "endpoint_family": "search"
    },
    "error": {
        "code": "UPSTREAM_UNAVAILABLE",
        "message": "PAP could not be reached. Please retry shortly."
    },
    "success": false
}

Generate Code with AI

Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.

Try It Live

Test this endpoint in our interactive playground with real data.