
Google Ads Scraper
scrape.ly/store/querystone/google-ads-scraperLead generationSEO tools
4 monthly users

Scrape property listings for sale and rent from bienici.com, a leading French real estate portal. Search by city, arrondissement, department or postal code with price, area, rooms, type and energy-class filters, or paste search and listing URLs. Get prices, areas, rooms, DPE ratings, GPS, photos and optional agency phone and address.
Pull property listings for sale and for rent from bienici.com, one of France's leading real estate portals: price, €/m², living and land area, rooms, bedrooms, DPE energy and GES ratings, GPS position, photos, condominium fees and, on request, the agency's phone number and address. Type a city, arrondissement, department or postal code (or paste a Bien'ici search link) and get clean rows in seconds. No login, no browser, and you pay only for the listings you get.
Paris, Lyon 3e, Gironde or 75011 and the location is resolved for you; or paste any bienici.com search or listing URL.priceHasDecreased).energyClasses) for insulation, heat-pump or audit offers.Paris, Bordeaux, Lyon 3e, Hauts-de-Seine, 75011), or paste Search or listing URLs from bienici.com.| Field | What it does |
|---|---|
locations | Cities, arrondissements, departments or postal codes in France, one per line. France searches the whole country. |
startUrls | bienici.com search URLs (they keep their own filters) and listing URLs. |
transactionType | buy (for sale) or rent. |
maxResults | Most listings to save in total (default 20; 0 = all). |
propertyTypes | flat, house, loft, townhouse, castle, terrain, parking, building, shop, office, premises. Empty = all. |
priceMin / priceMax | Price in € (monthly rent for rentals). |
surfaceMin / surfaceMax, roomsMin / roomsMax, bedroomsMin, landSurfaceMin | Size filters. |
energyClasses | DPE classes to keep, A to G. |
newBuildOnly, furnishedOnly | Only new builds / only furnished properties. |
sortBy | relevance, newest, priceAsc, priceDesc, surfaceDesc, pricePerSquareMeterAsc. |
includeDetails | Adds the agency's phone, contact person, address, RCS and website. |
maxResultsPerSearch | Optional cap per location or URL. |
{
"locations": ["Lyon"],
"transactionType": "rent",
"propertyTypes": ["flat"],
"priceMax": 1500,
"roomsMin": 2,
"sortBy": "priceAsc",
"includeDetails": true,
"maxResults": 100
}
One row per listing. The main fields:
| Field | Description |
|---|---|
id, reference, url | Listing id, the agency's reference and the listing link |
transactionType, propertyType, title, description | Sale or rent, kind of property, title and full text |
price, pricePerSquareMeter, priceWithoutFees, feesChargedTo, agencyFeePercentage | Price and fees |
charges, rentWithoutCharges, safetyDeposit, agencyRentalFee | Rental costs |
surfaceArea, landSurfaceArea, roomsQuantity, bedroomsQuantity, bathroomsQuantity, floor, floorQuantity, yearOfConstruction | Size and layout |
hasElevator, hasBalcony, hasTerrace, hasCellar, hasGarden, hasPool, parkingPlacesQuantity, isFurnished | Features |
energyClassification, energyValue, greenhouseGazClassification, greenhouseGazValue, minEnergyConsumption, maxEnergyConsumption | DPE / GES ratings and yearly energy cost |
isInCondominium, annualCondominiumFees | Condominium |
city, postalCode, district, departmentCode, latitude, longitude, exactLocation | Location (approximate position unless exactLocation is true) |
publicationDate, modificationDate, priceHasDecreased, newProperty, photos, photosCount, virtualTourUrl | Dates, status and media |
agencyName, accountType | Advertiser |
agencyPhone, agencyContactName, agencyStreet, agencyPostalCode, agencyCity, agencyRcs, agencyWebsite | Agency contact (with agency details on, and always for listing URLs) |
New-build programmes give ranges: price / surfaceArea / roomsQuantity hold the low end and priceMax / surfaceAreaMax / roomsQuantityMax the high end.
Example row from a test run (trimmed; agency contact replaced with fictional values):
{
"id": "ag696097-554750699",
"url": "https://www.bienici.com/annonce/location/lyon-9e/appartement/5pieces/ag696097-554750699",
"transactionType": "rent",
"propertyType": "flat",
"title": "T5",
"price": 1305,
"pricePerSquareMeter": 13.32,
"isFurnished": true,
"surfaceArea": 98,
"roomsQuantity": 5,
"bedroomsQuantity": 3,
"bathroomsQuantity": 1,
"floor": 20,
"floorQuantity": 27,
"yearOfConstruction": 1971,
"hasElevator": true,
"hasCellar": true,
"energyClassification": "C",
"energyValue": 144,
"greenhouseGazClassification": "B",
"greenhouseGazValue": 10,
"city": "Lyon 9e",
"postalCode": "69009",
"district": "La Duchère",
"departmentCode": "69",
"latitude": 45.784020394646525,
"longitude": 4.79435896701209,
"publicationDate": "2026-10-18T11:58:35.849Z",
"photosCount": 21,
"photos": ["https://file.bienici.com/photo/ag696097-554750699_photos.ubiflow.net_696097_554750699_photos_1.jpg_INSOON_EB_5512801818_20261018125631"],
"virtualTourUrl": "https://tour.giraffe360.com/6634487df22941f79a5f767ccf509de4",
"agencyName": "Agence Exemple Lyon",
"accountType": "agency",
"agencyContactName": "Agence Exemple Lyon - Marie Dupont",
"agencyPhone": "04 00 00 00 00",
"agencyStreet": "1 Rue de l'Exemple",
"agencyPostalCode": "69001",
"agencyCity": "Lyon",
"searchSource": "Lyon (rent)"
}
$2.00 per 1,000 listings ($0.002 per saved listing), the same with or without agency contact details. There is no start fee. Platform usage (compute and proxy traffic) is billed on top and is small: our 1,000-listing test run used about 0.002 GB of datacenter proxy traffic and 0.0015 compute units, about $0.0025 in total.
You set the maximum: the run stops cleanly when it reaches Maximum results or your maximum charge, and you are never charged for listings that were not saved.
Is it legal to scrape bienici.com? The actor reads only public listing pages that anyone can open without an account. Check that your use of the data, especially agency contact details, follows the GDPR and the site's terms.
Do I need a login or my own proxy? No. No account or cookies are used. The default datacenter proxy works well; if the site starts refusing requests the run moves to French residential proxies by itself.
How many results can I get? As many as the search holds. Bien'ici serves at most 2,500 results per search, so larger searches are split into price ranges automatically (a single price with more than 2,500 listings is the only case that stays capped, and the status message says so).
Why are some fields empty?
Agencies fill different fields. For example the floor, condominium fees or energy values are missing when the advertiser did not give them. Empty fields are null.
Can I schedule it or use the API?
Yes. Save a task with your input and schedule it (for example daily with sortBy: newest), or start runs and read the dataset through the API.
Coming from a similar actor on another platform?
The main inputs use the same names (startUrls, transactionType, propertyTypes, priceMin, priceMax, roomsMin, bedroomsMin, surfaceMin, surfaceMax, sortBy, includeDetails, maxResults), and a single location text is accepted too.
Île-de-France, Bretagne) are not a location type on the site: use departments or cities.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
locationsarrayOptionalLocations
Places in France to search, one per line: a city (`Paris`, `Lyon`), an arrondissement (`Paris 11e`, `Lyon 3e`), a department (`Gironde`, `Hauts-de-Seine`) or a postal code (`75011`). Each location runs as its own search; listings found twice are saved once. Enter `France` to search the whole country.
startUrlsarrayOptionalSearch or listing URLs
Optional bienici.com URLs: search result pages copied from the site (for example `https://www.bienici.com/recherche/achat/bordeaux-33000/maisonvilla?prix-max=600000`), which keep their own filters, and single listings (`https://www.bienici.com/annonce/...`). Listing URLs always include the agency contact.
transactionTypeenumOptionaldefault "buy"Buy or rent
Listings for sale or for rent. Applies to the locations above; search URLs keep their own choice.
maxResultsintegerOptionaldefault 20Maximum results
The most listings to save in this run, across all locations and URLs. Set 0 to save every listing the searches return. Searches with more than 2,500 listings are split into price ranges automatically, so large areas are covered in full.
Narrow the location searches. Search URLs keep the filters they already contain.
propertyTypesarrayOptionalProperty types
Only these kinds of property. Leave empty for every type.
priceMinintegerOptionalMinimum price (€)
Sale price, or monthly rent for rentals.
priceMaxintegerOptionalMaximum price (€)
Sale price, or monthly rent for rentals.
surfaceMinintegerOptionalMinimum living area (m²)
surfaceMaxintegerOptionalMaximum living area (m²)
roomsMinintegerOptionalMinimum rooms
Rooms (pièces), bedrooms and living room included.
roomsMaxintegerOptionalMaximum rooms
bedroomsMinintegerOptionalMinimum bedrooms
landSurfaceMinintegerOptionalMinimum land area (m²)
Garden or plot size, for houses and land.
energyClassesarrayOptionalEnergy classes (DPE)
Only listings with one of these energy performance ratings. Leave empty for all.
newBuildOnlybooleanOptionaldefault falseNew builds only
Only new-build properties (neuf), including developers' new-build programmes.
furnishedOnlybooleanOptionaldefault falseFurnished only
Only furnished properties (useful for rentals).
sortByenumOptionaldefault "relevance"Sort by
Order of the results. With price sorting, searches larger than 2,500 listings keep the price order across the automatic price ranges.
includeDetailsbooleanOptionaldefault falseInclude agency contact details
Open every listing for the agency's phone number, contact person, postal address, company registration (RCS) and website. Adds one request per listing, so runs take a little longer; the price per listing stays the same.
maxResultsPerSearchintegerOptionalMaximum results per search
Optional cap for each location or search URL. Leave empty to share Maximum results fairly between the searches.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work well for bienici.com. The run switches to French residential proxies by itself if the site starts refusing requests.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | Listing id on bienici.com |
| reference | string | null | Agency's own reference for the listing |
| url | string | Listing page on bienici.com |
| transactionType | string | null | buy (for sale) or rent |
| propertyType | string | null | flat, house, loft, townhouse, castle, terrain, parking, building, shop, office, premises or programme (new-build programme) |
| propertySubtype | string | null | Finer type when the site gives one |
| title | string | null | Listing title (generated from type, rooms and area when the agency gave none) |
| description | string | null | Full listing description |
| price | number | null | Sale price or monthly rent in EUR (low end for new-build programmes) |
| priceMax | number | null | High end of the price range (new-build programmes only) |
| priceWithoutFees | number | null | Sale price without agency fees |
| pricePerSquareMeter | number | null | Price per m² in EUR |
| agencyFeePercentage | number | null | Agency fee as a percentage of the price |
| feesChargedTo | string | null | Who pays the agency fees: buyer or seller |
| priceHasDecreased | boolean | null | The price was lowered |
| rentWithoutCharges | number | null | Monthly rent without charges (rentals) |
| charges | number | null | Monthly charges (rentals) |
| safetyDeposit | number | null | Security deposit in EUR (rentals) |
| agencyRentalFee | number | null | Agency fee for a rental in EUR |
| isFurnished | boolean | null | Furnished |
| surfaceArea | number | null | Living area in m² (low end for programmes) |
| surfaceAreaMax | number | null | High end of the living area (programmes) |
| landSurfaceArea | number | null | Land or garden area in m² |
| roomsQuantity | number | null | Rooms (pièces) |
| roomsQuantityMax | number | null | High end of the rooms range (programmes) |
| bedroomsQuantity | number | null | Bedrooms |
| bathroomsQuantity | number | null | Bathrooms |
| showerRoomsQuantity | number | null | Shower rooms |
| toiletQuantity | number | null | Toilets |
| floor | number | null | Floor of the property |
| floorQuantity | number | null | Floors in the building |
| yearOfConstruction | number | null | Year built |
| hasElevator | boolean | null | Lift |
| hasBalcony | boolean | null | Balcony |
| balconyQuantity | number | null | Balconies |
| hasTerrace | boolean | null | Terrace |
| terracesQuantity | number | null | Terraces |
| hasCellar | boolean | null | Cellar |
| cellarsOrUndergroundsQuantity | number | null | Cellars |
| hasGarden | boolean | null | Garden |
| hasPool | boolean | null | Swimming pool |
| parkingPlacesQuantity | number | null | Parking spaces |
| heating | string | null | Heating type |
| exposition | string | null | Orientation |
| energyClassification | string | null | Energy class (DPE), A to G |
| energyValue | number | null | Energy use in kWh/m²/year |
| greenhouseGazClassification | string | null | Greenhouse gas class (GES), A to G |
| greenhouseGazValue | number | null | Emissions in kg CO2/m²/year |
| minEnergyConsumption | number | null | Estimated yearly energy cost, low end (EUR) |
| maxEnergyConsumption | number | null | Estimated yearly energy cost, high end (EUR) |
| isInCondominium | boolean | null | Part of a condominium (copropriété) |
| annualCondominiumFees | number | null | Yearly condominium charges in EUR |
| condominiumPartsQuantity | number | null | Lots in the condominium |
| opticalFiberStatus | string | null | Fibre internet status |
| city | string | null | City or arrondissement |
| postalCode | string | null | Postal code |
| district | string | null | Neighbourhood |
| departmentCode | string | null | Department number |
| latitude | number | null | Latitude (approximate unless exactLocation is true) |
| longitude | number | null | Longitude (approximate unless exactLocation is true) |
| exactLocation | boolean | null | The agency published the exact address position |
| newProperty | boolean | null | New build |
| isExclusiveSaleMandate | boolean | null | Exclusive mandate |
| isBienIciExclusive | boolean | null | Only on bienici.com |
| programmeLotsCount | number | null | Units listed in a new-build programme |
| deliveryDate | string | null | Delivery date of a new build |
| availableDate | string | null | Date the property is available |
| publicationDate | string | null | First published (ISO 8601) |
| modificationDate | string | null | Last updated (ISO 8601) |
| photosCount | number | null | Number of photos |
| photos | array | null | Photo URLs |
| virtualTourUrl | string | null | 3D or 360° virtual tour |
| onTheMarket | boolean | null | Still available |
| agencyName | string | null | Agency or advertiser name |
| agencyAccountId | string | null | Advertiser account id on bienici.com |
| accountType | string | null | agency, mandatary, developer, private... |
| agencyContactName | string | null | Contact person (agency contact details on) |
| agencyPhone | string | null | Agency phone (agency contact details on) |
| agencyHasEmail | boolean | null | The agency accepts e-mail through the site |
| agencyStreet | string | null | Agency street address |
| agencyPostalCode | string | null | Agency postal code |
| agencyCity | string | null | Agency city |
| agencyWebsite | string | null | Agency website |
| agencyRcs | string | null | Agency company registration (RCS / SIRET) |
| agencyId | string | null | Agency id on bienici.com |
| searchSource | string | null | The location or URL that found the listing |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One saved property listing, with or without agency contact details. | $0.002 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/bienici-scraper').call({
"locations": [
"Paris"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/bienici-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/bienici-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.

Scrape Google Maps places for any search term and city, with no code or with one API call. A real run, its output, its log and its exact cost, plus the limits and the legal side.
Read the article
Paste an Amazon search or product URL into a ready-made Actor and get one row per product with price, ASIN, rating and review count. This guide covers the no-code steps, the API, ZIP code pricing, a real run and its cost.
Read the article
Scrape Google search results by query and country and get each results page as JSON: organic results with positions, People Also Ask and related searches. Run it without code or from Python, with a real run, the cost per page and Google's terms.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.