{
  "openapi": "3.0.1",
  "info": {
    "title": "Swiss Classifieds Scraper for Tutti.ch: Prices, Photos, New Ads",
    "description": "Scrape Swiss classifieds from tutti.ch by keyword, category and canton. Every row has a clean CHF price, photos, location with canton, seller type and posting date. Monitor mode returns only new, repriced, re-listed and removed ads. Export to Excel, Sheets or JSON. $2.00 per 1K listings.",
    "version": "0.1",
    "x-build-id": "XCFxgwvaB2t5A2ziD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~tutti-ch-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-tutti-ch-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/getascraper~tutti-ch-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-tutti-ch-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/getascraper~tutti-ch-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-tutti-ch-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "What to do",
            "enum": [
              "search",
              "urls",
              "monitor"
            ],
            "type": "string",
            "description": "Search listings with the fields below, paste tutti.ch links (searches, single listings or seller pages), or monitor a search for changes. Monitor mode is built for schedules: after a free first run it returns only new listings, price drops, price increases, renewed and removed listings, and unchanged listings are never charged.",
            "default": "search"
          },
          "startUrls": {
            "title": "tutti.ch links",
            "type": "array",
            "description": "Used in 'Paste tutti.ch links' mode. Paste a search page (its keyword, category, place and price filters are kept), a single listing, or a seller page (the seller's current listings). Each search link returns up to 'Max listings'. Links that cannot be read are listed in the run summary, never saved as empty rows.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Words to look for in titles and descriptions, for example 'velo', 'iphone 13' or 'sofa'. Leave empty to browse by category, place or price only.",
            "default": "velo"
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Limit the search to one or more categories. Picking a group such as 'Vehicles (all)' searches every category inside it. Leave empty for all categories.",
            "items": {
              "type": "string",
              "enum": [
                "antiquesArts",
                "babyChild",
                "babyCare",
                "strollersSeats",
                "childrensRoom",
                "babyClothes",
                "books",
                "comics",
                "novels",
                "nonFictionBooks",
                "otherBooks",
                "officeBusiness",
                "officeMaterialFurniture",
                "commercialInstallationsFurniture",
                "computersAccessories",
                "computers",
                "computerComponentsAccessories",
                "software",
                "tablets",
                "services",
                "businessOfficeServices",
                "cateringHospitalityServices",
                "computerServices",
                "electronicMechanicalServices",
                "financeLegalServices",
                "healthBeautyServices",
                "craftsServices",
                "householdCleaningServices",
                "coursesTuitionServices",
                "petServices",
                "transportationMovingServices",
                "propertyMaintenanceServices",
                "otherServices",
                "vehicles",
                "cars",
                "carAccessories",
                "boats",
                "motorcycleAccessories",
                "motorcycles",
                "utilityVehicles",
                "caravans",
                "films",
                "photoVideo",
                "photoCameras",
                "videoCameras",
                "photoVideoAccessories",
                "gardenCraft",
                "buildingMaterials",
                "gardenOutfitting",
                "gardenEquipment",
                "household",
                "lighting",
                "decorationAccessories",
                "equipmentTools",
                "food",
                "furniture",
                "realEstate",
                "clothesAccessories",
                "accessories",
                "womensClothes",
                "mensClothes",
                "womensShoes",
                "mensShoes",
                "bagsWallets",
                "watchesJewelry",
                "music",
                "cds",
                "musicalInstruments",
                "collectibles",
                "toysHandicrafts",
                "handicrafts",
                "modeling",
                "consolesGames",
                "toys",
                "sportsOutdoors",
                "camping",
                "fitness",
                "bicycles",
                "winterSports",
                "otherSports",
                "jobs",
                "gastronomy",
                "healthcare",
                "craftConstruction",
                "childcareCleaning",
                "otherJobs",
                "tvAudio",
                "audioHifi",
                "dvdPlayers",
                "tv",
                "phonesNavigation",
                "landlinePhones",
                "cellPhones",
                "navigationSystems",
                "phoneNavigationAccessories",
                "ticketsVouchers",
                "animals",
                "fish",
                "rabbitsRodents",
                "dogs",
                "dogAccessories",
                "cats",
                "horses",
                "reptiles",
                "birds",
                "otherAnimals",
                "other"
              ],
              "enumTitles": [
                "Antiques & Art",
                "Baby & Child (all)",
                "Baby & Child > Baby care",
                "Baby & Child > Strollers & seats",
                "Baby & Child > Children's room",
                "Baby & Child > Baby clothes & shoes",
                "Books (all)",
                "Books > Comics",
                "Books > Novels",
                "Books > Non-fiction & guides",
                "Books > Other books",
                "Office & Business (all)",
                "Office & Business > Office supplies & furniture",
                "Office & Business > Shop fittings",
                "Computers & Accessories (all)",
                "Computers & Accessories > Computers",
                "Computers & Accessories > Components & accessories",
                "Computers & Accessories > Software",
                "Computers & Accessories > Tablets",
                "Services (all)",
                "Services > Office services",
                "Services > Catering, hospitality & party planning",
                "Services > Computer & phone services",
                "Services > Electronics & mechanics",
                "Services > Finance & legal",
                "Services > Health & beauty",
                "Services > Trades & crafts",
                "Services > Household & cleaning",
                "Services > Courses & tuition",
                "Services > Pet services",
                "Services > Moving & transport",
                "Services > Property maintenance & security",
                "Services > Other services",
                "Vehicles (all)",
                "Vehicles > Cars",
                "Vehicles > Car accessories",
                "Vehicles > Boats & accessories",
                "Vehicles > Motorcycle accessories",
                "Vehicles > Motorcycles",
                "Vehicles > Utility vehicles",
                "Vehicles > Caravans & motorhomes",
                "Films",
                "Photo & Video (all)",
                "Photo & Video > Photo cameras",
                "Photo & Video > Video cameras",
                "Photo & Video > Photo & video accessories",
                "Garden & DIY (all)",
                "Garden & DIY > Building materials",
                "Garden & DIY > Garden furnishing",
                "Garden & DIY > Tools & machines",
                "Household (all)",
                "Household > Lighting",
                "Household > Decoration & accessories",
                "Household > Appliances & utensils",
                "Household > Food",
                "Household > Furniture",
                "Real estate",
                "Clothing & Accessories (all)",
                "Clothing & Accessories > Accessories & beauty",
                "Clothing & Accessories > Women's clothing",
                "Clothing & Accessories > Men's clothing",
                "Clothing & Accessories > Women's shoes",
                "Clothing & Accessories > Men's shoes",
                "Clothing & Accessories > Bags & wallets",
                "Clothing & Accessories > Watches & jewelry",
                "Music (all)",
                "Music > CDs, vinyl & tapes",
                "Music > Musical instruments",
                "Collectibles",
                "Toys & Crafts (all)",
                "Toys & Crafts > Crafts",
                "Toys & Crafts > Model building",
                "Toys & Crafts > Consoles & games",
                "Toys & Crafts > Toys",
                "Sports & Outdoors (all)",
                "Sports & Outdoors > Camping",
                "Sports & Outdoors > Fitness",
                "Sports & Outdoors > Bicycles",
                "Sports & Outdoors > Winter sports",
                "Sports & Outdoors > Other sports",
                "Jobs (all)",
                "Jobs > Hospitality jobs",
                "Jobs > Healthcare jobs",
                "Jobs > Trades & construction jobs",
                "Jobs > Childcare & cleaning jobs",
                "Jobs > Other jobs",
                "TV & Audio (all)",
                "TV & Audio > Audio & hi-fi",
                "TV & Audio > DVD players",
                "TV & Audio > TVs",
                "Phones & Navigation (all)",
                "Phones & Navigation > Landline phones",
                "Phones & Navigation > Mobile phones",
                "Phones & Navigation > Navigation systems",
                "Phones & Navigation > Phone & navigation accessories",
                "Tickets & Vouchers",
                "Animals (all)",
                "Animals > Fish",
                "Animals > Rabbits & rodents",
                "Animals > Dogs",
                "Animals > Dog accessories",
                "Animals > Cats",
                "Animals > Horses",
                "Animals > Reptiles",
                "Animals > Birds",
                "Animals > Other animals",
                "Other"
              ]
            }
          },
          "cantons": {
            "title": "Cantons",
            "type": "array",
            "description": "Only listings located in these cantons. Pick as many as you like; no codes or search links to look up. Leave empty (and leave Cities empty) to search all of Switzerland.",
            "items": {
              "type": "string",
              "enum": [
                "AG",
                "AI",
                "AR",
                "BE",
                "BL",
                "BS",
                "FR",
                "GE",
                "GL",
                "GR",
                "JU",
                "LU",
                "NE",
                "NW",
                "OW",
                "SG",
                "SH",
                "SO",
                "SZ",
                "TG",
                "TI",
                "UR",
                "VD",
                "VS",
                "ZG",
                "ZH"
              ],
              "enumTitles": [
                "Aargau (AG)",
                "Appenzell Innerrhoden (AI)",
                "Appenzell Ausserrhoden (AR)",
                "Bern (BE)",
                "Basel-Landschaft (BL)",
                "Basel-Stadt (BS)",
                "Fribourg (FR)",
                "Geneva (GE)",
                "Glarus (GL)",
                "Graubünden (GR)",
                "Jura (JU)",
                "Lucerne (LU)",
                "Neuchâtel (NE)",
                "Nidwalden (NW)",
                "Obwalden (OW)",
                "St. Gallen (SG)",
                "Schaffhausen (SH)",
                "Solothurn (SO)",
                "Schwyz (SZ)",
                "Thurgau (TG)",
                "Ticino (TI)",
                "Uri (UR)",
                "Vaud (VD)",
                "Valais (VS)",
                "Zug (ZG)",
                "Zurich (ZH)"
              ]
            },
            "default": [
              "ZH"
            ]
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Only listings in these towns or cities, for example 'Bern', 'St. Gallen' or 'Lausanne'. Combine with Cantons to cover both. A city that is not recognised is reported in the log and skipped.",
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "Radius around cities (km)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Also include listings within this many kilometres of each city above. Only applies when you enter cities and no cantons."
          },
          "minPrice": {
            "title": "Min price (CHF)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Lowest asking price to include. Listings with no price (free items, price on request) are not matched by a price range."
          },
          "maxPrice": {
            "title": "Max price (CHF)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Highest asking price to include."
          },
          "freeOnly": {
            "title": "Only free items",
            "type": "boolean",
            "description": "Return only listings offered for free. Overrides the price range above.",
            "default": false
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "any",
              "private",
              "commercial"
            ],
            "type": "string",
            "description": "Private sellers only, businesses only, or both. Handy for finding private bargains or tracking dealer stock.",
            "default": "any"
          },
          "adLanguages": {
            "title": "Ad language",
            "type": "array",
            "description": "Only ads written in these languages. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "fr",
                "it"
              ],
              "enumTitles": [
                "German",
                "French",
                "Italian"
              ]
            }
          },
          "includePartnerSites": {
            "title": "Include partner-site ads",
            "type": "boolean",
            "description": "tutti.ch also shows ads that come from partner marketplaces. Off by default so every row is a tutti.ch ad. Turn on to match what the website shows; each row's 'source' field tells you where it came from.",
            "default": false
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "priceAsc",
              "priceDesc",
              "relevance"
            ],
            "type": "string",
            "description": "Newest first returns the most recently published or renewed listings first. Price sorts put the cheapest or most expensive first (free items count as cheapest).",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many listings. Searches larger than one pass can read are split automatically so you still get complete coverage up to this number, and the run summary shows how many matches the source reported versus how many were delivered. Free-plan runs are capped at 25.",
            "default": 25
          },
          "maxImages": {
            "title": "Photos per listing",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Most photo links to keep per listing (full-size). Set 0 to leave photos out.",
            "default": 5
          },
          "language": {
            "title": "Category label language",
            "enum": [
              "en",
              "de",
              "fr",
              "it"
            ],
            "type": "string",
            "description": "Language of the category names in the output. Listing titles and descriptions stay in the language the seller wrote them.",
            "default": "en"
          },
          "includeSellerIdentity": {
            "title": "Include seller name and ID",
            "type": "boolean",
            "description": "Adds the seller's public display name, account ID and profile link to each row. Off by default because display names are often real names. No phone numbers or e-mail addresses are ever collected.",
            "default": false
          },
          "monitorScanLimit": {
            "title": "Monitor scan limit",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Monitor mode only: how many of the newest matching listings to check on each run. Set it at or above the number of matches so removed listings can be detected. Does not apply to search mode.",
            "default": 5000
          },
          "stateName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional name for the monitor's memory. Runs that share a name share history, so give each scheduled search its own name. Left empty, the same filters always continue the same history."
          },
          "baselineRows": {
            "title": "Save the first run's listings",
            "type": "boolean",
            "description": "By default the first monitor run only records what exists today (free) and saves no rows. Turn on to also save those listings; they are charged like search results.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "The default proxy settings are required for this Actor to reach listings. Leave them as they are.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "CH"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}