# Leforestier immo API scrapper (`gingery_matsutake/leforestier-immo-api-scrapper`) Actor

scrapper Leforestier

- **URL**: https://apify.com/gingery\_matsutake/leforestier-immo-api-scrapper.md
- **Developed by:** [moah](https://apify.com/gingery_matsutake) (community)
- **Categories:** Automation, Real estate
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Leforestier Immobilier Scraper

Cet Actor extrait automatiquement les **annonces immobilières de l'agence Leforestier Immobilier** publiées sur [leforestier-immobilier.com](https://www.leforestier-immobilier.com/fr/vendre-en-normandie), spécialiste de l'immobilier de caractère en Normandie (maisons de maître, châteaux et manoirs, propriétés équestres, maisons de campagne, appartements...). Donnez-lui simplement l'URL d'une page de catalogue (par exemple "À vendre en Normandie" ou une catégorie comme "Maison de maître") et il parcourt chaque fiche propriété pour en extraire le prix, les surfaces, le nombre de chambres, le DPE, les photos et la description complète.

Exécuté sur la plateforme Apify, vous bénéficiez en plus d'un accès via API, de la planification (scheduling) pour surveiller régulièrement les nouvelles propriétés mises en vente, d'intégrations (Zapier, Make, Google Sheets...) et du monitoring des exécutions.

### Pourquoi utiliser ce scraper Leforestier Immobilier ?

- **Veille immobilière** : suivez automatiquement les nouvelles propriétés mises en vente en Normandie sans consulter le site manuellement.
- **Agrégation de données** : alimentez un comparateur, un tableau de bord ou une base de données avec des annonces normalisées (prix, surface, chambres...).
- **Étude de marché** : analysez les prix au m² par secteur (côte d'Albâtre, Pays de Bray, Pays de Caux, boucles de la Seine...) ou par type de bien.
- **Génération de leads** : identifiez rapidement les biens correspondant aux critères de vos clients.

### Comment utiliser ce scraper

1. Cliquez sur **Try for free** (ou **Run**) sur la page de l'Actor.
2. Dans l'onglet **Input**, laissez l'URL de départ par défaut (page "À vendre en Normandie") ou remplacez-la par une autre page de catalogue du site (par exemple une catégorie précise comme "Château / Manoir").
3. Ajustez si besoin le nombre maximum de pages à visiter.
4. Cliquez sur **Start** et laissez l'Actor s'exécuter.
5. Une fois terminé, ouvrez l'onglet **Dataset** pour consulter, filtrer et exporter les résultats.

### Input

L'Actor accepte les champs suivants (voir l'onglet **Input** pour le formulaire complet) :

| Champ | Description | Défaut |
| --- | --- | --- |
| `startUrls` | Pages de catalogue à parcourir sur leforestier-immobilier.com | `https://www.leforestier-immobilier.com/fr/vendre-en-normandie` |
| `maxRequestsPerCrawl` | Nombre maximum de pages (catalogue + fiches) visitées | `200` |
| `maxConcurrency` | Nombre de pages téléchargées en parallèle | `10` |
| `proxyConfiguration` | Configuration du proxy (Apify Proxy recommandé) | Apify Proxy activé |

Exemple d'input :

```json
{
    "startUrls": [
        { "url": "https://www.leforestier-immobilier.com/fr/vendre-en-normandie" }
    ],
    "maxRequestsPerCrawl": 200
}
```

### Output

Chaque propriété extraite est enregistrée comme un objet JSON dans le dataset. Vous pouvez télécharger les résultats dans différents formats : JSON, HTML, CSV ou Excel.

```json
{
    "url": "https://www.leforestier-immobilier.com/fr/propriete/maison-de-campagne/authentique-longere-20-minutes-de-dieppe",
    "reference": "5813",
    "title": "Authentique longère à 20 minutes de Dieppe",
    "propertyType": "Maison de Campagne",
    "price": 260000,
    "priceCurrency": "EUR",
    "priceFormatted": "260 000 €",
    "bedrooms": 4,
    "bathrooms": 1,
    "livingAreaM2": 150,
    "landAreaM2": 3320,
    "dpe": "F",
    "ges": "F",
    "isExclusive": true,
    "isUnderOffer": false,
    "hasVirtualTour": false,
    "description": "Une longère au charme authentique\n\nConstruite au XVIIIe siècle...",
    "characteristics": {
        "Reference": "5813",
        "Surface au sol": "150 m2",
        "Chauffage": "Fioul"
    },
    "images": [
        "https://www.leforestier-immobilier.com/sites/default/files/styles/max_2600x2600/public/sweepbright/.../EXT1_0.jpg"
    ],
    "mainImageUrl": "https://www.leforestier-immobilier.com/sites/default/files/styles/max_2600x2600/public/sweepbright/.../EXT1_0.jpg",
    "latitude": 49.85125,
    "longitude": 1.24927,
    "scrapedAt": "2026-08-13T12:00:00+00:00"
}
```

#### Principaux champs

| Champ | Description |
| --- | --- |
| `title` | Titre de l'annonce |
| `reference` | Référence interne de la propriété |
| `propertyType` | Type de bien (maison de maître, château/manoir, maison de campagne...) |
| `price` / `priceFormatted` | Prix en euros (nombre et texte formaté) |
| `bedrooms`, `bathrooms` | Nombre de chambres et salles de bains |
| `livingAreaM2`, `landAreaM2` | Surface habitable et surface du terrain (m²) |
| `dpe`, `ges` | Lettres du diagnostic de performance énergétique et des gaz à effet de serre |
| `characteristics` | Ensemble complet des caractéristiques affichées sur la fiche (clé/valeur) |
| `images` | Liste des URLs des photos en haute résolution |
| `latitude`, `longitude` | Coordonnées GPS approximatives du bien |
| `isExclusive`, `isUnderOffer`, `hasVirtualTour` | Badges affichés sur l'annonce (exclusivité, sous offre, visite 3D) |

### Combien coûte le scraping de leforestier-immobilier.com ?

Ce site est entièrement rendu côté serveur (Drupal), ce qui permet à l'Actor d'utiliser un crawler HTTP léger (sans navigateur), rapide et peu coûteux en ressources. Le nombre d'unités de calcul consommées dépend principalement du nombre de propriétés visitées : comptez environ 1 à 2 requêtes HTTP par propriété. Le catalogue complet du site représente généralement quelques dizaines de biens, ce qui reste largement dans les limites du plan gratuit d'Apify.

### Astuces

- Pour ne récupérer qu'une catégorie précise (ex. uniquement les appartements), utilisez directement l'URL de cette catégorie comme `startUrls` plutôt que la page "Tous les biens".
- Réduisez `maxConcurrency` si vous souhaitez être particulièrement respectueux du serveur du site.
- Combinez cet Actor avec une planification (Schedule) pour être alerté des nouvelles annonces mises en ligne.

### FAQ, limites et support

Cet Actor n'extrait que des données déjà publiques, affichées sur les pages de catalogue et de fiches propriété du site. Il ne contourne aucune protection et respecte un rythme de requêtes raisonnable. Il est destiné à un usage légitime (veille de marché, agrégation de données publiques) ; assurez-vous que votre utilisation respecte les conditions d'utilisation du site cible.

Le site pouvant évoluer (changement de mise en page), certains champs peuvent occasionnellement manquer. Si vous rencontrez un problème, ouvrez un ticket dans l'onglet **Issues** de l'Actor. Une adaptation à un autre site immobilier ou des besoins d'extraction spécifiques peuvent également être développés sur demande.

# Actor input Schema

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

Pages de catalogue de leforestier-immobilier.com à parcourir (ex. "Tous les biens" ou une catégorie comme "Maison de maître").

## `maxRequestsPerCrawl` (type: `integer`):

Nombre maximum de pages (catalogue + fiches propriété) que l'Actor peut visiter durant l'exécution. Sert de garde-fou contre une exécution trop longue ou trop coûteuse.

## `maxConcurrency` (type: `integer`):

Nombre maximum de pages téléchargées en parallèle. Une valeur plus basse est plus respectueuse du serveur du site.

## `proxyConfiguration` (type: `object`):

Configuration du proxy à utiliser pour les requêtes.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.leforestier-immobilier.com/fr/vendre-en-normandie"
    }
  ],
  "maxRequestsPerCrawl": 200,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `properties` (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 = {
    "startUrls": [
        {
            "url": "https://www.leforestier-immobilier.com/fr/vendre-en-normandie"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("gingery_matsutake/leforestier-immo-api-scrapper").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 = { "startUrls": [{ "url": "https://www.leforestier-immobilier.com/fr/vendre-en-normandie" }] }

# Run the Actor and wait for it to finish
run = client.actor("gingery_matsutake/leforestier-immo-api-scrapper").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 '{
  "startUrls": [
    {
      "url": "https://www.leforestier-immobilier.com/fr/vendre-en-normandie"
    }
  ]
}' |
apify call gingery_matsutake/leforestier-immo-api-scrapper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gingery_matsutake/leforestier-immo-api-scrapper"
        }
    }
}
```

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/KdtG1b1bjrE3VMEkX/builds/hScGaXNLRoaxabCQC/openapi.json
