Tutti Scraper avatar

Tutti Scraper

Pricing

from $1.50 / 1,000 ad listings

Go to Apify Store
Tutti Scraper

Tutti Scraper

Extract data from classified advertisements on tutti.ch. Scrape details from jobs, furniture, sports items, services, cars, trucks and more. Download listings data in JSON, XML, Excel, CSV and other formats. Unlimited and extremely fast!

Pricing

from $1.50 / 1,000 ad listings

Rating

0.0

(0)

Developer

Gen First

Gen First

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Tutti.ch Scraper

Extract listings, prices, descriptions, specifications, photos, locations, and seller details from tutti.ch, one of Switzerland's most popular classifieds sites. Paste a tutti.ch search, seller, or ad URL and get clean, structured JSON that you can export to CSV, Excel, JSON, XML, or HTML Table. No login, no cookies, and no proxy setup required.

Quick facts

Websitehttps://www.tutti.ch (languages de, fr, it)
Accepted inputSearch URLs, keyword search URLs, seller (shop) URLs, single ad URLs
OutputOne JSON record per listing, in the run's default dataset
PaginationAutomatic, up to 3,030 listings per search or seller URL
LimitmaxRecords (default 100) caps the total number of records per run
ProxyNothing to configure
Login / cookiesNot required

What does Tutti.ch Scraper do?

  • 🔎 Scrapes search results — paste any tutti.ch search URL, with all your filters and sorting, and collect every listing in it. Pages are followed automatically.
  • 🔤 Scrapes keyword searches — search by free text with https://www.tutti.ch/de/q?query=<keyword>.
  • 🏪 Scrapes seller and shop pages — paste a seller profile URL and collect every ad that seller has published.
  • 📄 Scrapes individual ads — paste a single ad URL to get its full record.
  • 🚗 🛋️ 📱 Works in every category — cars, motorbikes, furniture, electronics, fashion, pets, and more.
  • 🧾 Returns rich data — title, description, price in CHF, photos, location with coordinates, category, item specifications, and seller profile.
  • 📤 Export anywhere — JSON, CSV, Excel, XML, or HTML Table, or read results through the Apify API.

About tutti.ch

tutti.ch is a Swiss online marketplace for classified ads, available in German, French, and Italian. Private sellers and businesses list everything from cars and bikes to furniture, electronics, clothing, and pets. Prices are in Swiss francs (CHF).

What can you do with this data?

  • Price monitoring — track asking prices for a category, brand, or model over time.
  • Market research — compare supply and prices across cantons, categories, or sellers.
  • Competitor and dealer tracking — follow every ad a specific seller or shop publishes.
  • Lead generation — find active sellers in a niche.
  • Dataset building — feed structured listings into analytics, dashboards, or ML pipelines.

How to use Tutti.ch Scraper

  1. Open tutti.ch in your browser, run a search (add any filters and sorting you need), or open a seller profile or an ad.
  2. Copy the URL from the address bar.
  3. Paste it into the urls field. Add as many URLs as you like; you can mix types.
  4. Set maxRecords to the maximum number of records you want (default 100).
  5. Click Start.
  6. Download the results as JSON, CSV, Excel, XML, or HTML Table.

Input parameters

ParameterTypeRequiredDefaultDescription
urlsarrayyes—tutti.ch URLs to scrape. Each item is an object: { "url": "<tutti.ch URL>" }
maxRecordsintegerno100Maximum number of records saved in the run, across all URLs. Minimum 1.

Input format:

{
"urls": [{ "url": "https://www.tutti.ch/de/q/autos-audi/Ak8CkY2Fyc5SRkrJjYXJzQXV0b1Njb3V0QnJhbmSkYXVkacDAwA" }],
"maxRecords": 100
}

Rules:

  • Every URL must start with https://www.tutti.ch/. Other forms, such as https://tutti.ch/... or http://..., are ignored.
  • <lang> in the URL patterns below is de, fr, or it. Listing text stays in the language the seller wrote it in.
  • A CSV file or Google Sheet must list one URL per row in the first column. A Google Sheet must be shared as "Anyone with the link can view".
  • A listing found through several URLs with the same <lang> is scraped only once.

Supported input URLs

URL typePatternExample
Searchhttps://www.tutti.ch/<lang>/q/<slug>/<token>https://www.tutti.ch/de/q/autos-audi/Ak8CkY2Fyc5SRkrJjYXJzQXV0b1Njb3V0QnJhbmSkYXVkacDAwA
Keyword searchhttps://www.tutti.ch/<lang>/q?query=<keyword>https://www.tutti.ch/de/q?query=velo
Seller / shophttps://www.tutti.ch/<lang>/seller?id=<seller-id>https://www.tutti.ch/de/seller?id=8574745325378283257
Single adhttps://www.tutti.ch/<lang>/vi/<ad-id>https://www.tutti.ch/de/vi/83475620

Copy URLs straight from your browser's address bar. The filters, sorting, and page you chose on tutti.ch are kept.

Unsupported URLs

These URLs are skipped and a warning is written to the run log:

  • Category pages, such as https://www.tutti.ch/de/cat/....
  • Search URLs without the code at the end, such as https://www.tutti.ch/de/q/autos-audi. Apply a filter on tutti.ch and copy the new URL.
  • Seller URLs without a numeric id.
  • English paths (/en/...) and the home page.

