{
  "snapshot_id": "approved-static-48d32b636f07abc8",
  "page_version": "f3bab82af13b719daede6ba643ff1264",
  "content_date": "2026-10-16",
  "schema_version": "immigrationdb-region-v1",
  "region_id": "region:ch:official:ch:sg",
  "name": "Canton of St. Gallen",
  "name_local": "St. Gallen",
  "country_code": "CH",
  "country": "Switzerland",
  "canonical_url": "https://immigrationdb.com/countries/switzerland/canton-of-st-gallen/",
  "summary": "Canton of St. Gallen has 45 published cities; the largest is St. Gallen, with 78,863 residents. Net rent runs from €10.40 to €17.36 per m² a month across the 43 cities that publish it.",
  "cities": [
    {
      "name": "St. Gallen",
      "canonical_url": "https://immigrationdb.com/cities/ch/3203-st-gallen/",
      "population": 78863,
      "rent_eur_per_m2_month": 15.008515144319215,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 2,
      "pm25_ug_m3": 7.4
    },
    {
      "name": "Rapperswil-Jona",
      "canonical_url": "https://immigrationdb.com/cities/ch/3340-rapperswil-jona/",
      "population": 28779,
      "rent_eur_per_m2_month": 17.36279202970262,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 1.3,
      "pm25_ug_m3": null
    },
    {
      "name": "Wil",
      "canonical_url": "https://immigrationdb.com/cities/ch/wil/",
      "population": 25534,
      "rent_eur_per_m2_month": 15.106610014543524,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Wil (SG)",
      "canonical_url": "https://immigrationdb.com/cities/ch/wil-sg/",
      "population": 25176,
      "rent_eur_per_m2_month": 15.106610014543524,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 2.3,
      "pm25_ug_m3": null
    },
    {
      "name": "Gossau (SG)",
      "canonical_url": "https://immigrationdb.com/cities/ch/3443-gossau-sg/",
      "population": 18633,
      "rent_eur_per_m2_month": 13.92947157185182,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 1.6,
      "pm25_ug_m3": null
    },
    {
      "name": "Uzwil",
      "canonical_url": "https://immigrationdb.com/cities/ch/uzwil/",
      "population": 14570,
      "rent_eur_per_m2_month": 13.733281831403204,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 2.5,
      "pm25_ug_m3": null
    },
    {
      "name": "Buchs (SG)",
      "canonical_url": "https://immigrationdb.com/cities/ch/3271-buchs-sg/",
      "population": 14038,
      "rent_eur_per_m2_month": 15.695179235889375,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 1.8,
      "pm25_ug_m3": null
    },
    {
      "name": "Altstätten",
      "canonical_url": "https://immigrationdb.com/cities/ch/3251-altstatten/",
      "population": 12581,
      "rent_eur_per_m2_month": 13.831376701627512,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 2.1,
      "pm25_ug_m3": null
    },
    {
      "name": "Flawil",
      "canonical_url": "https://immigrationdb.com/cities/ch/flawil/",
      "population": 10632,
      "rent_eur_per_m2_month": 13.340902350505969,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 1.9,
      "pm25_ug_m3": null
    },
    {
      "name": "Widnau",
      "canonical_url": "https://immigrationdb.com/cities/ch/widnau/",
      "population": 10409,
      "rent_eur_per_m2_month": 14.812325403870597,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 2.05,
      "pm25_ug_m3": null
    },
    {
      "name": "Rorschach",
      "canonical_url": "https://immigrationdb.com/cities/ch/3215-rorschach/",
      "population": 10274,
      "rent_eur_per_m2_month": 14.125661312300437,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": 3.6,
      "pm25_ug_m3": null
    },
    {
      "name": "Eschenbach (SG)",
      "canonical_url": "https://immigrationdb.com/cities/ch/eschenbach-sg/",
      "population": 10266,
      "rent_eur_per_m2_month": 14.812325403870597,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Wittenbach",
      "canonical_url": "https://immigrationdb.com/cities/ch/wittenbach/",
      "population": 10142,
      "rent_eur_per_m2_month": 13.24280748028166,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Kirchberg (SG)",
      "canonical_url": "https://immigrationdb.com/cities/ch/kirchberg-sg/",
      "population": 9791,
      "rent_eur_per_m2_month": 13.046617739833044,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Goldach",
      "canonical_url": "https://immigrationdb.com/cities/ch/goldach/",
      "population": 9783,
      "rent_eur_per_m2_month": 14.61613566342198,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Mels",
      "canonical_url": "https://immigrationdb.com/cities/ch/mels/",
      "population": 9581,
      "rent_eur_per_m2_month": 14.223756182524745,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Oberriet (SG)",
      "canonical_url": "https://immigrationdb.com/cities/ch/oberriet-sg/",
      "population": 9373,
      "rent_eur_per_m2_month": 13.24280748028166,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Wattwil",
      "canonical_url": "https://immigrationdb.com/cities/ch/wattwil/",
      "population": 9165,
      "rent_eur_per_m2_month": 12.948522869608734,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Gaiserwald",
      "canonical_url": "https://immigrationdb.com/cities/ch/gaiserwald/",
      "population": 8714,
      "rent_eur_per_m2_month": 15.106610014543524,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Au (SG)",
      "canonical_url": "https://immigrationdb.com/cities/ch/au-sg/",
      "population": 8628,
      "rent_eur_per_m2_month": 15.891368976337992,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Rorschacherberg",
      "canonical_url": "https://immigrationdb.com/cities/ch/rorschacherberg/",
      "population": 7716,
      "rent_eur_per_m2_month": 14.714230533646289,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Grabs",
      "canonical_url": "https://immigrationdb.com/cities/ch/grabs/",
      "population": 7488,
      "rent_eur_per_m2_month": 13.438997220730277,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": 8.6
    },
    {
      "name": "Thal",
      "canonical_url": "https://immigrationdb.com/cities/ch/thal/",
      "population": 7137,
      "rent_eur_per_m2_month": 14.419945922973362,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Uznach",
      "canonical_url": "https://immigrationdb.com/cities/ch/uznach/",
      "population": 7038,
      "rent_eur_per_m2_month": 14.910420274094905,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Diepoldsau",
      "canonical_url": "https://immigrationdb.com/cities/ch/diepoldsau/",
      "population": 6939,
      "rent_eur_per_m2_month": 13.537092090954587,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Bad Ragaz",
      "canonical_url": "https://immigrationdb.com/cities/ch/bad-ragaz/",
      "population": 6872,
      "rent_eur_per_m2_month": 16.381843327459535,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Oberuzwil",
      "canonical_url": "https://immigrationdb.com/cities/ch/oberuzwil/",
      "population": 6743,
      "rent_eur_per_m2_month": 14.125661312300437,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "St. Margrethen",
      "canonical_url": "https://immigrationdb.com/cities/ch/st-margrethen/",
      "population": 6718,
      "rent_eur_per_m2_month": 14.125661312300437,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Sargans",
      "canonical_url": "https://immigrationdb.com/cities/ch/3296-sargans/",
      "population": 6615,
      "rent_eur_per_m2_month": 15.891368976337992,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Neckertal",
      "canonical_url": "https://immigrationdb.com/cities/ch/neckertal/",
      "population": 6420,
      "rent_eur_per_m2_month": 10.398056243776711,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Sennwald",
      "canonical_url": "https://immigrationdb.com/cities/ch/sennwald/",
      "population": 6332,
      "rent_eur_per_m2_month": 14.812325403870597,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Walenstadt",
      "canonical_url": "https://immigrationdb.com/cities/ch/walenstadt/",
      "population": 5926,
      "rent_eur_per_m2_month": 14.419945922973362,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Gommiswald",
      "canonical_url": "https://immigrationdb.com/cities/ch/gommiswald/",
      "population": 5718,
      "rent_eur_per_m2_month": 14.321851052749054,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Wartau",
      "canonical_url": "https://immigrationdb.com/cities/ch/wartau/",
      "population": 5595,
      "rent_eur_per_m2_month": 13.831376701627512,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Sevelen",
      "canonical_url": "https://immigrationdb.com/cities/ch/sevelen/",
      "population": 5411,
      "rent_eur_per_m2_month": 15.498989495440759,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Flums",
      "canonical_url": "https://immigrationdb.com/cities/ch/flums/",
      "population": 5400,
      "rent_eur_per_m2_month": 13.635186961178896,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Bütschwil-Ganterschwil",
      "canonical_url": "https://immigrationdb.com/cities/ch/butschwil-ganterschwil/",
      "population": 5336,
      "rent_eur_per_m2_month": 12.45804851848719,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Ebnat-Kappel",
      "canonical_url": "https://immigrationdb.com/cities/ch/ebnat-kappel/",
      "population": 5323,
      "rent_eur_per_m2_month": 11.575194686468414,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Balgach",
      "canonical_url": "https://immigrationdb.com/cities/ch/balgach/",
      "population": 5210,
      "rent_eur_per_m2_month": 14.910420274094905,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Vilters-Wangs",
      "canonical_url": "https://immigrationdb.com/cities/ch/vilters-wangs/",
      "population": 5121,
      "rent_eur_per_m2_month": 14.02756644207613,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Kaltbrunn",
      "canonical_url": "https://immigrationdb.com/cities/ch/kaltbrunn/",
      "population": 5099,
      "rent_eur_per_m2_month": 13.537092090954587,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Rebstein",
      "canonical_url": "https://immigrationdb.com/cities/ch/rebstein/",
      "population": 5077,
      "rent_eur_per_m2_month": 14.61613566342198,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Zuzwil (SG)",
      "canonical_url": "https://immigrationdb.com/cities/ch/zuzwil-sg/",
      "population": 5033,
      "rent_eur_per_m2_month": 14.223756182524745,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Jona",
      "canonical_url": "https://immigrationdb.com/cities/ch/jona/",
      "population": 0,
      "rent_eur_per_m2_month": null,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    },
    {
      "name": "Rapperswil",
      "canonical_url": "https://immigrationdb.com/cities/ch/rapperswil/",
      "population": 0,
      "rent_eur_per_m2_month": null,
      "median_gross_salary_eur_month": null,
      "unemployment_percent": null,
      "pm25_ug_m3": null
    }
  ],
  "rankings": [
    {
      "key": "rent",
      "title": "Lowest net rent",
      "items": [
        {
          "name": "Neckertal",
          "href": "/cities/ch/neckertal/",
          "value": "€10.40/m²",
          "year": "2021"
        },
        {
          "name": "Ebnat-Kappel",
          "href": "/cities/ch/ebnat-kappel/",
          "value": "€11.58/m²",
          "year": "2021"
        },
        {
          "name": "Bütschwil-Ganterschwil",
          "href": "/cities/ch/butschwil-ganterschwil/",
          "value": "€12.46/m²",
          "year": "2021"
        },
        {
          "name": "Wattwil",
          "href": "/cities/ch/wattwil/",
          "value": "€12.95/m²",
          "year": "2021"
        },
        {
          "name": "Kirchberg (SG)",
          "href": "/cities/ch/kirchberg-sg/",
          "value": "€13.05/m²",
          "year": "2021"
        }
      ]
    }
  ]
}
