Bonnes Affaires Immo 🇫🇷 : Prix Annonce vs DVF Vendu avatar

Bonnes Affaires Immo 🇫🇷 : Prix Annonce vs DVF Vendu

Pricing

from $4.20 / 1,000 listing scoreds

Go to Apify Store
Bonnes Affaires Immo 🇫🇷 : Prix Annonce vs DVF Vendu

Bonnes Affaires Immo 🇫🇷 : Prix Annonce vs DVF Vendu

Repérez les biens décotés en France : chaque annonce PAP est comparée aux prix réellement vendus du quartier via les données DVF officielles, pour un score de décote basé sur le vrai prix au m² et la marge de négociation. Pour investisseurs, chasseurs immo et agents IA. Usage plateforme inclus.

Pricing

from $4.20 / 1,000 listing scoreds

Rating

0.0

(0)

Developer

Tagada Data

Tagada Data

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

5 days ago

Last modified

Share

French Real Estate Deal Score: Asking vs Sold Price (PAP + DVF)

Find underpriced French properties in seconds. This actor takes a PAP.fr owner-direct sale search and scores every listing against what comparable properties actually sold for, using the French government's official transaction database (DVF, Demandes de Valeurs Foncières).

Each listing gets a deal score: how far its asking €/m² sits below (good) or above (expensive) the area's real, recorded median. That gap is your décote: it tells you which listings are genuinely discounted (biens décotés) and how much marge de négociation the asking price leaves. No more guessing whether a price is fair, you just see it.

Built for property investors, buyers, agents doing pige, and AI agents (API + MCP).

Why this actor

  • ✅ Compares asking to achieved automatically: live owner asking prices (PAP) get benchmarked against official sold prices (DVF), matched by property type and commune.
  • ✅ Every listing gets a single deal score. +18 means the asking €/m² sits 18 % below the local median sale, -12 means 12 % above, and results come back sorted best-deal-first.
  • ✅ Owner-direct only, since PAP lists no agencies, so a good deal here is also a direct line to the owner (add scrapeDetails to pull their phone number too).
  • ✅ The benchmark data is official and free: DVF straight from files.data.gouv.fr (Etalab / DGFiP), with outliers such as symbolic €1 sales and garages filtered out.
  • ✅ Just paste one URL. The benchmark area is derived automatically, and you can override it if you need something more specific.

How it works

  1. Scrapes the PAP sale listings from your search URL (asking prices).
  2. Pulls DVF sold transactions for the same commune and years.
  3. Builds a median €/m² benchmark per property type (Apartment / House), ignoring data-entry noise.
  4. Scores each listing: dealScore = (median_sold − asking) / median_sold × 100.
  5. Returns listings best-deal-first, each carrying the benchmark it was judged against.

Input

{
"searchUrl": "https://www.pap.fr/annonce/vente-appartements-aix-en-provence-13-g11424",
"dvfLocation": "",
"dvfYears": ["2024", "2025"],
"scrapeDetails": false,
"maxListings": 200,
"maxPagesPerUrl": 20
}
  • searchUrl: a pap.fr sale search URL, the asking prices you want scored.
  • dvfLocation: optional commune, postal code, or INSEE code for the benchmark; leave it empty and it's derived automatically.
  • dvfYears: which DVF years feed the benchmark — pick from 2021–2025 (up to 5). More years means a larger sample, but also one more file to download per commune, and a city like Paris is 20 arrondissement files per year.
  • scrapeDetails: also fetches each owner's phone number and street address.
  • maxPagesPerUrl: how deep to follow the search URL's pagination (up to 20; ~40 ads a page).

The six filters below run on the scraped listings before scoring, so you only pay for rows you actually wanted:

InputTypeDefaultWhat it does
minPriceintegernoneDrop listings under this asking price (€).
maxPriceintegernoneDrop listings over this asking price (€).
minSurfaceintegernoneDrop listings under this built surface (m²).
minRoomsintegernoneDrop listings with fewer rooms ("pièces", not bedrooms).
propertyTypesarrayallKeep only these types (Appartement, Maison, Terrain, Immeuble, Local commercial, Parking / Box). Scoring benchmarks apartments and houses.
keywordsarraynoneKeep a listing only if one of these words appears in its description or location, for example travaux, terrasse, viager.

Limits, and what happens when you hit them

FieldDefaultMaximumWhy
maxListings200800One PAP search is ~40 ads over at most 20 pages
maxPagesPerUrl2020PAP repeats content past its last real page and the actor stops there anyway
dvfYears2024, 20255 yearsEach year is one more sold-price file per commune

The run watches its own clock and splits it into three: scraping PAP, downloading the DVF sold-price files, and then scoring, charging and pushing every listing. That last phase is reserved — a slow PAP search or a slow benchmark download costs you score precision or coverage, never the rows themselves. If the clock runs out, the run finishes successfully with a status message saying so: "Stopped at the run time limit: N rows delivered, raise the run timeout or lower maxListings." When the benchmark is only partly downloaded, the message and the BENCHMARK key-value record both say how many of the requested commune/year files made it, so a thinner-than-requested sample is never silent.

Output (one record per listing)

{
"source": "PAP",
"propertyType": "Appartement",
"price": 249000,
"surface": 55,
"pricePerM2": 4527,
"dealScore": 19,
"dealLabel": "Great deal (well below market)",
"benchmarkPerM2": 5600,
"benchmarkSample": 214,
"benchmarkArea": "13100",
"benchmarkYears": ["2024", "2025"],
"location": "Aix-En-Provence",
"url": "https://www.pap.fr/annonces/appartement-…-r462001771",
"phone": null
}

dealScore is null for rentals, listings without a surface, or areas with too few comparable sales (in which case dealLabel explains why). The run's BENCHMARK key-value record holds the full per-type benchmark and the communes used.

Pricing

Pay per event, no subscription:

EventPriceWhen
Listing scored$0.006 ($6.00 / 1,000)Per listing returned, scored against DVF
Actor start$0.001Once per run

$6.00 per 1,000 listings scored, all in

Platform usage (compute, proxies) is included in the price — nothing is billed on top. Scoring a 200-listing search costs $1.20, or $0.84 on the Gold plan (Bronze, Silver and Gold discounts apply to every event). A listing is charged when it comes back with a score, so the DVF files the run downloads to build the benchmark are on us, however many communes and years your search spans.

Companion actors

FAQ

Where do the numbers come from? Asking prices: public listings on pap.fr. Sold prices: DVF open data (files.data.gouv.fr/geo-dvf, Etalab / DGFiP). Both fetched live at run time.

How is a "deal" defined? Purely on €/m² vs the local median recorded sale for the same property type. It's a pricing signal, not an appraisal, so always verify condition, floor, exact street, and DPE.

Why is a score null? Rentals (no sale comparable), listings without a usable surface, or a benchmark with fewer than 5 comparable sales. The benchmark context is still returned so you can judge.

Paris / Lyon / Marseille? Handled: their arrondissements are expanded automatically for DVF.

Does it work with AI agents? Yes, via REST API and MCP. Ask "show me PAP apartments in Aix priced under the DVF median."


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: immobilier, prix au m², DVF, valeurs foncières, PAP, particulier à particulier, sous-évalué, bonne affaire immobilière, deal score, asking vs sold price, real estate France, property investment, pige immobilière, €/m², biens décotés, décote immobilière, marge de négociation, historique des prix, prix de vente réels.