Bien'ici Scraper ($1.90/1K) - French Property Listings avatar

Bien'ici Scraper ($1.90/1K) - French Property Listings

Pricing

from $0.35 / 1,000 listings

Go to Apify Store
Bien'ici Scraper ($1.90/1K) - French Property Listings

Bien'ici Scraper ($1.90/1K) - French Property Listings

Scrape property listings from Bien'ici (bienici.com), the French real-estate portal: apartments, houses, land, parking and commercial property for sale and for rent. Filter by city, price, rooms and area. Newest first, with DPE label. Add-on: agency contact with phone.

Pricing

from $0.35 / 1,000 listings

Rating

0.0

(0)

Developer

Carabain Digital

Carabain Digital

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

What is Bien'ici Listings Scraper?

Bien'ici Listings Scraper scrapes property listings (annonces immobilières) from Bien'ici (bienici.com), one of the biggest French real-estate portals, with around a million listings: apartments, houses, land, parking, commercial property and new-build programmes, for sale (vente) and for rent (location), from agencies and private sellers. Search by city, arrondissement, department or postcode, sale or rent, property type, price range, rooms and living area, or paste a search URL from the site, and get clean, flat listing data as JSON, CSV, Excel, XML or HTML: price, location, living and plot area, rooms, bedrooms, DPE energy label, full description, photos and agency. Prefilled example: the 20 newest properties for sale in Lyon, ready in seconds. Costs $1.90 per 1,000 listings. Add-ons: Full details (agency name, phone and website) and Price history (price changes over time), $1.00 per 1,000 listings each.

  • 🔎 Search like on the site: city, arrondissement, department or postcode, sale or rent, property type, price range, rooms, living area, or paste a Bien'ici search URL
  • ⚡ Fast: Bien'ici's own JSON search, 100 listings per request, newest first, no browser
  • 📝 Everything in the base price: full description, all photos, DPE label, construction year, publication date and rental charges
  • 📞 Agency contact on demand: switch on Full details for the agency name, phone number and website
  • 📈 Track prices over time: switch on Price history to compare every run with the last one
  • 🔌 Connect anywhere: API, schedules, webhooks, Google Sheets, Make, Zapier, MCP / AI agents

What data can I extract from Bien'ici?

🆔 Stable listing ID and URL💶 Price (vente) or monthly rent (location)
📍 Postcode, city or arrondissement🧭 Approximate latitude and longitude
🏠 Property type and subtype📐 Living area and plot area (m²)
🛏️ Rooms, bedrooms and bathrooms⚡ DPE energy label (A to G)
🏷️ Status📅 Publication and last-update date
🏢 Agency name, phone and website📷 Photo URLs
📝 Full description💶 Rental charges, construction year

Bien'ici does not show the street or house number in its public data, and blurs the map position of most listings (250 m or the whole town), so street and house_number are always null and lat/lon are approximate. Agency phone and website need the Full details add-on. bedrooms, construction_year and energy_label are only filled when the seller entered them.

How do I scrape Bien'ici listings?

  1. Create a free Apify account and open this Actor.
  2. Enter a Location (for example Lyon or 69003), pick Sale or rent and, if you like, a property type and price range. Or paste one or more Search URLs copied from bienici.com.
  3. Set Max listings (the newest come first).
  4. Click Start, then download the listings from the Output tab as JSON, CSV, Excel, XML or HTML.

How much does it cost to scrape Bien'ici?

You pay per listing that ends up in your dataset: $1.90 per 1,000 listings, no subscription. The monthly credit of Apify's Free plan ($5) covers around 2,600 listings without add-ons. Paid plans get volume discounts.

  • Add-on: Full details, $1.00 per 1,000 listings (off by default). Adds the agency name, phone number and website. Charged only for listings that were actually enriched.
  • Add-on: Price history, $1.00 per 1,000 listings (off by default). Adds first_seen_at, previous_price, price_change, price_change_pct, status_changed and price_history. Charged only for listings that already had history from an earlier run, so the first run is free. See the Price history section below.
  • Failed runs and empty searches cost nothing; you can cap spending with Maximum cost per run in the run options.

See the Pricing tab for the current prices.

⬇️ Input

