Pricing
from $0.95 / 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 $0.95 / 1,000 listings
Rating
0.0
(0)
Developer
Actor stats
1
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
SeLoger Scraper β French Property Listings
π SeLoger Scraper β France Real Estate
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 |
Related scrapers
Other scrapers in our Real Estate β Western Europe collection:
- Homegate Scraper
- Housing.com India Property Scraper
- Immowelt.de Scraper β German Real Estate
- WOZ Waardeloket β Official Dutch Property Valuations
- Kleinanzeigen Real Estate Scraper
Run it on a schedule
This actor is built for repeat use. Set it to run daily, weekly, or hourly, and the data keeps flowing without you touching it.
- Schedule runs β open the actor, go to Schedules, and pick a cadence. Each run only charges you for the results it returns.
- Connect it to your stack β push results straight to Google Sheets, Slack, a webhook, or your database using Apify Integrations. No glue code needed.
- Pull results via API β every run writes a clean dataset you can fetch with one API call, ready for whatever you build on top of it.
Set it once and it runs on its own.
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
