SeLoger Scraper: Listings, Prices and Agencies avatar

SeLoger Scraper: Listings, Prices and Agencies

Pricing

from $0.85 / 1,000 listings

Go to Apify Store
SeLoger Scraper: Listings, Prices and Agencies

SeLoger Scraper: Listings, Prices and Agencies

Scrape SeLoger property ads for sale and rent by town, postal code or filters, or paste search links, no login. Rows carry price, price per m2, surface, rooms, DPE, place, photos and the agency's name, phone and SIRET. Read agencies, monitor new ads and price changes; JSON, CSV or API.

Pricing

from $0.85 / 1,000 listings

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

SeLoger Scraper: Listings, Prices and Agencies

SeLoger scraper for France's leading property portal (seloger.com): search homes, flats, plots, parking, offices and shops for sale or rent by town, postal code or department with SeLoger's own filters, or paste SeLoger search links, and get one row per ad with its price, price per m2, surface, rooms, energy class (DPE), place, agency name, phone and SIRET, photos and dates. Read single ads, an agency's ads or every agency of a town. No login, no cookies, no captcha. Every search is read to its end, past SeLoger's 10,000 ads per order.

Who uses it: estate agents and property hunters watching new listings ("pige immobilière"), investors and analysts comparing prices per m2 by district, proptech and price comparison apps, and teams building lead lists of French estate agencies.

