PAP Scraper 🇫🇷 Particuliers + Téléphone du Propriétaire avatar

PAP Scraper 🇫🇷 Particuliers + Téléphone du Propriétaire

Pricing

from $1.00 / 1,000 listing founds

Go to Apify Store
PAP Scraper 🇫🇷 Particuliers + Téléphone du Propriétaire

PAP Scraper 🇫🇷 Particuliers + Téléphone du Propriétaire

Annonces de particuliers PAP.fr, sans agences, avec le téléphone du propriétaire et l'adresse complète en option. Prix, surface, pièces, €/m², DPE et photos pour chaque annonce, dès 1$/1000 annonces. Idéal pour la pige immobilière, la prospection et les agents IA (API + MCP).

Pricing

from $1.00 / 1,000 listing founds

Rating

0.0

(0)

Developer

Tagada Data

Tagada Data

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

7 days ago

Last modified

Share

PAP Real Estate Listings, Owner-Direct Sales & Rentals (France)

Scrape French property ads from PAP.fr (Particulier à Particulier). Paste a PAP search URL and get clean, structured listings for every result page, complete with price, surface, rooms, €/m², energy class, description and photos.

PAP is owner-direct only: no agencies, no agency fees. Every record is a private seller, which makes this ideal for buyer/renter search, market analysis, lead sourcing, and AI agents (works via API and MCP).

Why this actor

Every lead here is owner-direct, since PAP carries no agency listings at all, so each result comes straight from a private individual selling or renting their own property. Turn on scrapeDetails (optional) and the actor also pulls the owner's phone number and the exact street address from the ad itself, for direct-to-owner contact with no agency standing in between.

Using it is as simple as it gets: build whatever search you want on pap.fr (city, sale or rental, property type, filters), paste the resulting URL into the actor, and every result page after that is followed automatically. Fields come back clean and computed too, French prices and surfaces parsed into numbers, €/m² computed for sales, and the DPE energy class extracted straight from the listing.

Need to narrow things down further? Filter inside the actor by price, surface, rooms, property type or keywords, on top of whatever the search URL already selects. And pricing stays fair throughout: you pay per listing returned, and the phone/address premium is only charged when contact data is actually found.

Companion actors in the French real-estate suite

  • SeLoger Scraper: listings from SeLoger, France's #1 portal, with seller phone plus a particulier/agence flag.
  • Logic-Immo Scraper: listings from Logic-Immo, including the advertiser's phone number and an agency/private flag.
  • French Real Estate Sales (DVF) gives you official recorded sold prices, handy for benchmarking PAP asking prices against reality.
  • Real Estate Deal Score scores PAP asking prices against DVF sold prices and ranks the best deals first.

Pair PAP with DVF for asking-vs-achieved price analysis, or feed both into Deal Score for an over/under-market ranking.

Input

{
"searchUrls": [
"https://www.pap.fr/annonce/vente-appartements-bordeaux-33000-g43898"
],
"minPrice": 150000,
"maxPrice": 400000,
"minSurface": 40,
"minRooms": 2,
"propertyTypes": ["Appartement"],
"keywords": ["terrasse", "balcon"],
"scrapeDetails": true,
"maxResults": 500
}

Set scrapeDetails: true to also fetch each listing's page for the owner phone, street address and full description. Leave it false (default) for a faster, list-only run.

How to get a search URL: go to pap.fr, run the search you want (choose city, acheter or louer, property type, and any filters), then copy the address-bar URL and paste it into searchUrls. You can pass several URLs at once.

Output (one record per listing)

{
"source": "PAP",
"id": "450001168",
"url": "https://www.pap.fr/annonces/appartement-aix-en-provence-r450001168",
"transactionType": "sale",
"propertyType": "Appartement",
"title": "Aix-En-Provence",
"location": "Aix-En-Provence",
"price": 389000,
"currency": "EUR",
"pricePerM2": 9262,
"rooms": 2,
"bedrooms": 1,
"surface": 42,
"landSurface": null,
"energyClass": "B",
"description": "Beau Loft avec terrasse et parking, Aix centre…",
"photos": ["https://cdn.pap.fr/photos/…-p3.jpg"],
"photoCount": 8,
"seller": "Particulier",
"phone": "06 71 26 79 76",
"streetAddress": "rue Constant Coquelin",
"postalCode": "94400",
"reference": "vente-450001168",
"sourceRef": "pap.fr (Particulier à Particulier)"
}

The phone, streetAddress, postalCode and reference fields are populated only when scrapeDetails is on; otherwise they are null.

Pricing

Pay per event, no subscription:

EventWhen
Actor startOnce per run
Listing foundPer listing returned
Listing detailedPer listing enriched with owner phone/address (only when scrapeDetails is on and contact data is found)

FAQ

What's the source? Public listings on pap.fr, France's largest owner-to-owner (particulier à particulier) real-estate site. Agencies can't list there, so results are private sellers/landlords.

Sales and rentals? Both. The actor detects sale vs rental from the search URL; €/m² is computed for sales only.

How do I target a specific city or neighbourhood? Build the search on pap.fr: its filters (arrondissement, budget, surface, rooms, exterior, etc.) all encode into the URL you paste.

Why do some fields come back null? When a listing genuinely omits a value (e.g. price on request, no DPE), the field is null rather than a guess.

Does it work with AI agents? Yes, it's exposed via REST API and MCP.


Something missing?

If you need an extra field, another source, or a different output, open an issue on this Actor and describe it. I read every request and small additions usually ship within days. More French real estate Actors (pige, DVF, deal score, DPE leads) are on my profile.

Keywords: PAP, particulier à particulier, annonces immobilières, immobilier France, real estate listings, property France, prix immobilier, €/m², location appartement, vente maison, owner-direct, no agency, proptech.