Skip to content

gispulse-src-dvf

French real-estate transactions (DVF) data source for GISPulse — Etalab geo-enriched GeoParquet mirror (domain STATISTIQUE, jurisdiction FR).

Provider

FieldValue
Upstream producerDGFiP (Direction générale des finances publiques)
Provider (runtime)Etalab (metadata.provider = "Etalab")
Redistributordata.gouv.fr / files.data.gouv.fr
DatasetDemandes de Valeurs Foncières (DVF)
Mirrorfiles.data.gouv.fr/geo-dvf (geo-enriched GeoParquet)
LicenceLicence Ouverte 2.0
CadenceSemestrial (April / October — rolling 5-year window)

Entries

idLabelAccessProtocolEndpointPayloadJurisdiction
mutationsMutations DVF (real-estate transactions)REMOTE_TABLEhttps://files.data.gouv.fr/geo-dvf/latest/parquet/full.parquetTABLEFR

Schema highlights (field names mirror the Etalab geo-dvf CSV header):

id_mutation, date_mutation, nature_mutation, valeur_fonciere, type_local, surface_reelle_bati, surface_terrain, code_commune, nom_commune, code_departement, prefixe_section, section, numero_plan, id_parcelle (synthesised join key), longitude, latitude.

The AccessProtocol.REMOTE_TABLE adapter is handled by GeoParquetS3Fetcher (A3, issue #229, shipped in core since v1.9.0): it scans full.parquet via DuckDB read_parquet + httpfs with bbox predicate pushdown — a foncier query on one département touches a few MB of the national file, not 2 GB.

Revision

revision(entry_id) issues a single HTTP GET against the data.gouv.fr dataset metadata API:

https://www.data.gouv.fr/api/1/datasets/demandes-de-valeurs-foncieres/

It parses the top-level last_modified ISO-8601 field from the JSON response. A HEAD request is not used because the static.data.gouv.fr edge returns neither ETag nor Last-Modified for resource files. Returns None — meaning "freshness unknown" — on any network error, non-2xx response, malformed JSON, or missing field.

Usage

python
from gispulse.plugins.api import get_catalog_entry

entry = get_catalog_entry("dvf", "mutations")
# entry.access.protocol → AccessProtocol.REMOTE_TABLE
# entry.access.endpoint → "https://files.data.gouv.fr/geo-dvf/latest/parquet/full.parquet"
# entry.access.format   → "application/parquet"

The plugin registers automatically via the gispulse.data_sources entry-point when installed:

bash
pip install gispulse-src-dvf

References

Published under AGPL-3.0 license.