SeLoger France Property Listings Scraper
Pricing
from $1.00 / 1,000 listings
SeLoger France Property Listings Scraper
[💰 $1.0 / 1K] Extract French property listings from SeLoger.com — sale prices, monthly rents, m², rooms, DPE energy ratings, photos, GPS coordinates and agency phone numbers. Filter by city, property type, viager, private seller or energy class. Export to JSON, CSV or Excel.
Pricing
from $1.00 / 1,000 listings
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Pull French residential and commercial property listings from SeLoger.com at scale — asking prices and monthly rents, m², rooms, DPE energy ratings, photos, GPS coordinates and direct agency phone numbers in one clean dataset. Built for French estate agencies, proptech teams, and investment analysts who need current market inventory in a spreadsheet instead of clicking through result pages one at a time.
SeLoger is France's largest property portal. Pick a city and your filters, press Run, and get structured rows back — sale or rental, apartment or commercial, new build or viager.
Why This Scraper?
- Sale prices and monthly rents never collide — SeLoger keeps both behind a single internal price value. Across a 690-listing sample, sale prices ran €52,000 to €12,500,000 and rents ran €490 to €25,000 a month, a ~56,000× span in one column. This actor splits them into
salePriceandmonthlyRent, so a €900 studio rent can never land in the number you average for sale value. French number formatting is parsed correctly, and every row also carries the price exactly as SeLoger displays it. - 73 fields per listing — 57 from the search results plus 16 more when full details are on. Measured across 690 listings drawn from Paris, Lyon, Marseille and Bordeaux across sale, rental, apartment, house and commercial stock: 22 of the 57 search-level fields came back populated on 99% or more of rows.
- DPE energy rating on 80% of listings, GES on 94% of enriched ones — France bans class-G homes from the rental market and class F is next, which makes the diagnostic de performance énergétique the most-asked-for filter in the FR market. Search by a single letter A through G; enriched rows add heating type, energy source and construction year.
- Agency contact details on effectively every row — phone numbers on 99.9% of 690 listings, plus agency name, advertiser type (estate agency / estate agent / notary / property developer), postal address, and the RCS and SIRET registration numbers on 99.4%. The published fee schedule (barème d'honoraires) is linked on 63%, and agency star rating with review count on 31%.
- 11 property types, each verified live — apartments, houses, whole buildings, parking spaces and garages, land plots, offices, shops and retail units, hotels and restaurants, warehouses and industrial units. Not a guessed list: every type was run against the live site and checked against the type label on the rows it returned.
- Viager and private-owner filters — two French market segments general listing tools do not expose. On the day they were measured, Paris carried 182 life-annuity (viager) sale listings and 1,357 private-seller listings with no agency in the middle, out of 31,654 sale listings in total.
- All four SeLoger network portals in one dataset — standard SeLoger, Belles Demeures (luxury), SeLoger Neuf (new build) and SeLoger Bureaux & Commerces (commercial), each row tagged with the portal it came from: 429 / 148 / 91 / 22 across the 690-listing sample.
- 13 photos per listing on average, plus the metro at the door — full-resolution photo URLs on 99.9% of rows (up to 54 on a single listing), and the metro, RER, tram and bus lines within walking distance, averaging 9 lines per listing where they apply.
- Full details add GPS, market comparables and a mortgage estimate — exact latitude and longitude, the neighbourhood's typical price per m² with its low and high band, an estimated monthly repayment, co-ownership lot count and annual charges, floorplan images and virtual-tour links, plus the complete advert text rather than the truncated preview.
Use Cases
Market Research & Analytics
- Track asking prices per m² by city, arrondissement and property type over time
- Measure inventory depth and turnover — new listings, exclusive mandates, price movement
- Build DPE distribution maps ahead of the class-F rental ban
Estate Agency & Brokerage
- Benchmark a new mandate against live competing inventory before setting an asking price
- Monitor which agencies hold which streets, with rating and review count attached
- Pull comparables for a valuation report in one run instead of a morning of tab-hopping
Investment & Acquisition
- Screen for yield by pairing rental searches with sale searches in the same district
- Filter to private sellers only to find off-agency opportunities
- Score viager deals against the neighbourhood price band that enriched rows already carry
Lead Generation
- Build agency contact lists with phone numbers, addresses and registration numbers
- Segment by advertiser type — agency, independent agent, notary, developer
- Identify high-volume agencies by counting mandates per agency across a whole city
Data Enrichment & Integration
- Feed a CRM or valuation model with structured rows instead of scraped HTML
- Keep an internal comparables database refreshed on a schedule
- Join listings to your own geodata using the coordinates on enriched rows
Getting Started
Simplest run — Paris property for sale
{"transactionType": "Buy","city": "AD08FR31096","maxItems": 100}
Houses with a garden near Bordeaux, sorted cheapest first
{"transactionType": "Buy","city": "AD08FR13100","propertyType": "House","mustHave": "Garden","landAreaMin": 500,"priceMin": 300000,"priceMax": 900000,"sortBy": "PriceAsc","maxItems": 1000}
Everything on one search, with full details
{"transactionType": "Buy","city": "AD08FR2038","buildStatus": "Life_Annuity","enrichDetails": true,"maxItems": 200}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
searchUrls | array | — | SeLoger.com search-results addresses. Apply your filters on the site, then copy the address of the results page. Use this for towns outside the eight cities in the dropdown. Overrides the individual filters below when provided. |
transactionType | string | Buy | Whether to collect properties for sale or properties to rent. |
city | string | AD08FR31096 | Which French city to search: Paris, Lyon, Marseille, Toulouse, Nice, Nantes, Bordeaux or Lille. For any other town, paste a SeLoger search address into Search URLs above instead. |
propertyType | string | "" | Narrow the search to one kind of property. Leave on "Any" to collect everything on the market in that city. |
buildStatus | string | "" | Restrict to newly built property (neuf), existing property (ancien), or life-annuity sales (viager). |
sellerType | string | "" | Collect only private-owner listings, or only listings placed by estate agencies, agents and notaries. |
priceMin | integer | 0 | Lowest price to include, in euros. For rentals this is the monthly rent. Leave at 0 for no minimum. |
priceMax | integer | 0 | Highest price to include, in euros. For rentals this is the monthly rent. Leave at 0 for no maximum. |
areaMin | integer | 0 | Smallest living area to include, in square metres. Leave at 0 for no minimum. |
areaMax | integer | 0 | Largest living area to include, in square metres. Leave at 0 for no maximum. |
landAreaMin | integer | 0 | Smallest plot of land to include, in square metres. Only houses, plots and commercial sites carry a plot size. Leave at 0 for no minimum. |
roomsMin | integer | 0 | Fewest rooms to include. In France a studio counts as 1 room, a one-bedroom flat as 2. Leave at 0 for no minimum. |
bedroomsMin | integer | 0 | Fewest bedrooms to include. Leave at 0 for no minimum. |
mustHave | string | "" | Only keep properties that have this feature: balcony or terrace, garden, parking space or garage, or a lift. |
energyClass | string | "" | Only keep properties with this French energy performance rating, A (best) to G (worst). |
keywords | string | "" | Only keep adverts whose text contains these words, for example piscine or jardin. Separate several words with commas and no spaces — a property must contain all of them. |
sortBy | string | Default | The order results come back in: best match, newest first, cheapest first, or most expensive first. Only the first 9,990 results of any search are reachable, so on a big search this decides which ones you get. |
maxItems | integer | 100 | Maximum listings per search (0 = collect everything each search returns). SeLoger pages through at most 9,990 listings per search, so use several narrower searches to collect more. |
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
enrichDetails | boolean | false | Add 16 extra fields per listing, including GPS coordinates, the full advert text and neighbourhood price comparables. Billed at the higher rate — see Pricing. |
concurrency | integer | 8 | How many requests to run in parallel. Lower this if you see failures. |
proxyConfiguration | object | Apify Proxy | Proxy settings for the run. |
Output
Every listing is one dataset row. Enabling enrichDetails adds 16 further fields to the same row — there is no second record type to join.
This example shows a real Paris listing; the agent's name, phone number and agency identity have been replaced with placeholders, and the photo list and advert text are trimmed for length. Your dataset contains the actual published values in full.
{"id": "265B4Y3TQBU1","url": "https://www.seloger.com/annonces/achat/appartement/paris-13eme-75/nationale-deux-moulins/276402041.htm","listingReference": "276402041","title": "Appartement à vendre","propertyType": "Appartement","listingType": "For sale","portal": "seloger","headline": "Appartement","keyFacts": ["2 pièces", "1 chambre", "53 m²", "Étage 3/6"],"descriptionPreview": "75013 - PARIS - QUARTIER CHATEAU DES RENTIERS - APPARTEMENT 2 PIÈCES - 1 CHAMBRE - 53 m² - TERRASSE 10 m² - PRIX 690 000 euros...","salePrice": 690000,"monthlyRent": null,"monthlyRentExcludingCharges": null,"priceDisplay": "690 000 €","pricePerSqm": 13018.87,"rentCharges": null,"city": "Paris","cityArea": "Paris 13ème arrondissement","district": "Nationale-Deux Moulins","zipCode": "75013","region": "Ile-de-France","nearbyTransportTypes": ["METRO", "BUS"],"nearbyTransportLines": ["5", "6", "7", "14", "27", "47", "57", "59", "61", "62", "64", "67", "83"],"mainImage": "https://mms.seloger.com/6/7/d/0/67d07afd-071c-4558-9bdd-cd5063cb3f5d.jpg","images": ["https://mms.seloger.com/6/7/d/0/67d07afd-071c-4558-9bdd-cd5063cb3f5d.jpg", "..."],"imageCount": 9,"hasVirtualTour": true,"hasFloorplans": false,"agencyName": "[Agency Name]","contactName": "[Agent Name]","agencyType": "Estate agent","phoneNumbers": ["06 XX XX XX XX"],"agencyWebsite": "https://www.example-agency.fr/agent","agencyProfileUrl": "https://www.seloger.com/professionnels-immobilier/9bcUZK3aRfBy1uv2jZXt7r","agencyLogoUrl": "https://mms.seloger.com/2/0/0/3/2003ee3f-1510-49ec-8cb4-91e87f490dce.jpg","agencyAddress": "75013 Paris","agencyRating": 4.9,"agencyReviewCount": 172,"isPrivateOwner": false,"agencyLegalInfo": ["[Agency Name] au capital de 116 847 €", "Garantie financière GALIAN Assurances pour un montant de 500 000 €", "RCS: 8131XXXXX", "SIRET: 8131XXXXXXXXXX"],"feeScheduleUrl": "https://example-agency.fr/pdf/BAREME_NATIONAL.pdf","rooms": 2,"bedrooms": 1,"livingArea": 53,"landArea": null,"yearBuilt": 2004,"energyClass": "B","publishedAt": "2026-07-31T23:50:00+00:00","updatedAt": "2026-08-01T00:01:15.774+00:00","agencyReference": "223215","isNew": true,"isExclusive": true,"has3DTour": true,"hasBrokerageFee": false,"description": "75013 - PARIS - QUARTIER CHATEAU DES RENTIERS - APPARTEMENT 2 PIÈCES... Situé dans le 13ème arrondissement de Paris, à 2 pas du Parc de Choisy, cet appartement de 2 pièces d'une surface de 53 m² offre un espace de vie chaleureux et lumineux...","features": ["3ème étage/6 étages", "Cuisine ouverte", "Ascenseur", "Cave", "Box de stationnement", "1 WC", "Terrasse", "Calme"],"aiHighlights": ["Entièrement rénové", "Cuisine ouverte"],"isNewBuildProject": false,"estimatedMonthlyMortgage": 3506,"marketPricePerSqm": 7776,"marketPricePerSqmLow": 5224,"marketPricePerSqmHigh": 13041,"coOwnershipDetails": [{ "label": "Nombre de lots", "value": "51", "type": "numberOfUnits" }, { "label": "Charges de copropriété", "value": "1 636 €/an", "type": "operatingCosts" }, { "label": "Procédures syndicales", "value": "Pas de procédure en cours", "type": "syndicProcedures" }],"latitude": 48.83040907078116,"longitude": 2.36213261600626,"isAddressPublished": true,"floorplans": null,"virtualTours": ["https://youtube.com/watch?v=7NQEGNVXmtg"],"gasEmissionClass": "A","energyFeatures": [{ "type": "yearOfConstruction", "label": "Année de construction", "value": "2004" }, { "type": "heatingSystem", "label": "Type de chauffage", "value": "Chauffage individuel: Radiateur" }, { "type": "energySource", "label": "Sources d'énergie", "value": "Électrique" }]}
Core Fields & Price
| Field | Type | Description |
|---|---|---|
id | string | Listing ID |
url | string | Listing URL |
listingReference | string | Reference number |
title | string | Title |
propertyType | string | Property type |
listingType | string | For sale or For rent |
status | string | Status |
portal | string | Which SeLoger network portal published it |
headline | string | Headline |
keyFacts | array | Key facts as shown on the card |
descriptionPreview | string | Description (truncated preview) |
salePrice | number | Sale price (EUR) — null on rentals |
monthlyRent | number | Monthly rent (EUR) — null on sales |
monthlyRentExcludingCharges | number | Monthly rent excl. charges (EUR) |
priceDisplay | string | Price exactly as shown on the site |
pricePerSqm | number | Price per m² (EUR) |
rentCharges | string | Whether charges are included, extra, or excluded |
Location
| Field | Type | Description |
|---|---|---|
city | string | City |
cityArea | string | City or arrondissement as listed |
district | string | Neighbourhood |
zipCode | string | Postcode |
region | string | Region |
country | string | Country |
nearbyTransportTypes | array | Nearby transport modes (metro, RER, tram, bus) |
nearbyTransportLines | array | Nearby transport line numbers |
Property Details & Media
| Field | Type | Description |
|---|---|---|
rooms | number | Rooms |
bedrooms | number | Bedrooms |
livingArea | number | Living area (m²) |
landArea | number | Land area (m²) |
yearBuilt | number | Year built |
energyClass | string | Energy rating (DPE), A–G |
publishedAt | string | First published |
updatedAt | string | Last updated |
agencyReference | string | Agency's own reference |
isNew | boolean | New listing |
isExclusive | boolean | Exclusive mandate |
has3DTour | boolean | 3D tour |
hasBrokerageFee | boolean | Brokerage fee payable |
hasAIEnrichment | boolean | Carries site-inferred attributes |
mainImage | string | Main photo |
images | array | Photo URLs |
imageCount | number | Photo count |
hasVirtualTour | boolean | Virtual tour available |
hasFloorplans | boolean | Floorplan available |
Agency & Contacts
| Field | Type | Description |
|---|---|---|
agencyName | string | Agency |
contactName | string | Contact name |
agencyType | string | Advertiser type |
phoneNumbers | array | Phone numbers |
agencyWebsite | string | Agency website |
agencyProfileUrl | string | Agency profile on the portal |
agencyLogoUrl | string | Agency logo |
agencyAddress | string | Agency address |
agencyRating | number | Agency rating |
agencyReviewCount | number | Agency review count |
isPrivateOwner | boolean | Private owner, no agency |
agencyLegalInfo | array | Capital, financial guarantee, RCS and SIRET |
feeScheduleUrl | string | Fee schedule (barème) |
With enrichDetails enabled
| Field | Type | Description |
|---|---|---|
description | string | Full advert text |
features | array | Features |
aiHighlights | array | Site-inferred highlights |
isNewBuildProject | boolean | New-build project |
estimatedMonthlyMortgage | number | Est. monthly repayment (EUR) |
marketPricePerSqm | number | Neighbourhood price per m² (EUR) |
marketPricePerSqmLow | number | Neighbourhood price per m², low band (EUR) |
marketPricePerSqmHigh | number | Neighbourhood price per m², high band (EUR) |
coOwnershipDetails | array | Lot count, annual charges, syndic proceedings |
latitude | number | Latitude |
longitude | number | Longitude |
isAddressPublished | boolean | Exact address published |
floorplans | array | Floorplan URLs |
virtualTours | array | Virtual tour URLs |
gasEmissionClass | string | Greenhouse gas rating (GES) |
energyFeatures | array | Heating type, energy source, construction year |
Tips for Best Results
- Plan around the 9,990-per-search ceiling — SeLoger pages through at most 9,990 listings for any single search, however many match. Paris alone carries over 31,000 sale listings, so a whole-city pull needs splitting: run one search per price band, per arrondissement, or per property type. Rows are de-duplicated across searches in the same run, so overlapping bands cost you nothing.
- Your sort order decides which third of the market you get — on any search bigger than the ceiling,
sortByis not cosmetic.PriceAscreturns the cheapest 9,990,PriceDescthe most expensive,DateDescthe freshest. Pick deliberately, or split the search instead. - Leave full details off unless you need them — it is off by default, and turning it on takes a run from $1.00 to $9.00 per 1,000 rows, because each listing needs its own additional fetch. Full details apply to listings published on SeLoger itself, about 62% of results in a 690-listing sample; the rest come from the network's sibling portals (Belles Demeures, SeLoger Neuf, SeLoger Bureaux & Commerces). Those rows are still delivered complete at search level and are never charged the enriched rate, and the run's closing message reports the exact split.
- Use
energyClassbefore the ban bites — class G is already barred from the French rental market and class F follows. Filtering rental searches to F and G surfaces exactly the stock that will need work or will come off the market, which is where the pricing pressure is. - Rent and sale searches are separate runs, and that is deliberate — a rental row fills
monthlyRentand leavessalePricenull, and vice versa. To compute gross yield for a district, run both and join onzipCodepluspropertyType; never average the two price fields together. sellerType: Privateis the off-market shortcut — private-owner listings were 1,357 of 31,654 Paris sale listings, roughly 4%. They carry no agency in the middle and are far harder to find by browsing, which is why they are worth a dedicated run.- Watch
updatedAtto monitor a market — schedule a run on a narrow search and diff on this field to surface re-priced and refreshed inventory instead of reprocessing everything each time.
Pricing
From $1.00 per 1,000 results (search only) or from $9.00 per 1,000 results (with full details).
| Results | Search Only | With Full Details |
|---|---|---|
| 100 | $0.10 | $0.90 |
| 1,000 | $1.00 | $9.00 |
| 10,000 | $10.00 | $90.00 |
| 100,000 | $100.00 | $900.00 |
Those are the rates on Gold and above. Higher-volume plans pay less per result:
| Your Apify plan | Search Only | With Full Details |
|---|---|---|
| No discount | $1.20 | $10.80 |
| Bronze | $1.15 | $10.20 |
| Silver | $1.05 | $9.55 |
| Gold and above | $1.00 | $9.00 |
Per 1,000 results.
A "result" is any listing row in the output dataset. When you run several searches at once, a listing matching more than one of them is de-duplicated before it reaches the dataset, so you are never charged twice for the same listing. The full-details rate applies only to rows that actually came back enriched — if a listing's detail record is unavailable, the row is still delivered and charged at the search-only rate. Platform fees (compute, storage) are additional and depend on your Apify plan.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation
- Google Sheets — Direct spreadsheet export
- Slack / Email — Notifications on new results
- Webhooks — Trigger custom APIs on run completion
- Apify API — Full programmatic access
Legal & Ethical Use
This is an unofficial scraper. It is not affiliated with, endorsed by, or connected to SeLoger.com, the SeLoger network, or its operators in any way. All trademarks belong to their respective owners.
This actor is intended for legitimate market research, property analytics and brokerage intelligence. You are responsible for complying with applicable laws and with SeLoger.com's Terms of Service.
Listings include agency and agent contact details. Treat them as personal data: do not use phone numbers, addresses or registration numbers for spam, harassment, or any unlawful purpose, and follow applicable privacy rules — including the GDPR — when storing or processing them. French housing-discrimination law applies to how this data is used in the sale, rental or financing of housing.