Quick start

  1. Open the Input tab and type a place in Places, for example Paris 18e, Lyon, 33000 or Gironde.
  2. Choose buy or rent and the property types, then add filters if you like: price, surface, rooms, bedrooms, energy class, features, floors, seller type, keywords.
  3. Or paste one or more SeLoger search links (https://www.seloger.com/classified-search?...) into SeLoger search links.
  4. Set Maximum ads and click Start. Download the rows as JSON, CSV or Excel, or read them through the Apify API.

To watch a search for new ads, give the run a Monitor name and schedule it: each run delivers only the ads it never delivered before, and with Track changes and removals also the ads whose price changed and the ads taken offline.

What you get

One row per ad (type: "listing"), one row per agency (type: "agency") for agency links and the directory, one coverage row per search (type: "search"), free status rows for anything that could not be delivered, and a run summary (type: "summary").

FieldWhat it isFilled on (measured on 1,166 ads of the final build's runs, apartments and houses, 2026-10-18)
id, legacyId, url, portalSeLoger's 12 character id, the older numeric id, the ad's link, the SeLoger site it belongs to (seloger, bellesdemeures, selogerneuf ...)every ad
transaction, propertyType, propertySubTypebuy or rent, SeLoger's property type and sub typeevery ad
price, pricePerSqm, currencythe price in euros (the monthly rent for rentals) and the price per m299.7 and 98.7 percent
surface, plotSurface, rooms, bedroomsliving surface and plot in m2, rooms (pièces), bedroomssurface 98.8, rooms 98.9, bedrooms 71 percent (parking and plots carry no rooms)
floor, floorsInBuilding, yearBuiltfloor, floors of the building, year builtfloor 85 percent, year built 53 percent
energyClassthe DPE letter on the card70 percent
city, postalCode, department, placeIds, transportwhere the property is, SeLoger's place codes, nearby metro and train lines (Paris)every ad (transport 37 percent)
title, headline, description, keyFactsthe ad's title, headline, the card's description (the whole text with Listing details) and key factsevery ad
photos, photoCount, has3DVisitevery photo link, how many, a 3D visit95 percent
createdAt, updatedAt, daysOnMarketfirst published, last update, whole days on the marketevery ad
sellerType, agencyName, agencyId, agencyProfileUrl, agencyPhones, agencyAddress, agencyWebsiteprofessional or private, and the agency's public contact dataagency name 95 percent, phones 91 percent, website 45 percent
agencySiret, agencySiren, agencyRcs, agencyLegalName, agencyHeadOfficethe agency's legal identity as SeLoger shows itSIRET 92 percent, RCS 94 percent
isExclusive, isNew, hasBrokerageFeeexclusive mandate, new build, agency fees shownevery ad
searchKind, searchLabel, searchPage, rankwhich search, page and rank delivered the rowevery row
listingDetailswith Listing details on: the ad's full record (below)every ad read
agencyProfilewith Agency profiles on: the agency's public page (below)agencies whose page could be read
changeon a monitor's change row: what changed, the previous price, the change in euros and percent, the price historychange rows
contactName, privateSellerName, privateSellerPhonesan agent's own name on an agency's ad; a private seller's shown name and phone numbers: only with Include personal data onwith the switch on
teamMembers (agency rows)the agency's team as its page lists it: only with Include personal data onwith the switch on

A sample row (shortened):

{
"type": "listing",
"id": "26516AN5ND4S",
"url": "https://www.seloger.com/annonce/achat/auvergne-rhone-alpes/rhone-69/lyon-69000/26516AN5ND4S",
"transaction": "buy", "propertyType": "APARTMENT",
"price": 295000, "pricePerSqm": 3592.74, "surface": 82.11, "rooms": 3, "bedrooms": 2, "energyClass": "C",
"city": "Lyon 3ème arrondissement", "postalCode": "69003",
"sellerType": "professional", "agencyName": "CHARPENNES ROLIN BAINSON", "agencyPhones": ["0478930045 / 0626462994"],
"agencySiret": "31495098100022", "photoCount": 10,
"createdAt": "2026-04-01T11:54:00Z", "updatedAt": "2026-10-18T00:06:15.522Z", "daysOnMarket": 199
}

The coverage row of each search says how many ads SeLoger holds for it (adsOnSeLoger), how many results pages were read, how many ads were delivered, left out by a filter (and by which) or already delivered, whether the search was read to its end (complete) and why it stopped (stoppedBy).

How much does it cost to scrape SeLoger?

You pay per event, with Apify's store discounts by plan:

EventFree planBronzeSilverGold
Listing (one ad row)$1.19 per 1,000$1.08 per 1,000$0.98 per 1,000$0.85 per 1,000
Listing details (add-on, per ad row that carries the full record)$0.79 per 1,000$0.69 per 1,000$0.65 per 1,000$0.59 per 1,000
Agency profile (per agency row; with the add-on once per agency per run)$0.005$0.0045$0.0042$0.004
Results page (monitor runs; a pasted link's first page read in another order)$0.005$0.005$0.005$0.005
Actor start (once per run)$0.012$0.012$0.012$0.012

Platinum and Diamond plans pay the Gold price. The Actor start is a flat fee per run, with no plan discount.

The Store pricing card shows these prices per 1,000 events: "$0.85 / 1,000" on the Listing row means one ad row costs $0.00085 on the Gold plan; "$5 / 1,000" on the Results page row means one results page costs $0.005; "$4 / 1,000" on the Agency profile row means one agency costs $0.004 on the Gold plan.

  • Never billed: ads left out by your filters, ads already delivered in the run, ads a monitor already knows, ads no longer online, invalid inputs, coverage rows, status rows and the summary.
  • Results pages are billed in monitor runs: a monitor reads every ad updated since its last run each time, so every results page it reads (up to 100 ads) is billed, whatever it held. Outside a monitor, only a pasted search link's first page is billed, and only when it is read just to learn the search (you asked another order than the link's own, oldest first or a posted window); a link read in its own order delivers that page's ads instead.
  • Example on the Free plan: 1,000 ads from one search cost $0.012 (start) + 1,000 listings ($1.19) = about $1.20. On the Gold plan the same run costs about $0.86.
  • Example of a daily monitor run (Gold) that reads 3 results pages and finds 40 new ads: start ($0.012) + 3 results pages ($0.015) + 40 listings ($0.034) = about $0.06.

Input

SettingWhat it does
placesOne search per place: towns (Lyon), arrondissements (Paris 18e), postal codes (33000), departments (Gironde), regions, districts, resolved through SeLoger's own place lookup. A place that matches several is a free status row naming the candidates.
transaction, propertyTypes, projectTypesBuy or rent; apartment, house, parking, plot, building, other, office, retail, warehouse, hotel and restaurant, agricultural; resale, new build, life annuity, investment, construction project (rentals: standard, flatsharing, short term).
minPrice ... maxYearBuiltPrice, surface, plot surface, rooms, bedrooms and year built ranges, sent to SeLoger and checked on every row.
minPricePerSqm, maxPricePerSqmPrice per m2 range (SeLoger has no such filter: checked on every row).
energyClasses, features, heatingTypes, floors, furnished, availableBefore, sellerType, needsRenovation, keywordsSeLoger's own filters (DPE letters, balcony, terrace, garden, lift, pool, parking, cellar ...).
postedWithinDays or postedWithinHours, minDaysOnMarketOnly ads first published in the last N days or hours; only ads on the market for at least N days.
withPhoneOnly, withPhotosOnly, excludeAdIds, excludeDatasetIdsAds with a phone number, ads with photos; ads to leave out by id or link, or every ad of your earlier datasets.
sortNewest first (default), oldest first, relevance, price, price per m2, surface or rooms, each way.
searchUrlsSeLoger search links, read as SeLoger applies them (the search filters above do not apply to them; the row filters do).
adUrlsSingle ads: links of seloger.com, Belles Demeures, SeLoger Neuf, SeLoger Bureaux & Commerces, SeLoger Construire, or ids.
agencyUrls, includeAgencyListingsAgency pages or ids: one agency row each and, by default, the ads its page lists.
agencyDirectoryTowns (Bordeaux) or SeLoger directory links: one agency row for every agency of the town.
agencyNameContains, agencyNetwork, agenciesWithPhoneOnly, agenciesWithEmailOnlyFilters on agency rows.
maxItems, maxItemsPerSearch, maxPagesPerSearchCaps per run, per search, per search in results pages.
includeDetails, includeAgencyProfiles, includePersonalDataThe add-ons and the personal data switch (below).
monitorName, trackChanges, changeFields, includeUnchangedThe monitor (below).
webhookUrl, webhookSecret, telegramBotToken, telegramChatIdFree notifications of the run's new rows (a webhook secret has 16 to 200 letters, digits and - _ . ~).
failIfIncomplete, proxyConfigurationFail the run when a search could not be read to its end; Apify residential proxies (default, included in the price) or your own proxy links.

Every filter whose field the row carries (transaction, property type, place, price, price per m2, surface, plot, rooms, bedrooms, year built, energy class, seller type, posted date, days on market, phone, photos) is checked again on each ad before it is billed; an ad that does not match is left out free and counted on the coverage row. Features, heating, floors, furnished, availability, renovation, project types and keywords are applied by SeLoger alone, since no field of the result card shows them.

Every search to its end

SeLoger serves the first 10,000 ads of one search in one order. This Actor reads them, then goes on in price order in windows that start at the last price read, so a search of any size is read to its end. Measured on 2026-10-18: a pasted search of Lyon and Nantes apartments that SeLoger counted at 11,082 ads was delivered as 11,085 distinct ads in one run of 23 minutes (ads arrived during it), and the same method read 25,222 distinct ads of 25,227 Paris apartments. The coverage row says when ads past the first 10,000 came in price order. SeLoger has no oldest first order of its own: this Actor reads the newest first pages from the last one back for searches of up to 10,000 ads.

Listing details (add-on)

With Listing details on, each ad row carries listingDetails, read from the ad's record: the whole description, GPS position (of the address when the agency publishes it, 12 percent of ads, else the centre of the district SeLoger shows), DPE and GES with figures and the energy bill estimate, co-ownership lots, charges and procedures, the price breakdown with fees, deposit and notary estimate, features, schools, the area's price per m2, floor plans and virtual tours. Billed as Listing details per row; an ad taken offline meanwhile is a free row.

Agency profiles (add-on) and agency rows

An agency row, and with Agency profiles on the agencyProfile of each ad row, carries the agency's public page: e-mail and phones, opening hours, rating and every review SeLoger shows (up to 100), listing counts, description, logo, website, address and position, and its legal record (legal name and form, SIREN and SIRET, RCS town, capital, professional card, guarantee fund, head office). Billed once per agency per run, with the first row that carries it.

Monitor: new ads, changes and removals

Give the run a Monitor name and schedule it. Each run reads every ad updated since its last complete run (less 6 hours of margin; a first run reads the last 24 hours) and delivers only the ads it never delivered before. With Track changes and removals, an ad it delivered before comes back as a change row when its price changed (or another field you watch: surface, rooms, bedrooms, energy class, floor, description, photos), with the previous price, the change in euros and percent and the price history; an ad SeLoger no longer serves comes as a removed row and one that comes back as reappeared. Change and removed rows are billed as Listing; with Also deliver unchanged ads the others come free. Every results page a monitor run reads is billed. One monitor name belongs to one set of settings; its memory never forgets an ad, so an ad is never billed twice by one monitor.

Personal data

Agencies' data (name, phones, e-mail, address, SIRET) is business data and always delivered. A private seller's shown name and phone numbers, an agent's own name on an agency's ad and an agency's team members are delivered only when you turn on Include personal data (includePersonalData); with it off those fields are empty. Titles, descriptions, key facts, agency descriptions, reviews and every other text are delivered exactly as SeLoger serves them, with the switch on or off: a phone number, e-mail address or name that a seller or an agent wrote into a text stays in it. You are responsible for a lawful use of personal data, GDPR included.

What this Actor does NOT do

  • No auctions and no senior residences. SeLoger's search answers no ad for its auction and senior residence values (tested on three searches each, 2026-10-18).
  • No street address SeLoger does not publish. Most agencies hide it; the record then gives the district's centre.
  • No other portals and no public registers. Only SeLoger's own sites (seloger.com, Belles Demeures, SeLoger Neuf, SeLoger Bureaux & Commerces, SeLoger Construire); no PAP, Leboncoin or Logic-Immo, no DVF sales or ADEME energy records.
  • No search radius around a town. SeLoger searches by place; give several places instead.
  • No login and no account data: saved searches, alerts and messages are never read.
  • One request at a time: a large search takes about 2 minutes per 1,000 ads (500 Lyon apartments in 50 to 58 seconds, measured), so the default run timeout of one hour reads about 30,000 ads; raise the timeout in the run options for more. maxItems defaults to 100.
  • No search links of SeLoger's sister sites. Search links of seloger-bureaux-commerces.com and the other sister sites are refused; their ads come from seloger.com searches of offices, retail and warehouses, and their ad links are accepted.

API examples

Run it and get the rows in one call (replace YOUR_TOKEN):

curl -X POST "https://api.apify.com/v2/acts/automation_craft~seloger-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"places": ["Lyon"], "propertyTypes": ["apartment"], "maxPrice": 300000, "minRooms": 3, "maxItems": 200}'

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('automation_craft/seloger-scraper').call({ places: ['Paris 11e', 'Paris 12e'], transaction: 'rent', maxItems: 100 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((x) => x.type === 'listing'));

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("automation_craft/seloger-scraper").call(run_input={"agencyDirectory": ["Bordeaux"], "maxItems": 50})
agencies = [x for x in client.dataset(run["defaultDatasetId"]).iterate_items() if x["type"] == "agency"]

FAQ

How can I scrape SeLoger listings?

Type a place or paste a SeLoger search link, set a maximum, and start the run: no code, no login and no proxy setup. The rows come out as JSON, CSV or Excel, or through the Apify API.

Is there a SeLoger API for property listings?

SeLoger offers no public API for its listings. This Actor works as one: call it through the Apify API with places, filters or search links and read the rows back as JSON.

All of them, up to your maxItems (100 by default) and the run's timeout (one hour reads about 30,000 ads). SeLoger serves 10,000 ads of one search in one order; this Actor goes on in price windows, so a search is read to its end, and its coverage row says how many ads SeLoger holds and how many were delivered.

Yes. Every professional's ad row carries the agency's name, phones, address, SIRET and RCS; agency rows and the Agency profiles add-on add the e-mail, opening hours, reviews and the full legal record. A private seller's name and phone are delivered only with Include personal data on.

This Actor reads only what SeLoger shows any visitor, without logging in or solving any captcha. SeLoger's terms reserve its database and forbid reusing it, and SeLoger has taken sites that reused its listings to court, so you are responsible for a lawful use: non substantial parts of it, no repeated and systematic extraction beyond a normal use, and the GDPR for any personal data.

Why does this Actor run with limited permissions?

It needs nothing more: it writes only to its own run's dataset and key-value store, a monitor keeps its memory in a named key-value store it creates itself, and it reads only the datasets you pick in Datasets of ads to leave out. Limited permissions keep your other Apify data out of its reach.

Changelog

  • 0.1 (2026-10-18): first release: searches by place and filters, search links, ad links, agency pages and the agency directory; every search read to its end; oldest first; monitor with change tracking, removals and reappearances; Listing details and Agency profiles add-ons; private persons' data behind the personal data switch.

More data tools by Automation Craft