# Vorarlberg Rental Scraper (`rainminer/laendleimmo-at-scraper`) Actor

Extract rental and sale listings from laendleimmo.at — Vorarlberg’s regional property portal. Get title, monthly rent, rooms, living area, address, agency, coordinates and photos. No login required. Export JSON/CSV and schedule monitoring runs on Apify.

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

## Pricing

from $1.49 / 1,000 listing scrapeds

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

### What does Laendleimmo.at Scraper do?

**Laendleimmo.at Scraper** extracts **real estate listings** from [laendleimmo.at](https://www.laendleimmo.at/) — Vorarlberg's leading property portal for apartments, houses, and commercial spaces for rent and sale. Provide one or more search URLs (e.g. `https://www.laendleimmo.at/mietobjekt/wohnung`) and the scraper collects structured property data without any coding required.

### Why scrape laendleimmo.at?

- **Market research** — Track rental and purchase prices across Vorarlberg municipalities and districts over time.
- **Portfolio monitoring** — Automatically detect new listings in your target location and price range.
- **Lead generation** — Collect property listings with address, price, size, room count and agency details for your pipeline.
- **Regional analysis** — Compare prices in Bregenz, Dornbirn, Feldkirch and smaller Vorarlberg communities instantly.
- **Apify platform** — Schedule runs, export JSON/CSV/Excel, monitor failures, and integrate via API or Zapier.

### What data can you extract from laendleimmo.at?

| Field            | Description                                          |
| ---------------- | ---------------------------------------------------- |
| listingId        | Unique property ID from the URL                      |
| title            | Property headline (e.g. "2-Zimmer-Wohnung in Dornbirn") |
| url              | Public listing URL on laendleimmo.at                 |
| description      | Full property description                            |
| price            | Numeric rent or purchase price                       |
| priceText        | Formatted price string                               |
| currency         | Currency (EUR)                                       |
| rooms            | Room count                                           |
| livingAreaSqm    | Living area in square metres                         |
| streetAddress    | Street address                                       |
| postalCode       | Postal code                                          |
| addressLocality  | City or municipality                                 |
| addressRegion    | Austrian state (Vorarlberg)                          |
| addressCountry   | Country (Österreich)                                 |
| latitude         | GPS latitude                                         |
| longitude        | GPS longitude                                        |
| agency           | Listing agency name                                  |
| propertyType     | Property type (e.g. wohnung, gartenwohnung)          |
| isTop            | Whether the listing has a TOP badge                  |
| imageUrl         | Primary listing image URL                            |
| imageUrls        | Full gallery of property image URLs                  |
| searchUrl        | Source search URL for listings found via search      |

### How to scrape laendleimmo.at

1. Open **Laendleimmo.at Scraper** in Apify Console.
2. Add one or more **laendleimmo.at search URLs** under **Start URLs**. A search URL looks like:
   `https://www.laendleimmo.at/mietobjekt/wohnung`
3. Set **Maximum items** to control how many listings are extracted per start URL.
4. Leave **Proxy configuration** disabled unless you encounter access issues.
5. Click **Start** and download results from the **Dataset** tab in JSON, CSV, or Excel format.

#### Supported start URL formats

- Rental search pages: `https://www.laendleimmo.at/mietobjekt/{type}`
- Purchase search pages: `https://www.laendleimmo.at/kaufobjekt/{type}`
- Individual property pages: `https://www.laendleimmo.at/immobilien/{type}/.../{id}`

Pagination is handled automatically — the scraper follows `?page=2`, `?page=3`, etc. until `maxItems` is reached.

### Is it legal to scrape laendleimmo.at?

This scraper only collects publicly visible listing data — the same information any visitor sees without logging in. It does not bypass authentication, access private data, or collect personal contact details. Always ensure your use of scraped data complies with the applicable laws (GDPR in the EU) and laendleimmo.at's Terms of Service. If in doubt, consult your legal team.

### Output example

```json
{
  "listingId": "233482",
  "title": "2-Zimmer-Microliving-Apartment mit Designermöbeln in Dornbirn",
  "url": "https://www.laendleimmo.at/immobilien/wohnung/allgemein/vorarlberg/dornbirn/233482",
  "description": "2-Zimmer-Microliving-Apartment mit Designermöbeln in Dornbirn ...",
  "price": 895,
  "priceText": "895 EUR",
  "currency": "EUR",
  "rooms": 2,
  "livingAreaSqm": 45,
  "streetAddress": "Wallenmahd 16",
  "postalCode": null,
  "addressLocality": "Dornbirn",
  "addressRegion": "Vorarlberg",
  "addressCountry": "Österreich",
  "latitude": 47.413279,
  "longitude": 9.743739,
  "agency": "Pegasus Immo GmbH",
  "propertyType": "wohnung",
  "isTop": false,
  "imageUrl": "https://static.laendleimmo.at/uploads/ad/23/34/82/233482_1952724231_z.jpg",
  "imageUrls": [
    "https://static.laendleimmo.at/uploads/ad/23/34/82/233482_1952724231_z.jpg"
  ],
  "searchUrl": "https://www.laendleimmo.at/mietobjekt/wohnung"
}
```

### Integrations

Use the Apify API to run this Actor programmatically, or connect it to Zapier, Make, Google Sheets, and other platforms. Export datasets as JSON, CSV, Excel, or XML.

### Image Credit

Image credit: [laendleimmo.at](https://www.laendleimmo.at/)

# Actor input Schema

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

laendleimmo.at search/listing URLs (e.g. https://www.laendleimmo.at/mietobjekt/wohnung) or individual property URLs.

## `maxItems` (type: `integer`):

Maximum number of listings to return per start URL.

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

Proxy settings. The scraper works without a proxy by default; enable Apify Proxy only if you encounter access issues.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.laendleimmo.at/mietobjekt/wohnung"
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `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 = {
    "startUrls": [
        {
            "url": "https://www.laendleimmo.at/mietobjekt/wohnung"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/laendleimmo-at-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 = {
    "startUrls": [{ "url": "https://www.laendleimmo.at/mietobjekt/wohnung" }],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/laendleimmo-at-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 '{
  "startUrls": [
    {
      "url": "https://www.laendleimmo.at/mietobjekt/wohnung"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call rainminer/laendleimmo-at-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rainminer/laendleimmo-at-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/a1l58mvelUig5nnXW/builds/w1p8Y9xpGD7DmV6CW/openapi.json
