Bien'ici Universal Scraper avatar

Bien'ici Universal Scraper

Pricing

from $0.61 / 1,000 results

Go to Apify Store
Bien'ici Universal Scraper

Bien'ici Universal Scraper

🏠 Scrape Bien'ici real-estate listings by filters — rent or buy. Get price, surface, rooms, DPE/energy, photos, location, coordinates and the agency, as clean structured data. Pay per result.

Pricing

from $0.61 / 1,000 results

Rating

5.0

(1)

Developer

Scrapifier

Scrapifier

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

2 days ago

Last modified

Share

Bien'ici Scraper

Scrape real-estate listings from Bien'ici by filters (buy or rent, locations, property types, price, surface, rooms) and export them as JSON, CSV or Excel, or pull them straight from the API.

⚡ For every listing you get the price, price per m² and price excluding fees, the surface, rooms, bedrooms and floor, the DPE energy and greenhouse-gas ratings, the title and full description, city, postal code, district and department, GPS coordinates, new-build and condominium flags, annual condominium fees, publication and update dates, the photo URLs and the agency name. Locations are resolved to Bien'ici zones automatically, big searches are split by price so the full result set is reachable past Bien'ici's per-search cap, and there is no login and no cookies. You pay per listing.

Apify Actor

🎯 Why scrape Bien'ici real-estate listings?

  • Price monitoring: track asking prices and price per m² for flats and houses in a city, week after week, and spot listings that drop in price.
  • Investment screening: pull every property under a price ceiling with a minimum surface, then rank by price per m², DPE rating and condominium fees.
  • Market research: measure supply per district, the share of new builds and the split between agencies and private sellers.
  • Lead generation: build lists of active agencies and new listings in your area for prospecting (movers, renovation, energy audits).
  • Rental search automation: get notified when a rental matching your filters appears in your target arrondissement.
  • Data science and academic work: assemble clean datasets of French housing listings with coordinates, energy ratings and prices for modelling and mapping.

📊 What data does Bien'ici Scraper extract?

FieldDescription
idBien'ici listing id (for example immo-facile-60587888)
urlDirect link to the listing on bienici.com
referenceAgency reference
title, descriptionListing title and full description
transactionbuy or rent
propertyTypeflat, house, terrain, parking, loft, building, shop, office, castle, annexe, premises, townhouse, others
price, priceWithoutFees, pricePerSquareMeterPrice in EUR (monthly rent or sale price), price excluding agency fees, price per m². A range (array) for new-build programs
agencyFeePercentage, feesChargedToAgency fee percentage and who pays the fees
surfaceArea, roomsQuantity, bedroomsQuantityLiving surface in m², rooms and bedrooms (ranges for new-build programs)
floor, floorQuantityFloor of the property and number of floors in the building
energyClassification, greenhouseGazClassification, energyValueDPE energy rating (A to G), greenhouse-gas rating (A to G) and the energy consumption value
city, postalCode, district, departmentCodeLocation of the property
latitude, longitude, isApproximatePositionCoordinates, and whether Bien'ici blurred the position for privacy
newProperty, isInCondominium, annualCondominiumFees, isBienIciExclusiveNew-build flag, condominium flag, annual condominium fees in EUR, exclusive to Bien'ici
publicationDate, modificationDatePublication and last update dates (ISO 8601)
agency, accountType, byProAdvertiser name, account type and whether it is a professional
photos[], photoCountPhoto URLs and their count
hasVirtualTour, with360, with3dModelMedia flags: virtual tour, 360° media, 3D model

The dataset's Overview view shows the key columns (title, type, price, surface, rooms, city, DPE, URL); the full item holds every field above.

🚀 How to scrape Bien'ici real-estate listings

  1. Open the Actor and pick the Transaction: buy for sales or rent for rentals.
  2. Add one or more Locations: city names, districts or postal codes (for example Bordeaux, Paris 15, 33000). Each one is resolved to its Bien'ici zone automatically, and all zones are searched together.
  3. Pick the Property types (leave empty for flats and houses) and refine with Min / Max price, Min / Max surface, Min rooms, Min bedrooms and New builds only.
  4. Set Max results: 100 by default, 0 to collect every listing that matches. Searches above Bien'ici's cap of 2,400 results are split by price range until every listing is reachable.
  5. Click Start. Listings are pushed to the dataset in batches of 200 as the run progresses.
  6. Open the Storage tab to preview the listings and export them as JSON, CSV, Excel or XML, or read them from the dataset API.

