SeLoger Scraper - Property Listings, Prices & Agents
Pricing
from $1.40 / 1,000 results
SeLoger Scraper - Property Listings, Prices & Agents
Scrape SeLoger.com properties for sale and rent. Search by location with price, room and property type filters. Extract prices, areas, rooms, energy ratings, coordinates, images, descriptions, transport links and agent details.
Pricing
from $1.40 / 1,000 results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
110
Total users
25
Monthly active users
3.5 hours
Issues response
3 days ago
Last modified
Categories
Share
SeLoger Scraper: Property Listings, Prices, Coordinates & Energy Ratings
SeLoger Scraper turns SeLoger, France's leading property listings site, into a clean structured feed. Get price, price per square meter, rooms, living area, energy and GES class, coordinates, transport lines, agent contact details and French language descriptions for houses and apartments listed for sale or rent across France. Search by location and filters, or paste a SeLoger search URL you already refined in a browser, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.
Why This Scraper?
- Two ways to search. Build a location plus filter search, or paste any seloger.com search URL you already refined in a browser. No need to construct query strings by hand.
- Full France coverage. Search a commune, department, region or neighborhood by name, postcode, or SeLoger location code; names are auto resolved through the site's own location lookup.
- Buy and rent, house and apartment. Filter by transaction type, property type, price range, rooms, bedrooms and minimum living area.
- Rich structured records. Price, price per m2, rooms, bedrooms, area, energy class, transport lines, agent name and phone, images and floorplans, all delivered on every run.
- Optional detail depth. Turn on Get Full Details to add full length descriptions, features, year built, energy source, heating type, GES class, and building level coordinates.
- Built for schedules. Incremental mode returns only new, updated, reappeared or expired listings on repeat runs, and a blocked run fails loudly instead of quietly returning an incomplete dataset.
- Resume support. Continue a large crawl from a previous run or dataset ID without paying twice for listings you already collected.
Use Cases
- Real estate agencies and portals: mirror SeLoger listings into your own site or CRM with structured price, area and agent data.
- Buyers and renters: track a search across several cities and get notified only about new or updated listings.
- Market analysts: build historical datasets of price per square meter, energy ratings and room counts across French regions.
- Proptech and data teams: feed coordinates, energy class and property features into valuation or scoring models.
- Investors: monitor plot size and property type across a department to spot land or renovation opportunities.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
id | "26HYJAJHL23Q" |
title | "Maison a vendre" |
price | "450 000 EUR" |
price_numeric | 450000 |
price_per_m2 | "3 214 EUR/m2" |
distribution_type | "BUY" (or "RENT") |
property_type | "HOUSE" (or "APARTMENT") |
property_type_label | "Maison" |
rooms / bedrooms | 5 / 3 |
area_m2 | 140 |
plot_area_m2 | 500 (houses with land only) |
city / zipcode | "Toulouse" / "31000" |
latitude / longitude | 43.6045 / 1.436 |
coord_precision | "point", "district", or "cluster" |
transport | ["METRO:A", "BUS:14"] |
region / building_state / district | "Ile-de-France" / "WELL_KEPT" / "Salpetriere-Austerlitz" (state only when the listing states it; district with Get Full Details only) |
key_facts | ["4 pièces", "3 chambres", "127,9 m²"] |
agency_legal_info | ["SAS H&B IMMOBILIER", "Siege: 16 AVENUE DAUMESNIL, 75012 PARIS 12"] |
agency_website / agency_fee_url / agency_imprint_url | "http://www.avl-immobilier.com/" / "https://bareme.iadfrance.fr/" / legal notice link (each only when the agency publishes it) |
agency_rating / agency_review_count | 5 / 13 (Get Full Details only, when the agency has reviews) |
energy_class / ges_class | "C" / "B" |
agent_name / agent_phone | "Agence du Capitole" / "01 23 45 67 89" |
is_private_owner / publisher_type | true (private sellers only) / "AGENCY" (agency listings) |
images | array of listing photo URLs |
url | full SeLoger listing URL |
Detail level fields such as features, year_built, energy_source, heating_type, ges_class and building level coordinates are only populated when Get Full Details is on; description returns the search-results summary either way, and gets replaced by the longer detail-page text when Get Full Details is on. Incremental mode adds changeType, changedFields, firstSeenAt and lastSeenAt when it is turned on.
How to Use
- Pick a mode:
search(locations plus filters) orurl(paste one or more seloger.com search URLs). - Fill in the fields for that mode: locations, transaction type, property type and price or room filters for search mode; the URLs list for url mode.
- Turn on Get Full Details if you also want full length descriptions, features, year built, energy and heating detail, or building level coordinates.
- Set Max items and Max pages to control run size and cost, then click Start.
Search mode, apartments for sale in Paris:
{"mode": "search","distributionType": "Buy","estateTypes": ["Apartment"],"locations": ["Paris"],"maxItems": 100}
Search mode, houses to rent in Toulouse with full details:
{"mode": "search","distributionType": "Rent","estateTypes": ["House"],"locations": ["Toulouse"],"roomsMin": 3,"priceMax": 1500,"getDetails": true}
Supported URL shapes (URL mode):
| Shape | Example | Handling |
|---|---|---|
| Search, buy | https://www.seloger.com/classified-search?distributionTypes=Buy&estateTypes=House,Apartment&locations=AD08FR31096 | Scraped |
| Search, rent | https://www.seloger.com/classified-search?distributionTypes=Rent&estateTypes=Apartment&locations=AD08FR31096 | Scraped |
| Map search | https://www.seloger.com/classified-map?distributionTypes=Buy&estateTypes=Apartment&locations=AD08FR31096 | Treated as the equivalent search |
| Homepage or a single listing page | https://www.seloger.com/ | Skipped with a warning in the log. If every URL you pasted is skipped, the run ends as failed with None of the URLs is a SeLoger search URL, so nothing was collected. instead of an empty dataset |
In search mode, privateSellerOnly limits results to private owners (the site's own classifiedBusiness=Private filter; every returned row has is_private_owner true). Auction sales are not offered as a Transaction Type: a live probe of the auction-only filter returned zero listings for every location tried.
If you run URL mode with the URLs field untouched, the actor scrapes one example search (the first row above), not nothing. A location name in search mode that SeLoger cannot match stops the run with a clear error.
URL mode, paste a search you already refined on the site:
{"mode": "url","urls": ["https://www.seloger.com/classified-search?distributionTypes=Buy&estateTypes=House,Apartment&locations=AD08FR31096"],"maxItems": 200}
Daily monitoring of a postcode, new and expired listings only:
{"mode": "search","locations": ["75016"],"distributionType": "Buy","incrementalMode": true,"emitExpired": true}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/seloger-france-scraper").call(run_input={"mode": "search","distributionType": "Buy","estateTypes": ["Apartment"],"locations": ["Paris"],"maxItems": 100,})for listing in client.dataset(run["defaultDatasetId"]).iterate_items():print(listing["title"], listing["price"], listing["city"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/seloger-france-scraper').call({mode: 'search',distributionType: 'Buy',estateTypes: ['Apartment'],locations: ['Paris'],maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Location codes
Names and postcodes in locations are auto resolved, but you can also paste a SeLoger location code directly:
| Level | Prefix | Example | Description |
|---|---|---|---|
| Country | AD02 | AD02FR1 | France |
| Region | AD04 | AD04FR5 | Ile-de-France |
| Department | AD06 | AD06FR76 | Paris department |
| Commune | AD08 | AD08FR31096 | Paris (city) |
| Neighborhood | NBH2 | NBH2FR63 | a named district |
To find a code, search on seloger.com, apply the filters you want, and copy the locations= parameter from the address bar; url mode accepts that same address bar link directly.
Resume and recurring updates
- Resume (
resumeFromRunId) continues one interrupted run: paste its run or dataset ID and the actor skips listings it already collected there, so you do not pay twice. - Incremental mode (
incrementalMode) is for repeating the same search on a schedule. Each listing is classifiedNEW,UPDATED(withchangedFields),UNCHANGED(suppressed and not billed unlessemitUnchangedis on),REAPPEARED, orEXPIRED(only after a run that scanned the tracked search in full, and only withemitExpiredon).stateKeynames or shares the stored state across runs.UPDATEDcompares every output field of a listing (price, surface, rooms, description, photos, agency, status, coordinates, and the rest); nothing is excluded by default. List field names (or dotted paths such asagency.phone) inignoreFieldsForChangesto keep them in the output but never count them as a change. Pasting a search URL that starts past page 1, or capping the run withmaxItemsormaxPages, never producesEXPIREDrows. With Incremental mode off, output is exactly as before.
Output views
The dataset has four views in the Apify Console: Overview (price, area, rooms, location, agency), Map Data (coordinates and transport), Full Details (description, features, energy and heating detail, available with Get Full Details) and Changes (incremental) (the change status and changedFields of each row when Incremental mode is on).
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape, the Apify dataset is never changed.
What gets written to the connector: a condensed, human readable summary of each listing, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. If the picker is empty, you have not authorized a connector yet.
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search (build from locations plus filters) or url (use the provided search URLs). |
locations | array | ["Paris"] | Search mode only. City names, postcodes, neighborhoods, or SeLoger location codes. |
distributionType | string | Buy | Search mode only. Buy or Rent. |
privateSellerOnly | boolean | false | Search mode only. Only listings from private owners. |
estateTypes | array | ["House", "Apartment"] | Search mode only. Property types to include. |
priceMin | integer | none | Minimum price in EUR. |
priceMax | integer | none | Maximum price in EUR. |
roomsMin | integer | none | Minimum number of rooms. |
bedroomsMin | integer | none | Minimum number of bedrooms. |
spaceMin | integer | none | Minimum living area in m2. |
sortBy | string | Default | Sort order: Default (relevance), DateDesc, PriceAsc, or PriceDesc. |
urls | array | none | URL mode only. SeLoger /classified-search or /classified-map URLs. |
maxItems | integer | 50 | Maximum total listings across all locations or URLs (0 = no cap, with an internal safety ceiling of 100000). |
maxPages | integer | 0 | Maximum search result pages per location (about 35 listings per page). 0 means the built-in cap of 20 pages per location; values above 1000 are clamped to 1000. |
getDetails | boolean | false | Fetch each listing's detail page for description, features, year built, energy and heating detail, GES class, and building level coordinates. |
proxy | object | Apify residential proxy | Proxy configuration. Residential proxy is needed to reach seloger.com reliably; see Plan Requirement. |
resumeFromRunId | string | none | Continue one interrupted run from a previous run or dataset ID. |
incrementalMode | boolean | false | Return only new, updated, reappeared and (optionally) expired listings on repeat runs of the same search. |
stateKey | string | none | Name or share the incremental mode state across runs. |
emitUnchanged | boolean | false | Also return (and bill) listings that have not changed since the previous run. |
emitExpired | boolean | false | Also return (and bill) listings no longer found, after a complete scan of the tracked search. |
ignoreFieldsForChanges | array | none | Incremental mode only: field names or dotted paths that never count as a change. |
mcpConnectors | array | none | Optional: send a summary of each listing to apps authorized under Integrations. |
notionParentPageUrl | string | none | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. Does not affect the dataset. |
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"id": "26HYJAJHL23Q","legacy_id": "123456789","title": "Maison a vendre","headline": "Belle maison avec jardin","description": "Maison de 5 pieces avec jardin et garage, proche des commodites.","price": "450 000 EUR","price_numeric": 450000,"price_per_m2": "3 214 EUR/m2","currency": "EUR","distribution_type": "BUY","property_type": "HOUSE","property_type_label": "Maison","rooms": 5,"bedrooms": 3,"area_m2": 140,"plot_area_m2": 500,"city": "Toulouse","zipcode": "31000","country": "FRA","latitude": 43.6045,"longitude": 1.436,"coord_precision": "point","transport": ["METRO:A", "BUS:14"],"region": "Occitanie","key_facts": ["5 pieces", "3 chambres", "140 m2"],"energy_class": "C","ges_class": "B","energy_source": "Electrique","heating_type": "Chauffage individuel","year_built": 1998,"features": ["Garage", "Jardin", "Cave"],"agent_name": "Agence du Capitole","agent_phone": "01 23 45 67 89","agent_address": "12 Rue Example, 31000 Toulouse","is_exclusive": true,"has_3d_visit": true,"publisher_type": "AGENCY","has_agency_fee": true,"images": ["https://cdn-media.seloger.com/img/example1.jpg", "https://cdn-media.seloger.com/img/example2.jpg"],"floorplans": ["https://cdn-media.seloger.com/img/floorplan1.jpg"],"image_count": 18,"url": "https://www.seloger.com/annonce/26HYJAJHL23Q","portal": "seloger","created_at": "2026-08-01T10:00:00Z","updated_at": "2026-09-15T08:30:00Z","source": "seloger.com"}
Plan Requirement
SeLoger actively blocks automated traffic, so this actor needs a working proxy. The residential proxy group is the default under Connection, and a plain datacenter connection is not expected to get through. Residential proxies are not included in Apify free plans. If the residential connection is unavailable to your account and a backup connection can be opened, the run continues on it, logs this notice, and some pages may still be unavailable (when no backup connection opens, no notice is logged and the run ends as failed with the first message below):
The selected connection is unavailable to this run. Apify free plans do not include residential proxies. Continuing on a backup connection; some pages may still be unavailable.
Pages served that way are logged as Served over the backup connection (the default connection was unavailable). If nothing could be read, the run ends as failed with one of these messages instead of returning an empty dataset:
The proxy connection was refused for this account, so no page could be read. Your Apify plan does not include proxy access; a paid plan is required.Check your own proxy credentials if you supplied proxy URLs.No results: residential proxies are unavailable on this run (Apify free plans do not include them), and the backup connection could not load the requested SeLoger pages.Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search. Please try again later.
For reliable results use a paid Apify plan with residential proxies, or supply your own proxy URLs in the Connection section.
FAQ
How much does it cost?
You pay per listing returned, plus a per-start fee and, only when Get Full Details is on, a detail enrichment fee per listing that carries the deep detail fields. Current rates by Apify plan tier:
| Event | Free | Bronze | Silver | Gold and above |
|---|---|---|---|---|
| Actor start (once per run, per GB of memory) | $0.09 | $0.08 | $0.07 | $0.06 |
| Result (per listing) | $0.0025 | $0.002 | $0.0015 | $0.0014 |
| Full detail enrichment (per listing, Get Full Details only) | $0.0008 | $0.0007 | $0.00069 | $0.0006 |
The Pricing tab on the actor page always shows the current rates. Use Max items to cap the cost of any run.
Is it legal to scrape SeLoger?
This actor collects only publicly available listing data. You are responsible for how you use it: follow SeLoger's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Listing facts such as price and area are generally not protected, but photos and agency content may carry third party rights.
Can I get only new or changed listings on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated, reappeared and, if you also turn on Emit expired, expired listings for the same search; unchanged listings are skipped and not billed unless you turn on Emit unchanged.
Why are some fields missing from my results?
Search mode and url mode use different input fields, and the ignored side is silently skipped rather than erroring, so double check which mode you picked. Separately, features, year_built, energy_source, heating_type, ges_class and building level coordinates only appear when Get Full Details is on, and the full length description also needs it; street_address is only ever present for new build (selogerneuf) listings, resale listings on seloger.com carry city and postcode but never a street address by the site's own design.
Why did my run fail instead of returning an empty dataset?
A run with a genuinely empty result, for example filters that match nothing, still succeeds with zero rows. The run only fails when it was blocked or stopped early for a reason other than your own Max items or Max pages cap, so a silent partial result is never reported as a plain success. Any listings already collected before the failure remain in that run's dataset. Retrying after a few minutes usually clears a temporary block.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
🔗 Want more real estate data?
Pair this actor with these related scrapers from the same team:
| 🏠 Immowelt.de Scraper Scrape detailed property listings from Immowelt.de into clean structured data. Extract... | 🏠 Pap.fr From $1/1k. Extract property listings from pap.fr. Get fully-detailed listings with... |
| 🏠 ImmobilienScout24.de Scraper $0.9💰/1K for Gold discount. Extract property listings from immobilienscout24.de... | 🏠 Otodom.pl Scraper Scrape Otodom.pl properties for sale and rent, including apartments, houses, plots... |
| 🏠 Cian RU Collect property listings from Cian.ru by search filters or direct URLs. Returns... | 🏠 Realtor.ca From $1/1K. Scrape Realtor.ca property listings with prices, descriptions, images, agent... |
💬 Support
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.