FieldDescription
Location (location)City, arrondissement, department or postcode; several separated by commas
Sale or rent (listing_type)sale (achat) or rent (location)
Property type (property_type)any, house, apartment, land, commercial, parking
Minimum / maximum price (min_price, max_price)In euro; for rentals per month
Minimum rooms (min_rooms)Number of rooms (pièces)
Minimum living area (min_living_area_m2)In m²; listings without a known area are left out
Search URLs (start_urls)Search pages copied from bienici.com; they replace the filters above
Max listings (limit)Stop after this many listings
Full details (includeDetails)Paid add-on: agency name, phone and website
Price history (trackHistory)Paid add-on: compare with your previous runs
History store name (historyStoreName)Where the history is kept (default realestate-history)
Proxy (proxyConfiguration)None needed; enable one (French residential works best) only if runs get blocked
{
"location": "Lyon",
"listing_type": "sale",
"limit": 20
}

With Search URLs paste a page like https://www.bienici.com/recherche/achat/lyon-69000/appartement?prix-max=400000&pieces-min=3; the transaction (achat/location), place, property type (when one is chosen) and the price, rooms and surface filters in the URL are kept. Location accepts a city, an arrondissement (Paris 15e), a department (Rhône) or a postcode, as the site's own search box does. Leave it empty to search all of France.

⬆️ Output

Listings are stored in the default dataset, newest first. View them as a table in the Output tab or export JSON, CSV, Excel, XML or HTML. Fields a listing does not have are null; every item has the same keys.

A rental listing with the Full details add-on

{
"id": "bienici:immo-facile-61695832",
"source": "bienici",
"url": "https://www.bienici.com/annonce/immo-facile-61695832",
"title": "F1- RUE CREUZET - LYON 7",
"listing_type": "rent",
"property_type": "apartment",
"property_subtype": "flat",
"status": "available",
"price": 606,
"price_currency": "EUR",
"price_period": "month",
"price_type": "asking",
"old_price": null,
"monthly_costs": 22,
"address": "69007 Lyon 7e",
"street": null,
"house_number": null,
"postcode": "69007",
"city": "Lyon 7e",
"region": null,
"country": "FR",
"lat": 45.74951110531795,
"lon": 4.845859394801565,
"living_area_m2": 32.56,
"plot_area_m2": null,
"rooms": 1,
"bedrooms": null,
"bathrooms": 1,
"energy_label": "D",
"construction_year": null,
"listed_at": "2026-10-31T12:40:57.881Z",
"updated_at": "2026-10-31T12:40:57.881Z",
"agent_name": "RÉGIE LESCUYER & ASSOCIÉS",
"agent_phone": "04 72 77 37 57",
"agent_url": null,
"image_urls": [
"https://media.immo-facile.com/office8/regiel_1902071144/catalog/images/pr_p/6/1/6/9/5/8/3/2/61695832a.jpg?DATEMAJ=31/10/2026-12:16:36",
"..."
],
"description": "A LOUER LYON 7: rue Creuzet, appartement de type F1 de 32,56m². À découvrir sans tarder, cet appartement saura vous séduire par son agencement fonctionnel ...",
"scraped_at": "2026-11-01T10:51:12Z"
}

Extra fields with the Price history add-on

{
"first_seen_at": "2026-10-23T07:00:12+00:00",
"previous_price": 575000,
"price_change": -25000,
"price_change_pct": -4.35,
"status_changed": false,
"price_history": [
{ "at": "2026-10-23T07:00:12+00:00", "price": 575000, "status": "available" },
{ "at": "2026-10-30T07:00:09+00:00", "price": 550000, "status": "available" }
]
}

What can I do with Bien'ici data?

  • 📉 Price drop alerts: schedule a run with Price history and get notified when price_change is negative
  • 🏘️ Market research: asking prices and rents per m² per arrondissement or postcode, new supply per week
  • 🔎 Deal finding and investment: filter by price, area and DPE label, compare rent and sale prices per neighbourhood (investissement locatif)
  • 📇 Lead generation: agencies with their active listings per department
  • 🧠 AI and analytics: feed descriptions and attributes into valuation models or LLM pipelines

Tips for best results

  • Bien'ici returns at most 2,500 results per search. To collect more, split the search by postcode, arrondissement or price range and run them as separate searches or several Search URLs.
  • Results come newest first (by publication date). Some imported listings have no publication date (listed_at is null).
  • New listings appear while a long run is paging, so the Actor removes duplicates by listing ID: a run can return a few listings fewer than the limit when the search is small.
  • For a daily feed, schedule a run with a high Max listings and Price history switched on.
  • Leave Full details off unless you need the agency phone number: all other fields, including the description and photos, are in the base data.
  • New-build programmes show as one listing with property_type other, property_subtype programme and price_type from (the lowest price).
  • Results from one run are deduplicated by listing ID.

Price history

