Tutti.ch Scraper: Swiss Classifieds Listings
Pricing
from $2.00 / 1,000 results
Tutti.ch Scraper: Swiss Classifieds Listings
Scrape tutti.ch, the Swiss second-hand marketplace, by keyword: title, price, postcode, place, canton, posting time, category, seller and thumbnail. Optional detail pages add full text, coordinates and all image links. Unofficial.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
reventadata
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Features
Share
Tutti.ch Scraper
Unofficial. This Actor is not affiliated with, authorised by, endorsed by, or in any way officially connected to tutti.ch. "tutti.ch" is a trademark of its respective owner and is used here only to describe what this tool reads. It reads the same public pages a browser does.
Tutti.ch Scraper extracts classified listings from tutti.ch, a Swiss second-hand marketplace, as clean tabular data.
What does it do?
Searches tutti.ch by keyword across all categories and returns one row per listing: title, a text snippet, price, postcode, place and canton, publication time, category, seller name, thumbnail and a link to the listing. With Fetch listing detail pages on, each row also carries the full description, coordinates, all image links, the listing's properties (such as condition) and the seller's account id and member-since date.
Why use it?
- Structured columns: every field is its own column, ready for CSV, Excel or JSON; the price is also given as a number.
- Detail pages on request: each search page takes 12 to 62 seconds to fetch (measured 2026-11-08, median about 22 s) and every detail page adds one more fetch, so turn detail pages on only when you need full texts and coordinates.
- No duplicates: a listing that shifts between result pages is returned once, also across several keywords.
- Paid placements flagged: highlighted listings can have nothing to do with your keyword; they stay in the data with
isHighlightedset to true, so you can filter them. - Public data only: seller names and the listing details the site shows to anyone are in the rows; nothing from behind a login.
How to use it
- Enter one or more keywords in Search keywords, for example
iphone. - Set Maximum rows and, if you like, Maximum pages per keyword (30 listings per page; the site serves at most 101 pages for one search, about 3,030 listings).
- Optionally switch on Fetch listing detail pages.
- Run the Actor and download the dataset as JSON, CSV, Excel or NDJSON.
Input
| Field | Type | Description |
|---|---|---|
searchQueries | array | Search keywords, each searched on its own. |
maxItems | integer | Hard cap on rows across all keywords. |
maxPages | integer | Optional cap on result pages per keyword (1 to 101). |
includeDetails | boolean | Open every listing's page for the full text, coordinates and more. Default off. Each detail page used in a returned row is charged as a separate detail-page event. |
Sample input
{"searchQueries": ["iphone"],"maxItems": 10,"maxPages": 1,"includeDetails": false}
Output
Each dataset row contains the fields below. The detail fields are null unless Fetch listing detail pages is on.
| Field | Type | Description |
|---|---|---|
id, url | string | tutti.ch listing id and the listing page. |
title, descriptionSnippet | string | Title as published and the start of the text (cut at about 130 characters). |
price, priceText | integer / string | Asking price as a whole number and exactly as the site shows it, for example 650.-. |
postcode, city, canton, cantonName | string | Where the listing is. |
postedAt | string | Publication or last renewal time, ISO 8601. |
categoryId | string | The site's category id. |
sellerName, sellerLogoUrl, sellerBadgeUrl | string | Seller as shown on the listing; sellerBadgeUrl is the image of the seller's subscription badge (seen: plus, pro) and is null for most sellers. |
thumbnailUrl, imageCount | string / integer | Thumbnail and number of images. |
isHighlighted | boolean | Paid highlighted placement. |
source, language | string | Platform and language code as the site gives them. |
description, latitude, longitude, imageUrls, properties | Detail pages only. | |
categoryLabel, parentCategoryLabel, sellerPublicAccountId, sellerMemberSince, sellerProfileUrl, detailPrice | Detail pages only. | |
matchedKeyword, searchUrl, page, scrapedAt | Which search returned the row, the page it was on, and when the run started. |
Sample output
A real row from a run on 2026-11-08 (keyword iphone, detail pages off). The sample leaves out these keys, which every row carries: description, latitude, longitude, imageUrls, properties, categoryLabel, parentCategoryLabel, sellerPublicAccountId, sellerMemberSince, sellerProfileUrl and detailPrice (all null with detail pages off), and scrapedAt (the time the run started):
{"id": "52369012","url": "https://www.tutti.ch/de/vi/52369012","title": "Ungeöffnetes iPhone 13 Pro Silikon Case mit MagSafe","descriptionSnippet": "Neues Silikon Case mit MagSafe wurde von Apple speziell für dein iPhone 13 Pro entwickelt. Es schützt dein iPhone genauso gut, wi…","price": 55,"priceText": "55.-","postcode": "5600","city": "Lenzburg","canton": "AG","cantonName": "Aargau","postedAt": "2026-11-08T08:36:33+01:00","categoryId": "phoneNavigationAccessories","sellerName": "Ariana","sellerLogoUrl": null,"sellerBadgeUrl": null,"thumbnailUrl": "https://c.tutti.ch/thumbnail/2560818841.jpg","imageCount": 2,"isHighlighted": false,"source": "tutti","language": "DE","matchedKeyword": "iphone","searchUrl": "https://www.tutti.ch/de/q/suche/Ak6ZpcGhvbmXAlMDAwMA?page=1","page": 1}
Notes and limits
- One keyword reaches at most 101 pages (about 3,030 listings); that is a limit of the site. Use several specific keywords for larger sweeps.
- The site protects itself against automated access, so each page is fetched through an unblocking service and takes 12 to 62 seconds (measured 2026-11-08, median about 22 s). Detail pages add one fetch per listing.
- Search pages give a text snippet and no coordinates; the full text and coordinates come with detail pages.
- Phone numbers and street addresses are not read.
Pricing
Detail pages (Fetch listing detail pages) are charged as a separate event, one per detail page used in a returned row; a detail page that cannot be read is not charged. For current pricing and details, see the Store page.
Privacy & Compliance
This Actor reads only publicly accessible pages and returns the public data they show. It sends no login.