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.
Run this endpoint
Endpoint
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.
integer
Required
Numeric location id from autocomplete. Example: 439 for Paris.
1234567890
string
Optional
Label from autocomplete, such as Paris (75). Optional.
example
string
Optional
sale or rent. Default sale.
example
string
Optional
apartment or house. Default apartment.
example
integer
Optional
Minimum price in euros. For rent this is per month.
10
integer
Optional
Maximum price in euros. For rent this is per month.
10
integer
Optional
Minimum number of rooms.
10
integer
Optional
Maximum number of rooms.
10
integer
Optional
Minimum number of bedrooms.
10
integer
Optional
Maximum number of bedrooms.
10
integer
Optional
Minimum living area in square metres.
10
integer
Optional
Maximum living area in square metres.
10
string
Optional
price_asc or price_desc. Orders the returned page by price.
relevance
integer
Optional
One-based page number, default 1.
1
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
data
meta
success
{
"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.
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"
}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.