Bien'ici Scraper — French Property Listings & Prices
Pricing
from $2.00 / 1,000 results
Bien'ici Scraper — French Property Listings & Prices
Scrape French property listings from Bien'ici: sale & rental prices, price per m², surface, rooms, DPE energy rating, price-drop signals, district & photos. Filter by city, price, area and type across France. Export to JSON, CSV or Excel for market research & valuation.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
19 hours ago
Last modified
Categories
Features
Share
Bien'ici Scraper — French Property Listings, Prices & DPE Energy Ratings 🇫🇷🏠
Turn Bien'ici — one of France's premier real estate portals — into structured property market intelligence. This Bien'ici scraper extracts active sale and rental property listings across France, capturing transaction prices, price per square meter (€/m²), living area, room counts, official DPE energy efficiency ratings (A-G), greenhouse gas emissions (GES), monthly charges, price-reduction flags, professional agency details, geographic districts, and high-resolution photo galleries. No login, no coding, no captcha.
Export to JSON, CSV, Excel, or API — or connect directly into PostgreSQL, BigQuery, Airtable, Google Sheets, Make, Zapier, and n8n.
Built for: real estate investors, PropTech developers, valuation & CMA appraisers, mortgage brokers, housing market analysts, data journalists, and asset management funds tracking French residential and commercial property markets.
⚡ At a glance
| Feature | Details |
|---|---|
| Data Source | Bien'ici (bienici.com) — Premier French Real Estate Marketplace |
| Geographic Scope | All 101 French departments, major metros (Paris, Lyon, Marseille, Bordeaux, Toulouse), and overseas territories |
| Transaction Types | Properties for sale (buy), rentals (rent), and life annuity sales (viager) |
| Property Types | Flats/Apartments, Houses, Lofts, Townhouses, Castles (Châteaux), Entire Buildings, Land (Terrain), Offices |
| Key Output Fields | Listing ID, canonical URL, transaction type, property category, title, price, €/m², surface area, rooms, DPE, location |
| Energy Metrics | Official French DPE rating (A to G) and value (kWh/m²/year), GES rating and value (kg CO₂/m²/year) |
| Price Drop Signal | Automatic tracking of price reduction flags (priceHasDecreased: true) to identify motivated sellers |
| Export Formats | JSON, CSV, Excel (XLSX), XML, HTML table, webhook & REST API |
| Max Capacity | Scalable from 100 sample records to 1,000+ listings with automatic multi-city expansion |
| Execution Speed | Up to 500 listings per request; fast prefill runs finish in under 15 seconds |
🔎 Why scrape Bien'ici?
Bien'ici is one of the most comprehensive property portals in France, founded by major real estate federations and syndicates (including FNAIM, SNPI, and UNIS). It aggregates hundreds of thousands of residential and commercial listings directly from verified estate agencies (agences immobilières) and developers across metropolitan France.
Unlike generic classifieds, Bien'ici listings carry standardized, high-integrity regulatory attributes:
- Comparable Market Analysis (CMA) & Property Valuation: Real estate agents, surveyors, and automated valuation models (AVMs) require verified asking prices and calculated price per square meter (
pricePerSquareMeter) across specific arrondissements and neighborhoods to benchmark true market value. - Energy Efficiency & Renovation Arbitrage (DPE): Under recent French energy transition legislation (Loi Climat et Résilience), properties with poor energy ratings (passoires thermiques — classes F and G) face rental restrictions and impending lease bans. Investors use this scraper to identify underpriced F/G properties prime for energy retrofit and capital appreciation.
- Motivated Seller & Price Drop Alerts: Monitor the
priceHasDecreasedboolean flag to detect price corrections in cooling markets, allowing buyers and institutional funds to negotiate favorable acquisitions before competing bids emerge. - Rental Yield & Cash-Flow Modeling: Compare monthly rental revenues against acquisition costs across student towns (Lille, Rennes, Montpellier) and commercial hubs to calculate gross rental yields.
- PropTech & Aggregator Feeds: Fuel property search engines, map visualizations, and regional market barometers with clean, de-duplicated listing data.
🗂️ Covered Property Categories
This scraper supports filtering and extraction across all major French property classifications:
- Flats & Apartments (
flat): Studio apartments, T1/T2/T3/T4/T5 residential flats, duplexes, triplexes, and rooftop penthouses across urban metros. - Houses & Villas (
house): Detached single-family homes, suburban pavilions, country properties, and luxury villas. - Lofts & Workshops (
loft): Converted industrial lofts and open-plan residential spaces. - Townhouses (
townhouse): Historic and modern urban townhomes (hôtels particuliers). - Castles & Manors (
castle): French châteaux, historic estates, manoirs, and rural prestige domains. - Investment Buildings (
building): Entire residential and mixed-use buildings (immeubles de rapport) for multi-family investors. - Building Land (
terrain): Residential plots, subdividable land, and commercial development parcels. - Offices & Retail (
office,shop,premises): Commercial workspaces, boutique retail stores, and light industrial facilities.
✨ Key Features & Capabilities
- ✅ Automatic Location Resolution: Type any French city name (e.g.,
"Paris","Lyon","Bordeaux","Nice"), district, or department code; the scraper automatically maps it to official Bien'ici geographic zone identifiers. - ✅ Deep 1,000+ Record Pagination: Unlocked pagination engine retrieves hundreds of records per batch and scales smoothly to 1,000+ listings without hitting arbitrary limits.
- ✅ Calculated Price per m²: Computes accurate €/m² metrics for every listing based on declared living surface area and purchase or rental figures.
- ✅ Full DPE & GES Climate Ratings: Extracts standardized energy classifications (
energyClassification) and greenhouse gas emission scores (greenhouseGazClassification). - ✅ Detailed Architectural Features: Captures floor number, total building floors, construction year, heating type, elevator presence, balconies, terraces, and private gardens.
- ✅ Condominium Financials: Extracts annual co-ownership charges (charges annuelles de copropriété) and security deposits for rental listings.
- ✅ Zero Duplicates Guarantee: Maintains an in-memory SHA-based ID index across pagination pages to guarantee 100% unique records in every dataset.
📊 Extracted Data Fields
The scraper maps raw portal listings into a unified, developer-ready schema:
🏠 Property Identification & Core Attributes
| Field | Coverage | Description |
|---|---|---|
id | 🟢 High (100%) | Unique Bien'ici listing identifier (e.g., bienici-1234567) |
url | 🟢 High (100%) | Canonical URL to the live listing page on Bien'ici |
adType | 🟢 High (100%) | Transaction classification: buy (sale), rent (rental), or lifeAnnuitySale |
propertyType | 🟢 High (100%) | Standardized property type: flat, house, loft, building, terrain, etc. |
title | 🟢 High (100%) | Headline listing title provided by the marketing agency |
description | 🟢 High (98%) | Full textual property description formatted in clean text |
💶 Pricing & Transaction Intelligence
| Field | Coverage | Description |
|---|---|---|
price | 🟢 High (99%) | Total sale price or monthly rent in Euros (€) |
pricePerSquareMeter | 🟢 High (98%) | Computed price per square meter in €/m² |
priceHasDecreased | 🟢 High (100%) | Boolean flag: true if listing price was recently marked down |
priceWithoutFees | 🟡 Conditional | Net seller price excluding agency commissions (prix net vendeur) |
annualCondominiumFees | 🟡 Conditional | Declared annual building co-ownership maintenance fees (charges) |
guaranteeAmount | 🟡 Conditional | Security deposit amount required for rental leases |
📐 Space, Layout & Interior Specifications
| Field | Coverage | Description |
|---|---|---|
surfaceArea | 🟢 High (99%) | Living interior surface area in square meters (m²) |
landSurfaceArea | 🟡 Conditional | Total exterior plot or garden area in m² (houses and land) |
roomsQuantity | 🟢 High (99%) | Total number of rooms (T1, T2, T3, etc.) |
bedroomsQuantity | 🟢 High (92%) | Dedicated bedroom count |
floor | 🟡 Conditional | Specific floor level in multi-story residential buildings |
floorQuantity | 🟡 Conditional | Total number of floors in the residential building |
yearOfConstruction | 🟡 Conditional | Original building construction year |
heating | 🟡 Conditional | Heating type (collective, individual electric, gas radiator, heat pump) |
features | 🟢 High (100%) | Array of amenities: garden, terrace, balcony, cellar, elevator, parking, etc. |
⚡ DPE & GES Environmental Ratings
| Field | Coverage | Description |
|---|---|---|
energyClassification | 🟢 High (90%) | Official French DPE energy label: A, B, C, D, E, F, G |
energyValue | 🟢 High (85%) | Energy consumption value measured in kWh/m²/year |
greenhouseGazClassification | 🟢 High (88%) | Greenhouse gas emissions rating: A to G |
greenhouseGazValue | 🟢 High (83%) | Climate impact measured in kg CO₂/m²/year |
📍 Location & Agency Details
| Field | Coverage | Description |
|---|---|---|
city | 🟢 High (100%) | Municipality name (e.g., Paris, Lyon 6e Arrondissement) |
postalCode | 🟢 High (100%) | Official 5-digit French postal code (e.g., 75011, 69006) |
district | 🟡 Conditional | Specific neighborhood or micro-district name |
latitude | 🟢 High (95%) | Approximate latitude for GIS mapping and geographic clustering |
longitude | 🟢 High (95%) | Approximate longitude for GIS mapping and geographic clustering |
accountName | 🟡 Conditional | Name of the listing real estate agency or network |
accountType | 🟢 High (100%) | Entity type: agency (professional) or individual |
photos | 🟢 High (98%) | Array of high-resolution property image URLs |
scrapedAt | 🟢 High (100%) | ISO 8601 UTC timestamp of record extraction |
⚙️ Input Parameters
Configure your crawl easily through the Apify Console or pass JSON parameters via API:
{"searchLocations": ["Paris", "Lyon"],"filterType": "buy","propertyTypes": ["flat", "house"],"minPrice": 200000,"maxPrice": 850000,"minArea": 40,"onlyPriceDrops": false,"sortBy": "relevance","maxItems": 500}
| Parameter | Type | Default | Description |
|---|---|---|---|
searchLocations | array | ["Paris"] (prefill), [] (default) | One or more French cities, districts, or departments to search. Leave empty for all of France. |
filterType | string | "buy" | Transaction filter: "buy" for properties for sale, or "rent" for long-term rentals. |
propertyTypes | array | ["flat", "house"] | Selected property categories: flat, house, loft, townhouse, building, terrain, office, etc. |
minPrice | integer | null | Minimum sale price or monthly rent in Euros (€). |
maxPrice | integer | null | Maximum sale price or monthly rent in Euros (€). |
minArea | integer | null | Minimum living surface area in square meters (m²). |
maxArea | integer | null | Maximum living surface area in square meters (m²). |
minRooms | integer | null | Minimum room count. |
onlyPriceDrops | boolean | false | When true, isolates listings whose price has recently decreased. |
sortBy | string | "relevance" | Result ordering: relevance, newest, price-asc, price-desc. |
maxItems | integer | 100 (prefill), 0 (default) | Maximum total listings to return. Set to 0 for unlimited extraction. |
proxyConfiguration | object | {"useApifyProxy": true} | Proxy configuration. Apify Datacenter proxies ensure fast, reliable downloads. |
📦 Sample Output
Every extracted listing is normalized into clean JSON:
{"id": "bienici-immo-98765432","url": "https://www.bienici.com/annonce/vente/appartement/paris-11e/bienici-immo-98765432","adType": "buy","propertyType": "flat","title": "Appartement 3 pièces 68 m² Paris 11ème","description": "Exclusivité. Au cœur du 11ème arrondissement, magnifique appartement traversant lumineux...","price": 645000,"pricePerSquareMeter": 9485,"priceHasDecreased": true,"priceWithoutFees": 620000,"annualCondominiumFees": 2400,"surfaceArea": 68.0,"roomsQuantity": 3,"bedroomsQuantity": 2,"floor": 3,"floorQuantity": 6,"yearOfConstruction": 1910,"energyClassification": "D","energyValue": 198,"greenhouseGazClassification": "D","greenhouseGazValue": 42,"features": ["balcony", "cellar", "elevator", "intercom"],"city": "Paris 11e Arrondissement","postalCode": "75011","district": "Folie-Méricourt","latitude": 48.8654,"longitude": 2.3762,"accountName": "AGENCE IMMOBILIERE DE L'EST","accountType": "agency","createdByPro": true,"photosCount": 12,"publicationDate": "2026-10-15T09:30:00Z","scrapedAt": "2026-11-10T12:00:00.000Z"}
💡 Practical Real Estate Use Cases
1. DPE Renovation & Energy Arbitrage Screening
Under the French Climate Law, properties rated G face rental bans starting in 2025, with F following by 2028. Real estate flippers and green retrofit funds can scrape properties for sale with energyClassification in ['F', 'G'] and negotiate aggressive purchase discounts to execute thermal insulation retrofits.
2. Comparable Market Analysis (CMA) for Appraisers
Before listing a property, estate agents can pull all active listings within the same postal code or micro-district. Filter by matching room counts and compare pricePerSquareMeter distributions to establish competitive pricing recommendations.
3. Automated Price Reduction Monitoring
Run a daily scheduled crawl with onlyPriceDrops: true across major French cities. Feed newly reduced properties directly into Telegram, Slack, or CRM channels to contact listing agents ahead of retail buyers.
4. French Buy-to-Let Rental Yield Modeling
Extract rental listings across student cities (e.g., Toulouse, Montpellier, Rennes) to determine median monthly rent per square meter by neighborhood. Cross-reference with asking sale prices to identify sub-markets delivering gross rental yields above 7%.
🗺️ French Regional & Metropolitan Coverage
The scraper provides complete coverage across metropolitan France and overseas departments:
- Île-de-France (Greater Paris): Paris (all 20 arrondissements), Hauts-de-Seine (92), Seine-Saint-Denis (93), Val-de-Marne (94), Yvelines (78), Essonne (91), Val-d'Oise (95), and Seine-et-Marne (77).
- Auvergne-Rhône-Alpes: Lyon metropolitan area, Villeurbanne, Grenoble, Saint-Étienne, Annecy, and Clermont-Ferrand.
- Provence-Alpes-Côte d'Azur (PACA): Marseille, Nice, Toulon, Cannes, Antibes, and Aix-en-Provence.
- Nouvelle-Aquitaine & Occitanie: Bordeaux, Toulouse, Montpellier, Nîmes, Pau, and La Rochelle.
- Grand Est & Hauts-de-France: Strasbourg, Lille, Reims, Nancy, and Metz.
- Northwest & Atlantic Coast: Nantes, Rennes, Brest, Angers, and Le Mans.
🚀 How to Run via Apify API
Trigger the actor programmatically from your Node.js, Python, or shell workflows:
Node.js (Apify Client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('haketa/bienici-scraper').call({searchLocations: ['Bordeaux', 'Toulouse'],filterType: 'buy',propertyTypes: ['flat'],maxPrice: 400000,maxItems: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Scraped ${items.length} French property listings.`);
Python (Apify Client)
import osfrom apify_client import ApifyClientclient = ApifyClient(os.getenv('APIFY_TOKEN'))run = client.actor('haketa/bienici-scraper').call(run_input={'searchLocations': ['Lyon'],'filterType': 'buy','minArea': 50,'onlyPriceDrops': True,'maxItems': 1000,})dataset_items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(f'Retrieved {len(dataset_items)} price-reduced listings in Lyon.')
cURL
curl -X POST "https://api.apify.com/v2/acts/haketa~bienici-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchLocations": ["Paris"],"filterType": "buy","propertyTypes": ["flat"],"maxItems": 250}'
❓ Frequently Asked Questions
Are phone numbers and direct agency email addresses included?
Bien'ici routes user inquiries through internal contact forms and obfuscates direct agent phone numbers and emails to protect customer privacy. The scraper extracts the verified agency business name (accountName), agency classification, and direct listing link.
Can I request 1,000+ listings in a single run?
Yes. You can set maxItems to 1000, 5000, or 0 (unlimited). When requesting 1,000+ items across broad criteria, the scraper paginates in batches of 500 listings and automatically expands across major French metropolitan zones if your primary search reaches exhaustion.
How does price per m² calculation handle missing values?
If the source listing does not explicitly declare a square meter price, the scraper automatically computes pricePerSquareMeter = Math.round(price / surfaceArea) for standard sales and rental properties, ensuring near 100% field coverage.
What is the difference between buy, rent, and life annuity (viager)?
buy covers standard freehold acquisitions. rent extracts monthly tenancy listings. lifeAnnuitySale (viager) covers the unique French life-annuity mechanism, where the purchase price represents an initial lump sum (bouquet) accompanied by monthly lifetime rent payments (rente viagère).
How fresh is the listing data? Data is queried live from Bien'ici's active marketplace. Newly published listings, price adjustments, and sold status removals are reflected in real time.
Can I filter by specific Parisian arrondissements?
Yes. You can supply specific district names in searchLocations, such as "Paris 11e Arrondissement", "Paris 15", "Paris 18", or search across the entire capital with "Paris".
Can I set up automated webhooks for newly added properties? Yes. Configure an Apify Webhook on your actor run to trigger an HTTP POST to your webhook endpoint (Make, Zapier, Slack, or your internal API) whenever the scraper finishes.
How does the scraper handle non-standard property features?
Attributes like private gardens, underground cellars, swimming pools, elevators, and air conditioning are compiled into a normalized features array of clean strings, making filtering trivial in downstream SQL or Pandas code.
🔗 Related European Real Estate Scrapers
Expand your cross-border European property intelligence with these scrapers:
- Marktstammdatenregister Scraper — German energy assets, solar parks & commercial operators
- Hitta.se Business Directory Scraper — Swedish corporate firmographics, B2B leads & financials
- Arbeitsagentur Jobs Scraper — German employment listings, salary benchmarks & contacts
📋 Changelog
Version 1.2 (2026-11)
- Deep 1,000+ Pagination Unlocked: Fully uncapped listing pagination with automatic multi-city expansion for large-scale French property intelligence.
- Fast Prefill Optimization: Streamlined default parameters to deliver a rich 100-listing Paris sample in <15 seconds.
- Enhanced €/m² and DPE Normalization: Improved calculated price per square meter formulas and robust parsing of French climate energy diagnostic ratings.
- Multi-Zone Query Resolution: Optimized municipal and departmental zone resolution for composite search locations.
Version 1.1 (2026-08)
- Added support for life annuity sales (viager) and commercial business premises.
- Integrated
priceHasDecreasedprice reduction tracking. - Added comprehensive condominium fees and co-ownership attributes.
Version 1.0 (2026-05)
- Initial release covering French residential sales and rentals with full DPE ratings and photo galleries.