Tutti.ch Scraper — Swiss Classifieds
Pricing
from $2.00 / 1,000 result scrapeds
Tutti.ch Scraper — Swiss Classifieds
Scrape tutti.ch, Switzerland's largest classifieds marketplace. Extract listings with prices, city, canton, seller name, images, and posting dates from keyword searches or categories. Filter by canton for regional market research. No login required.
Pricing
from $2.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Extract classified listings and prices from tutti.ch, Switzerland's largest classifieds marketplace. Search by keyword, browse categories, filter by canton, and get structured data with prices in CHF, location, seller name, images, and posting dates. No login or cookies required.
Why use this scraper?
Tutti.ch is Switzerland's go-to classifieds platform (part of SMG Swiss Marketplace Group, alongside ricardo.ch and homegate.ch). Millions of second-hand items, vehicles, furniture, and electronics are listed by private sellers across all 26 cantons. This scraper turns those listings into clean JSON you can use for:
- Price research — see what second-hand goods actually cost on the Swiss market
- Resale arbitrage — spot underpriced items by region or category
- Regional market analysis — compare supply and prices per canton
- Lead generation — find sellers of specific product types
- Deal alerts — run on a schedule and diff new listings for your saved searches
Features
- Keyword search with automatic pagination (~30 listings per page)
- Category browsing (cars, bicycles, furniture, real estate, and more)
- Canton filter — only get listings from the region you care about
- Prices, city, canton, seller name, thumbnail, and exact posting timestamp
- Clean, flat JSON output — no HTML parsing needed on your side
- Handles Cloudflare protection via Bright Data Web Unlocker
How to scrape Tutti.ch data
- Get a Bright Data API key with a Web Unlocker zone named
web_unlocker1(tutti.ch sits behind a Cloudflare managed challenge, so a plain proxy is not enough) - Enter a Search Query (e.g.
velo,iphone,sofa) - Optionally set a Canton (e.g.
ZH,bern) and/or a Category (e.g.bicycles,cars) - Set Max Results to the number of listings you need
- Paste your Bright Data API key into the Bright Data API Key field
- Run the actor and download your data as JSON, CSV, or Excel
The scraper reads the server-rendered search results, so each page fetch returns ~30 fully-structured listings including the seller name and exact posting time.
Canton filtering
The canton input accepts any of these forms:
- Two-letter code:
ZH,BE,VD,TI - Tutti URL slug:
zuerich,bern,waadt,tessin - Canton name:
Zürich,Bern
Filtering happens on the listing location, so the actor keeps paginating until it has collected maxResults listings from that canton (or runs out of results).
Categories
The category input takes tutti.ch's internal category keys, for example: cars, bicycles, furniture, realEstate, electronics, motorcycles. Combine it with a search query or use it alone to browse the whole category.
Input
| Field | Type | Description |
|---|---|---|
searchQuery | string | Keyword to search for. Default: velo. |
category | string | Optional category key (e.g. bicycles, cars). |
canton | string | Optional canton filter (code, slug, or name). |
maxResults | integer | Maximum listings to return. Default: 100. |
brightDataApiKey | string (secret) | Your Bright Data Web Unlocker API key. Required. |
proxyConfiguration | object | Kept for compatibility — not used (Bright Data handles anti-bot). |
Example input
{"searchQuery": "velo","canton": "ZH","maxResults": 20}
Output
| Field | Type | Description |
|---|---|---|
id | string | Unique tutti.ch listing ID |
title | string | Listing title |
price | number | Asking price in CHF (0 for free items, null for "price on request") |
currency | string | Always CHF |
priceType | string | negotiable — classifieds prices are asking prices |
city | string | Listing location (city or municipality) |
canton | string | Two-letter canton code (e.g. ZH, LU) |
sellerName | string | Seller display name (alias) |
imageUrl | string | Primary listing image (thumbnail) |
listingDate | string | ISO 8601 timestamp when the listing was posted |
category | string | Category key, e.g. bicycles |
url | string | Full listing URL |
scrapedAt | string | ISO 8601 scrape timestamp |
Example output
{"id": "81868234","title": "Kindervelo","price": 20,"currency": "CHF","priceType": "negotiable","city": "Schüpfheim","canton": "LU","sellerName": "patrickwo8235","imageUrl": "https://c.tutti.ch/thumbnail/7686127849.jpg","listingDate": "2026-07-11T21:32:45+02:00","category": "bicycles","url": "https://www.tutti.ch/de/vi/luzern/sport-outdoor/velos/kindervelo/81868234","scrapedAt": "2026-07-11T19:42:33.714Z"}
Cost estimate
Each page fetch returns ~30 listings, so a 100-listing run needs about 4 requests and a 1,000-listing run about 34. Compute usage is minimal (no browser). Expect thousands of listings per dollar of platform credits, plus your Bright Data usage (roughly $0.0015 per page fetch — about $0.05 per 1,000 listings).
Limitations
- Condition, brand, and full descriptions are not shown on tutti.ch search pages; scraping them would require one extra request per listing. Not included in this version.
- Tutti.ch has no auctions —
priceTypeis alwaysnegotiableandauctionEndDatestays empty (the field exists for schema parity with our Ricardo.ch scraper). - Canton filtering happens after fetching, so heavily filtered runs fetch more pages than unfiltered ones.
Related scrapers
- Ricardo.ch Scraper — Swiss marketplace auctions and buy-now listings from ricardo.ch, Tutti's sibling platform (same SMG group).
- Homegate Scraper — Swiss real estate listings from homegate.ch.
- Comparis Scraper — Swiss insurance and telecom comparison data.
- Brack Scraper — Swiss electronics and IT products from brack.ch.
- AutoScout24 Scraper — European used car listings.
- Browse the Apify Store e-commerce category for more marketplace scrapers from Studio AMBA.
FAQ
Do I need a tutti.ch account? No. The scraper only reads public search pages. No login, no cookies.
Why do I need a Bright Data key? Tutti.ch is protected by a Cloudflare managed challenge that blocks datacenter IPs and headless browsers. Bright Data's Web Unlocker solves this server-side. A free trial account is enough to test.
Is this legal? The scraper only collects publicly visible listing data, the same information any visitor sees. You are responsible for how you use the data — check local regulations for your use case.
How fresh is the data? Search results are sorted by posting date, and each listing includes its exact posting timestamp, so scheduled runs can pick up new listings within minutes of posting.