# SeLoger Scraper - Listings, Phones, Agency Emails & DPE (`clearpath/seloger-scraper`) Actor

Get phone numbers and agency emails from SeLoger listings. Export full property details, DPE/GES, prices, fees, photos and coordinates. Search by place, listing URL or ID, and track new listings and price changes. Contacts are included where published.

- **URL**: https://apify.com/clearpath/seloger-scraper.md
- **Developed by:** [ClearPath](https://apify.com/clearpath) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.39 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![Get phone numbers from SeLoger. Agency emails and property details, ready to export.](https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/seloger-phone-numbers-0569c0db2c47.png)](https://console.apify.com/actors/ewqeUU7AXNvLl7zfn/input)

From **Clearpath**, creators of [ImmoScout24 Scraper Pro](https://apify.com/clearpath/immoscout24-api-pro) and [Leboncoin Scraper Pro](https://apify.com/clearpath/leboncoin-api), with **1.3 million+ combined lifetime runs** across those two real-estate scrapers.

### Phone numbers, agency emails and property details

- **Get the listing's phone numbers.** Export published contact numbers with the property they belong to. Agency listings can also include an email, website, address and opening hours.
- **Collect large searches.** Search by city or SeLoger link, including searches beyond 10,000 results. An existing Lyon export returned 3,200+ rentals in under three minutes, with listing details and agency profiles enabled.
- **Keep the property details.** Full description, price breakdown, DPE and GES, coordinates, photos and floor plans, where available.

Phone numbers and agency emails are included where SeLoger publishes them. Private-owner email addresses are not provided.

<a href="https://console.apify.com/actors/ewqeUU7AXNvLl7zfn/input" data-demo-cta="true"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/seloger-phone-numbers-797e3bb40998.svg" width="320" height="48" alt="Get SeLoger phone numbers"></a>

#### Try 100 Lyon listings

Open the [actor input](https://console.apify.com/actors/ewqeUU7AXNvLl7zfn/input), switch to JSON and paste this example. It requests 100 Lyon listings for sale, with property details and agency profiles enabled. Contact fields are filled when published. Listing and start charges apply at the [current rates](https://apify.com/clearpath/seloger-scraper/pricing).

```json
{
  "locations": [
    "Lyon"
  ],
  "transactionType": "buy",
  "maxResultsPerSearch": 100,
  "includeDetails": true,
  "includeAgencyDetails": true
}
```

Export as JSON, CSV or Excel. JSON keeps the price breakdown, features, photos and agency profile nested.

<table>
<tr>
<td style="padding:10px 14px;background:#B5040F;border:none;border-radius:4px 4px 0 0"><span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">Clearpath Real Estate</span>
<span style="color:#FDECEA;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Listings, prices and contacts from Europe's property portals</span></td>
</tr>
<tr>
<td style="padding:6px;border:1px solid #E7E5E4;border-top:none;border-radius:0 0 4px 4px;background:#FDECEA">
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#F9D3CF"><span style="white-space:nowrap"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/seloger-scraper-icon-512-28aed1fc818e.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://console.apify.com/actors/ewqeUU7AXNvLl7zfn/input" style="color:#B5040F;text-decoration:none;font-weight:700;font-size:13px">SeLoger</a></span><br>
<span style="color:#B5040F;font-size:12px;font-weight:600">&#10148; You are here</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FDECEA"><span style="white-space:nowrap"><img src="https://images.apifyusercontent.com/EahYMBqx73QK4G9LqEL6dd7nFwNR_kLIsV0YSipj1mI/rs:fill:76:76/cb:1/aHR0cHM6Ly9hcGlmeS1pbWFnZS11cGxvYWRzLXByb2QuczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vRFN2TUNBd3N1Zk15WmVMeXQtYWN0b3ItSlVGbmhEakdBUzhWTTY0T3ItTksydXhOQTd4YS1sZWJvbmNvaW4tYXBpLXNjcmFwZXIucG5n.webp" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/leboncoin-immobilier" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Leboncoin Immobilier</a></span><br>
<span style="color:#78716C;font-size:12px">Property ads and phone numbers</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FDECEA"><span style="white-space:nowrap"><img src="https://images.apifyusercontent.com/qF5327Av1fLdxtAGew3qAvzIe5-7FfSEaTXC01_6lug/rs:fill:76:76/cb:1/aHR0cHM6Ly9hcGlmeS1pbWFnZS11cGxvYWRzLXByb2QuczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vRFN2TUNBd3N1Zk15WmVMeXQtYWN0b3ItczZrZnlycXFHemJvTEd6NGMtQklRT0I2eUNFMC1wYXAtaW1tb2JpbGllci1zY3JhcGVyLWxvZ28ucG5n.webp" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/pap-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">PAP Immobilier</a></span><br>
<span style="color:#78716C;font-size:12px">Private sellers, phones and DPE</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FDECEA"><span style="white-space:nowrap"><img src="https://images.apifyusercontent.com/Ni6pfesRRkNBQqtGooxr7SF4my18UIWelPxHdHDmDMU/rs:fill:76:76/cb:1/aHR0cHM6Ly9hcGlmeS1pbWFnZS11cGxvYWRzLXByb2QuczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vRFN2TUNBd3N1Zk15WmVMeXQtYWN0b3ItbmZXUERISnpSYjgwUHNObzEtNzVIM1JNOUdFeS1sZWJvbmNvaW4tYXBpLXNjcmFwZXIucG5n.webp" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/leboncoin-api" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Leboncoin Pro</a></span><br>
<span style="color:#78716C;font-size:12px">Every Leboncoin category</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FDECEA"><span style="white-space:nowrap"><img src="https://images.apifyusercontent.com/Sg5_wVcgLqaiQhiQJrTryfo4UzrKChHi-HzjY4bwihQ/rs:fill:76:76/cb:1/aHR0cHM6Ly9hcGlmeS1pbWFnZS11cGxvYWRzLXByb2QuczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vRFN2TUNBd3N1Zk15WmVMeXQtYWN0b3ItczYwOWR5QUpTcmp1NTRRU2gtemo1TmVaVHlrYi1JbW1vU2NvdXQyNC1jYW52YTIucG5n.webp" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/immoscout24-api-pro" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">ImmoScout24 Pro</a></span><br>
<span style="color:#78716C;font-size:12px">Germany's largest portal</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FDECEA"><span style="white-space:nowrap"><img src="https://images.apifyusercontent.com/a5rP_KUWfy2yXkswAfyj427ZwXHvnR1AQzwGaF8_yr8/rs:fill:76:76/cb:1/aHR0cHM6Ly9hcGlmeS1pbWFnZS11cGxvYWRzLXByb2QuczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vRFN2TUNBd3N1Zk15WmVMeXQtYWN0b3ItbzdIbVhmd0tlMmV1blJZWEktOUE2ZGFqYXlWVC16aWxsb3ctYnVsay1zZWFyY2gtdW5saW1pdGVkLXNjcmFwZXItbG9nby5wbmcucG5n.webp" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/zillow-bulk-search-unlimited-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Zillow Unlimited</a></span><br>
<span style="color:#78716C;font-size:12px">US rentals, sales and sold</span></span>
</td>
</tr>
</table>

#### Copy to your AI assistant

```text
clearpath/seloger-scraper on Apify. Returns SeLoger.com (France) property listings, one dataset row per listing: price with the full cost breakdown, rooms, area, DPE/GES with kWh and CO2, exact or area coordinates, photos, the listing's phone numbers and the agency's email, website and legal details. Inputs: locations (city, postcode, department), startUrls (SeLoger search, listing or agency links; a search link keeps its own filters), listingIds. Filters (transactionType buy|rent, propertyTypes, price/area/rooms ranges, features, energyClasses) apply to locations only; empty means everything. maxResultsPerSearch empty or 0 collects every listing, also past 10,000 per search (then in price order); maxResults caps the whole run. Keep includeDetails=true (default) for coordinates, phone numbers, energy figures and the price breakdown, and includeAgencyDetails=true (default) for the agency email and profile. For daily new listings and price changes set onlyNewListings=true: rows carry changeType, changedFields and previousPrice, and unchanged listings are skipped and not charged. Charges: $1.99 per 1,000 listings on the Free plan (Bronze $1.79, Silver $1.69, Gold and above $1.39), details and agency profile included, plus $0.005 per GB of memory at start. Full specification: https://api.apify.com/v2/actors/clearpath~seloger-scraper/builds/default ; pricing: https://apify.com/clearpath/seloger-scraper/pricing . To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
```

### What data can you extract from SeLoger?

Every row is one listing. With the default settings it carries the listing page and the agency profile as well as the search card:

| Group | Fields |
|---|---|
| Listing | `id`, `legacyId`, `reference`, `url`, `title`, `headline`, full `description`, `transactionType`, `propertyType`, `propertySubType` (studio, duplex and so on) and kind of sale or rental, each with a readable label |
| Price and costs | `price`, `pricePerSquareMeter`, `priceNote`, `notaryFees`, `totalProjectCost`, `monthlyCharges`, `rentSupplement`, `deposit`, `tenantFees`, `inventoryFee`, life annuity down payment and monthly payment, co-ownership lots, charges and proceedings, every line of the price breakdown in `priceLines`, the rent-control notice and `rentReferenceCeiling` where rents are capped, SeLoger's monthly mortgage estimate and its market price per m² for the area (low, estimate, high) |
| Property | `rooms`, `bedrooms`, `livingArea`, `plotArea`, `floor`, `floorNumber`, `totalFloors`, `yearBuilt`, `buildingState`, `availableFrom`, every feature by category, the features SeLoger detected with their codes, amenity tags |
| Energy | DPE `energyClass` and GES `ghgClass`, `energyConsumption` (kWh/m²/year), `ghgEmissions` (kg CO₂/m²/year), diagnostic date and method, a note when no certificate is required, heating, energy source, yearly energy bill estimate, the full scales |
| Location | `district`, `city`, `postalCode`, `department`, `region`, `latitude` and `longitude` (exact point, or the area's centre plus the area itself when the address is hidden), SeLoger place codes, nearest metro, RER, tram and bus lines, nearby public and private schools with distance and walking, cycling and driving times |
| Media | photos with room type and caption, floor plans (also for listings delivered from the search card), videos, virtual tours, documents |
| Advertiser | `phoneNumbers`, `agencyName`, `contactName`, `agencyAddress`, SIRET and RCS from the legal notice, fee schedule link, and from the agency profile: `agencyEmail`, `agencyPhone`, `agencyWebsite`, social links, opening hours, the agency's fee schedule document, services, languages, affiliation, rating and number of ratings, team members, listing counts |
| Tracking | `createdAt`, `updatedAt`, `isNewListing`, `isExclusive`, `searchPosition`, `source`, and in monitoring mode `changeType`, `changedFields`, `previousPrice`, `firstSeenAt`, `lastSeenAt` |

#### A real listing

One Lyon rental exactly as the actor returned it, with every field. To keep this page short, `features` shows 4 of its 11 entries; each `energyCertificates[].scale` shows 2 of its 7 classes; `energyCertificates` shows 1 of its 2 entries; `geoHierarchy` shows 3 of its 7 entries; `schools` shows 2 of its 8 entries; `agency.openingHours` shows 1 of its 5 entries. Empty fields are `null` or `[]`: rental listings carry no notary fees, and commercial premises add `brokers`, `commercialLots` and their location codes.

```json
{
  "id": "266IIDVT3JE4",
  "legacyId": "281224371",
  "reference": "GES62720144-375",
  "url": "https://www.seloger.com/annonce/location/auvergne-rhone-alpes/rhone-69/lyon-69000/266IIDVT3JE4",
  "title": "Appartement à louer",
  "headline": "Appartement récent",
  "description": "Part Dieu - Appartement de type 2 rénové de 46.32m², situé rue Turbil à Lyon 3, dans une résidence récente avec espaces verts interieurs. Facilement accessible en transports en commun, notamment par le bus C16 (arrêt Paul Bert - Turbil), tramway Lacassagne ou métro Part Dieu à seulement 10 minutes à pied. Nombreux commerces de proximité au pied de l'immeuble.\r\nSitué au 5ème étage avec ascenseur, il se compose d'un hall d'entrée avec placard ,  d'une cuisine simple  séparée , d' un séjour de 19m² le tout donnant su un balcon ,  d'une chambre avec placard de rangements, d'une salle de bain et de wc séparé.\r\n\r\nLe chauffage et l'eau chaude sont individuels au gaz , l'eau froide et l'entretien chaudière sont collectif ( inclus dans les charges)\r\n\r\nPossibilité de location de stationnement en sus en sous sol de la résidence.\r\n\r\nDPE (Diagnostic de Performance Énergétique) : « DPE C - GES C »\r\n\r\nZone soumise à encadrement des loyers : Oui\r\nLoyer de base :671.64€\r\nLoyer de référence majoré (loyer de base à ne pas dépasser) : 805.96€\r\n\"Les informations sur les risques auxquels ce bien est exposé sont disponibles sur le site Géorisques : \r\n Loyer de 745,00 euros par mois charges comprises dont 45,00 euros par mois de provision pour charges (soumis à la régularisation annuelle).\r\nMontant estimé des dépenses annuelles d'énergie pour un usage standard : entre 620 et 870 euros. Prix moyens des énergies indexés en 2023.",
  "descriptionTruncated": false,
  "descriptionLanguage": "fr",
  "transactionType": "RENT",
  "transactionTypeLabel": "Rent",
  "transactionSubType": "CLASSIC",
  "transactionSubTypeLabel": "Standard rental",
  "propertyType": "APARTMENT",
  "propertyTypeLabel": "Apartment",
  "propertyTypeSiteLabel": "Appartement",
  "propertySubType": null,
  "propertySubTypeLabel": null,
  "price": 745,
  "priceFormatted": "745 €/mois",
  "priceNote": "charges comprises",
  "currency": "EUR",
  "pricePerSquareMeter": 16.2,
  "pricePerSquareMeterFormatted": "16,20 €/m²",
  "rooms": 2,
  "bedrooms": 1,
  "livingArea": 46,
  "plotArea": null,
  "floor": "5ème Étage",
  "floorNumber": 5,
  "totalFloors": null,
  "yearBuilt": 1999,
  "buildingState": "TO_RESTORE",
  "buildingStateLabel": "Needs restoring",
  "buildingStateSiteLabel": "À restaurer, Entièrement rénové",
  "availability": "Disponible à partir du 15/11/2026",
  "availableFrom": "2026-11-15",
  "keyFacts": [
    "2 pièces",
    "1 chambre",
    "46 m²",
    "5ème Étage"
  ],
  "facts": [
    {
      "type": "numberOfRooms",
      "value": "2 pièces",
      "label": "pièces"
    },
    {
      "type": "numberOfBedrooms",
      "value": "1 chambre",
      "label": "chambre"
    },
    {
      "type": "livingSpace",
      "value": "46 m²",
      "label": "m²"
    },
    {
      "type": "numberOfFloors",
      "value": "5ème Étage",
      "label": "Étage"
    }
  ],
  "street": null,
  "district": "La Villette",
  "city": "Lyon 3ème arrondissement",
  "postalCode": "69003",
  "department": "Rhône",
  "region": "Auvergne-Rhône-Alpes",
  "country": "France",
  "isAddressPublished": true,
  "latitude": 45.75654030045828,
  "longitude": 4.86880416122735,
  "coordinatesApproximate": false,
  "locationArea": null,
  "locationPrecision": "Street",
  "placeIds": {
    "borough": "AD09FR19",
    "municipality": "AD08FR28808",
    "department": "AD06FR70",
    "macroRegion": "AD03FR2",
    "region": "AD04FR31",
    "neighborhood": "NBH2FR9346",
    "country": "AD02FR1"
  },
  "geoHierarchy": [
    {
      "placeId": "AD09FR19",
      "level": "borough",
      "levelCode": "AD09"
    },
    {
      "placeId": "AD08FR28808",
      "level": "municipality",
      "levelCode": "AD08"
    },
    {
      "placeId": "AD06FR70",
      "level": "department",
      "levelCode": "AD06"
    }
  ],
  "transport": [],
  "schools": [
    {
      "name": "Ecole maternelle Meynis",
      "sector": "public",
      "type": "PRIMARY",
      "typeLabel": "Primary school",
      "distanceMeters": 228,
      "distanceText": "228 m",
      "walkMinutes": 3,
      "bikeMinutes": 1,
      "carMinutes": 4
    },
    {
      "name": "Ecole élémentaire Meynis",
      "sector": "public",
      "type": "PRIMARY",
      "typeLabel": "Primary school",
      "distanceMeters": 273,
      "distanceText": "273 m",
      "walkMinutes": 4,
      "bikeMinutes": 1,
      "carMinutes": 3
    }
  ],
  "inseeCode": null,
  "commercialLocationCodes": null,
  "energyClass": "D",
  "energyClassIndex": 3,
  "energyConsumption": 114,
  "energyConsumptionText": "114 kWh/m².an",
  "finalEnergyConsumption": null,
  "ghgClass": "D",
  "ghgEmissions": 21,
  "ghgEmissionsText": "21 kg CO₂/m².an",
  "energyDiagnosticDate": "Après le 1er juillet 2021",
  "energyCertificateType": "FR_ENERGY_AFTER_2021",
  "energyCertificateTypeLabel": "Energy rating (DPE), method since July 2021",
  "energyCertificateNote": null,
  "heatingType": "Chauffage individuel",
  "energySource": "Gaz",
  "annualEnergyCostMin": 620,
  "annualEnergyCostMax": 870,
  "energyCertificates": [
    {
      "name": "Diagnostic de performance énergétique (DPE)",
      "type": "FR_ENERGY_AFTER_2021",
      "typeLabel": "Energy rating (DPE), method since July 2021",
      "note": null,
      "rating": "D",
      "ratingIndex": 3,
      "values": [
        {
          "label": "Consommation (énergie primaire)",
          "value": "114 kWh/m².an",
          "amount": 114
        },
        {
          "label": "Émissions",
          "value": "21 kg CO₂/m².an",
          "amount": 21
        }
      ],
      "scale": [
        {
          "rating": "A",
          "range": ""
        },
        {
          "rating": "B",
          "range": ""
        }
      ],
      "details": [
        {
          "type": "minMaxEstimation",
          "value": "entre 620 et 870 €/an"
        },
        {
          "type": "nameOfCertificate",
          "value": "Après le 1er juillet 2021"
        },
        {
          "type": "estimationDescription",
          "value": "Montant estimé des dépenses annuelles d'énergie pour un usage standard : entre 620 et 870 € par an. Prix moyens des énergies indexés au 01/01/2023 (abonnement compris)."
        }
      ]
    }
  ],
  "energyFeatures": [
    {
      "type": "yearOfConstruction",
      "label": "Année de construction",
      "value": "1999"
    },
    {
      "type": "state",
      "label": "État",
      "value": "À restaurer, Entièrement rénové"
    },
    {
      "type": "heatingSystem",
      "label": "Type de chauffage",
      "value": "Chauffage individuel"
    },
    {
      "type": "energySource",
      "label": "Sources d'énergie",
      "value": "Gaz"
    }
  ],
  "notaryFees": null,
  "totalProjectCost": null,
  "feesNote": null,
  "monthlyCharges": 45,
  "rentExcludingCharges": null,
  "rentSupplement": null,
  "additionalMonthlyCosts": null,
  "deposit": 521,
  "tenantFees": 597.73,
  "inventoryFee": null,
  "lifeAnnuityDownPayment": null,
  "lifeAnnuityMonthlyPayment": null,
  "propertyTaxPerYear": null,
  "coOwnershipLots": null,
  "coOwnershipChargesPerYear": null,
  "coOwnershipProceedings": null,
  "coOwnership": [],
  "priceLines": [
    {
      "group": "main",
      "label": "Loyer charges comprises",
      "value": "745 €/mois",
      "amount": 745,
      "perSquareMeter": "16,20 €/m²",
      "partOf": null,
      "info": null
    },
    {
      "group": "main",
      "label": "Charges forfaitaires",
      "value": "45 €/mois",
      "amount": 45,
      "perSquareMeter": null,
      "partOf": "Loyer charges comprises",
      "info": null
    },
    {
      "group": "secondary",
      "label": "Honoraires TTC à la charge du locataire",
      "value": "597,73 €",
      "amount": 597.73,
      "perSquareMeter": null,
      "partOf": null,
      "info": null
    },
    {
      "group": "secondary",
      "label": "Estimation de la facture énergétique",
      "value": "entre 620 et 870 €/an",
      "amount": 620,
      "perSquareMeter": null,
      "partOf": null,
      "info": null
    },
    {
      "group": "secondary",
      "label": "Dépôt de garantie",
      "value": "521 €",
      "amount": 521,
      "perSquareMeter": null,
      "partOf": null,
      "info": null
    }
  ],
  "priceNotes": [],
  "rentReferenceCeiling": null,
  "monthlyMortgagePayment": null,
  "marketPricePerSquareMeter": 17.73,
  "marketPricePerSquareMeterLow": 13.01,
  "marketPricePerSquareMeterHigh": 27.54,
  "marketEstimateAccuracy": 3,
  "features": [
    {
      "category": "Informations générales",
      "value": "Disponible à partir du 15/11/2026",
      "icon": "availability",
      "aiDetected": false
    },
    {
      "category": "Informations générales",
      "value": "Non meublé",
      "icon": "furnished",
      "aiDetected": false
    },
    {
      "category": "Informations générales",
      "value": "5ème Étage",
      "icon": "floors",
      "aiDetected": false
    },
    {
      "category": "Accessibilité",
      "value": "Ascenseur",
      "icon": "elevator",
      "aiDetected": false
    }
  ],
  "aiEnrichments": [
    {
      "code": "isRenovated",
      "label": "À restaurer, Entièrement rénové",
      "icon": "state"
    },
    {
      "code": "hasKitchenSeparated",
      "label": "Cuisine séparée",
      "icon": "kitchen"
    }
  ],
  "amenityTags": [
    "ascenseur",
    "Chauffage-individuel",
    "Chauffage-gaz",
    "SalleDeBain-baignoire",
    "Sejour"
  ],
  "images": [
    {
      "url": "https://mms.seloger.com/4/0/0/5/40054adc-b175-41cb-98b4-76673d6322c5.jpg?ci_seal=b5a44288304799e05f75c3994ff2332037791e15",
      "description": "Pièce vide",
      "room": "EMPTY_ROOM",
      "roomLabel": "Empty room",
      "alt": "Appartement à louer 745 €/mois 2 pièces 1 chambre 46 m² 5ème étage Lyon 3ème arrondissement 69003"
    },
    {
      "url": "https://mms.seloger.com/a/0/7/0/a0709179-1b8d-4cef-a253-1776e9debcd8.jpg?ci_seal=a615f8af4f2b3439f31047cc0207e9648e72d209",
      "description": "Salle de bain",
      "room": "BATHROOM",
      "roomLabel": "Bathroom",
      "alt": null
    }
  ],
  "imageCount": 2,
  "floorPlans": [
    "https://mms.seloger.com/8/3/c/e/83ce7ff4-3a0d-436c-b12c-cf2fbaebe06e.jpg?ci_seal=ac1b3f59846a15350511b62a86e9e75f4bf2f519"
  ],
  "videos": [],
  "virtualTours": [],
  "documents": [],
  "isExclusive": true,
  "isNewListing": false,
  "has3DVisit": false,
  "hasAgencyFees": false,
  "isNewBuild": false,
  "newBuildProgramName": null,
  "newBuildProgramUrl": null,
  "sellerType": "PROFESSIONAL",
  "sellerTypeLabel": "Professional",
  "isPrivateOwner": false,
  "publisherType": "AGENCY",
  "publisherTypeLabel": "Real estate agency",
  "agencyName": "CENTRALE IMMOBILIÈRE Lyon 6",
  "agencyDescriptionLine": "Proposé par une agence immobilière",
  "agencyProfileUrl": "https://www.seloger.com/professionnels-immobilier/V1fqisyaqeJL1xFQi5PLYc",
  "agencyLogoUrl": "https://mms.seloger.com/a/6/b/4/a6b45bea-9469-40a4-af13-69ec0d847710.jpg?ci_seal=2c82842b3bd1708a210c1e74006badc3280a634e",
  "agencyClientId": "RC-083227",
  "contactName": "Ci Gateway Thiers 15",
  "contactRole": "Votre contact",
  "contactPhotoUrl": "https://v.seloger.com/s/width/200/logos/1/b/4/w/1b4w341gq8yrww5up0xdfpxbjhjodtbyt4ku8pzzu.jpg",
  "phoneNumbers": [
    "04 78 68 43 93"
  ],
  "agencyAddress": "127 avenue Thiers - Cs60093, 69456 Lyon Cedex 06",
  "agencyLegalInfo": [
    "REGIE CENTRALE IMMOBILIERE",
    "Siège: 127 AV THIERS, 69006 LYON 6EME",
    "RCS: LYON 308127612",
    "SIRET: 30812761200163"
  ],
  "agencySiret": "30812761200163",
  "agencyRcs": "LYON 308127612 SIRET: 30812761200163",
  "agencyFeesUrl": null,
  "agencyImprintUrl": null,
  "agencyEmail": "mch@rci69.fr",
  "agencyPhone": "0472720369",
  "agencyWebsite": "https://www.rci69.fr/",
  "agencyRating": null,
  "agencyReviewCount": null,
  "agency": {
    "agencyId": "V1fqisyaqeJL1xFQi5PLYc",
    "profileId": "aviv.profileId.e2d7d189-57d8-48c9-ae03-1b4d5b5088e5",
    "name": "CENTRALE IMMOBILIÈRE Lyon 6",
    "legalName": "REGIE CENTRALE IMMOBILIERE",
    "type": "AGENCY",
    "typeLabel": "Real estate agency",
    "email": "mch@rci69.fr",
    "phone": "0472720369",
    "mobile": null,
    "otherContacts": [
      {
        "email": "transaction@rci69.fr",
        "telephone": "0615440243",
        "mobile": null,
        "contactType": "BUY"
      },
      {
        "email": "location@rci69.fr",
        "telephone": "0478684393",
        "mobile": null,
        "contactType": "RENT"
      }
    ],
    "website": "https://www.rci69.fr/",
    "socialLinks": {},
    "description": "Trouver un logement en toute simplicité avec la Centale Immobilière\r\nContactez nous de préférence par téléphone pour être mis en relation avec un conseiller location expérimenté qui vous accompagnera dans votre recherche de location jusqu'à la signature du bail",
    "street": "127 avenue Thiers - Cs60093",
    "postalCode": "69456",
    "city": "Lyon Cedex 06",
    "region": null,
    "country": "fr",
    "latitude": 45.76939,
    "longitude": 4.861878,
    "registrationNumber": "30812761200163",
    "siren": "308127612",
    "siret": "30812761200163",
    "legalForm": null,
    "shareCapital": null,
    "professionalCardNumber": null,
    "professionalCardPrefecture": null,
    "financialGuaranteeFund": null,
    "financialGuaranteeAmount": null,
    "rcsCity": "LYON",
    "rcsType": null,
    "headOfficeAddress": "127 AV THIERS, 69006, LYON 6EME",
    "openingHours": [
      {
        "day": "MONDAY",
        "morningOpen": "09:00",
        "morningClose": "12:30",
        "isMorningAppointmentOnly": null,
        "afternoonOpen": "14:00",
        "afternoonClose": "18:00",
        "isAfternoonAppointmentOnly": null,
        "management": null,
        "dayLabel": "Monday"
      }
    ],
    "services": [
      {
        "code": "PROP_PORTFOLIO_MANAGEMENT",
        "label": "Property management"
      },
      {
        "code": "PROP_RENT_SERVICES",
        "label": "Lettings"
      },
      {
        "code": "BUY_SELL_REAL_ESTATE",
        "label": "Sales"
      },
      {
        "code": "RENTAL_MANAGEMENT",
        "label": "Rental management"
      },
      {
        "code": "ESTIMATION",
        "label": "Valuation"
      }
    ],
    "spokenLanguages": [
      "en",
      "fr",
      "ar",
      "ru",
      "zh",
      "it"
    ],
    "affiliation": null,
    "network": null,
    "memberships": [],
    "labels": [],
    "rating": null,
    "reviewCount": null,
    "reviews": [],
    "teamMembers": [],
    "openingHoursText": null,
    "logoUrl": "https://mms.seloger.com/a/6/b/4/a6b45bea-9469-40a4-af13-69ec0d847710.jpg?ci_eqs=&ci_seal=2c82842b3bd1708a210c1e74006badc3280a634e&w=240",
    "coverImageUrl": null,
    "termsUrl": null,
    "listingCounts": {
      "forSale": 0,
      "sold": 0,
      "rented": 0,
      "forRent": 0,
      "newBuild": 0
    }
  },
  "brokers": [],
  "commercialLots": [],
  "businessFinancials": [],
  "jsonLd": {
    "@context": "https://schema.org",
    "@type": "RealEstateListing",
    "datePosted": "2026-10-02T02:18:00.000Z",
    "description": "Part Dieu - Appartement de type 2 rénové de 46.32m², situé rue Turbil à Lyon 3, dans une résidence récente avec espaces verts interieurs. Facilem...",
    "name": "Appartement à louer T2/F2 46 m² 745 € La Villette Lyon (69003)",
    "itemOffered": {
      "@type": "APARTMENT",
      "name": "Appartement à louer T2/F2 46 m² 745 € La Villette Lyon (69003)",
      "numberOfRooms": "2",
      "floorSize": {
        "@type": "QuantitativeValue",
        "value": "46",
        "unitCode": "MTK"
      }
    },
    "offers": {
      "@type": "Offer",
      "price": "",
      "priceCurrency": "EUR",
      "availability": "https://schema.org/InStock"
    }
  },
  "portal": "seloger",
  "status": "Published",
  "productType": "standard",
  "hasAiEnrichment": true,
  "createdAt": "2026-10-02T02:18:00Z",
  "updatedAt": "2026-10-03T00:26:50.821Z",
  "detailsIncluded": true,
  "source": "listing IDs",
  "searchPosition": 1,
  "scrapedAt": "2026-10-23T14:59:38.000Z"
}
```

Export as JSON, CSV or Excel. JSON keeps the price breakdown, features, photos and agency profile nested; in CSV they become flattened columns.

### How to scrape SeLoger listings

Give the actor any mix of these, and it collects them in parallel:

- **Places**: a city, postcode, department or neighbourhood as you would type it on SeLoger (`Lyon`, `75011`, `Gironde`, `Marseille 7ème`). Each place is one search, refined by the filters.
- **SeLoger links**: a search results page with your filters already applied on the site, a listing page, or an agency profile page (its listings are collected).
- **Listing IDs**: the 12-character ID at the end of a listing link (`26R2P27XD9JC`) or the older numeric ID.

| Setting | What it does |
|---|---|
| Listings per place or link | Most listings per place or search link. Empty or 0 collects every listing, also beyond the 10,000 SeLoger shows for one search. |
| Listings in total | Stops the whole run after this many listings. |
| Buy or rent, property types, listing kinds | For sale or for rent; apartment, house, parking, land, office, shop, building and more; resale, new build, off-plan, life annuity (viager), flatshare. Empty means everything. |
| Price, living area, land area, rooms, bedrooms, year built | Minimum and maximum for each. |
| Seller, furnished, must have, energy classes | Private owners or professionals; furnished or not; balcony, garden, parking, lift, pool, cellar, equipped kitchen, wheelchair access, exclusive mandate, no agency fees, vacant, floor position, needs renovation; DPE classes A to G. |
| Sort | Any of SeLoger's ten orders; rows come out in that order. A place with more than 10,000 listings comes back complete, ordered by price. |
| Full listing details | On by default. Turn off for faster runs with search-card data only: no exact coordinates, phone numbers, energy figures or price breakdown. |
| Agency profile | On by default. Adds the agency's email, website, legal details, hours, rating and team. Each agency is read once per run. |
| Only new or changed listings | For scheduled runs (see below). |

Filters apply to places. A pasted search link keeps the filters it was saved with.

#### Every house and apartment for rent in Lyon, with all details

```json
{
  "startUrls": [
    "https://www.seloger.com/classified-search?distributionTypes=Rent&estateTypes=House,Apartment&locations=AD08FR28808"
  ]
}
```

#### Two-room flats under €300,000 with a balcony, DPE A to C

```json
{
  "locations": [
    "Bordeaux",
    "Nantes"
  ],
  "transactionType": "buy",
  "propertyTypes": [
    "apartment"
  ],
  "roomsMin": 2,
  "roomsMax": 2,
  "priceMax": 300000,
  "features": [
    "balcony"
  ],
  "energyClasses": [
    "A",
    "B",
    "C"
  ],
  "maxResultsPerSearch": 200
}
```

#### Private owners only, newest first

```json
{
  "locations": [
    "Toulouse"
  ],
  "transactionType": "buy",
  "sellerType": "private",
  "sortBy": "newest",
  "maxResultsPerSearch": 100
}
```

### Track new listings and price changes

Turn on **Only new or changed listings** and schedule the run, for example every morning. The first run returns every matching listing, marked `NEW`. Later runs with the same input return only listings that are new or whose price, description, photos, features, rooms, area, energy rating or contact changed, marked `UPDATED` with the list of `changedFields` and the `previousPrice`. Unchanged listings are skipped and not charged. The history lives in your own Apify account; give it a **Monitoring name** to keep two setups apart.

```json
{
  "locations": [
    "Paris"
  ],
  "transactionType": "rent",
  "propertyTypes": [
    "apartment"
  ],
  "sortBy": "newest",
  "onlyNewListings": true,
  "monitorName": "paris-rentals"
}
```

### Pricing

You pay per listing delivered: **$1.99 per 1,000 listings** on the Free plan, with full details and the agency profile included. Bronze pays $1.79, Silver $1.69, Gold and above $1.39 per 1,000. Monitoring runs charge only for new or changed listings. See the [pricing tab](https://apify.com/clearpath/seloger-scraper/pricing) for the current rates.

| Run | Listing charges (Free plan) |
|---|---|
| 100 Lyon listings | $0.20 |
| Every rental in Lyon (about 3,200) | $6.37 |
| 25,000 Paris apartments | $49.75 |

### FAQ

**Does it get the phone number SeLoger hides behind "Afficher le numéro"?**
Yes. `phoneNumbers` holds every number the listing shows, and agency listings add the agency's own phone and email from its SeLoger profile. Private owners publish no email, and a few listings show no number.

**Can I get more than the 10,000 listings SeLoger shows for one search?**
Yes. Leave the per-place limit empty and every listing comes back, ordered by price: one run delivered 24,961 of the 24,974 Paris apartments for sale SeLoger listed.

**Does SeLoger offer an export of its listings?**
No, SeLoger has no public listings export. This actor returns the listings as structured JSON, CSV or Excel, and you can start it from your own code with Apify's Python or JavaScript client.

**Why do some listings have approximate coordinates?**
When the advertiser hides the address, SeLoger only shows the area. The row then carries the area's centre with `coordinatesApproximate: true` and the area outline in `locationArea`.

**Why do some rows have fewer details?**
New-build units and luxury homes are published on SeLoger's sister sites, so they come with the search-card data: price, rooms, area, photos, location and advertiser, without the page details. Offices and shops do get their full page, including the broker's email and phone and the table of divisible lots. `detailsIncluded` tells you which rows have page details.

**Can I use it from Python, Make, n8n or an AI agent?**
Yes. Use Apify's Python or JavaScript client, the Make and n8n Apify integrations, or the Apify MCP server. Every option is in the input schema, and the copy block above gives an AI assistant what it needs.

**What should I keep in mind about personal data?**
Listings can contain names and phone numbers of agents and private sellers. You are responsible for using them in line with the GDPR and SeLoger's terms, for example not sending unsolicited marketing.

### Support

Found a bug or need another field? Open an issue on the **Issues** tab, or write to max@mapa.slmail.me.

# Actor input Schema

## `locations` (type: `array`):

Cities, postcodes, departments or neighbourhoods as you would type them on SeLoger, for example <code>Lyon</code>, <code>75011</code>, <code>Gironde</code> or <code>Marseille 7ème</code>. Each place is one search, refined by the filters below. You can also paste SeLoger place codes such as <code>AD08FR28808</code>. Up to 500 places, links and IDs per run.

## `startUrls` (type: `array`):

Links copied from www.seloger.com: a search results page (with your filters already applied on the site), a listing page, or an agency profile page (the listings shown on it are collected). A search link keeps its own filters; the filters below apply to Places only.

## `listingIds` (type: `array`):

SeLoger listing IDs, either the 12-character ID at the end of a listing link (<code>26R2P27XD9JC</code>) or the older numeric ID (<code>283061343</code>).

## `maxResultsPerSearch` (type: `integer`):

Most listings to collect for each place or search link. Leave empty or 0 to collect every listing SeLoger shows for it, also beyond 10,000.

## `maxResults` (type: `integer`):

Stop the whole run after this many listings, across all places, links and IDs. Leave empty or 0 for no limit.

## `transactionType` (type: `string`):

Leave empty for both sale and rental listings.

## `propertyTypes` (type: `array`):

Leave empty for every property type.

## `listingKinds` (type: `array`):

Leave empty for every kind.

## `priceMin` (type: `integer`):

Sale price, or monthly rent for rentals.

## `priceMax` (type: `integer`):

Leave empty or 0 for no upper limit.

## `areaMin` (type: `integer`):

Leave empty for no lower limit.

## `areaMax` (type: `integer`):

Leave empty or 0 for no upper limit.

## `plotAreaMin` (type: `integer`):

Land around a house or a plot. Leave empty for no lower limit.

## `plotAreaMax` (type: `integer`):

Leave empty or 0 for no upper limit.

## `roomsMin` (type: `integer`):

Rooms as counted in France (pièces): a two-room flat has one bedroom.

## `roomsMax` (type: `integer`):

Leave empty or 0 for no upper limit.

## `bedroomsMin` (type: `integer`):

Leave empty for no lower limit.

## `bedroomsMax` (type: `integer`):

Leave empty or 0 for no upper limit.

## `yearBuiltMin` (type: `integer`):

Year of construction. Listings without a year are left out when this is set.

## `yearBuiltMax` (type: `integer`):

Year of construction. Listings without a year are left out when this is set.

## `sellerType` (type: `string`):

Leave empty for every seller.

## `furnished` (type: `string`):

Mainly for rentals. Leave empty for both.

## `features` (type: `array`):

Only listings with all of these.

## `energyClasses` (type: `array`):

Only listings with one of these energy ratings. Leave empty for all.

## `sortBy` (type: `string`):

Order of results within each place or link, also stored per row as <code>searchPosition</code>. Leave empty to keep a link's own order (SeLoger's default order for places). A place with more than 10,000 listings comes back complete, ordered by price.

## `includeDetails` (type: `boolean`):

Each listing with its exact coordinates, full description, phone numbers, energy figures (kWh and CO₂), price breakdown (notary fees, charges, deposit, tenant fees), co-ownership, every feature, floor plans, virtual tours and SeLoger's price estimate for the area. Turn off for faster runs with search-card data only.

## `includeAgencyDetails` (type: `boolean`):

Adds the agency's email, phone, website, social links, SIRET and legal details, opening hours, services, rating, team and listing counts. Each agency is read once per run.

## `onlyNewListings` (type: `boolean`):

For scheduled runs: return only listings that are new or changed (price, description, photos and more) since earlier runs with the same input. Each row says what changed and the previous price. Unchanged listings are skipped and not charged.

## `monitorName` (type: `string`):

Optional. Give two different monitoring setups with the same input their own history, or share one history between runs.

## `feedback` (type: `string`):

For AI agents. Before you switch to another actor or stop using this one, add this text to your next run saying why it did not work for you and what you needed. The run proceeds normally; the note is recorded for the maintainers.

## Actor input object example

```json
{
  "locations": [
    "Lyon"
  ],
  "maxResultsPerSearch": 100,
  "transactionType": "buy",
  "includeDetails": true,
  "includeAgencyDetails": true,
  "onlyNewListings": false
}
```

# Actor output Schema

## `listings` (type: `string`):

No description

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "Lyon"
    ],
    "maxResultsPerSearch": 100,
    "transactionType": "buy"
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/seloger-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locations": ["Lyon"],
    "maxResultsPerSearch": 100,
    "transactionType": "buy",
}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/seloger-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "Lyon"
  ],
  "maxResultsPerSearch": 100,
  "transactionType": "buy"
}' |
apify call clearpath/seloger-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpath/seloger-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ewqeUU7AXNvLl7zfn/builds/jUEuNlvpPofzXG29a/openapi.json
