WG-Gesucht.de Listing Monitor
Pricing
from $50.00 / 1,000 new listings
WG-Gesucht.de Listing Monitor
wg-gesucht.de as a JSON feed. Monitor flat-share (WG-Zimmer) listings across DACH: Berlin, Munich, Hamburg, Frankfurt, Cologne, Vienna, Zurich. Typed output: rent breakdown, district, photos, language, availability. Pay-per-event: $0.005/new, $0.001/dedup. First 50 free.
Pricing
from $50.00 / 1,000 new listings
Rating
0.0
(0)
Developer
CG Nguyễn
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
wg-gesucht.de Listings — Berlin / Munich / Hamburg, fresh in minutes
wg-gesucht.de as a JSON feed — for relocation consultants, expat developers, and AI agents who can't waste a minute when a listing drops.
Scrapes public room-share (WG-Zimmer) listings from wg-gesucht.de across DACH cities. Returns clean, typed JSON with rent breakdown, district, photos, availability, and language preference. Charges only for new listings you didn't see before (pay-per-event), so polling every 15 minutes is cheap.
⚠️ Before you run — proxy is required
wg-gesucht.de blocks datacenter IPs with a "please confirm you are human" challenge. This Actor will not work without a residential (or your own DE-IP) proxy. You must use one of:
- Apify Residential Proxy (DE) — the default prefill. Requires Apify Starter plan ($49/mo) or higher. Not available on the Free plan — Free-plan runs will fail fast (within ~3 seconds) with a clear error message.
- Your own DE-IP proxy — set
proxy_config.useApifyProxy: falseandproxy_config.proxyUrls: ["http://user:pass@de-proxy.example.com:8080"].
This is wg-gesucht's anti-scraping policy, not the Actor's choice. If you want to test the Actor end-to-end without a paid plan, message the maintainer for a free test run.
Why this exists
Berlin, Munich, and Hamburg flat-shares are 5–10× oversubscribed. Good listings disappear in under 15 minutes during peak season (Aug–Oct, Jan–Mar). wg-gesucht's own Premium tier (€9.90/mo) gets you fast-track messaging — but it does not push alerts faster than the public feed. By the time you refresh the page, the listing is gone.
This actor closes that gap. It polls the public feed, deduplicates, and emits one event per genuinely new listing — straight into your Telegram bot, Notion DB, Slack webhook, internal tool, or AI agent.
It is not an end-user consumer app. There's no UI, no notifications, no login. You bring the automation; we bring the clean data.
Who it's for
| Persona | Use case |
|---|---|
| Expat job-mover | Pipes new Berlin/Munich listings into a personal Telegram bot. Lands an apartment one week faster than refreshing the site by hand. |
| Relocation consultancy | Replaces 2 hrs/week of manual searching per junior consultant. One actor seat ≈ one part-time intern. |
| AI agent (MCP) | Apify Actors are automatically MCP tools. Claude / / Codex agents call this when their user asks about Berlin housing. Zero integration work. |
| Corporate HR mobility | Internal tooling for relocating engineers (SAP, Adidas, BMW). License access org-wide via Apify Enterprise. |
Input
| Field | Type | Default | Notes |
|---|---|---|---|
city | string | Berlin | One of: Berlin, Munich, Hamburg, Frankfurt, Cologne, Stuttgart, Düsseldorf, Leipzig, Vienna, Zurich. |
max_rent | integer | 1200 | Hard cap on warm rent (€/month). |
min_rooms | integer | 1 | 1 = studio. |
furnished | enum | any | any, furnished, partly, unfurnished. |
target_audience | enum | any | wg (shared flat), single_apartment, couple_apartment, any. |
language | enum | any | any, DE, EN, DE+EN. Filters listings by description-language flags. |
days_back | integer | 7 | Skip listings older than N days. |
max_results | integer | 100 | Hard cap per run. Stops crawling once hit. |
polite_mode | boolean | false | If true, suppress emit if the same listing fired in the last 60 minutes. |
proxy_config | object | Apify Residential DE | wg-gesucht serves a Cloudflare challenge to datacenter IPs. Don't change unless you know what you're doing. |
Full schema with descriptions: see the Input tab in the Apify console.
Output — one listing per record
Real, unredacted sample from a verified run:
{"listing_id": "9883205","url": "https://www.wg-gesucht.de/wg-zimmer-in-Berlin-Wedding.9883205.html","title": "Ein günstiges Zimmer mit Balkon zu mieten","city": "Berlin","district": "Wedding","address_street": "See Straße","rent_warm_eur": 500,"rent_kalt_eur": 350,"utilities_eur": 150,"deposit_eur": 1000,"rooms": 2,"sqm": 14,"furnished": "furnished","available_from": "2026-05-31","available_until": null,"contact_method": "in_app_message","language_pref": ["DE", "EN"],"photos": ["https://img.wg-gesucht.de/...", "..."],"description": "Hey ihr Lieben, bei mir (Armin) ist ab sofort ein voll möbliertes WG-Zimmer frei...","change_type": "new","posted_at": "2026-05-15T08:14:00.000Z","scraped_at": "2026-05-15T08:31:42.117Z"}
Every field is byte-verified against the live wg-gesucht page. Fill-rate from the last 100-record run: listing_id, url, title, city, district, rent_warm_eur, rent_kalt_eur, rooms, sqm at 100%; utilities_eur 90%, deposit_eur 60% (some listings legitimately omit Kaution), available_until 40% (rest are unbefristet).
Pricing — Pay Per Event
| Event | Price | When it fires |
|---|---|---|
actor_start | free | Once per run. |
listing_new | $0.005 | A listing you haven't seen before (deduped by listing_id in a persistent key-value store across runs). |
listing_skipped | $0.001 | A listing already seen — cheap heartbeat so you can confirm the actor is alive and the cache is warm. |
The first 50 events are free. Test the actor end-to-end without paying a cent.
Realistic monthly cost by persona:
| You are... | Polling | New/mo | Skip/mo | Monthly cost |
|---|---|---|---|---|
| Daily window-shopper | Manual | ~100 | ~500 | ~$1 |
| Active job-mover | Hourly | ~700 | ~5,000 | ~$8.50 |
| Crunch-mode | Every 15 min | ~1,500 | ~50,000 | ~$57 |
| Multi-city (3 cities) | Every 15 min | ~4,500 | ~150,000 | ~$172 |
| Relocation agency (5 clients × 5 cities) | Every 15 min | ~7,500 | ~250,000 | ~$287 |
You pay Apify; Apify pays the actor author. No credit card upgrade required beyond what Apify already charges for compute and proxy.
How it stays fresh
- Residential DE proxy — wg-gesucht serves a Cloudflare "are you human" challenge to datacenter IPs. We use Apify's residential DE pool by default.
- Polite delays — built-in rate-limiting between detail fetches. We don't hammer the site.
- Per-listing dedup — listing IDs are stored in a per-actor key-value store keyed
wg-gesucht-seen. Stays warm across runs. - Stale-prune — IDs older than 30 days are dropped to keep the store light.
polite_mode— optional suppression of dupe emits within 60 minutes, for users polling at very high cadence.
Limits & legal
- Scrapes only publicly accessible pages. No login. No paywall bypass.
- Respects rate-polite delays.
- German-language listings are parsed in DE (so "Miete kalt", "Nebenkosten", "Kaution" all map to typed fields).
- You are responsible for your own use of the data. The actor does not contact landlords on your behalf, does not store personal data of listing creators beyond what wg-gesucht itself displays publicly, and does not bypass any technical access controls.
Frequently asked
Q: Why not just use the wg-gesucht.de RSS feed? There is no public RSS for filtered WG-Zimmer searches that includes rent kalt, deposit, room count, district, or language preference as structured fields. The RSS would force you to scrape every detail page yourself anyway — which is what this actor does for you, with dedup.
Q: Why does it cost money? The data is public. Because keeping it flowing isn't. The actor burns ~$0.80 of Apify residential proxy bandwidth per Berlin run of 10 listings. Pricing reflects the upstream cost plus author margin. Apify's first 50 free events let you confirm it works before you spend.
Q: Can I monitor a custom search URL instead of city-level? Open a request via the Apify console issues tab. If 3+ users ask, it ships in the next minor version.
Q: Why "pay-per-event" and not subscription? Because polling at 15-minute cadence in low-supply months wastes your money. PPE means you pay for results, not for cycles. Sleeping users cost nothing.
Q: Is there an MCP endpoint?
Yes — automatically. Every Apify Actor with an input schema is exposed as an MCP tool. Just point your Claude / / Codex client at the Apify MCP gateway and this actor appears as wg-gesucht-de-listings.
Roadmap
- v1.0 — Berlin, Munich, Hamburg, Frankfurt, Cologne (DACH-DE).
- v1.1 — Vienna, Zurich (DACH-AT/CH).
- v1.2 —
apartmentandhouselistings (1-Zimmer and full apartments, not just WG-Zimmer). - v1.3 — Custom-URL input (paste any wg-gesucht search URL).
- v2.0 — Sibling actors for Immobilienscout24 and Immowelt as a unified DACH housing API.
Sister actor
Found the room — now you need the job? cg_nguyen/germany-visa-jobs emits federal Bundesagentur listings with a visaStatus (confirmed | likely | unlikely | unknown) stamped on each row. Same author, same pay-per-event pricing.
Author
Built by @cg_nguyen. Backend engineer based in Vietnam, working with European clients. Bugs and feature requests via the Apify console issues tab.