The same run can be started from the Apify API, the Python or JavaScript client, or put on a schedule for daily monitoring.

📥 Input parameters

FieldKeyTypeDefaultDescription
Transactiontransactionselectbuybuy (sale) or rent.
Locationslocationsarray of strings["Bordeaux"]Cities, districts or postal codes (Bordeaux, Paris 15, 33000), each resolved to its Bien'ici zone.
Property typesproperty_typesarray of strings (select)noneOne or more of flat, house, terrain, parking, loft, building, shop, office, castle, annexe, premises, townhouse, others. Empty = flats and houses.
Min priceprice_minintegernoneLowest price to include, in EUR (monthly rent or sale price).
Max priceprice_maxintegernoneHighest price to include, in EUR.
Min surfacesurface_minintegernoneMinimum living surface in m².
Max surfacesurface_maxintegernoneMaximum living surface in m².
Min roomsrooms_minintegernoneMinimum number of rooms.
Min bedroomsbedrooms_minintegernoneMinimum number of bedrooms.
New builds onlynew_onlybooleanfalseOnly new-build (neuf) properties.
Max resultsmax_resultsinteger100Listings to collect. 0 = as many as possible; big searches are split by price so the full set is reachable.
Report empty searchesemit_input_statusbooleantrueAdd an input_status report to the run's OUTPUT record.
ProxyproxyConfigurationobject{ "useApifyProxy": true }Apify Proxy (automatic) rotates IPs to keep large runs reliable. Switch to Residential (country FR) for very big jobs.

Example input:

{
"transaction": "buy",
"locations": ["Bordeaux"],
"property_types": ["flat"],
"price_max": 500000,
"rooms_min": 2,
"max_results": 100
}

Locations are free text: a city (Bordeaux), a city with an arrondissement (Paris 15) or a postal code (33000) all work, and the run log shows the Bien'ici zone each one resolved to. A location that cannot be resolved is reported as not_found in input_status and skipped. Unknown property type values are ignored, and an empty list falls back to flats and houses.

📤 Output example

Each listing is one dataset item, exportable as JSON, CSV, Excel or via the API.

{
"id": "immo-facile-60587888",
"url": "https://www.bienici.com/annonce/immo-facile-60587888",
"title": "CHARTRONS - DUPLEX RÉNOVÉ - TERRASSE SUD-OUEST",
"transaction": "buy",
"propertyType": "flat",
"price": 470000,
"pricePerSquareMeter": 4451.3,
"surfaceArea": 102.52,
"roomsQuantity": 4,
"bedroomsQuantity": 3,
"energyClassification": "C",
"city": "Bordeaux",
"postalCode": "33300",
"district": "Bordeaux - Grand Parc",
"latitude": 44.8575,
"longitude": -0.5739,
"agency": "Côté Particuliers Bordeaux Chartrons",
"photoCount": 12
}

The run's OUTPUT record holds the run statistics (unique_ads, duplicates, requests, errors), the effective configuration and, when emit_input_status is on, an input_status list: one not_found entry per location that could not be resolved, and a summary entry with the resolved zones, the number of matching listings, the number collected and a status of ok or empty.

💡 Ready-to-run examples

Flats for sale in Bordeaux under 500,000 EUR with at least 2 rooms

{ "transaction": "buy", "locations": ["Bordeaux"], "property_types": ["flat"], "price_max": 500000, "rooms_min": 2, "max_results": 100 }

Flats to rent in the 15th arrondissement of Paris

{ "transaction": "rent", "locations": ["Paris 15"], "property_types": ["flat"], "max_results": 100 }

Every house for sale in postal code 33000

{ "transaction": "buy", "locations": ["33000"], "property_types": ["house"], "max_results": 0 }

New-build flats and houses in Bordeaux

{ "transaction": "buy", "locations": ["Bordeaux"], "property_types": ["flat", "house"], "new_only": true, "max_results": 100 }

💰 Pricing: how much does it cost to scrape Bien'ici?

From $0.90 per 1,000 listings on the free plan, with automatic volume discounts down to $0.61 per 1,000 on higher Apify plans. You pay only for the results you receive, there is no subscription and no start fee. New Apify accounts get free monthly platform credits to try it.

Cost is driven by the number of listings returned: max_results caps a run (100 by default), and the price, surface, rooms and property type filters are applied by Bien'ici's search before any listing is counted, so filter first rather than trimming the export afterwards.

