France Property Risk Scraper
Pricing
Pay per event
France Property Risk Scraper
Bulk enrich French addresses with official Géorisques hazard, environmental, ICPE, radon, seismic, pollution, and cavity risk signals.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
France Property Risk Scraper enriches French property addresses and coordinates with official public risk data.
It combines the French national address geocoder with Géorisques endpoints so property teams can review environmental and natural-hazard signals in bulk instead of opening one public page at a time.
What does France Property Risk Scraper do?
The actor returns one structured row per property.
Each row starts from either a postal address or a coordinate pair.
For address inputs, the actor geocodes the property with api-adresse.data.gouv.fr.
Then it calls selected Géorisques modules for the matching location and commune.
The output includes normalized address data, coordinates, INSEE commune codes, seismic zoning, radon potential, PPR / GASPAR risk labels, nearby ICPE industrial facilities, polluted-site indicators, underground cavities, source URLs, and endpoint status evidence.
Use it when you need repeatable risk enrichment for many French properties.
Who is it for?
Real-estate acquisition teams use it to screen properties before spending analyst time on deeper diligence.
Notaires, legal operations teams, and transaction coordinators use it to add official context to address lists during document review.
Insurers and lenders use it to pre-screen portfolios for commune-level and nearby-site risk indicators.
Property investors use it to compare opportunities across cities, regions, and asset classes.
Data teams use it to join public risk signals into CRMs, BI dashboards, underwriting models, and internal property databases.
Why use this actor?
Manual public-risk checks are slow when you have hundreds or thousands of addresses.
This actor makes the process consistent.
It uses public endpoints, emits typed fields, and records which source modules answered for each row.
That means your team can filter, sort, and audit the results after the run.
The actor is also useful as a first-pass triage layer: it highlights records that need more legal, engineering, insurance, or environmental review.
Data sources used
The actor uses public French government data services.
api-adresse.data.gouv.frfor address normalization and geocoding.georisques.gouv.frpublic APIs for natural and environmental risk modules.- Commune-level codes returned by the geocoder or provided directly in coordinate input.
- Coordinate/radius searches for nearby site modules.
No login, private cookies, or browser automation are required.
The actor does not claim to replace official transaction documents or professional expert review.
What data can you extract?
The dataset includes address and location fields:
- input label
- original input address
- normalized address
- latitude
- longitude
- geocode score
- INSEE code
- commune
- postcode
The dataset includes natural-hazard fields:
- seismic zone code
- seismic zone label
- radon potential class
- PPR / GASPAR risk count
- PPR / GASPAR risk labels
The dataset includes nearby environmental indicators:
- ICPE industrial-site count
- ICPE industrial-site sample objects
- polluted-site count
- polluted-site sample objects
- underground-cavity count
- underground-cavity sample objects
The dataset includes audit fields:
- source endpoint statuses
- source URLs
- scrape timestamp
Output fields overview
| Field | Meaning |
|---|---|
inputLabel | Human-readable label for the property input. |
normalizedAddress | Address selected by the national geocoder. |
latitude / longitude | Coordinates used for Géorisques lookups. |
inseeCode | Commune code used for commune-level modules. |
seismicZoneLabel | Seismic zoning label when returned by the source. |
radonPotentialClass | Radon potential class when available. |
pprRiskCount | Number of PPR / GASPAR risk labels returned. |
industrialSiteCount | Count of nearby ICPE facilities found. |
pollutedSiteCount | Count of nearby polluted or historical industrial records found. |
cavityCount | Count of nearby underground cavity records found. |
sourceEndpointStatuses | Per-module status evidence for audit and debugging. |
sourceUrls | Public source URLs called for the row. |
How much does it cost to enrich French property risk data?
Pricing uses pay-per-event billing.
A small start event is charged once per run.
An item event is charged for each property row returned.
Current actor configuration:
- Start:
$0.005per run. - FREE item price:
$0.00006366per property row. - BRONZE item price:
$0.000055356per property row. - SILVER item price:
$0.000043178per property row. - GOLD item price:
$0.000033214per property row. - PLATINUM item price:
$0.000022142per property row. - DIAMOND item price:
$0.0000155per property row.
Example: on the BRONZE tier, a run with 1,000 returned property rows costs about $0.060356 before any platform-side rounding or plan-specific changes.
The default input is intentionally small, so a first trial run stays cheap.
Input options
Use addressesText when you have postal addresses.
Enter one French address per line.
Include street, postcode, and city whenever possible.
Use coordinatesJson when your database already contains coordinates.
Coordinate objects can include lat, lon, label, and inseeCode.
Providing inseeCode with coordinates helps commune-level modules such as radon and PPR / GASPAR.
Use maxItems to cap the run.
Use searchRadiusMeters to control nearby-site search distance.
Use maxNearbySites to limit how many example objects are stored for each nearby-site module.
Risk module switches
You can enable or disable modules to match your workflow.
includeSeismiccalls seismic zoning data.includeRadoncalls radon potential data when an INSEE code is available.includePprRiskscalls commune-level PPR / GASPAR risks when an INSEE code is available.includeIndustrialSitessearches nearby ICPE facilities.includePollutedSitessearches nearby polluted-site and historical industrial records.includeCavitiessearches nearby underground cavity records.
Disable modules when you only need part of the dataset or want smaller source-status arrays.
Address workflow
- Paste addresses into
addressesText, one per line. - Keep
maxItemslow for the first run. - Run the actor.
- Review geocode scores and normalized addresses.
- Filter rows with relevant risk counts or labels.
- Export the dataset to CSV, Excel, JSON, or your downstream system.
This workflow is best for property lists from spreadsheets, CRMs, notarial intake systems, or acquisition pipelines.
Coordinate workflow
Use coordinates when your source system already geocoded the properties.
Example coordinatesJson:
{"coordinates": [{"lat": 48.8555,"lon": 2.36041,"label": "10 Rue de Rivoli, Paris","inseeCode": "75104"}]}
Coordinate input avoids ambiguity in address matching.
It is useful for GIS teams, insurers, lenders, and data warehouses that already store location geometry.
Example input
{"addressesText": "10 Rue de Rivoli, 75004 Paris\n20 Avenue Jean Médecin, 06000 Nice\n1 Place Bellecour, 69002 Lyon","coordinatesJson": { "coordinates": [] },"maxItems": 3,"searchRadiusMeters": 1000,"maxNearbySites": 5,"includeSeismic": true,"includeRadon": true,"includePprRisks": true,"includeIndustrialSites": true,"includePollutedSites": true,"includeCavities": true}
Start with a few rows, inspect output quality, then scale to larger batches.
Example output
{"inputLabel": "10 Rue de Rivoli, 75004 Paris","normalizedAddress": "10 Rue de Rivoli 75004 Paris","latitude": 48.8555,"longitude": 2.36041,"inseeCode": "75104","commune": "Paris","seismicZoneLabel": "Zone de sismicité très faible","radonPotentialClass": "1","pprRiskCount": 4,"industrialSiteCount": 2,"pollutedSiteCount": 8,"cavityCount": 0,"sourceEndpointStatuses": [{ "module": "geocode", "ok": true, "status": 200 }],"sourceUrls": ["https://api-adresse.data.gouv.fr/search/"],"scrapedAt": "2026-06-28T00:00:00.000Z"}
Exact values depend on source data and API responses at run time.
How to read the risk counts
Counts are screening indicators.
A non-zero count means the public source returned matching records for the module and location.
It does not automatically mean a property is unsafe, uninsurable, or unsuitable.
Use counts to prioritize rows for deeper review.
Always inspect the source URLs and official source records before making high-stakes decisions.
Tips for better matches
Use full French addresses with postcode and commune name.
Avoid ambiguous building names without street context.
If you already have coordinates, pass them directly.
Add inseeCode to coordinate rows when possible.
Use a radius that fits your diligence policy; a larger radius can find more nearby sites but may also add less relevant records.
Keep maxNearbySites moderate so rows stay readable in CSV and spreadsheet exports.
Troubleshooting geocoding
If a row has no normalized address, the address may be outside France, incomplete, misspelled, or too ambiguous.
Try adding postcode and city.
If a geocode score looks low, review the normalized address before relying on downstream risk fields.
For portfolio work, keep the original address in your own system and compare it against normalizedAddress.
Troubleshooting risk modules
A zero count can mean no matching records were found for that module.
It can also mean a module could not run because required location data was missing.
Check sourceEndpointStatuses for each row.
If a public source is temporarily unavailable, rerun the affected rows later or disable the module that is failing.
Integrations for due diligence teams
Export CSV for analyst review.
Send JSON to a data warehouse for portfolio-level scoring.
Connect Apify webhooks to trigger alerts when a batch finishes.
Join results with acquisition pipeline records by inputLabel or your own external IDs in labels.
Use the actor as an enrichment step before creating internal diligence tickets.
Integrations for insurers and lenders
Use the output to pre-screen addresses before underwriting review.
Add risk counts to credit, policy, or collateral-review dashboards.
Separate rows with non-zero PPR, ICPE, polluted-site, or cavity signals for analyst triage.
Store sourceUrls and scrapedAt so you can document when public-source checks were performed.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/france-property-risk-scraper').call({addressesText: '10 Rue de Rivoli, 75004 Paris\n1 Place Bellecour, 69002 Lyon',maxItems: 2,searchRadiusMeters: 1000,maxNearbySites: 5,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/france-property-risk-scraper').call(run_input={'addressesText': '10 Rue de Rivoli, 75004 Paris\n1 Place Bellecour, 69002 Lyon','maxItems': 2,'searchRadiusMeters': 1000,'maxNearbySites': 5,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~france-property-risk-scraper/runs?token='$APIFY_TOKEN \-H 'Content-Type: application/json' \-d '{"addressesText":"10 Rue de Rivoli, 75004 Paris\n1 Place Bellecour, 69002 Lyon","maxItems":2}'
After the run succeeds, fetch dataset items from the run's default dataset.
MCP setup for AI agents
Use Apify MCP when an AI agent should enrich property lists during a research or diligence workflow.
For Claude Code, add a dedicated MCP tool entry:
$claude mcp add apify-france-property-risk --url "https://mcp.apify.com/?tools=automation-lab/france-property-risk-scraper"
For Claude Desktop, add an MCP server that exposes this actor only:
{"mcpServers": {"apify-france-property-risk": {"command": "npx","args": ["mcp-remote","https://mcp.apify.com/?tools=automation-lab/france-property-risk-scraper"]}}}
Example prompt:
Use the France Property Risk Scraper to enrich these French property addresses, then summarize rows with non-zero PPR, ICPE, polluted-site, or cavity counts.
This keeps the AI workflow focused on this property-risk enrichment tool.
Quality and auditability
Every output row includes endpoint-status evidence.
Use those statuses to distinguish “no records found” from “source request failed”.
Rows also include source URLs for traceability.
For regulated decisions, save the dataset export with the run ID and timestamp.
This makes it easier to reproduce which public-source checks were available when the enrichment was performed.
Limitations
Public APIs can change, return partial data, or have temporary downtime.
Nearby-site modules depend on coordinate accuracy and radius choices.
Commune-level signals may not describe parcel-level conditions.
Some risk categories require official documents, expert reports, or local authority confirmation.
Treat this actor as bulk screening and enrichment, not as a final legal opinion.
Legality and responsible use
The actor accesses public government APIs and address-geocoding data.
Only upload data you are allowed to process.
If address lists contain personal data, follow applicable privacy rules and internal retention policies.
Do not use the output as the only basis for legal, financial, insurance, or safety decisions.
Validate material findings against official sources and professional advice.
FAQ: can I use coordinates only?
Yes.
Provide coordinates in coordinatesJson.
Include inseeCode when available so commune-level modules can run.
Without inseeCode, coordinate-radius modules can still work, but commune-level modules may be limited.
FAQ: does it replace an ERP report?
No.
It is a bulk enrichment and triage actor.
Use it to identify addresses that deserve closer review.
For formal transaction requirements, official ERP documents and professional checks may still be needed.
FAQ: why are some module fields null?
A module field can be null when the module was disabled, required input was missing, the source returned no usable value, or the source request failed.
Check sourceEndpointStatuses to understand the reason.
The actor keeps row-level evidence so missing values are easier to diagnose.
Related Automation Lab actors
Use these actors for adjacent France and public-data workflows:
- France SIRENE Company Registry Scraper for French company registry enrichment.
- France Public Administration Directory Scraper for public administration contacts and entities.
- EPA ECHO Facility Compliance Scraper for US environmental compliance facility data.
- Bulk URL Status Checker for monitoring source links in downstream reports.
Suggested portfolio workflow
Run this actor on a property list.
Export rows with non-zero risk counts.
Join those rows back to asset IDs in your internal system.
Create review tasks for analysts.
Attach source URLs and endpoint statuses to each review task.
Archive the dataset export with the acquisition or underwriting record.
Support and feedback
If a source endpoint changes or a module starts returning unexpected statuses, share a run ID and a small input example.
Include whether the issue affects geocoding, seismic, radon, PPR / GASPAR, ICPE, polluted sites, or cavities.
That context makes it faster to diagnose whether the problem is source data, input format, or actor logic.