Switch on Price history (trackHistory) and the Actor remembers every listing between runs, so you can see price drops, status changes and how long a property has been on the market.

  • Where it lives. History is kept in a named key-value store in your own Apify account (default name realestate-history, change it with History store name). Named stores never expire, you own the data, and storage costs a fraction of a cent.
  • First run starts the series. The first time a listing is seen there is nothing to compare with, so previous_price is null and you are not charged for the add-on on that listing. From the second run on, each listing gets first_seen_at, previous_price, price_change, price_change_pct, status_changed and price_history (the last 20 price/status points, one point per change).
  • Run it on a schedule. History only grows when you run the Actor. Create a schedule (daily is typical) with the same search and the same store name.
  • One store, several Actors. Every real-estate Actor we publish uses the same default store name, so a listing keeps one history even if you scrape it with a different one of our Actors. Item IDs start with the site (bienici:...), so sites never clash. Use a different store name per search if you want separate series.
  • Do not run two runs on the same store at the same time. Records are updated per listing and the last writer wins, so two parallel runs can overwrite each other's newest point. Run searches that share a store one after another.
  • If you delete the store, the Actor starts a new empty history without an error.
  • Cost: $1.00 per 1,000 listings that already had history (see pricing above).

Frequently asked questions

Can I use Bien'ici Listings Scraper with the Apify API?

Yes. Every run has a dataset you can read through the Apify API. Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("carabain-digital/bienici-listings").call(run_input={
"location": "Lyon",
"listing_type": "sale",
"property_type": "apartment",
"max_price": 400000,
"limit": 100,
})
for home in client.dataset(run["defaultDatasetId"]).iterate_items():
print(home["price"], home["address"], home["living_area_m2"], "m2")

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('carabain-digital/bienici-listings').call({
location: 'Lyon',
listing_type: 'sale',
property_type: 'apartment',
max_price: 400000,
limit: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'listings');

Can I use Bien'ici Listings Scraper through an MCP server or with AI agents?

Yes. Add it to an AI agent through the Apify MCP server (https://mcp.apify.com?tools=carabain-digital/bienici-listings), or let the agent find it with search-actors and run it with call-actor. A small search (limit 20) finishes in a few seconds, and the items are flat and small, so agents can read them with get-dataset-items. Example prompt: "Use Bien'ici Listings Scraper to list the 20 newest apartments for rent in Paris under 1,500 euro and tell me which have an A, B or C energy label."

Can I integrate Bien'ici data with other apps?

Yes: Google Sheets, Slack, Make, Zapier, n8n, Airtable or your own webhook, through Apify integrations and webhooks. Schedule a run every morning and send the new listings or price drops to your inbox or CRM.

Do I need a proxy?

No. Bien'ici's search API answers without a proxy, also on Apify, so the Actor runs without one by default and you don't pay for proxy traffic. If the site ever starts blocking, enable a proxy (Apify Residential, country FR); with a proxy, a blocked run retries once on a fresh session; if it still fails the run fails with a clear message instead of returning an empty dataset.

Why is a field empty?

Bien'ici hides the street and house number, so street, house_number and region are always null, and old_price too (the site only flags that a price went down, without the old price: use Price history to track changes). agent_phone and agent_url need Full details. Other fields such as bedrooms, construction year or DPE label are empty when the seller did not enter them.

Why do I get fewer listings than the total on the site?

Bien'ici caps every search at 2,500 results. Split the search by postcode, arrondissement or price range (several Search URLs), and results from one run are deduplicated by listing ID.

Does it cover sold and rented properties?

No. The Actor only asks for listings that are currently on the market, so status is available.

The Actor only collects publicly visible listings, the same data anyone can see on bienici.com. Listings can contain personal data (for example the name or phone number of a private seller or agent), and rules such as GDPR may apply to how you store and use it. Check your use case with a lawyer. More background: Is web scraping legal?

Bien'ici Listings Scraper not working? Feedback

Open an issue on the Issues tab of this Actor with the run link and we will look at it. Feature ideas are welcome there too.

Other scrapers by us

ActorCovers
France Real Estate ScraperSeLoger, Bien'ici and PAP in one run, merged newest first
Immoweb Listings ScraperBelgium: immoweb.be, houses and apartments for sale and rent
Zimmo Listings ScraperBelgium: zimmo.be, with the site's own price history
Immowelt Listings ScraperGermany: immowelt.de
Pararius Listings ScraperNetherlands: pararius.nl, rentals and sales

⭐ Does it work well for you? A review on the Store page helps others find this Actor and helps us keep it maintained.