# SeLoger Scraper (`data_forge_org/apify-seloger`) Actor

Récupérez les annonces immobilières de SeLoger : appartements, maisons, locations, prix, surfaces, pièces, DPE/GES, photos, contacts d'agences et détails complets, avec une tarification à l'usage.

- **URL**: https://apify.com/data\_forge\_org/apify-seloger.md
- **Developed by:** [Data Forge](https://apify.com/data_forge_org) (community)
- **Categories:** Real estate, Automation, AI
- **Stats:** 3 total users, 0 monthly users, 96.7% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.50 / 1,000 annonces

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Scraper SeLoger

Extrayez les annonces immobilières de [SeLoger.com](https://www.seloger.com) avec un scraper rapide, fiable et simple à utiliser. Cet Actor Apify permet de récupérer les résultats de recherche, les prix, surfaces, pièces, DPE, photos, agences et, si besoin, les détails complets de chaque annonce.

Sa particularité : une **tarification à l’usage**, pour ne payer que les données réellement extraites.

***

### Pourquoi utiliser ce scraper SeLoger ?

- **Extraction rapide des résultats de recherche** — scrape une ou plusieurs pages de résultats SeLoger.
- **Données détaillées en option** — enrichit chaque annonce avec les informations de la page détail : DPE, GES, photos, agent, mensualité estimée, référence agence, etc.
- **Tarification à l’usage** — vous payez selon le volume réellement extrait, sans forfait inutile.
- **Simple à intégrer** — utilisable depuis l’interface Apify, l’API Apify ou vos automatisations.
- **Pensé pour des usages concrets** — veille immobilière, analyse de marché, enrichissement de données et suivi concurrentiel.

***

### Cas d’usage

#### Veille immobilière

Surveillez les nouvelles annonces, les baisses de prix et les biens concurrents sur une zone géographique donnée.

#### Agences immobilières

Analysez l’offre visible sur SeLoger pour mieux suivre votre marché local.

#### Investissement immobilier

Filtrez les annonces selon le prix, la surface, le nombre de pièces, le type de projet (neuf, ancien, viager), les équipements (parking, jardin, piscine) ou les performances énergétiques.

#### Outils et automatisations

Alimentez un CRM, un tableau de bord, une base interne ou un moteur d’alertes avec des données SeLoger structurées.

***

### Données extraites

#### Annonces depuis les pages de résultats

| Champ | Description |
|---|---|
| `url` | URL de l'annonce |
| `annonce_id` | Identifiant SeLoger |
| `site` | `SeLoger` ou `Belles Demeures` |
| `transaction` | `achat` ou `location` |
| `type_bien` | Type de bien |
| `prix` | Prix en € |
| `surface_m2` | Surface habitable en m² |
| `nb_pieces` | Nombre de pièces |
| `etage` | Étage |
| `agence` | Nom de l'agence |
| `ville` | Ville |
| `code_postal` | Code postal |
| `dpe` | Classe DPE (A-G) |

#### Détails complets de l’annonce

Si `include_details` est activé, des champs supplémentaires sont extraits depuis la page détail :

**Identification**

| Champ | Description |
|---|---|
| `id_interne` | Identifiant interne SeLoger |
| `titre_annonce` | Titre de l’annonce |
| `description` | Description complète |
| `date_creation` | Date de publication (YYYY-MM-DD) |
| `date_maj` | Date de mise à jour (YYYY-MM-DD) |
| `reference_annonce` | Référence agence de l’annonce |

**Médias**

| Champ | Description |
|---|---|
| `photos` | Liste des photos `[{url, type}]` |
| `photo_principale` | URL de la première photo |
| `nb_photos_detail` | Nombre de photos |
| `photos_urls` | URLs des photos séparées par `\|` |
| `plans_urls` | URLs des plans séparées par `\|` |
| `visite_virtuelle` | URL de la visite virtuelle (si disponible) |

**Localisation**

| Champ | Description |
|---|---|
| `latitude` | Latitude GPS |
| `longitude` | Longitude GPS |
| `ville` | Ville (depuis la page détail) |

**Équipements**

| Champ | Description |
|---|---|
| `balcon` | Présence d’un balcon (booléen) |
| `terrasse` | Présence d’une terrasse (booléen) |
| `cave` | Présence d’une cave (booléen) |
| `ascenseur` | Présence d’un ascenseur (booléen) |
| `parking` | Présence d’un parking (booléen) |
| `meuble` | Bien meublé (booléen) |
| `amenities_str` | Tous les équipements sous forme de texte |

**Énergie & état**

| Champ | Description |
|---|---|
| `dpe_classe` | Classe DPE (A–G) |
| `ges_classe` | Classe GES (A–G) |
| `dpe_kwh_m2_year` | Consommation énergétique primaire (kWh/m²/an) |
| `ges_co2_kg_m2_year` | Émissions GES (kg CO₂/m²/an) |
| `dpe_avant_2021` | DPE réalisé avant 2021 (booléen) |
| `etat_bien` | État du bien (neuf, ancien, etc.) |
| `type_chauffage` | Type de chauffage |
| `energie_source` | Source d’énergie |
| `annee_construction` | Année de construction |
| `facture_energie` | Estimation de la facture énergétique annuelle |

**Copropriété**

| Champ | Description |
|---|---|
| `charges_copro_annuelles_eur` | Charges annuelles de copropriété (€) |
| `nb_lots_copropriete` | Nombre de lots en copropriété |
| `fonds_de_travaux_eur` | Fonds de travaux (€) |
| `procedure_syndicale` | Procédure syndicale en cours |

**Prix location**

| Champ | Description |
|---|---|
| `charges_incluses` | Loyer charges comprises (booléen) |
| `loyer_hc` | Loyer hors charges (€/mois) |
| `charges_locatives_eur` | Provisions ou charges forfaitaires (€/mois) |
| `depot_de_garantie_eur` | Dépôt de garantie (€) |
| `complement_de_loyer` | Complément de loyer (€/mois) |

**Prix achat**

| Champ | Description |
|---|---|
| `mensualite_estimee` | Mensualité estimée (€/mois) |

**Tags**

| Champ | Description |
|---|---|
| `is_exclusive` | Annonce en exclusivité (booléen) |
| `has_3d_visit` | Visite 3D disponible (booléen) |
| `is_new_listing` | Nouvelle annonce (booléen) |
| `viager` | Vente en viager (booléen) |

**Agence & agent**

| Champ | Description |
|---|---|
| `agence_nom` | Nom de l’agence |
| `agence_website` | Site web de l’agence |
| `is_private_owner` | Particulier (booléen) |
| `nom_agent` | Nom du conseiller |
| `note_agence` | Note de l’agence (/5) |
| `nb_avis_agence` | Nombre d’avis |

***

### Paramètres d’entrée

| Champ | Type | Défaut | Description |
|---|---|---|---|
| `transaction` | `achat` | `location` | `achat` | Type de transaction |
| `prop_type` | `appartement` | `maison` | `terrain` | `appartement` | Type de bien |
| `city_slug` | chaîne | `paris-75` | Ville ciblée, par exemple `lyon-69` |
| `min_price` | entier | — | Prix minimum en € |
| `max_price` | entier | — | Prix maximum en € |
| `min_surface` | entier | — | Surface minimale en m² |
| `max_surface` | entier | — | Surface maximale en m² |
| `nb_pages` | entier (1-100) | `1` | Nombre de pages de résultats à scraper |
| `include_details` | booléen | `false` | Active l’extraction des pages détail |
| `min_rooms` | entier | — | Nombre de pièces minimum |
| `max_rooms` | entier | — | Nombre de pièces maximum |
| `min_bedrooms` | entier | — | Nombre de chambres minimum |
| `max_bedrooms` | entier | — | Nombre de chambres maximum |
| `min_plot_space` | entier | — | Surface terrain minimum (m²) — maison ou terrain uniquement |
| `max_plot_space` | entier | — | Surface terrain maximum (m²) — maison ou terrain uniquement |
| `project_types` | string\[] | — | `Resale` (ancien), `New_Build` (neuf), `Projected`\* (projet), `Life_Annuity` (viager) |
| `features_included` | string\[] | — | `Parking_Garage`, `Balcony_Terrace`, `Garden`, `Swimming_Pool`, `Cellar`, `Elevator`, `Furnished`, et autres — critères cumulatifs (ET) |
| `build_states` | string\[] | — | `Need_Of_Renovation` (à rénover) |

> \* `Projected` (projet de construction) est ignoré silencieusement par SeLoger pour `prop_type=appartement` ; uniquement valide pour `prop_type=maison`.

***

### Exemple d’entrée

Recherche standard :

```json
{
  "transaction": "achat",
  "prop_type": "appartement",
  "city_slug": "paris-75",
  "min_price": 300000,
  "max_price": 600000,
  "min_surface": 35,
  "max_surface": 100,
  "nb_pages": 3,
  "include_details": true
}
```

Avec filtres avancés (pièces, type de projet, équipements) :

```json
{
  "transaction": "achat",
  "prop_type": "appartement",
  "city_slug": "lyon-69",
  "min_rooms": 3,
  "max_price": 400000,
  "project_types": ["Resale"],
  "features_included": ["Parking_Garage", "Balcony_Terrace"],
  "nb_pages": 5
}
```

***

### Exemple de sortie

```json
{
  "url": "https://www.seloger.com/annonces/achat/appartement/paris-75/270317887.htm",
  "annonce_id": "270317887",
  "site": "SeLoger",
  "transaction": "achat",
  "type_bien": "Appartement",
  "prix": 598000,
  "surface_m2": 58,
  "nb_pieces": 3,
  "agence": "Nom Agence",
  "ville": "Paris",
  "code_postal": "75011",
  "dpe": "E",
  "titre_annonce": "Appartement 3 pièces de 58m²",
  "description": "Bel appartement lumineux au 4e étage...",
  "date_creation": "2024-03-15",
  "date_maj": "2024-04-01",
  "latitude": 48.8566,
  "longitude": 2.3522,
  "dpe_classe": "E",
  "ges_classe": "B",
  "dpe_kwh_m2_year": 210.0,
  "ges_co2_kg_m2_year": 45.0,
  "dpe_avant_2021": false,
  "balcon": true,
  "terrasse": false,
  "cave": true,
  "ascenseur": true,
  "parking": null,
  "meuble": false,
  "charges_copro_annuelles_eur": 2400,
  "nb_lots_copropriete": 32,
  "mensualite_estimee": 2100,
  "is_exclusive": false,
  "has_3d_visit": true,
  "is_new_listing": false,
  "viager": false,
  "agence_nom": "Agence Centrale Paris",
  "agence_website": "https://www.agencecentrale.fr/",
  "is_private_owner": false,
  "nom_agent": "Laura Nahon",
  "note_agence": 4.6,
  "nb_avis_agence": 128,
  "photo_principale": "https://photos.seloger.com/photos/270317887_1.jpg",
  "nb_photos_detail": 12
}
```

***

### Tarification

Ce scraper SeLoger fonctionne avec une **tarification à l’usage** : vous payez uniquement les événements réellement consommés.

| Événement | Prix |
|---|---|
| Démarrage de l'Actor (`apify-actor-start`) | **$0,003 / démarrage** |
| Annonce récupérée (`listing-scraped`) | **$1,50 / 1 000 annonces** |
| Détails complets (`detail-scraped`) | **$5,00 / 1 000 fiches détail** |

Ce modèle convient particulièrement bien si vous souhaitez :

- tester le scraper à faible coût ;
- maîtriser vos dépenses ;
- lancer des extractions ponctuelles ;
- payer en fonction de l’usage réel.

***

### FAQ

#### Quelle est la différence entre le mode standard et l’extraction détaillée ?

Le mode standard récupère les informations visibles depuis les pages de résultats. L’extraction détaillée ouvre chaque annonce pour obtenir davantage de champs.

#### Comment réduire les coûts ?

Limitez le nombre de pages, activez les détails uniquement si nécessaire, et ciblez précisément vos recherches selon votre besoin.

#### À quoi sert ce scraper concrètement ?

Il peut servir à la veille immobilière, à l’analyse de marché, à l’enrichissement de données, à la prospection ou à l’automatisation de workflows.

#### Quelles données peut-on récupérer ?

Les résultats de recherche incluent prix, surface, pièces, étage, agence, ville, code postal et classe DPE. En mode détail, vous obtenez en plus : photos, coordonnées GPS, équipements (balcon, cave, ascenseur, parking, meublé), données énergétiques complètes (DPE kWh, GES CO₂, état du bien), informations de copropriété, ventilation du loyer pour la location, tags (exclusivité, visite 3D, viager), et données d’agence (note, avis, site web).

***

### Ressources

- [Documentation API Apify](https://docs.apify.com/api/v2)
- [Intégrations Apify](https://apify.com/integrations)

***

### Support

Un bug, un besoin spécifique ou une fonctionnalité manquante ? Ouvrez un ticket directement sur la page de l’Actor.

# Actor input Schema

## `transaction` (type: `string`):

Rechercher des biens à vendre ou à louer.

## `prop_type` (type: `string`):

Type de bien immobilier à rechercher.

## `city_slug` (type: `string`):

Identifiant de ville utilisé par SeLoger, ex : paris-75, lyon-69, bordeaux-33.

## `min_price` (type: `integer`):

Prix minimum en euros. Laisser vide pour ne pas appliquer de limite.

## `max_price` (type: `integer`):

Prix maximum en euros. Laisser vide pour ne pas appliquer de limite.

## `min_surface` (type: `integer`):

Surface habitable minimum en m². Laisser vide pour ne pas appliquer de limite.

## `max_surface` (type: `integer`):

Surface habitable maximum en m². Laisser vide pour ne pas appliquer de limite.

## `nb_pages` (type: `integer`):

Nombre de pages de résultats à scraper (environ 20 annonces par page).

## `include_details` (type: `boolean`):

Si activé, chaque annonce inclut les informations complètes : description, photos, DPE/GES, diagnostics énergétiques, informations de copropriété, etc. Facturé séparément par annonce.

## `min_rooms` (type: `integer`):

Nombre minimum de pièces. Laisser vide pour ne pas appliquer de limite.

## `max_rooms` (type: `integer`):

Nombre maximum de pièces. Laisser vide pour ne pas appliquer de limite.

## `min_bedrooms` (type: `integer`):

Nombre minimum de chambres. Laisser vide pour ne pas appliquer de limite.

## `max_bedrooms` (type: `integer`):

Nombre maximum de chambres. Laisser vide pour ne pas appliquer de limite.

## `min_plot_space` (type: `integer`):

Surface du terrain minimum en m² (maison/terrain uniquement). Laisser vide pour ne pas appliquer de limite.

## `max_plot_space` (type: `integer`):

Surface du terrain maximum en m² (maison/terrain uniquement). Laisser vide pour ne pas appliquer de limite.

## `project_types` (type: `array`):

Filtrer par type de projet. Laisser vide pour tous les types.

## `features_included` (type: `array`):

Caractéristiques requises (toutes doivent être présentes).

## `build_states` (type: `array`):

Filtrer par état du bien.

## Actor input object example

```json
{
  "transaction": "achat",
  "prop_type": "appartement",
  "city_slug": "paris-75",
  "nb_pages": 1,
  "include_details": false
}
```

# Actor output Schema

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("data_forge_org/apify-seloger").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("data_forge_org/apify-seloger").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 '{}' |
apify call data_forge_org/apify-seloger --silent --output-dataset

```

## MCP server setup

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

```

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/jxX84n1tgce0jSG5e/builds/GMLa65tFLSjPXrYR5/openapi.json
