Skip to content

Latest commit

 

History

History
67 lines (49 loc) · 1.79 KB

File metadata and controls

67 lines (49 loc) · 1.79 KB

Python (apify-client) — WG-Gesucht Scraper

Call the WG-Gesucht Scraper from Python with the official apify-client package.

Install

pip install apify-client

Run and read the dataset

from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")

run = client.actor("logiover/wg-gesucht-scraper").call(run_input={
    "city": "Berlin",
    "category": "wg-rooms",
    "maxResults": 500,
})

for l in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(l.get("rent"), "EUR -", l.get("sizeSqm"), "m² -", l.get("district"))

Rent analysis into pandas

import pandas as pd
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")

run = client.actor("logiover/wg-gesucht-scraper").call(run_input={
    "city": "Muenchen",
    "category": "apartments",
    "maxResults": 0,          # whole city
})

rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
df = pd.DataFrame(rows)
df = df.dropna(subset=["rent", "sizeSqm"])
df["eur_per_sqm"] = df["rent"] / df["sizeSqm"]
print(df.groupby("district")["eur_per_sqm"].mean().sort_values(ascending=False).head())
df.to_csv("munich_rents.csv", index=False)

Multiple cities via search URLs

run = client.actor("logiover/wg-gesucht-scraper").call(run_input={
    "searchUrls": [
        "https://www.wg-gesucht.de/wg-zimmer-in-Berlin.8.0.1.0.html",
        "https://www.wg-gesucht.de/wohnungen-in-Hamburg.55.2.1.0.html",
    ],
    "maxResults": 2000,
})

for l in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(l["city"], "-", l["title"])

See the README for the full input and output field reference.

▶️ Run on Apify: https://apify.com/logiover/wg-gesucht-scraper