SeLoger Scraper — France Real Estate
Pricing
from $1.19 / 1,000 listings
SeLoger Scraper — France Real Estate
Scrape property listings from seloger.com. Extract price, surface, rooms, location, photos and agency details from French real estate ads.
Pricing
from $1.19 / 1,000 listings
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
SeLoger Scraper — French Property Listings

Extract property listings from seloger.com, France's largest real estate portal. Supports buy and rent searches across all French departments. Paste any search URL from your browser — the scraper collects price, surface area, room count, location, EPC rating, agency details, description, virtual visit links and more. No API key or account required.
💰 Pricing
$1.19 per 1,000 results — you only pay for successfully retrieved listings.
| Results | Cost |
|---|---|
| 100 | ~$0.12 |
| 1,000 | ~$1.19 |
| 10,000 | ~$11.90 |
| 100,000 | ~$119.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Use the Max results cap to control spend exactly.
🚀 Quick start
- Go to seloger.com and run any search (location, type, price range, etc.)
- Copy the URL from your browser's address bar
- Paste it into the Search URL field below and click Start
The scraper paginates through all result pages automatically.
⚙️ Input
| Field | Type | Default | Description |
|---|---|---|---|
searchUrl | String | — | A seloger.com search URL from your browser. Takes priority over startUrls if both are set. |
startUrls | Array | [] | List of seloger.com search URLs. Use for multi-city or multi-criteria runs. |
maxItems | Integer | 200 | Maximum total listings to collect. seloger.com caps results at ~1,000 per search URL. |
fetchDetails | Boolean | false | Fetch each listing's detail page for enriched data: full description, coordinates, price history, co-ownership, energy costs, floor details and higher-res photos. Increases run time and cost. |
📦 Output
Always present (from search page — v3.0 json-html extraction)
| Field | Type | Description |
|---|---|---|
id | String | Unique listing ID from seloger.com |
url | String | Canonical URL of the listing detail page |
title | String | Listing title (e.g. "Appartement") |
operationType | String | "sale" or "rent" |
propertyType | String | Property category lowercased: appartement, maison, studio, terrain, parking, commerce, bureau |
priceText | String | Price as displayed: "311 000 €" or "850 € CC/mois" — null if not listed |
priceAmount | Number | Numeric price value — null if not listed |
priceCurrency | String | Always "EUR" |
pricePerSqm | Number | Price per square metre — null if not available |
monthlyPayment | Number | Estimated monthly mortgage payment (seloger calculation) — null if not available |
city | String | City name — null if not available |
postalCode | String | French postal code (e.g. "75011") — null if not available |
neighborhood | String | District/quartier within the city — null if not available |
department | String | French department name — null (populated by fetchDetails) |
region | String | French region name — null |
country | String | Always "FR" |
rooms | Number | Number of rooms (pièces) — null if not stated |
bedrooms | Number | Number of bedrooms (chambres) — null if not stated |
bathrooms | Number | Number of bathrooms — null if not stated |
surfaceTotal | Number | Total surface area in m² — null if not stated |
surfaceUnit | String | Always "m²" |
floor | Number | Floor number (0 = ground floor) — extracted from listing tags — null if not stated |
totalFloors | Number | Total floors in building — null if not stated |
epcRating | String | DPE energy class A–G — null if not available |
isExclusive | Boolean | Whether the listing is an exclusive mandate |
tags | Array | Raw tags from listing: ["4 pièces", "101 m²", "Terrasse", "Parking", ...] |
images | Array | Full photo CDN URLs (https://v.seloger.com/s/width/800/visuels/...) |
agencyName | String | Agency or agent name — null if not available |
agencyId | String | Agency identifier — null if not available |
agencyPhone | String | Agency contact phone number — null if not available |
agencyUrl | String | Agency website URL — null if not available |
agencyPageUrl | String | SeLoger agency profile page URL — null if not available |
agencyLogo | String | Agency logo image URL — null if not available |
isPrivateSeller | Boolean | True if listed by a private individual (not an agency) |
virtualVisitUrl | String | Virtual visit or video tour URL — null if not available |
descriptionText | String | Full listing description — available directly from search page (v3.0 upgrade) |
descriptionMarkdown | String | Same as descriptionText |
publishDate | String | Publication date "YYYY-MM-DD" — null if not available |
publishDateISO | String | Same as publishDate |
reference | String | Agency internal reference code — null |
agencyFeesPct | Number | Agency fees as % of price (ALUR) — null |
priceExclFees | Number | Price excluding agency fees (ALUR) — null |
priceHistory | Array | Price change history — null |
coOwnership | Object | Co-ownership details — null |
energyCostMin | Number | Min estimated annual energy cost (€) — null |
energyCostMax | Number | Max estimated annual energy cost (€) — null |
gasRating | String | GES (greenhouse gas) class A–G — null |
yearOfConstruction | Number | Year the building was built — null |
streetAddress | String | Street name — null |
coordinates | Object | {lat, lng} GPS coordinates — null |
source | String | Always "seloger.com" |
scrapedAt | String | ISO 8601 timestamp of when the listing was collected |
contentHash | String | 16-character MD5 fingerprint of id + price + rooms |
With fetchDetails: true (enriched from detail page __NEXT_DATA__)
All fields above are set where available, plus:
| Field | Type | Description |
|---|---|---|
streetAddress | String | Street name if available |
coordinates | Object | {"lat": 48.85, "lng": 2.34} GPS coordinates |
priceHistory | Array | [{"date": "15 octobre 2023", "newPrice": 311000, "oldPrice": 325000, "changePercent": 4.3, "direction": "down"}] |
coOwnership | Object | {"lots": 80, "annualCharges": 2000, "hasProcedure": false} |
energyCostMin | Number | Min estimated annual energy cost in € |
energyCostMax | Number | Max estimated annual energy cost in € |
gasRating | String | GES class A–G |
agencyFeesPct | Number | Agency fees % (ALUR regulation) |
priceExclFees | Number | Price excluding agency fees |
floor | Number | Floor number (enriched if not in tags) |
totalFloors | Number | Total floors in building |
yearOfConstruction | Number | Year built |
reference | String | Agency internal reference code |
images | Array | Higher-resolution photos from detail page gallery |
Example output (search page, no fetchDetails)
{"id": "207269613","url": "https://www.seloger.com/annonces/achat/appartement/bordeaux-33/grand-parc-chartrons-paul-doumer/207269613.htm","title": "Appartement","operationType": "sale","propertyType": "appartement","priceText": "311 000 €","priceAmount": 311000,"priceCurrency": "EUR","pricePerSqm": 3079,"monthlyPayment": 1735,"city": "Bordeaux","postalCode": "33200","neighborhood": "Grand Parc-Chartrons-Paul Doumer","department": null,"region": null,"country": "FR","rooms": 4,"bedrooms": null,"bathrooms": null,"surfaceTotal": 101,"surfaceUnit": "m²","floor": 1,"totalFloors": 5,"epcRating": "D","isExclusive": false,"tags": ["4 pièces", "3 chambres", "101 m²", "Étage 1/5", "Terrasse", "Parking"],"images": ["https://v.seloger.com/s/width/800/visuels/0/a/4/p/0a4p3lsrvjjiwhdrs4y8anegdnya1dd1l9rmo9ork.jpg"],"agencyName": "MANSON PROPERTIES","agencyId": "453705","agencyPhone": "06 82 32 26 68","agencyUrl": "http://www.manson-properties.com/","agencyPageUrl": "https://www.seloger.com/professionnels/agences-immobilieres/bordeaux-33000/agence-75763/","agencyLogo": "https://v.seloger.com/s/width/150/logos/0/d/1/b/0d1b0knhcgd20acjg3ai03v5gcjye7row9yexw6be.jpg","isPrivateSeller": false,"virtualVisitUrl": "https://youtu.be/sksNHRAUeUA","descriptionText": "Manson Properties vous présente en exclusivité cet appartement de Type 4 au premier étage...","descriptionMarkdown": "Manson Properties vous présente en exclusivité cet appartement de Type 4 au premier étage...","publishDate": null,"publishDateISO": null,"reference": null,"agencyFeesPct": null,"priceExclFees": null,"priceHistory": null,"coOwnership": null,"energyCostMin": null,"energyCostMax": null,"gasRating": null,"yearOfConstruction": null,"streetAddress": null,"coordinates": null,"source": "seloger.com","scrapedAt": "2026-05-06T12:00:00.000Z","contentHash": "a3f8d2c19e4b7f01"}
💡 Examples
Search for apartments for sale in Paris:
{"searchUrl": "https://www.seloger.com/list.htm?types=1&projects=2&natures=1&places=[{ci:750056}]","maxItems": 500}
Search for houses to rent in Lyon under €1,500/month:
{"searchUrl": "https://www.seloger.com/list.htm?types=2&projects=1&natures=1&places=[{ci:690123}]&px_loyermax=1500","maxItems": 200,"fetchDetails": true}
Scrape multiple cities in one run:
{"startUrls": [{ "url": "https://www.seloger.com/list.htm?types=1,2&projects=2&places=[{ci:330063}]" },{ "url": "https://www.seloger.com/list.htm?types=1,2&projects=2&places=[{ci:440109}]" },{ "url": "https://www.seloger.com/list.htm?types=1,2&projects=2&places=[{ci:130055}]" }],"maxItems": 1000}
Daily feed — new listings only (schedule every 24h):
{"searchUrl": "https://www.seloger.com/list.htm?types=1,2&projects=1,2&places=[{ci:750056}]&dd=1","maxItems": 200}
⚠️ Known limitations
- seloger.com caps search results at approximately 1,000 listings per search URL. For broader coverage, use multiple
startUrlswith different location filters. bedrooms,bathrooms,coordinatesandpriceHistoryrequirefetchDetails: true.- Price is
nullfor listings marked "Prix sur demande" (price on request). departmentandregionare alwaysnull(seloger.com does not expose these in search results).
🔧 Technical details
- v3.0: Upgraded from CSS selector parsing to
window["initialData"]JSON extraction on search pages, and__NEXT_DATA__Next.js JSON on detail pages. Significantly more stable and data-rich. - Handles all seloger.com search URL formats: new
/classified-search?..., legacy/list.htm?..., and SEO/immobilier/achat/.../URLs - Cookie-farm pattern: one RESIDENTIAL FR request to homepage bootstraps a DataDome cookie (Max-Age 1 year) reused for the entire run — 99% proxy bandwidth saving
- Circuit breaker: stops after 5 consecutive failures to avoid wasted compute
- Adaptive Gaussian sleep between requests to mimic organic browsing patterns
📬 Additional services
Need a custom data pipeline, scheduled export, or webhook integration? Contact us at info@unfencedgroup.nl.
Input parameters
| Parameter | Type | Description |
|---|---|---|
minPrice | integer | Minimum listing price (local currency). Leave empty for no minimum. |
maxPrice | integer | Maximum listing price (local currency). Leave empty for no maximum. |
daysOld | integer | Only return listings published within the last N days. Leave empty for |
fetchDetails | boolean | If enabled, each listing's detail page is fetched for the full descrip |
maxItems | integer | Maximum total number of listings to collect across all search URLs. se |
startUrls | array | List of seloger.com search URLs to scrape in one run. Each URL is scra |
searchUrl | string | A seloger.com search URL. Paste the URL from your browser after settin |
Output fields
| Field | Type | Notes |
|---|---|---|
id | — | Platform internal ID |
url | — | Direct link |
title | — | Job or listing title |
operationType | — | Sale or rent |
propertyType | — | Property type |
priceText | — | Price as displayed |
priceAmount | — | Price (numeric) |
pricePerSqm | — | Price per m² |
city | — | City |
postalCode | — | Postal code |
neighborhood | — | Neighbourhood |
rooms | — | Number of rooms |
surfaceTotal | — | Total floor area in m² |
floor | — | Floor level |
epcRating | — | Energy performance certificate rating |
agencyName | — | Estate agency name |
agencyPhone | — | Estate agency phone number |
descriptionText | — | Full property description |
publishDate | — | Date posted |
scrapedAt | — | ISO 8601 timestamp |
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl