Tutti.ch Scraper — Swiss Classifieds, Prices & Sellers avatar

Tutti.ch Scraper — Swiss Classifieds, Prices & Sellers

Pricing

from $3.00 / 1,000 listings

Go to Apify Store
Tutti.ch Scraper — Swiss Classifieds, Prices & Sellers

Tutti.ch Scraper — Swiss Classifieds, Prices & Sellers

Scrape tutti.ch classifieds by keyword, category, canton, or URL. Each row has the CHF price, location, seller, and photos. Monitor mode saves only new ads and price changes.

Pricing

from $3.00 / 1,000 listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Share

Tutti.ch Scraper

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by SMG Swiss Marketplace Group AG or its affiliates. Data is read from publicly accessible search results and listing records only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

Tutti.ch scraper for Swiss classifieds. Each row is one listing: asking price in CHF, canton, seller, and photo. Search by keyword, category, and canton, or paste a results URL. Use it as a tutti.ch API alternative from Python, Node.js, cURL, or Apify MCP.

Best for: phone and goods comps, used cars, property and job leads, and a scheduled run that saves only new ads and price changes.

ActorRole
Tutti.ch Scraper ◄── you are hereSwiss classifieds: CHF price, canton, seller, new-ad monitor
Leboncoin ScraperFrance classifieds
Marktplaats ScraperNetherlands classifieds
Facebook Marketplace ScraperMarketplace listings
Sahibinden ScraperTurkey classifieds
mobile.de ScraperGermany car listings
Subito Real Estate ScraperItaly property listings

When to use this Actor

  • A keyword in one category — Set Keyword to iphone and Category to Phones. Add a canton such as ZH if you want one region.
  • Cars, property, furniture, or jobs — Pick the category and leave the keyword empty for the latest ads in that section.
  • A results page you already opened — Paste the search URL. A link with a search token is read as that saved search. Keyword and category are ignored when Search URLs is set.
  • One listing — Paste the listing URL. The run saves that record, including the description and map point.
  • New ads and price cuts — Turn on monitor mode and schedule the same search. The first run stores a baseline and saves nothing. Later runs save new listing ids and price changes.

When not to use this Actor

  • Other Swiss marketplaces — This Actor reads tutti.ch only.
  • A national dump in one run — Cap maxItems (150). Split by category or canton.
  • Private messages or accounts — No login, and no inbox.

Key features

  • Search cards — Title, CHF price, town, canton, postcode, seller name, seller type, and the first photo. Default 256 MB. No browser.
  • Optional listing record — Description, photo gallery, map coordinates, and attribute pairs. A phone or email is included only when the seller wrote it in the public description.
  • Keyword, category, canton, and price — Cars, phones, real estate, furniture, bicycles, and jobs, or every category at once.
  • Pasted URL — Search links, search tokens, and single listing pages.
  • Monitor — Named key-value store of listing id and last price for that search. The seed run does not open listing records.

Input

FieldRequiredDefaultWhat it does
Search or listing URLsNo—Wins over keyword and category.
KeywordNoiphoneSearch text when URLs are empty.
CategoryNoPhonesSection used when URLs are empty.
CantonNo—Short code, such as ZH or GE.
Minimum / maximum priceNo—Asking price in CHF.
SortNoNewestNewest, oldest, cheapest, most expensive, or relevance.
LanguageNoGermanLabels and the listing URL.
Max age (hours)No—Stop once listings are older than this.
Fetch listing detailsNooffDescription, gallery, coordinates, and attributes.
Maximum listingsNo30Rows to save, up to 150.
Monitor modeNooffBaseline first, then new ids and price changes.
Monitor state storeNotutti-monitorNamed store for the baseline.
ProxyNoSwiss residentialRequired from the cloud. Usage for the proxy is on your account.
{
"keyword": "iphone",
"category": "cellPhones",
"canton": "ZH",
"maxPrice": 800,
"sort": "newest",
"includeDetails": true,
"maxItems": 30,
"monitorMode": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "CH"
}
}

Output

FieldMeaning
idListing id
urlPublic listing page
titleListing title
priceAsking price in CHF
priceLabelPrice text from the listing
currencyCHF
category, categoryIdSection label and id
location, canton, cantonCode, postcodePlace
postedAtWhen the listing was posted
sellerName, sellerId, sellerTypePublic alias, account id, private or pro
image, imagesFirst photo, then the gallery when details are on
descriptionListing text when details are on
latitude, longitudeMap point when details are on
attributesAttribute pairs from the listing record
email, phonePresent only when written in the public description
changeTypenew or price_change on monitor runs
previousPricePrior asking price when changeType is price_change
scrapedAtUTC timestamp
{
"id": "83303214",
"url": "https://www.tutti.ch/de/vi/iphone-18-pro-256gb/83303214",
"title": "iPhone 18 Pro 256Gb",
"price": 1300,
"priceLabel": "1'300.-",
"currency": "CHF",
"category": "Handys",
"categoryId": "cellPhones",
"location": "Lugano",
"canton": "Tessin",
"cantonCode": "TI",
"postcode": "6900",
"sellerName": "Erik",
"sellerType": "private",
"image": "https://c.tutti.ch/big/3297308070.jpg"
}

Use cases

  • Compare asking prices for one phone model and keep sellerType so business ads are separate from private sellers.
  • Pull used cars in one canton with a price cap, then turn on listing details for mileage and condition when the record includes them.
  • Schedule monitor mode each morning and export only listings whose price moved.
  • For France, run Leboncoin Scraper. For the Netherlands, run Marktplaats Scraper.

Integration examples

Replace APIFY_TOKEN. The slug below is the Store name.

Node.js

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("crawloop/tutti-ch-scraper").call({
keyword: "iphone",
category: "cellPhones",
canton: "ZH",
maxItems: 30,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("crawloop/tutti-ch-scraper").call(run_input={
"keyword": "bmw",
"category": "cars",
"maxItems": 30,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items))

cURL

curl -X POST "https://api.apify.com/v2/acts/crawloop~tutti-ch-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyword":"iphone","category":"cellPhones","maxItems":30}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store name crawloop/tutti-ch-scraper.

Example prompts:

  • "Run Tutti.ch Scraper for iphone in canton ZH and return price, location, and seller type as JSON"
  • "Scrape tutti.ch cars under a CHF price cap and summarize asking price by canton"
  • "Run Tutti.ch Scraper in monitor mode for sofas, then use Leboncoin Scraper for the same goods in France"

Suite next step

This Actor covers Swiss classifieds. For the same kind of listing in France, run Leboncoin Scraper. For the Netherlands, run Marktplaats Scraper.

FAQ

Does this open every listing record? Only when Fetch listing details is on, or when you paste one listing URL. Monitor seed runs skip those records and save nothing.

Which country is included? Switzerland, on tutti.ch. German, French, and Italian labels are available.

What if the run is blocked? Keep Swiss residential selected and retry. A datacenter proxy is often refused.

What does monitor mode skip? Listing ids already stored for that same search, unless the asking price changed. A quiet tick writes zero rows. The first run only fills the baseline.

Are phone numbers included? Only when the seller wrote a phone number or email in the public description. Hidden contact buttons are not opened.