{
  "openapi": "3.0.1",
  "info": {
    "title": "Leboncoin Scraper [$1/1K💰] | French Real Estate · Prices & DPE",
    "description": "Scrape Leboncoin.fr — France's largest classifieds platform — for structured French real estate data. Extract prices in EUR, price per m², surface, rooms, DPE/GES energy ratings, GPS, photos, and seller info with SIRET. DataDome bypass via Chrome TLS impersonation plus French residential proxy.",
    "version": "1.1",
    "x-build-id": "LMOfWaYoHMT9Q1yzi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ahmed_jasarevic~leboncoin-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ahmed_jasarevic-leboncoin-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/ahmed_jasarevic~leboncoin-scraper/runs": {
      "post": {
        "operationId": "runs-sync-ahmed_jasarevic-leboncoin-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/ahmed_jasarevic~leboncoin-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ahmed_jasarevic-leboncoin-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "title": "Catégorie",
            "enum": [
              "0",
              "71",
              "33",
              "74",
              "1",
              "2",
              "3",
              "4",
              "5",
              "300",
              "7",
              "55",
              "6",
              "44",
              "50",
              "51",
              "8",
              "9",
              "10",
              "11",
              "13",
              "66",
              "12",
              "14",
              "15",
              "83",
              "82",
              "16",
              "17",
              "81",
              "43",
              "84",
              "18",
              "19",
              "96",
              "20",
              "45",
              "39",
              "46",
              "21",
              "52",
              "79",
              "23",
              "80",
              "54",
              "72",
              "22",
              "53",
              "47",
              "42",
              "24",
              "89",
              "40",
              "26",
              "25",
              "30",
              "27",
              "86",
              "48",
              "41",
              "88",
              "29",
              "85",
              "75",
              "76",
              "77",
              "56",
              "105",
              "57",
              "59",
              "106",
              "58",
              "32",
              "61",
              "62",
              "63",
              "64",
              "31",
              "101",
              "100",
              "35",
              "65",
              "36",
              "103",
              "49",
              "99",
              "102",
              "92",
              "95",
              "93",
              "97",
              "98",
              "34",
              "1000",
              "37",
              "38",
              "1002",
              "2001"
            ],
            "type": "string",
            "description": "ID de la catégorie leboncoin. 0 = toutes catégories, 9 = Ventes immobilières, 10 = Locations, 2 = Voitures, 15 = Ordinateurs, 75 = Animaux... Choisissez la rubrique exacte pour cibler les bonnes annonces.",
            "default": "9"
          },
          "categoryId": {
            "title": "Catégorie (ID brut, avancé)",
            "type": "string",
            "description": "Saisie directe d'un ID de catégorie. Si renseigné, elle écrase le champ Catégorie ci-dessus. Utile pour une rubrique absente de la liste."
          },
          "searchUrl": {
            "title": "URL de recherche leboncoin",
            "pattern": "^https?://",
            "type": "string",
            "description": "Collez l'URL complète d'une page de recherche leboncoin (https://www.leboncoin.fr/recherche?...). Tous les filtres de cette URL (catégorie, prix, localisation, mots-clés, tri) remplacent les champs ci-dessus, sauf ceux saisis explicitement. C'est la méthode la plus fiable pour reproduire une recherche existante."
          },
          "searchQuery": {
            "title": "Mots-clés",
            "type": "string",
            "description": "Mots-clés recherchés dans le texte des annonces (équivalent du champ \"titre contient\")."
          },
          "excludeKeywords": {
            "title": "Mots-clés à exclure",
            "type": "string",
            "description": "Mots-clés qui font exclure une annonce. Séparez par des virgules. Filtrage effectué côté client, après récupération."
          },
          "searchInTitleOnly": {
            "title": "Mots-clés : titre uniquement",
            "type": "boolean",
            "description": "Si activé, les mots-clés doivent apparaître dans le titre de l'annonce (et non dans la description). Filtrage effectué côté client.",
            "default": false
          },
          "locations": {
            "title": "Localisations",
            "type": "array",
            "description": "Localisations ciblées. Formes acceptées : code région (ex. 12 pour Île-de-France, 84 pour Auvergne-Rhône-Alpes), code suivi d'un libellé (ex. \"12|Île de France\"), paire département__code postal (ex. \"75__75000\"), ou du texte libre résolu automatiquement via l'API de localisation de leboncoin (ex. \"Paris\", \"Bordeaux\"). Vide = toute la France.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "radius": {
            "title": "Rayon de recherche (km)",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Rayon en kilomètres autour des localisations. Nécessite une URL de recherche (le paramètre n'existe pas dans l'API interne). Vide = sans rayon."
          },
          "sellerType": {
            "title": "Type de vendeur",
            "enum": [
              "all",
              "pro",
              "private"
            ],
            "type": "string",
            "description": "Particuliers, professionnels, ou les deux.",
            "default": "all"
          },
          "minPrice": {
            "title": "Prix minimum (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Prix minimum en euros. Vide = aucun minimum."
          },
          "maxPrice": {
            "title": "Prix maximum (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Prix maximum en euros. Vide = aucun maximum."
          },
          "realEstateType": {
            "title": "Type de bien",
            "enum": [
              "all",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7"
            ],
            "type": "string",
            "description": "Type de bien immobilier. N'utilisé que pour les catégories immobilières (8 à 13, 66).",
            "default": "all"
          },
          "minSquare": {
            "title": "Surface min. (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Surface minimale en m². Uniquement pour les catégories immobilières."
          },
          "maxSquare": {
            "title": "Surface max. (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Surface maximale en m². Uniquement pour les catégories immobilières."
          },
          "minRooms": {
            "title": "Nombre de pièces min.",
            "minimum": 1,
            "type": "integer",
            "description": "Nombre de pièces minimum. Uniquement pour les catégories immobilières. Vide = aucun minimum."
          },
          "shippable": {
            "title": "Annonces avec livraison",
            "type": "boolean",
            "description": "Ne garder que les annonces expédiables (filtre \"livraison\" de leboncoin). Ignoré si une localisation est renseignée, car leboncoin le combine mal avec les lieux.",
            "default": false
          },
          "urgent": {
            "title": "Annonces urgentes uniquement",
            "type": "boolean",
            "description": "Ne garder que les annonces marquées \"urgentes\". Filtrage effectué côté client.",
            "default": false
          },
          "donation": {
            "title": "Annonces à donner uniquement",
            "type": "boolean",
            "description": "Ne garder que les annonces à prix 0 (dons). Filtrage effectué côté client.",
            "default": false
          },
          "sort": {
            "title": "Trier par",
            "enum": [
              "time",
              "price",
              "relevance"
            ],
            "type": "string",
            "description": "Ordre d'affichage des résultats. Si le tri demandé renvoie 0 annonce, l'acteur réessaie automatiquement avec le tri par défaut.",
            "default": "time"
          },
          "order": {
            "title": "Ordre",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string",
            "description": "Sens du tri.",
            "default": "desc"
          },
          "maxItems": {
            "title": "Nombre maximum d'annonces",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Nombre maximal d'annonces à récupérer. Les utilisateurs gratuits sont plafonnés à 50.",
            "default": 100
          },
          "includePhotos": {
            "title": "Inclure les photos",
            "type": "boolean",
            "description": "Extraire les URLs des photos des annonces.",
            "default": true
          },
          "includeSeller": {
            "title": "Inclure la fiche vendeur",
            "type": "boolean",
            "description": "Pour chaque annonce, aller récupérer la fiche du vendeur (ancienneté, nombre d'annonces, note, temps de réponse). Ajoute une requête par annonce, donc un peu plus lent et plus coûteux. Requiert aussi l'événement de facturation \"scraped-ad-detail\" configuré.",
            "default": false
          },
          "adDetailUrls": {
            "title": "URLs d'annonces directes",
            "type": "array",
            "description": "Collez des URLs d'annonces individuelles (https://www.leboncoin.fr/ad/...) pour ne récupérer que ces annonces-là, sans lancer de recherche. Le mode recherche est alors ignoré.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "cookieBootstrap": {
            "title": "Bootstrap cookie navigateur",
            "type": "boolean",
            "description": "Si le warm-up HTTP ne fournit pas de cookie DataDome, ouvre une fois un onglet Chromium headless pour en obtenir un et laisser l'API tourner. Activez cette option si vous voyez des erreurs 403/captcha sur l'API finder.",
            "default": false
          },
          "cacheResults": {
            "title": "Mettre en cache les résultats",
            "type": "boolean",
            "description": "Les résultats d'une recherche strictement identique sont stockés dans un stockage clé-valeur et resservis instantanément lors des relances dans le TTL, sans nouveau scraping. Pratique pour des planifications répétées.",
            "default": false
          },
          "cacheTtlMinutes": {
            "title": "TTL du cache (minutes)",
            "minimum": 1,
            "type": "integer",
            "description": "Durée de validité du cache avant rescraping. Uniquement avec \"Mettre en cache les résultats\".",
            "default": 60
          },
          "proxyConfiguration": {
            "title": "Configuration du proxy",
            "type": "object",
            "description": "ON = utiliser le proxy Apify (facturé à votre compte Apify ; groupes RESIDENTIAL + pays FR recommandés pour contourner DataDome). OFF = utiliser vos propres proxies (facturés à votre fournisseur) à coller dans le champ ci-dessous.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "FR"
            }
          },
          "proxyUrl": {
            "title": "Proxy personnalisé (optionnel)",
            "pattern": "^https?://+",
            "type": "string",
            "description": "Contourne le proxy Apify et fait passer tout le trafic par une URL de proxy unique, ex. http://user:pass@host:3128. Utilisez un proxy résidentiel/mobilier français pour de meilleurs résultats. Prioritaire sur la configuration du proxy ci-dessus, facturé à votre fournisseur."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}