Flatfox Scraper - Swiss rentals, homes for sale, flatshares
Pricing
$3.00 / 1,000 listings
Flatfox Scraper - Swiss rentals, homes for sale, flatshares
Flatfox.ch scraper: Swiss rentals and homes for sale by city or map area, with price, rooms, area, address, coordinates, features, agency and photos. Newest first. No login, no API key, no browser. $0.003 per listing.
Pricing
$3.00 / 1,000 listings
Rating
0.0
(0)
Developer
Data Gleaner
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
39 minutes ago
Last modified
Categories
Share
Flatfox Scraper - Swiss Rentals, Homes for Sale and Flatshares (Flatfox.ch)
This Flatfox scraper turns Flatfox.ch, one of Switzerland's biggest rental and property portals, into clean JSON. Search by city or map area, filter by rent or buy, category, price, rooms and living area, and get each listing's title, price in CHF, rent net, charges and gross, rooms, living area, floor, year built, street, ZIP, city, coordinates, availability date, furnished and temporary flags, features, agency, description and photo links, newest first. No Flatfox account, no API key, no login, no browser: it reads the same public data the Flatfox website and apps load, with plain HTTP.
It is built to finish the run. An unknown location is reported in the log and skipped, a rate limit is waited out with exponential backoff, and one broken record never stops the rest.
What does Flatfox Scraper do?
It lists every active Flatfox listing inside a city or map area, sorts them newest first, reads each one in full and returns one row per listing in the Apify dataset, exportable as JSON, CSV or Excel or readable through the API. Typical uses:
- Swiss rent and sale price research. Track asking rents per city, district (ZIP) and room count over time, build price indexes and compare Zurich, Geneva, Basel and Bern.
- New-listing alerts. Run hourly or daily on a schedule with a price cap and room count, and send new flats to Telegram, Slack, email or a spreadsheet.
- Relocation and expat tools. Feed a flat finder, a chatbot or a relocation service with fresh Swiss listings.
- Investors and agencies. Watch competing agencies' stock, find listings by agency, and size a market by canton or ZIP.
- Datasets for AI and RAG. Get clean multilingual listing text with structured fields for housing assistants and valuation models.
- Student and flatshare search. Filter
categories: ["SHARED"]for rooms and flatshares under a monthly budget.
Input
| Field | Type | What it does |
|---|---|---|
locations | list of text | Swiss cities (Zurich, Geneva, Basel, Bern, Lausanne, Winterthur, Lucerne, St. Gallen, Lugano, Zug, Biel, Thun, Fribourg, Neuchatel, Chur, Schaffhausen, Sion, Aarau, Baden, Locarno, Montreux), Switzerland for the whole country, a circle lat,lon,radiusKm such as 47.05,8.31,10, or a box south,west,north,east. One search per entry. A city covers its surroundings, about 5 to 9 km around the centre. |
offerType | choice | RENT (default), SALE or ANY. |
categories | list | Optional: APARTMENT, HOUSE, SHARED (rooms and flatshares), INDUSTRY (offices, shops, workshops), PARK (parking and garages), GASTRO (restaurants and bars), PROPERTY (land). Empty means all. |
minPrice, maxPrice | number | CHF per month for rentals, purchase price for sales. |
minRooms, maxRooms | number | Swiss room count, for example 2.5. |
minAreaM2 | number | Minimum living area. Listings without an area are dropped when set. |
startUrls, listingIds | list | Optional. Flatfox listing links or numbers to read directly. |
maxItems | number | Cap on listings returned, newest first. Default 100. It is also your cost cap. |
includeDescription, includeImages | true/false | Full description text and photo links. Default true. |
requestDelaySeconds | number | Pause before each request, default 0.5 s (randomised up to 1.4x). |
proxyConfiguration | object | Optional Apify Proxy. Default is no proxy. |
{"locations": ["Zurich", "Winterthur"],"offerType": "RENT","categories": ["APARTMENT"],"maxPrice": 2500,"minRooms": 2.5,"maxItems": 200}
Listings are deduplicated across locations. Price, room and area filters are applied before you are billed: you pay only for listings you receive.
Output
One row per listing.
| Field | Meaning |
|---|---|
id, url, status | Flatfox listing number, link and status. |
offerType, category, type | RENT or SALE; category such as APARTMENT, HOUSE, SHARED; and Flatfox's type such as ATTIC_FLAT, SINGLE_ROOM, CHALET. |
title, shortTitle, headline, description | Flatfox's title with the price, a short title, the advertiser's headline and the full description in the language it was written in. |
price, priceUnit, priceIncludesUtilities, currency | The displayed price as a number (monthly rent or sale price), its unit and whether utilities are included. Always CHF. |
rentNet, rentCharges, rentGross | The rent split, when the advertiser gave it. |
rooms, livingAreaM2, usableAreaM2, propertyAreaM2, floor, yearBuilt, yearRenovated | Size and building data. |
street, zipcode, city, canton, address, latitude, longitude | Location. Many advertisers hide the street, so the address can be just ZIP and city. |
availableFrom, availability | Move-in date, and whether it is a date, immediate or by agreement. |
isFurnished, isTemporary, isReserved | Flags. |
features | Amenities such as lift, balconygarden, dishwasher, petsallowed. |
agencyName, agencyCity, agencyStreet, agencyLogoUrl, reference, externalUrl | The advertising agency and the agency's own listing reference and page, when there is one. |
videoUrl, tourUrl, imageCount, imageUrls | Media. |
publishedAt, createdAt | ISO 8601 with offset. |
scrapedAt, sourceType, sourceInput | When it was scraped, whether it came from a search or a url, and the location or links you gave. |
{"id": 86442398,"url": "https://flatfox.ch/en/flat/8048-zurich/86442398/","status": "act","offerType": "RENT","category": "APARTMENT","type": "APARTMENT","title": "8048 Zürich - CHF 1’500 incl. utilities per month","shortTitle": "2 ½ rooms apartment","price": 1500,"priceUnit": "monthly","priceIncludesUtilities": true,"currency": "CHF","rentCharges": 300,"rentGross": 1500,"rooms": 2.5,"livingAreaM2": 55,"floor": 3,"zipcode": 8048,"city": "Zürich","address": "8048 Zürich","latitude": 47.3860807018571,"longitude": 8.479278556512062,"availableFrom": "2026-12-01","isFurnished": true,"isTemporary": true,"features": ["lift", "washingmachine", "dishwasher", "parquetflooring"],"publishedAt": "2026-10-10T22:17:33+02:00","imageCount": 3,"imageUrls": ["https://flatfox.ch/media/ff/2026/10/854df4ugrvqt5tnziyfmurk8qmkzv6b9oiaec7dy4h5yujpezo.jpg"],"scrapedAt": "2026-10-10T23:42:22+00:00","sourceType": "search","sourceInput": "Zurich"}
Pricing
Pay per event, with the price final:
- $0.003 per listing ($3 per 1,000 listings), with no start fee.
You pay only for listings you receive: nothing for unknown locations, failed requests, retries or listings your filters remove, and the run stops by itself when your maximum total charge is reached. Platform usage is included.
Example: all active Zurich rentals under CHF 3,000 is roughly 600 listings, so 600 x $0.003 = $1.80. A daily alert run with maxItems: 50 for new Basel flats costs at most $0.15 per day. For comparison, the Swiss rental scraper that covers Flatfox together with other portals charges $0.00475 per listing plus $0.005 per run start.
Use it from the API
curl -X POST "https://api.apify.com/v2/acts/datagleaner~flatfox-swiss-property-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"locations": ["Geneva"], "offerType": "RENT", "maxPrice": 2800, "maxItems": 50}'
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("datagleaner/flatfox-swiss-property-scraper").call(run_input={"locations": ["Zurich"],"offerType": "RENT","minRooms": 3,"maxItems": 100,})for flat in client.dataset(run["defaultDatasetId"]).iterate_items():print(flat["publishedAt"], flat["price"], flat["rooms"], flat["address"], flat["url"])
Use it from n8n, Make, Zapier or an AI agent
Actor ID: datagleaner/flatfox-swiss-property-scraper
Minimal input:
{"locations": ["Zurich"], "maxItems": 10}
Each tool below runs this Actor with your own Apify API token.
-
n8n: add the Apify node (
@apify/n8n-nodes-apify). On n8n Cloud you install it from the community node registry. Choose Run an Actor and get dataset, set Actor todatagleaner/flatfox-swiss-property-scraperand paste the input above. Put it behind a Schedule trigger for new-listing alerts. -
Make: use the Apify app's Run an Actor module, then Get Dataset Items to read the results. Watch Actor Runs can trigger a scenario when a run finishes.
-
Zapier: use the Apify action Run Actor, then the search Fetch dataset items. The trigger Finished Actor run starts a Zap when a run ends.
-
AI agents (MCP): connect to
https://mcp.apify.com/?tools=datagleaner/flatfox-swiss-property-scraper. Without a token, an agent can still find Actors with thesearch-actorstool, but running this one needs your Apify account. In Claude Code:claude mcp add --transport http apify "https://mcp.apify.com/?tools=datagleaner/flatfox-swiss-property-scraper"Then run
/mcpto sign in to Apify in your browser. Then ask in plain language, for example: "Use the Flatfox scraper to find the 20 newest 3-room rentals in Basel under CHF 2,500 and rank them by price per square metre." -
LangChain (Python):
# pip install langchain-apify, then set APIFY_TOKEN in your environmentimport jsonfrom langchain_apify import ApifyActorsTooltool = ApifyActorsTool("datagleaner/flatfox-swiss-property-scraper")result = tool.invoke({"run_input": json.loads('{"locations": ["Zurich"], "maxItems": 10}')})
Limits
- Flatfox only. This Actor covers Flatfox.ch. It does not read Homegate, ImmoScout24, Newhome or other portals, which block automated access.
- Active listings only. Rented or sold listings disappear from Flatfox and from the results.
- Addresses. Many advertisers show only ZIP and city, so
streetis often empty, and coordinates can be approximate. - Cities are circles. A city name covers roughly the city and its surroundings, not its legal border. Use a
south,west,north,eastbox for exact areas, or filter byzipcodeafterwards. - Price filters use the displayed price. Listings priced "on request" have no price and are dropped when a price filter is set.
- Contact details of private landlords are not published by Flatfox and are not collected.
- Speed. About 40 listings per detail request, so hundreds of listings take under a minute.
FAQ
Do I need a Flatfox account or API key? No. The Actor reads public data and needs no login of any kind.
How do I get only new listings? Results come newest first. Run it on a schedule with a small maxItems and keep the id values you have already seen.
Can I get the whole country? Yes: locations: ["Switzerland"]. Add price, category or room filters and a maxItems cap so you pay only for what you need.
Can I search for houses for sale? Yes: offerType: "SALE" with categories: ["HOUSE"].
What happens if I start it with no input? It runs a small built-in example, 5 rentals in Zurich (5 x $0.003 = $0.015), and says so in the run's status message. Give locations, startUrls or listingIds for your own run.
What language is the text in? Titles are in English; descriptions are in whatever language the advertiser wrote, mostly German, French or Italian.
Can I export to CSV or Excel? Yes, from the run's dataset page or the API.
Why is a field empty? Advertisers fill only some fields. Empty means Flatfox did not publish it.
Responsible use
This Actor reads only publicly visible Flatfox data and paces its requests politely. Listings can include agency names and other personal data: you are responsible for a lawful basis, for respecting Flatfox's terms and advertisers' rights, and for your obligations under the Swiss FADP, GDPR and any other law that applies. Do not use the output to spam advertisers, discriminate in housing, or evade platform rules. This is not legal advice.