Limits

  • Search and seller URLs return 30 listings per page and are followed for up to 101 pages, so one URL yields at most 3,030 listings. For bigger result sets, split the search into narrower ones (by category, canton, or price range) or add the same search with a different sort order.
  • maxRecords counts every saved record, including "not found" records (see the FAQ).

Examples

Input

Collect the 50 cheapest listings from a search:

{
"urls": [{ "url": "https://www.tutti.ch/de/q/autos-audi/Ak8CkY2Fyc5SRkrJjYXJzQXV0b1Njb3V0QnJhbmSkYXVkacDAwA?sorting=cheapest" }],
"maxRecords": 50
}

Collect up to 500 newest ads from one seller:

{
"urls": [{ "url": "https://www.tutti.ch/de/seller?id=8574745325378283257" }],
"maxRecords": 500
}

Scrape one ad:

{
"urls": [{ "url": "https://www.tutti.ch/de/vi/83475620" }],
"maxRecords": 1
}

Mix a keyword search, a seller, and a single ad in one run:

{
"urls": [
{ "url": "https://www.tutti.ch/fr/q?query=velo&sorting=newest" },
{ "url": "https://www.tutti.ch/de/seller?id=8574745325378283257" },
{ "url": "https://www.tutti.ch/it/vi/83475620" }
],
"maxRecords": 200
}

Output

Every URL type produces the same kind of record: one full listing per ad. The example below is illustrative; personal details are replaced with placeholders and the lists are shortened.

{
"id": "12345678",
"url": "https://www.tutti.ch/de/vi/12345678",
"title": "Subaru Forester 2.5 XT",
"description": "Gepflegter Subaru Forester mit Panoramadach und Anhängerkupplung.\nAb Platz.",
"language": "DE",
"price": 4500,
"priceText": "4'500.-",
"currency": "CHF",
"images": ["https://c.tutti.ch/big/1111111111.jpg", "https://c.tutti.ch/big/2222222222.jpg"],
"location": {
"postalCode": "3000",
"city": "Bern",
"canton": "Bern",
"cantonCode": "BE",
"street": null,
"latitude": 46.948,
"longitude": 7.4474
},
"category": ["Fahrzeuge", "Autos"],
"categoryId": "cars",
"attributes": {
"Marke": "SUBARU",
"Modell": "FORESTER",
"Erstzulassung": "2008",
"Kilometerstand": "150000",
"Treibstoff": "Benzin",
"Getriebeart": "Automatik"
},
"seller": {
"id": "1234567890123456789",
"name": "Example Seller",
"type": null,
"profileUrl": "https://www.tutti.ch/de/seller?id=1234567890123456789",
"memberSince": "2018-09-17T16:03:29Z",
"websiteUrl": null,
"logoUrl": null,
"location": null,
"subscription": null
},
"source": "tutti",
"externalUrl": null,
"highlighted": false,
"publishedAt": "2026-10-12T01:05:25+02:00",
"scrapedAt": "2026-10-15T08:30:00.000Z",
"inputUrl": "https://www.tutti.ch/de/vi/12345678"
}

Output formats

Results are saved to the run's default dataset. When the run finishes, download them as JSON, CSV, Excel, XML, or HTML Table, or read them through the Apify API.

❓ FAQ

Do I need proxies to scrape tutti.ch?

No, there is no proxy setting in the input.

Do I need to write code?

No. Paste your URLs, set maxRecords, and click Start.

Can I scrape a whole search or just one ad?

Both. A search URL collects every listing in the results; an ad URL collects one listing. You can mix search, keyword search, seller, and ad URLs in the same urls list.

Can I scrape every ad from one seller or shop?

Yes. Paste the seller's profile URL, for example https://www.tutti.ch/de/seller?id=8574745325378283257. The actor goes through all of the seller's ads, up to maxRecords and the 3,030-listing limit.

How many listings can I scrape?

Set the total with maxRecords (default 100). One search or seller URL returns at most 3,030 listings; split large searches into narrower ones to collect more.

How do I scrape many URLs at once?

Add them all to urls, or put them in a CSV file or Google Sheet (one URL per row, first column) and add { "requestsFromUrl": "<link>" } to urls.

How do I know which input produced a record?

Every record has an inputUrl field set to the URL you supplied.

What if an ad, search, or seller has no data?

The actor still saves a record so that gaps are visible:

  • An ad that no longer exists: { "inputUrl": "...", "url": "...", "title": "AD not found" }.
  • A search with no results: { "inputUrl": "...", "url": "...", "title": "No results found" }.
  • A seller id that does not exist: { "inputUrl": "...", "url": "...", "title": "Seller not found" }.

Scraping publicly available data is generally permitted, but you are responsible for how you use it. Listings can contain personal data, such as seller names, which is protected by the Swiss Federal Act on Data Protection (FADP) and, where it applies, the GDPR. Collect only what your use case needs, follow tutti.ch's terms, and consult a lawyer if you are unsure.

What export formats are available?

JSON, CSV, Excel, XML, and HTML Table, plus programmatic access through the Apify API.

Support

For custom or simplified outputs, or to report a bug, contact the developer at support (at) getmediumdata.com or open an issue.