SeLoger Scraper - Property Listings, Prices & Agents avatar

SeLoger Scraper - Property Listings, Prices & Agents

Pricing

from $1.40 / 1,000 results

Go to Apify Store
SeLoger Scraper - Property Listings, Prices & Agents

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

Abot API

Maintained by Community

Actor stats

1

Bookmarked

96

Total users

18

Monthly active users

3.5 hours

Issues response

2 hours ago

Last modified

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.

FieldExample
id"26HYJAJHL23Q"
title"Maison a vendre"
price"450 000 EUR"
price_numeric450000
price_per_m2"3 214 EUR/m2"
distribution_type"BUY" (or "RENT")
property_type"HOUSE" (or "APARTMENT")
property_type_label"Maison"
rooms / bedrooms5 / 3
area_m2140
plot_area_m2500 (houses with land only)
city / zipcode / district"Toulouse" / "31000" / "Saint-Cyprien"
latitude / longitude43.6045 / 1.436
coord_precision"point", "district", or "cluster"
transport["METRO:A", "BUS:14"]
energy_class / ges_class"C" / "B"
agent_name / agent_phone"Agence du Capitole" / "01 23 45 67 89"
is_private_owner / publisher_typetrue (private sellers only) / "AGENCY" (agency listings)
imagesarray of listing photo URLs
urlfull 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

  1. Pick a mode: search (locations plus filters) or url (paste one or more seloger.com search URLs).
  2. 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.
  3. Turn on Get Full Details if you also want full length descriptions, features, year built, energy and heating detail, or building level coordinates.
  4. 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
}

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 ApifyClient
client = 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:

LevelPrefixExampleDescription
CountryAD02AD02FR1France
RegionAD04AD04FR5Ile-de-France
DepartmentAD06AD06FR76Paris department
CommuneAD08AD08FR31096Paris (city)
NeighborhoodNBH2NBH2FR63a 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 classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED, or EXPIRED (only after a run that scanned the tracked search in full, and only with emitExpired on). stateKey names or shares the stored state across runs. With Incremental mode off, output is exactly as before.

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.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. If the picker is empty, you have not authorized a connector yet.
  3. For Notion, also set notionParentPageUrl to 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

ParameterTypeDefaultDescription
modestringsearchsearch (build from locations plus filters) or url (use the provided search URLs).
locationsarray["Paris"]Search mode only. City names, postcodes, neighborhoods, or SeLoger location codes.
distributionTypestringBuySearch mode only. Buy or Rent.
estateTypesarray["House", "Apartment"]Search mode only. Property types to include.
priceMinintegernoneMinimum price in EUR.
priceMaxintegernoneMaximum price in EUR.
roomsMinintegernoneMinimum number of rooms.
bedroomsMinintegernoneMinimum number of bedrooms.
spaceMinintegernoneMinimum living area in m2.
sortBystringDefaultSort order: Default (relevance), DateDesc, PriceAsc, or PriceDesc.
urlsarraynoneURL mode only. SeLoger /classified-search or /classified-map URLs.
maxItemsinteger50Maximum total listings across all locations or URLs (0 = unlimited).
maxPagesinteger20Maximum search result pages per location (about 35 listings per page).
getDetailsbooleanfalseFetch each listing's detail page for description, features, year built, energy and heating detail, GES class, and building level coordinates.
proxyobjectApify residential proxyProxy configuration. Residential proxy is required to reach seloger.com reliably.
resumeFromRunIdstringnoneContinue one interrupted run from a previous run or dataset ID.
incrementalModebooleanfalseReturn only new, updated, reappeared and (optionally) expired listings on repeat runs of the same search.
stateKeystringnoneName or share the incremental mode state across runs.
emitUnchangedbooleanfalseAlso return (and bill) listings that have not changed since the previous run.
emitExpiredbooleanfalseAlso return (and bill) listings no longer found, after a complete scan of the tracked search.
mcpConnectorsarraynoneOptional: send a summary of each listing to apps authorized under Integrations.
notionParentPageUrlstringnoneNotion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap 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",
"district": "Saint-Cyprien",
"country": "FRA",
"latitude": 43.6045,
"longitude": 1.436,
"coord_precision": "point",
"transport": ["METRO:A", "BUS:14"],
"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

This actor needs a working proxy to reach seloger.com; datacenter proxies and bare Apify egress IPs are blocked by the site. The residential proxy group is selected by default under Connection, spread across several EU exit countries. If your account is prompted to add residential proxy usage, do so from the Proxy section of the Apify console before running the actor.

FAQ

How much does it cost?

You pay per listing returned, plus optional detail page enrichment only when Get Full Details is on. The Pricing tab on the actor page shows current rates. Use Max items to cap the cost of any run.

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, postcode and district 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:

🏠 Pap.fr
From $1/1k. Extract property listings from pap.fr. Get fully-detailed listings with...
🏠 Rightmove
From $1/1K. Fast, reliable Rightmove.co.uk scraper for sale, rent, and sold-price...
🏠 Immowelt.de Scraper
Scrape detailed property listings from Immowelt.de into clean structured data. Extract...
🏠 Realtor.ca
From $1/1K. Scrape Realtor.ca property listings with prices, descriptions, images, agent...
🏠 OnTheMarket Scraper
Scrape onthemarket.com for-sale, to-rent and new-homes listings with 85+ fields: price...
🏠 Fotocasa.es
From $1/1K. Scrape Spain property listings from fotocasa.es. Get price, surface, rooms...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 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 abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.