Flatfox Scraper - Swiss rentals, homes for sale, flatshares avatar

Flatfox Scraper - Swiss rentals, homes for sale, flatshares

Pricing

$3.00 / 1,000 listings

Go to Apify Store
Flatfox Scraper - Swiss rentals, homes for sale, flatshares

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

Data Gleaner

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

39 minutes ago

Last modified

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

FieldTypeWhat it does
locationslist of textSwiss 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.
offerTypechoiceRENT (default), SALE or ANY.
categorieslistOptional: APARTMENT, HOUSE, SHARED (rooms and flatshares), INDUSTRY (offices, shops, workshops), PARK (parking and garages), GASTRO (restaurants and bars), PROPERTY (land). Empty means all.
minPrice, maxPricenumberCHF per month for rentals, purchase price for sales.
minRooms, maxRoomsnumberSwiss room count, for example 2.5.
minAreaM2numberMinimum living area. Listings without an area are dropped when set.
startUrls, listingIdslistOptional. Flatfox listing links or numbers to read directly.
maxItemsnumberCap on listings returned, newest first. Default 100. It is also your cost cap.
includeDescription, includeImagestrue/falseFull description text and photo links. Default true.
requestDelaySecondsnumberPause before each request, default 0.5 s (randomised up to 1.4x).
proxyConfigurationobjectOptional 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.

FieldMeaning
id, url, statusFlatfox listing number, link and status.
offerType, category, typeRENT or SALE; category such as APARTMENT, HOUSE, SHARED; and Flatfox's type such as ATTIC_FLAT, SINGLE_ROOM, CHALET.
title, shortTitle, headline, descriptionFlatfox'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, currencyThe displayed price as a number (monthly rent or sale price), its unit and whether utilities are included. Always CHF.
rentNet, rentCharges, rentGrossThe rent split, when the advertiser gave it.
rooms, livingAreaM2, usableAreaM2, propertyAreaM2, floor, yearBuilt, yearRenovatedSize and building data.
street, zipcode, city, canton, address, latitude, longitudeLocation. Many advertisers hide the street, so the address can be just ZIP and city.
availableFrom, availabilityMove-in date, and whether it is a date, immediate or by agreement.
isFurnished, isTemporary, isReservedFlags.
featuresAmenities such as lift, balconygarden, dishwasher, petsallowed.
agencyName, agencyCity, agencyStreet, agencyLogoUrl, reference, externalUrlThe advertising agency and the agency's own listing reference and page, when there is one.
videoUrl, tourUrl, imageCount, imageUrlsMedia.
publishedAt, createdAtISO 8601 with offset.
scrapedAt, sourceType, sourceInputWhen 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 ApifyClient
client = 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 to datagleaner/flatfox-swiss-property-scraper and 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 the search-actors tool, 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 /mcp to 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 environment
import json
from langchain_apify import ApifyActorsTool
tool = 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 street is 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,east box for exact areas, or filter by zipcode afterwards.
  • 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.