Tutti.ch Scraper Swiss Classifieds & Marketplace
Pricing
from $3.00 / 1,000 search result listings
Tutti.ch Scraper Swiss Classifieds & Marketplace
Scrape 2M+ classified listings from tutti.ch, Switzerland's #1 classifieds platform. Extract prices, locations, cantons, seller info, GPS coordinates, images, and contact details. Browse by category (cars, real estate, electronics, furniture, jobs, and 20+ more). HTTP-only, fast, pay-per-result.
Pricing
from $3.00 / 1,000 search result listings
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
2
Bookmarked
47
Total users
10
Monthly active users
6.8 hours
Issues response
5 days ago
Last modified
Categories
Share
Tutti.ch Scraper
Scrape 2M+ classified listings from tutti.ch, Switzerland's largest classifieds platform.
How it works
- Go to tutti.ch and set up your search with all desired filters (category, search query, price range, fuel type, body type, location, etc.)
- Copy the URL from your browser
- Paste it into the Search URLs input
- Run the actor
That's it. The actor extracts all listings matching your search, with automatic pagination.
Use with AI Agents (MCP)
Connect this actor to any MCP-compatible AI client — Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.
Apify MCP server URL:
https://mcp.apify.com?tools=santamaria-automations/tutti-ch-scraper
Example prompt once connected:
"Use
tutti-ch-scraperto scrape company data from tutti ch. Return results as a table."
Clients that support dynamic tool discovery (Claude.ai, VS Code) will receive the full input schema automatically via add-actor.
Features
- Any filter combination — Whatever you can filter on tutti.ch, the actor can scrape
- Multiple searches — Paste multiple URLs to run several searches in one run
- Detail enrichment — Optionally get GPS coordinates, all images, and seller ID
- 2M+ listings — Access the entire tutti.ch marketplace
- Fast & cheap — HTTP-only, 128 MB, pay-per-result
Output
| Field | Description | Source |
|---|---|---|
title | Listing title | Search |
price / price_chf | Price (formatted + numeric) | Search |
category | Category (e.g., "cars", "electronics") | Search |
location / canton / postcode | Location details | Search |
seller_name / seller_type | Seller info (private/professional) | Search |
image_url | Main thumbnail | Search |
latitude / longitude | GPS coordinates | Detail |
image_urls | All listing images | Detail |
seller_id | Seller account ID | Detail |
phone | Phone number (when available) | Detail + Regex |
email | Email address (regex extracted from description) | Regex |
description | Full listing text | Search |
source_url | Link to listing on tutti.ch | Both |
Pricing
No start fee — pay only for results:
| Event | Cost |
|---|---|
| Listing (basic) | $0.003 |
| Listing (with details) | $0.005 |
100 listings = $0.30 (basic) or $0.50 (with details)
Examples
Search by keyword (copy the URL straight from your browser)
The simplest way to get started: search on tutti.ch, copy the URL from your browser bar, and paste it in.
{"searchUrls": ["https://www.tutti.ch/de/li/ganze-schweiz?q=omega"],"maxResults": 50}
This is the share-link format tutti.ch produces when you search and copy the URL. Both ?q= and ?query= work.
BMW Cabriolets with petrol engine (full-filter URL from tutti.ch)
When you apply category filters on tutti.ch, the URL contains an encoded search token. Paste those URLs in too:
{"searchUrls": ["https://www.tutti.ch/de/q/autos/Ak6NibXekY2Fyc5SSkrFjYXJzQXV0b1Njb3V0VHlwZaljYWJyaW9sZXSStWNhcnNBdXRvU2NvdXRGdWVsVHlwZaZwZXRyb2zAwMA?sorting=newest&query=bmw"],"maxResults": 50}
Multiple searches in one run
{"searchUrls": ["https://www.tutti.ch/de/q/immobilien/Ak8CuaW1tb2JpbGllbpTAwMDA?query=wohnung","https://www.tutti.ch/de/q/elektronik/Ak8CrGVsZWN0cm9uaWNzlMDAwMA?query=iphone"],"maxResults": 200,"maxResultsPerQuery": 100}
All listings (no filter)
{"maxResults": 100,"includeDetails": true}
Monitoring / delta mode
Use this actor to watch a search for new listings without paying to re-scan items you have already seen.
Set sortBy to newest (the default) and maxAgeHours to the interval between your scheduled runs. On each run the actor returns only listings posted within that window, and it stops paginating as soon as it sees three consecutive items older than the cutoff. You pay only for the fresh pages, not the full catalogue.
Example: monitor iPhone listings every 6 hours
{"searchUrls": ["https://www.tutti.ch/de/li/ganze-schweiz?q=iphone"],"maxResults": 200,"maxResultsPerQuery": 100,"sortBy": "newest","maxAgeHours": 6}
Schedule this input every 6 hours and you get a delta feed of new listings only.
How the early-stop works
When sortBy=newest is active and maxAgeHours is set, the actor tracks consecutive stale items per query. After three stale items in a row it stops fetching further pages for that query and logs an INFO line like:
[tutti-ch] early-stopped pagination for query "keyword=iphone": 3 consecutive stale items (> 6h) — saved 8 pages
One or two highlighted or promoted listings may appear out of chronological order on a page, so the actor waits for three consecutive stale items before stopping rather than one.
URL-level sort wins
If your Search URL already contains ?sorting=..., that value takes priority over the sortBy input field. This is intentional: URL-level parameters encode the exact search you configured on tutti.ch, and the input field is a convenience for plain keyword searches where no URL-level sort exists.
Combination that does not save pages
If you set maxAgeHours with a sort other than newest (for example sortBy=cheapest), the early-stop is disabled because oldest items can appear anywhere in a price-sorted list. The output filter still applies, but you pay for all pages up to maxResultsPerQuery.
Input fields
| Field | Type | Description |
|---|---|---|
searchUrls | array | One or more tutti.ch search or listing URLs |
maxResults | integer | Total result cap across all searches |
maxResultsPerQuery | integer | Cap per search URL |
sortBy | string | newest (default), oldest, cheapest, expensive, relevant |
maxAgeHours | integer | Drop items older than N hours; stop paginating once the cutoff is passed (requires sortBy=newest) |
includeDetails | boolean | Fetch detail page for GPS, all images, seller ID |
Related Actors
European Classifieds
- Kleinanzeigen.de Scraper — Germany
- Willhaben.at Scraper — Austria
- Marktplaats.nl Scraper — Netherlands
- Subito.it Scraper — Italy
- Njuskalo.hr Scraper — Croatia
Real Estate
Enrich your data
Issues & Feedback
Missing something or not working as expected? Open an issue and we'll fix it.