# PAP Immobilier Scraper - Téléphones & DPE (`clearpath/pap-scraper`) Actor

Extrayez les annonces immobilières PAP avec téléphones, DPE, GES, coordonnées, transports proches, photos et informations détaillées. Recherche par ville, code postal, France ou référence PAP.

- **URL**: https://apify.com/clearpath/pap-scraper.md
- **Developed by:** [ClearPath](https://apify.com/clearpath) (community)
- **Categories:** Lead generation, Real estate, Automation
- **Features:** Limited permissions
- **Stats:** 60 total users, 20 monthly users, 99.6% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 properties

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## PAP Scraper Immobilier | Annonces immobilières France (2026)

[![PAP : les téléphones des propriétaires. Les détails du bien. DPE. Transports. Photos.](https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/pap-readme-hero-2f48bab55b8d.png)](https://console.apify.com/actors/s6kfyrqqGzboLGz4c/input)

Par **Clearpath**, créateurs de [Leboncoin Immobilier](https://apify.com/clearpath/leboncoin-immobilier), [Leboncoin Phone Scraper](https://apify.com/clearpath/leboncoin-phone-scraper) et [ImmoScout24 Pro](https://apify.com/clearpath/immoscout24-api-pro). Les annonces immobilières et les contacts de leurs annonceurs, réunis par la même équipe.

### Pourquoi choisir cet acteur ?

**Le téléphone avec le bien qui vous intéresse.** Exportez les numéros publiés sur les annonces de vente et de location, avec la description, le prix, les pièces et les photos. Chaque contact reste associé à son annonce PAP pour préparer une prise de contact pertinente.

**Des détails pour mieux sélectionner les biens.** Retrouvez le **DPE, le GES, les coordonnées géographiques et les transports proches**, avec les noms des stations et leurs lignes de métro, RER ou tramway. Les visites virtuelles et vidéos sont incluses lorsqu'elles sont disponibles.

**Une recherche adaptée à votre secteur.** Cherchez par ville, code postal, arrondissement ou référence PAP. Filtrez par type de bien, budget et surface. Activez `strictLocation` pour écarter les annonces des communes voisines lorsque vous ciblez une zone précise.

<a href="https://console.apify.com/actors/s6kfyrqqGzboLGz4c/input" data-demo-cta="true"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/pap-readme-cta-6319b85864df.png" width="264" height="48" alt="Extraire mes annonces" /></a>

#### Essayez avec cinq annonces à Paris

```json
{
  "product": "vente",
  "locations": [
    "Paris (75)"
  ],
  "maxResults": 5,
  "includeDetails": true
}
```

[Ouvrir les paramètres](https://console.apify.com/actors/s6kfyrqqGzboLGz4c/input) pour choisir votre secteur. `includeDetails: true` inclut la collecte des détails et des téléphones publiés. Exportez les résultats en JSON, CSV ou Excel ; le JSON conserve les listes de photos et les informations de transport.

Les téléphones dépendent de ce que PAP publie pour chaque annonce de **vente ou de location**. Le mode vacances ne fournit pas de téléphone, et aucune adresse email n'est extraite. La limite actuelle est de **1 000 annonces par exécution**. Consultez la [tarification par annonce](https://apify.com/clearpath/pap-scraper/pricing).

<table>
<tr>
<td style="background:#2196F3;padding:10px 12px;border-radius:4px 4px 0 0"><strong style="color:#071A2C;font-size:14px">Clearpath · Immobilier & contacts</strong></td>
</tr>
<tr>
<td style="padding:6px;border:1px solid #B8D8F3;border-top:none;border-radius:0 0 4px 4px;background:#EAF4FE">
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #B8D8F3;border-radius:4px;background:#D3E9FE"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-s6kfyrqqGzboLGz4c-BIQOB6yCE0-pap-immobilier-scraper-logo.png" width="20" height="20" style="display:inline;vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/pap-scraper" style="color:#102C44;font-weight:700;font-size:13px;text-decoration:none">PAP</a></span><br><span style="color:#264B69;font-size:12px;white-space:nowrap">Vous êtes ici</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #B8D8F3;border-radius:4px;background:#EAF4FE"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-JUFnhDjGAS8VM64Or-NK2uxNA7xa-leboncoin-api-scraper.png" width="20" height="20" style="display:inline;vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/leboncoin-immobilier" style="color:#102C44;font-weight:700;font-size:13px;text-decoration:none">Leboncoin Immo</a></span><br><span style="color:#264B69;font-size:12px;white-space:nowrap">Biens & contacts</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #B8D8F3;border-radius:4px;background:#EAF4FE"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-nfWPDHJzRb80PsNo1-75H3RM9GEy-leboncoin-api-scraper.png" width="20" height="20" style="display:inline;vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/leboncoin-api" style="color:#102C44;font-weight:700;font-size:13px;text-decoration:none">Leboncoin</a></span><br><span style="color:#264B69;font-size:12px;white-space:nowrap">Toutes annonces</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #B8D8F3;border-radius:4px;background:#EAF4FE"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-Ktt3U5wPXmawkW1IF-nCZRq8jHrG-leboncoin-api-scraper.png" width="20" height="20" style="display:inline;vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/leboncoin-phone-scraper" style="color:#102C44;font-weight:700;font-size:13px;text-decoration:none">LBC Téléphones</a></span><br><span style="color:#264B69;font-size:12px;white-space:nowrap">Contacts en lot</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #B8D8F3;border-radius:4px;background:#EAF4FE"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-s609dyAJSrju54QSh-zj5NeZTykb-ImmoScout24-canva2.png" width="20" height="20" style="display:inline;vertical-align:middle" alt="">&nbsp;<a href="https://apify.com/clearpath/immoscout24-api-pro" style="color:#102C44;font-weight:700;font-size:13px;text-decoration:none">ImmoScout24</a></span><br><span style="color:#264B69;font-size:12px;white-space:nowrap">Immobilier allemand</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #B8D8F3;border-radius:4px;background:#EAF4FE"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-ewqeUU7AXNvLl7zfn-MHCF0Re4xs-seloger-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/seloger-scraper" style="color:#102C44;font-weight:700;font-size:13px;text-decoration:none">SeLoger</a></span><br><span style="color:#264B69;font-size:12px;white-space:nowrap">Téléphones et e-mails d’agence</span></span>
</td>
</tr>
</table>

#### Copy to your AI assistant

```text
clearpath/pap-scraper on Apify returns PAP.fr private-owner property listings in France with the owner phones PAP publishes, DPE/GES classes, coordinates, nearby metro/RER/tram stops, photos and prices. product selects vente (sale, default), location (long-term rental) or vacances (holiday rental): capacity, stayStart and stayEnd (YYYY-MM-DD) apply only to vacances, newOnly only to vente, and propertyTypes/tags accept only the slugs valid for that product (others fail the run). Target areas with locations such as France, Paris (75), Strasbourg (67), Lyon 7e or 75020, or fetch one listing with reference like G26/2186 (locations then optional); an ambiguous location fails with suggestions. For a city, arrondissement or postal code, set strictLocation=true to drop the nearby-area listings PAP pads sparse searches with (no effect on department or France searches; may return nothing). maxResults caps at 1000 per run (default 100); no server-side sorting. Phones appear only on vente/location listings where PAP shows them, never on vacances; email addresses are never returned, only the hasEmail boolean; rows with detailFetchStatus="missing" lack the detail-only fields. Standard Apify run, no Standby or MCP endpoint; authenticate with Authorization: Bearer and your Apify token. Billing: $3.99 per 1,000 listings plus Apify's small per-run start fee, rates at https://apify.com/clearpath/pap-scraper/pricing. Full specification: https://api.apify.com/v2/actors/clearpath~pap-scraper/builds/default and https://apify.com/clearpath/pap-scraper. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
```

### Points Clés

- **Sortie riche** — chaque item contient les champs normalisés plus des informations détaillées sur l’annonce.
- **Entrée lieu simple** — utilisez `France`, `Paris (75)`, `Strasbourg (67)`, `Paris 5e`, `Lyon 7e`, ou `75005`.
- **Trois modes** — `Achat` (à vendre), `Location` (longue durée, bail classique), et `Vacances` (courte durée, saisonnier).
- **Recherche par référence** — récupérez une annonce précise si vous connaissez déjà la référence PAP.

### Comment Extraire des Annonces PAP

#### Recherche simple par ville

```json
{
  "product": "vente",
  "locations": ["Paris (75)"],
  "maxResults": 100
}
```

#### Recherche sur toute la France

```json
{
  "product": "vente",
  "locations": ["France"],
  "maxResults": 250
}
```

#### Recherche filtrée de maisons

```json
{
  "product": "vente",
  "locations": ["Strasbourg (67)"],
  "propertyTypes": ["maison"],
  "priceMax": 600000,
  "surfaceMin": 80,
  "nbPiecesMin": 4,
  "maxResults": 100
}
```

#### Référence PAP exacte

```json
{
  "product": "vente",
  "reference": "G26/2186",
  "maxResults": 10
}
```

### Paramètres d’Entrée

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `product` | string | `vente` | Mode d’annonce : `vente` (à vendre), `location` (longue durée), ou `vacances` (courte durée / saisonnier). |
| `maxResults` | integer | `100` | Nombre maximum d’annonces à retourner. Limite dure : `1000`. |
| `locations` | array | `["Paris (75)"]` | Un ou plusieurs lieux comme `France`, `Paris (75)`, `Lyon 7e` ou `75005`. |
| `strictLocation` | boolean | `false` | Limite les résultats à la zone exacte demandée (utile pour un arrondissement ou une commune). Sans effet sur une recherche département ou `France`. |
| `reference` | string | optional | Référence PAP exacte comme `G26/2186`. |
| `newOnly` | boolean | `false` | Limite les résultats `vente` au neuf. |
| `propertyTypes` | array | optional | Types de bien comme `Maison`, `Appartement`, `Terrain`, `Garage, parking`. |
| `tags` | array | optional | Critères comme `Ascenseur`, `Piscine`, `Balcon, terrasse`, `Wi‑Fi`. |
| `nbPiecesMin` / `nbPiecesMax` | integer | optional | Nombre minimum et maximum de pièces. |
| `nbBedroomsMin` / `nbBedroomsMax` | integer | optional | Nombre minimum et maximum de chambres. |
| `priceMin` / `priceMax` | integer | optional | Prix minimum et maximum en euros. |
| `surfaceMin` / `surfaceMax` | integer | optional | Surface intérieure minimum et maximum en m². |
| `landSurfaceMin` / `landSurfaceMax` | integer | optional | Surface terrain minimum et maximum en m². |
| `capacity` | integer | optional | Capacité, `vacances` uniquement. |
| `stayStart` / `stayEnd` | string | optional | Dates de séjour au format `YYYY-MM-DD`. |

### Données Extraites depuis PAP

Chaque résultat contient :

- **Champs principaux** — identifiant annonce, référence PAP, produit, type de bien, titre, prix, pièces, chambres, et caractéristiques.
- **Contact et localisation** — téléphones, disponibilité email, coordonnées, URL détail, canaux d’appel vidéo, et transports proches.
- **Transports** — chaque arrêt inclut son libellé, les codes bruts (`pictos`), et les lignes résolues (`lines`), par exemple `Métro 8`, `Tramway 3a`, `RER A`.
- **Médias et énergie** — photos, visite virtuelle, vidéo, DPE, et GES.
- **Vacances uniquement** — avis clients (`reviewStars`, `reviewCount`, `reviews`), capacité (`maxCapacity`), couchages (`beds`), composition (`layout`), équipements (`amenities`, `features`), services (`services`), activités (`activities`), et infos tarifs (`pricingInfo`).
- **Champs complémentaires** — `searchData`, `detailData`, et un petit objet `searchContext`.

`bathrooms` n’est renseigné qu’en mode `vacances` (PAP ne fournit pas cette information en `vente` et `location`).

#### Exemple de Sortie

```json
{
  "listingId": 462602186,
  "reference": "G26/2186",
  "product": "vente",
  "propertyType": "appartement",
  "propertyTypeLabel": "Appartement",
  "title": "Paris 5e",
  "price": "565.000 €",
  "priceValue": 565000,
  "phones": [
    "01 40 56 35 45"
  ],
  "hasEmail": true,
  "coordinates": {
    "lat": 48.842996,
    "lng": 2.348683
  },
  "transports": [
    {
      "label": "Place Monge",
      "pictos": [
        "metro-0",
        "metro-7"
      ],
      "modes": [
        "metro"
      ],
      "lines": [
        {
          "mode": "metro",
          "line": "7",
          "label": "Métro 7"
        }
      ]
    }
  ],
  "energyClass": {
    "lettre": "f",
    "description": "Logement avec une consommation annuelle d'énergie comprise entre 331 et 420 kWh/m²/an."
  },
  "gesClass": {
    "lettre": "c",
    "description": "Logement avec une émission de gaz à effet de serre comprise entre 11 et 30 kgéqCO2/m²/an."
  },
  "detailUrl": "https://www.pap.fr/annonces/-r462602186",
  "rooms": 3,
  "bedrooms": 2,
  "bathrooms": null,
  "characteristics": "Appartement / 3 pièces / 2 chambres / 50 m² / 11.300 € le m²",
  "description": "Paris 5e – Duplex d'exception sous les toits, calme et lumière",
  "publishedAtLabel": "15 avril 2026",
  "photos": [
    "https://cdn.pap.fr/photos/pap/a8/cc/a8ccccfb0821f81b3ecc723c99a09ede/a-p1.jpg",
    "https://cdn.pap.fr/photos/pap/9b/fe/9bfeec8bd991cabc7673f2e2b2a63ea4/9-p1.jpg",
    "https://cdn.pap.fr/photos/pap/20/c2/20c23ffa3d1649862fad779394be9ac7/2-p1.jpg"
  ],
  "virtualTourUrl": null,
  "videoUrl": null,
  "personalSiteUrl": null,
  "contactText": "",
  "tagLabel": null,
  "searchContext": {
    "requestedLocations": [
      "Paris (75)"
    ],
    "resolvedLocations": [
      "Paris (75)"
    ],
    "product": "vente",
    "searchTitle": "Vente Paris (75)",
    "searchCountReported": 100,
    "maxResultsRequested": 100
  },
  "detailFetchStatus": "ok",
  "searchData": {
    "id": 462602186,
    "produit": "vente",
    "typebien_slug": "appartement",
    "typebien_label": "Appartement",
    "titre": "Paris 5e",
    "caracteristiques": "Appartement / 3 pièces / 2 chambres / 50 m² / 11.300 € le m²",
    "prix": "565.000 €",
    "marker": {
      "lat": 48.842996,
      "lng": 2.348683
    },
    "photos": [
      "https://cdn.pap.fr/photos/pap/a8/cc/a8ccccfb0821f81b3ecc723c99a09ede/a-p1.jpg",
      "https://cdn.pap.fr/photos/pap/9b/fe/9bfeec8bd991cabc7673f2e2b2a63ea4/9-p1.jpg"
    ]
  },
  "detailData": {
    "id": 462602186,
    "produit": "vente",
    "typebien_slug": "appartement",
    "typebien_label": "Appartement",
    "prix": "565.000 €",
    "nb_pieces": 3,
    "nb_chambres_max": 2,
    "marker": {
      "lat": 48.842996,
      "lng": 2.348683
    },
    "titre": "Paris 5e",
    "date": "15 avril 2026",
    "classe_energie": {
      "lettre": "f",
      "description": "Logement avec une consommation annuelle d'énergie comprise entre 331 et 420 kWh/m²/an."
    },
    "classe_ges": {
      "lettre": "c",
      "description": "Logement avec une émission de gaz à effet de serre comprise entre 11 et 30 kgéqCO2/m²/an."
    },
    "telephones": [
      "01 40 56 35 45"
    ],
    "has_email": true,
    "transports": [
      {
        "label": "Place Monge",
        "pictos": [
          "metro-7"
        ]
      },
      {
        "label": "Censier - Daubenton",
        "pictos": [
          "metro-7"
        ]
      }
    ],
    "reference_courte": "G26/2186",
    "url": "https://www.pap.fr/annonces/-r462602186"
  },
  "scrapedAt": "2026-04-15T15:07:31.395822+00:00"
}
```

### Cas d’Usage Avancés

#### Recherche de vacances avec dates de séjour

```json
{
  "product": "vacances",
  "locations": ["France"],
  "capacity": 4,
  "stayStart": "2026-07-01",
  "stayEnd": "2026-07-15",
  "maxResults": 100
}
```

#### Recherche location avec critères

```json
{
  "product": "location",
  "locations": ["Paris (75)"],
  "propertyTypes": ["appartement"],
  "tags": ["ascenseur", "balcon-terrasse"],
  "priceMax": 2500,
  "nbBedroomsMin": 2,
  "maxResults": 100
}
```

#### Recherche France entière dans le neuf

```json
{
  "product": "vente",
  "locations": ["France"],
  "newOnly": true,
  "maxResults": 250
}
```

### Tarification — Pay Per Event (PPE)

**$3.99 pour 1 000 annonces** sur le tier Apify de base.

| Event | Per listing | Per 1,000 |
|-------|-------------|-----------|
| `listing-scraped` | $0.00399 | $3.99 |

#### Exemples de Coût

| Results | Cost |
|---------|------|
| 10 | ~$0.04 |
| 100 | ~$0.40 |
| 1,000 | ~$3.99 |

#### Optimisation des Coûts

- Utilisez les filtres de lieu et de critères pour éviter les recherches trop larges comme `France`.
- Réglez `maxResults` sur le volume dont vous avez vraiment besoin.

### FAQ

**Combien d’annonces peut-on extraire par run ?**\
Jusqu’à `1000` annonces par run.

**Peut-on chercher toute la France ?**\
Oui. Utilisez `France` comme lieu normal.

**Peut-on chercher par référence PAP exacte ?**\
Oui. Utilisez `reference`, par exemple `G26/2186`.

**Quels modes sont supportés ?**\
`vente` (à vendre), `location` (longue durée), et `vacances` (courte durée / saisonnier).

**Comment écrire un arrondissement ?**\
Utilisez la forme courte : `Lyon 7e`, `Paris 1er`, `Marseille 3e`. Les écritures plus longues comme `Lyon 7e Arrondissement (69)` ou `Lyon 7ème` sont ramenées automatiquement à la même zone. Vous pouvez aussi indiquer le code postal, par exemple `69007`.

**Pourquoi une recherche d'arrondissement renvoie-t-elle des communes voisines ?**\
Quand une zone précise contient peu d'annonces correspondant à vos critères, PAP élargit automatiquement la recherche aux secteurs voisins. Activez `strictLocation` pour ne conserver que la zone demandée.

**Comment distinguer location longue durée et courte durée ?**\
Utilisez le mode d’annonce (`product`). `location` renvoie les locations longue durée (bail classique) ; `vacances` renvoie les locations courte durée / saisonnières. Lancez deux recherches séparées pour comparer. Les champs `capacity`, `stayStart` et `stayEnd` ne s’appliquent qu’au mode `vacances`.

**Les numéros de téléphone sont-ils inclus ?**\
Oui pour `location` et `vente`, quand PAP les affiche sur la fiche annonce. En mode `vacances`, PAP ne publie pas de numéro : le contact se fait par email / formulaire (`phones` est vide, `hasEmail` vaut `true`).

**Les adresses email des annonceurs sont-elles incluses ?**\
Non. PAP ne publie jamais l'adresse email d'un annonceur : la fiche indique seulement s'il accepte les messages (`hasEmail`), le contact passe ensuite par le formulaire PAP. Pour un contact direct, utilisez `phones`, rempli en mode `location` et `vente` quand PAP affiche le numéro.

**Les transports proches sont-ils inclus ?**\
Oui, quand PAP fournit cette information.

**Toutes les annonces ont-elles un détail complet ?**\
Non. Certaines annonces, surtout certains terrains, peuvent retourner un détail partiel.

**Peut-on trier côté serveur ?**\
Non. Les options de tri ne font pas partie de cet actor.

**Que se passe-t-il si un lieu est ambigu ?**\
L’actor échoue avec les meilleures suggestions au lieu de deviner.

**Que contiennent `searchData` et `detailData` ?**\
Ces champs contiennent des informations complémentaires renvoyées par PAP pour chaque annonce.

### Support

- **Bugs**: Issues tab
- **Features**: Email or issues
- **Email**: max@mapa.slmail.me

### Legal Compliance

Extracts publicly available data. Users must comply with PAP terms and data protection regulations, including GDPR and CCPA.

***

*Extraction d’annonces immobilières PAP avec contacts, médias, localisation, et métadonnées détaillées.*

# Actor input Schema

## `product` (type: `string`):

Choose what to search:<br>• <b>Achat</b> — properties for sale<br>• <b>Location</b> — long-term rentals (standard lease)<br>• <b>Vacances</b> — short-term / seasonal holiday rentals<br><br>To separate long-term from short-term rentals, run <b>Location</b> and <b>Vacances</b> as two searches. The Vacation filters apply only to <b>Vacances</b>.

## `maxResults` (type: `integer`):

Maximum number of listings to return. Current supported cap is 1000 per run.

## `locations` (type: `array`):

Enter one or more French locations. Each row targets one area:<br>• <code>France</code> — the whole country<br>• <code>Paris (75)</code> — an entire department<br>• <code>Strasbourg (67)</code> — a city<br>• <code>Paris 1er</code>, <code>Lyon 7e</code> — a single arrondissement<br>• <code>75020</code> — a specific postal code<br><br>The number in brackets such as <code>(75)</code> is the department, not a postal code. To target one area only, enter its postal code like <code>75020</code>. Arrondissements use the short form <code>1er</code> / <code>7e</code>; longer spellings such as <code>Lyon 7e Arrondissement (69)</code> are matched to the same area automatically.

## `strictLocation` (type: `boolean`):

Keep only listings located in the exact area you searched. When a specific area such as <code>Paris 20e</code> or a town has few matches, PAP normally fills the rest with nearby areas — enable this to exclude them. No effect on department (<code>Paris (75)</code>) or <code>France</code> searches.

## `reference` (type: `string`):

Optional exact PAP reference like G26/2186. Keep the slash and original casing. If set, the actor can search without locations.

## `newOnly` (type: `boolean`):

Vente only. Limit results to new-build properties.

## `propertyTypes` (type: `array`):

Optional property types. You can pick multiple options. Some choices only make sense for certain listing modes.

## `tags` (type: `array`):

Optional features and advanced filters. You can pick multiple options. Some only apply to certain listing modes.

## `nbPiecesMin` (type: `integer`):

Optional minimum number of rooms.

## `nbPiecesMax` (type: `integer`):

Optional maximum number of rooms.

## `nbBedroomsMin` (type: `integer`):

Optional minimum number of bedrooms.

## `nbBedroomsMax` (type: `integer`):

Optional maximum number of bedrooms.

## `priceMin` (type: `integer`):

Optional minimum price in euros.

## `priceMax` (type: `integer`):

Optional maximum price in euros.

## `surfaceMin` (type: `integer`):

Optional minimum interior surface in square meters.

## `surfaceMax` (type: `integer`):

Optional maximum interior surface in square meters.

## `landSurfaceMin` (type: `integer`):

Optional minimum land surface in square meters.

## `landSurfaceMax` (type: `integer`):

Optional maximum land surface in square meters.

## `capacity` (type: `integer`):

Vacances only.

## `stayStart` (type: `string`):

Vacances only. Format YYYY-MM-DD.

## `stayEnd` (type: `string`):

Vacances only. Format YYYY-MM-DD.

## `feedback` (type: `string`):

For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns.

## Actor input object example

```json
{
  "product": "vente",
  "maxResults": 100,
  "locations": [
    "Paris (75)"
  ],
  "strictLocation": false,
  "newOnly": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxResults": 100,
    "locations": [
        "Paris (75)"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/pap-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxResults": 100,
    "locations": ["Paris (75)"],
}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/pap-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxResults": 100,
  "locations": [
    "Paris (75)"
  ]
}' |
apify call clearpath/pap-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpath/pap-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/s6kfyrqqGzboLGz4c/builds/hOzav6oXIfmz4wVgR/openapi.json