⚙️ Performance, proxies and limits

  • Proxy and access: the Actor calls Bien'ici's public JSON search and geo-suggest endpoints, 100 listings per request, with no login or cookies. Apify Proxy (automatic) is on by default and rotates IPs to keep large runs reliable; for very big jobs switch to Residential with country FR.
  • Per-search cap: a single Bien'ici search exposes at most 2,400 results. The Actor first probes the total; when it exceeds the cap it bisects the price range (from price_min or 0 up to price_max or 50,000,000 EUR) into sub-ranges that each fit under the cap, then pages through every sub-range.
  • Edge case: a 1 EUR wide price range that still holds more than 2,400 listings yields only its first 2,400; the run log warns about it.
  • Retries: each request is retried up to 4 times with a 30 second timeout before the page is skipped and counted in errors.
  • Deduplication: listings are deduplicated by id within a run, and duplicates are counted in the OUTPUT statistics.
  • Empty results: with emit_input_status on, unresolved locations are listed as not_found and a search that matched nothing ends with status empty. A run with no location at all stops with the error no_locations.
  • Run options: the default run uses 4,096 MB of memory and a 3,600 second timeout. Raise the timeout for large max_results: 0 jobs over several cities.

🔌 Integrations and API

Run Bien'ici Scraper from the Apify API, the Python or JavaScript client, or on a schedule. Connect it to Make, Zapier, n8n, Google Sheets, Slack or any webhook through Apify integrations. Every run's dataset is available as JSON, CSV, Excel or XML from the dataset API.

curl -X POST "https://api.apify.com/v2/acts/scrapifier~bien-ici-universal-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "transaction": "buy", "locations": ["Bordeaux"], "property_types": ["flat"], "price_max": 500000, "rooms_min": 2, "max_results": 100 }'

❓ FAQ

Is it legal to scrape Bien'ici?

The Actor only reads listings that Bien'ici publishes to anyone without logging in. Listings can contain personal data (advertiser names, blurred positions), so process them in line with GDPR and other privacy laws, respect Bien'ici's terms of use, and stay responsible for how you use the data. This is not legal advice.

Do I need a Bien'ici account, login or cookies?

No. The Actor talks to Bien'ici's public search API: nothing to log in to and no cookies to paste.

Can I export Bien'ici listings to Excel or Google Sheets?

Yes. Every run's dataset downloads as CSV, XLSX, JSON or XML from the Storage tab, and the Google Sheets integration can push new listings to a sheet automatically.

How many listings can I scrape?

Set max_results to 0 to collect every listing that matches your filters. Bien'ici caps a single search at 2,400 results, so the Actor splits the price range into sub-searches until the whole set is reachable. Keep a cap on first runs to control cost and runtime.

How do I target a specific city, district or postal code?

Type it in locations: Bordeaux, Paris 15 or 33000. Each entry is resolved to its Bien'ici zone through the geo-suggest API, and several entries are searched together in one run.

Does it work outside France?

Bien'ici lists properties in France, so the Actor covers French cities, districts and postal codes.

Why is price sometimes an array instead of a number?

New-build programs on Bien'ici are advertised with a range: price, surfaceArea and roomsQuantity then come as a [min, max] array instead of a single value. Resale listings always have single numbers.

How fresh is the data?

Every run queries Bien'ici live. Schedule it daily to keep a rolling history of new listings and price changes.

🇫🇷 En français

Bien'ici Scraper permet d'extraire les annonces immobilières de Bien'ici (bienici.com) à partir de filtres simples, sans URL à copier. Vous choisissez la transaction (achat ou location), une ou plusieurs localités (ville, quartier ou code postal, par exemple Bordeaux, Paris 15 ou 33000), puis les types de biens, le budget, la surface, le nombre de pièces et de chambres, et éventuellement le neuf uniquement. Chaque localité est résolue automatiquement en zone Bien'ici, et les grandes recherches sont découpées par tranche de prix pour dépasser le plafond de 2 400 résultats par recherche. Pour chaque annonce vous obtenez le prix, le prix au m², la surface, les pièces, l'étage, le DPE et le GES, la description, les photos, les coordonnées GPS et l'agence. Les résultats s'exportent en CSV, Excel ou JSON, ou se récupèrent par l'API Apify. La tarification est au résultat: vous ne payez que les annonces récupérées, sans abonnement.

💬 Support

Questions, bugs or a feature request? Open an issue in the Issues tab of this Actor, I answer quickly. If Bien'ici Scraper saves you time, a rating on the Store helps others find it.