Tutti.ch $1.5πŸ’° Swiss Classifieds, URLs & Rich Listing Data avatar

Tutti.ch $1.5πŸ’° Swiss Classifieds, URLs & Rich Listing Data

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Tutti.ch $1.5πŸ’° Swiss Classifieds, URLs & Rich Listing Data

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

AbotAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

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.

FieldExample
listingId"00000001"
title"Sample bike for sale"
description"Full listing text appears here."
price"499.-"
priceValue499
currency"CHF"
categoryId"bicycles"
categoryLabel"Velos"
parentCategoryId"sportsOutdoors"
locationName"Sample City"
postcode"8000"
canton"ZH"
cantonName"ZΓΌrich"
latitude47.0000
longitude8.0000
streetnull
sellerName"Sample Seller"
sellerType"private"
sellerAccountId"0000000000000000000"
memberSince"2020-01-01T00:00:00Z"
highlightedfalse
phonenull
externalUrlnull
imageUrl"https://c.tutti.ch/big/0000000000.jpg"
imageCount3
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

ParameterTypeDefaultDescription
modestringsearchsearch builds URLs from keyword / category / city. url takes tutti.ch links you paste.
keywordstring(empty)Free-text search term. Search mode only.
categorystringallRestrict to one of 23 tutti.ch categories. Search mode only.
locationsarray(empty)City slugs, e.g. zurich, bern, geneve. Search mode only.
minPriceinteger(none)Keep listings priced at or above this value. Search mode only.
maxPriceinteger(none)Keep listings priced at or below this value. Search mode only.
sortBystringnewestnewest, oldest, price_asc, price_desc. Search mode only.
urlsarray(empty)tutti.ch search / category URLs. URL mode only.
languagestringdeSite edition: de, fr or it.
fetchDetailsbooleanfalseAdds GPS, all images, phone, seller ID, member-since and properties (one extra request per listing).
maxPagesinteger1Result pages per search (30 listings each, up to 100).
maxListingsinteger0Total cap across all searches. 0 means no limit.
proxyobjectApify Residential CHConnection settings.
maxResidentialPercentinteger100Soft cap on the residential share of the run before switching to a cheaper pool.
residentialBudgetMbinteger0Residential 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.

  1. Authorize a connector once under Apify β†’ Settings β†’ Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to 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.