Tutti.ch $1.5π° Swiss Classifieds, URLs & Rich Listing Data
Pricing
from $1.00 / 1,000 results
Tutti.ch $1.5π° Swiss Classifieds, URLs & Rich Listing Data
Scrape listings from tutti.ch across all 23 categories, including vehicles, property, electronics, furniture, fashion, and jobs. Search by keyword, category, city, or use tutti.ch URLs. Returns price, location, canton, seller details, images, and optional GPS, phone, photos, and attributes.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
AbotAPI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
tutti.ch Scraper
Scrape listings from tutti.ch, Switzerland's largest classifieds and marketplace platform, across all 23 categories (vehicles, property, electronics, furniture, fashion, jobs and more). Search by keyword, category and city, or paste tutti.ch URLs directly. Every listing comes back as a clean, flat JSON record with the price as both the formatted string and a numeric value, full location and canton data, seller details and images. Turn on detail mode to also collect GPS coordinates, every photo, the seller account ID, member-since date, phone (when published) and structured attributes.
Why this scraper
- Two ways to start: keyword / category / city search, or paste any tutti.ch search or category URL (multiple URLs supported).
- Up to 3000 listings per search (100 pages of 30).
- Numeric price field (
priceValue) alongside the formatted price, so you can filter and sort without parsing strings. - Rich seller data: name, private vs professional, account ID and member-since date.
- Optional detail mode adds GPS, all image URLs, phone, street and structured properties.
- German, French and Italian editions supported.
- Smart connection handling: Swiss residential by default, automatic region rotation, an optional residential budget cap, and an automatic switch to a cheaper pool when the budget is reached.
- Lean by default: detail fields are off unless you ask for them, keeping running costs low.
Data you get
Sample shape, values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
listingId | "00000001" |
title | "Sample bike for sale" |
description | "Full listing text appears here." |
price | "499.-" |
priceValue | 499 |
currency | "CHF" |
categoryId | "bicycles" |
categoryLabel | "Velos" |
parentCategoryId | "sportsOutdoors" |
locationName | "Sample City" |
postcode | "8000" |
canton | "ZH" |
cantonName | "ZΓΌrich" |
latitude | 47.0000 |
longitude | 8.0000 |
street | null |
sellerName | "Sample Seller" |
sellerType | "private" |
sellerAccountId | "0000000000000000000" |
memberSince | "2020-01-01T00:00:00Z" |
highlighted | false |
phone | null |
externalUrl | null |
imageUrl | "https://c.tutti.ch/big/0000000000.jpg" |
imageCount | 3 |
images | ["https://c.tutti.ch/big/0000000000.jpg"] |
properties | [] |
timestamp | "2026-01-01T00:00:00+02:00" |
language | "de" |
url | "https://www.tutti.ch/de/vi/zuerich/sport-outdoor/velos/sample/00000001" |
Fields marked GPS, all images, phone, street, properties, seller account ID and member-since are only populated when fetchDetails is enabled.
How to use
Basic keyword search:
{"mode": "search","keyword": "velo","maxPages": 3,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "CH" }}
Category in specific cities:
{"mode": "search","category": "vehicles","locations": ["zurich", "bern"],"minPrice": 5000,"maxPrice": 20000,"sortBy": "price_asc","maxPages": 5}
Paste tutti.ch URLs (multiple supported):
{"mode": "url","urls": ["https://www.tutti.ch/de/q/marktplatz/Ak8CrgIWcA","https://www.tutti.ch/de/q/velos/Ak8CoYmljeWNsZXOUwMDAwA"],"maxPages": 4}
Full detail enrichment:
{"mode": "search","keyword": "sofa","category": "household","fetchDetails": true,"maxListings": 100}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search builds URLs from keyword / category / city. url takes tutti.ch links you paste. |
keyword | string | (empty) | Free-text search term. Search mode only. |
category | string | all | Restrict to one of 23 tutti.ch categories. Search mode only. |
locations | array | (empty) | City slugs, e.g. zurich, bern, geneve. Search mode only. |
minPrice | integer | (none) | Keep listings priced at or above this value. Search mode only. |
maxPrice | integer | (none) | Keep listings priced at or below this value. Search mode only. |
sortBy | string | newest | newest, oldest, price_asc, price_desc. Search mode only. |
urls | array | (empty) | tutti.ch search / category URLs. URL mode only. |
language | string | de | Site edition: de, fr or it. |
fetchDetails | boolean | false | Adds GPS, all images, phone, seller ID, member-since and properties (one extra request per listing). |
maxPages | integer | 1 | Result pages per search (30 listings each, up to 100). |
maxListings | integer | 0 | Total cap across all searches. 0 means no limit. |
proxy | object | Apify Residential CH | Connection settings. |
maxResidentialPercent | integer | 100 | Soft cap on the residential share of the run before switching to a cheaper pool. |
residentialBudgetMb | integer | 0 | Residential bandwidth budget in MB. 0 means no limit. |
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape β the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record β not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify β Settings β Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Output example
Sample shape, values are illustrative placeholders, not from a live listing.
{"listingId": "00000001","title": "Sample listing title","description": "Full seller description appears here when fetchDetails is enabled.","price": "499.-","priceValue": 499,"currency": "CHF","categoryId": "bicycles","categoryLabel": "Velos","parentCategoryId": "sportsOutdoors","locationName": "Sample City","postcode": "8000","canton": "ZH","cantonName": "ZΓΌrich","latitude": 47.0000,"longitude": 8.0000,"street": null,"sellerName": "Sample Seller","sellerType": "private","sellerAccountId": "0000000000000000000","sellerLogoUrl": null,"sellerSubscriptionClass": null,"sellerBadgeUrl": null,"memberSince": "2020-01-01T00:00:00Z","highlighted": false,"formattedSource": null,"phone": null,"externalUrl": null,"imageUrl": "https://c.tutti.ch/big/0000000000.jpg","imageCount": 3,"images": ["https://c.tutti.ch/big/0000000000.jpg"],"properties": [],"timestamp": "2026-01-01T00:00:00+02:00","language": "de","url": "https://www.tutti.ch/de/vi/zuerich/sport-outdoor/velos/sample/00000001"}
Plan requirement
tutti.ch is reachable from Swiss residential connections. For reliable results, run on a paid Apify plan (Starter or above) and keep the proxy set to Apify Residential with country CH (the default). Free plans and datacenter connections are usually rejected by the upstream edge and may return zero items. You can also paste your own residential proxy URLs in the proxy field. The residentialBudgetMb and maxResidentialPercent settings let you cap residential usage and automatically switch to a cheaper pool when the cap is reached.