{
  "openapi": "3.0.1",
  "info": {
    "title": "Bien'ici Scraper - French Real Estate Listings",
    "description": "Scrape Bien'ici (bienici.com) property listings for sale and rent across France: price, €/m², surface, rooms, DPE energy class, location and agency. Fast HTTP-only scraper with filters and new-listing monitoring.",
    "version": "0.1",
    "x-build-id": "71JBWl8PYvd0skuAW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/smolder~bienici-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-smolder-bienici-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/smolder~bienici-scraper/runs": {
      "post": {
        "operationId": "runs-sync-smolder-bienici-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/smolder~bienici-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-smolder-bienici-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": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, Paris/Lyon/Marseille arrondissements, departments or postal codes, for example \"Lyon\", \"Paris 11e\", \"Gironde\", \"33\" or \"69003\". Each entry is matched against Bien'ici's own location search and the match is shown in the log. Regions are not supported, so list their departments instead. Leave empty to search all of France.",
            "items": {
              "type": "string"
            }
          },
          "transactionType": {
            "title": "Buy or rent",
            "enum": [
              "buy",
              "rent"
            ],
            "type": "string",
            "description": "Listings for sale (vente) or for rent (location).",
            "default": "buy"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Which kinds of property to include. Defaults to apartments and houses.",
            "items": {
              "type": "string",
              "enum": [
                "flat",
                "house",
                "loft",
                "townhouse",
                "castle",
                "building",
                "terrain",
                "parking",
                "shop",
                "premises",
                "office",
                "others"
              ],
              "enumTitles": [
                "Apartment (appartement)",
                "House (maison)",
                "Loft",
                "Townhouse (hôtel particulier)",
                "Castle / manor (château)",
                "Building (immeuble)",
                "Land (terrain)",
                "Parking / garage",
                "Shop (boutique)",
                "Commercial premises (local)",
                "Office (bureau)",
                "Other"
              ]
            },
            "default": [
              "flat",
              "house"
            ]
          },
          "propertyCondition": {
            "title": "New build or existing",
            "enum": [
              "any",
              "newBuildOnly",
              "excludeNewBuild"
            ],
            "type": "string",
            "description": "Restrict to new-build developments (programmes neufs) or to existing properties (ancien).",
            "default": "any"
          },
          "minPrice": {
            "title": "Minimum price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in euros. For rentals this is the monthly rent."
          },
          "maxPrice": {
            "title": "Maximum price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in euros. For rentals this is the monthly rent."
          },
          "minArea": {
            "title": "Minimum surface area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest living area in square metres."
          },
          "maxArea": {
            "title": "Maximum surface area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Largest living area in square metres."
          },
          "minRooms": {
            "title": "Minimum rooms (pièces)",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest rooms, counted the French way (T2 = 2 pièces)."
          },
          "maxRooms": {
            "title": "Maximum rooms (pièces)",
            "minimum": 0,
            "type": "integer",
            "description": "Most rooms, counted the French way (T2 = 2 pièces)."
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest bedrooms (chambres)."
          },
          "energyClasses": {
            "title": "Energy classes (DPE)",
            "type": "array",
            "description": "Only include listings with these DPE energy ratings. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            },
            "default": []
          },
          "furnished": {
            "title": "Furnished (rentals only)",
            "enum": [
              "any",
              "furnished",
              "unfurnished"
            ],
            "type": "string",
            "description": "Furnished (meublé) or unfurnished (vide) rentals. Ignored for sales.",
            "default": "any"
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only return listings published in the last N days, sorted newest first. Listings without a publication date are skipped when this is set. Leave empty for no date limit."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "relevance",
              "priceAsc",
              "priceDesc",
              "largest"
            ],
            "type": "string",
            "description": "Order of results. For searches over 2,500 listings, results are fetched in price ranges and this order applies within each range.",
            "default": "newest"
          },
          "maxItems": {
            "title": "Maximum listings",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after saving this many listings. Searches larger than 2,500 listings are split into price ranges automatically, so you can collect up to 100,000 in one run.",
            "default": 100
          },
          "includeDescription": {
            "title": "Include description text",
            "type": "boolean",
            "description": "Add the full listing description. Turn off for smaller exports. Phone numbers and emails in descriptions are always removed.",
            "default": true
          },
          "monitoringMode": {
            "title": "Only new listings (monitoring mode)",
            "type": "boolean",
            "description": "Skip listings already returned by earlier runs that used the same monitoring key. Ideal for a daily schedule that delivers only fresh listings.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this saved search, for example \"lyon-t3-under-300k\". Runs with the same key share their history. Use different keys for different searches.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy keeps requests reliable. The default datacenter proxy is usually enough. Switch to residential proxies (country FR) only if you see blocked requests in the log.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}