{"id":60274,"date":"2024-07-17T14:52:33","date_gmt":"2024-07-17T21:52:33","guid":{"rendered":"https:\/\/liv.rent\/blog\/?p=60274"},"modified":"2026-08-28T12:50:35","modified_gmt":"2026-08-28T19:50:35","slug":"how-to-find-roommate-in-edmonton","status":"publish","type":"post","link":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/","title":{"rendered":"How to find a roommate in Edmonton"},"content":{"rendered":"\n<p>Looking for a roommate can be both exciting and challenging. Whether you&#8217;re new to Edmonton or just looking for a change, finding the right person to share your space with can make all the difference. In this guide by <a href=\"https:\/\/liv.rent\/\">liv.rent<\/a>, we\u2019ll walk you through the essential steps to make the process as smooth as possible. We cover everything from the best places to find a listing to what you need to know once you move in. <a href=\"https:\/\/liv.rent\/rental-listings\/city\/edmonton\" target=\"_blank\" rel=\"noreferrer noopener\">Edmonton <\/a>has a wide selection of different listings on offer so there&#8217;s something for everyone. <\/p>\n\n\n\n<br>\n<style>\n.background-downloadable-roommate-agreement {\n  text-align: center;\n  color: #303030;\n  font-family: 'Inter', sans-serif;\n  font-size: 24px;\n}\n\n.cta-block-downloadable-roommate-agreement p{\n  font-family: 'Inter', sans-serif;\n  color: #303030; \n  font-weight: 400;\n  text-align: center; \n  font-size: 16px;\n}\n\n.cta-block-downloadable-roommate-agreement {\n  background-color: #F5F5F5;\n  border-radius: 16px;\n  padding: 30px;\n  text-align: center;\n  margin: 20px 0px;\n}\n.button-downloadable-roommate-agreement {\n  margin-top: 20px;\n  padding: 12px 16px;\n  background: #1D415E;\n  border: 0px solid white;\n  box-shadow: 0px 6px 8px -2px rgba(29, 66, 94, 0.4), 0px 12px 16px rgba(32, 121, 193, 0.15);\n  border-radius: 6px;\n  cursor: pointer;\n  \n  font-family: 'Inter';\n  font-style: normal;\n  font-weight: 600;\n  font-size: 14px;\n  line-height: 16px;\n  text-align: center;\n  color: #FFFFFF;\n\n}\n  \n<\/style>\n\n<div class=\"background-downloadable-roommate-agreement cta-block-downloadable-roommate-agreement\">\n<h3><strong>Free Roommate Agreement Template<\/strong><\/h3>\n\n<p>Download this free roommate agreement template.<\/p>\n\n<a href=\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2020\/05\/2020-06-08_Roommate-Agreement_Final_Interactive.pdf.zip\" target=\"_blank\" rel=\"noopener noreferrer\"><button id=\"downloadable-roommate-agreement\" class=\"button-downloadable-roommate-agreement\">Download Template<\/button><\/a>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<br><h2 class=\"wp-block-heading\">Best places to find a roommate<\/h2>\n\n\n\n<p>There are many different places to find a roommate online, so it&#8217;s important that you are looking in the right place to make sure you find your ideal listing. In this section, we outline the best websites to find a roommate in Edmonton as well as some pros and cons for each. We\u2019ve also provided listings for each site across various budget ranges so you have everything you need to start your rental journey.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Craigslist<\/h2>\n\n\n\n<p><a href=\"https:\/\/edmonton.craigslist.org\/search\/roo#search=1~gallery~0~0\" target=\"_blank\" rel=\"noreferrer noopener\">Craigslist <\/a>is an online marketplace that offers a variety of listing options for just about anything you can think of. For this guide, we are looking at the rooms \/ shared option under the housing tab. Craigslist has a substantial user base making it the first port of call for many on their search for a roommate.<\/p>\n\n\n\n<h3 style=\"color: #fe5f55\">Pros<\/h3>\n\n\n\n<ol>\n<li><strong>Wide reach:<\/strong> Craigslist is an extremely popular platform with a large user base. This leads to more listings and a greater chance to find something that suits your needs. <\/li>\n\n\n\n<li><strong>Free listings:<\/strong> It&#8217;s free to post on Craigslist, this makes it more accessible for everyone to find what they are looking for without having to break the bank.<\/li>\n<\/ol>\n\n\n\n<h3 style=\"color: #fe5f55\">Cons<\/h3>\n\n\n\n<ol>\n<li><strong>Safety concerns:<\/strong> Craigslist has a minimal verification process, which leads to a higher risk of encountering scams and fraudulent listings.<\/li>\n\n\n\n<li><strong>Basic interface:<\/strong> Craigslist was <a href=\"https:\/\/www.craigslist.org\/about\/mission_and_history\" target=\"_blank\" rel=\"noreferrer noopener\">founded in 1995<\/a> and has kept a minimal design over the years which takes some getting used to. This can slow down the search process in the beginning and prolong your search. <\/li>\n<\/ol>\n\n\n\n<ul>\n<li><a href=\"https:\/\/edmonton.craigslist.org\/search\/roo?hasPic=1&amp;max_price=1500#search=1~gallery~0~0\" target=\"_blank\" rel=\"noreferrer noopener\">Craigslist listings for $1500 <\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/edmonton.craigslist.org\/search\/roo?hasPic=1&amp;max_price=1200#search=1~gallery~0~0\" target=\"_blank\" rel=\"noreferrer noopener\">Craigslist listings for $1200 <\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/edmonton.craigslist.org\/search\/roo#search=1~gallery~0~0\" target=\"_blank\" rel=\"noreferrer noopener\">Craigslist listings for $1000 <\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<!--\n  Reusable Buildings Block - By Building URLs\n  ---------------------------------------------------\n  This block takes full liv.rent building URLs, pulls the numeric id\n  out of each one for the GraphQL query, and links the card straight\n  back to the URL you pasted, so the pretty slug is always the one you\n  supplied.\n\n  To change which buildings appear, edit BUILDING_URLS in the script\n  below. Everything else (title, footer link, wording) is in the CONFIG\n  object next to it. Anything from 1 to 10 buildings renders; the grid\n  reflows on its own.\n\n  Note: the building record itself is what drives the card, so a building\n  with nothing currently for rent still renders (it just shows no price).\n  Only an id that does not exist at all is skipped, with a console warning.\n-->\n\n<style type=\"text\/css\">\n  .liv-buildings.liv-buildings,\n  .liv-buildings.liv-buildings * {\n    box-sizing: border-box !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    font-family: Inter, Helvetica, Arial, sans-serif !important;\n    font-style: normal !important;\n    line-height: 1.4 !important;\n    letter-spacing: normal !important;\n    word-spacing: normal !important;\n    text-transform: none !important;\n    text-indent: 0 !important;\n    text-align: left !important;\n    text-shadow: none !important;\n    float: none !important;\n    list-style: none !important;\n  }\n\n  \/* ---------- Block ---------- *\/\n  .liv-buildings.liv-buildings {\n    display: block !important;\n    max-width: 1094px;\n    margin: 40px auto !important;\n    padding: 32px 0 !important;\n    border-top: 1px solid #eaecf1;\n    border-bottom: 1px solid #eaecf1;\n    background: none;\n    font-size: 13px !important;\n    color: #0e131b !important;\n    -webkit-font-smoothing: antialiased;\n    container-type: inline-size;\n    container-name: livbuildings;\n  }\n\n  .liv-buildings .liv-buildings__title {\n    display: block !important;\n    font-size: 24px !important;\n    font-weight: 700 !important;\n    line-height: 1.2 !important;\n    letter-spacing: -0.4px !important;\n    color: #0e131b !important;\n    margin: 0 0 20px !important;\n    padding: 0 !important;\n  }\n\n  \/* ---------- Grid ---------- *\/\n  .liv-buildings .liv-buildings__grid {\n    display: grid !important;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 14px;\n    align-items: stretch;\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n\n  @media only screen and (min-width: 900px) {\n    .liv-buildings .liv-buildings__grid {\n      grid-template-columns: repeat(4, minmax(0, 1fr));\n      gap: 16px;\n    }\n  }\n\n  @container livbuildings (max-width: 699px) {\n    .liv-buildings .liv-buildings__grid {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 14px;\n    }\n  }\n\n  @container livbuildings (min-width: 700px) {\n    .liv-buildings .liv-buildings__grid {\n      grid-template-columns: repeat(4, minmax(0, 1fr));\n      gap: 16px;\n    }\n  }\n\n  \/* Small counts should not stretch a card across the whole column. *\/\n  .liv-buildings .liv-buildings__grid--n1 {\n    grid-template-columns: minmax(0, 1fr);\n    max-width: 320px;\n  }\n\n  .liv-buildings .liv-buildings__grid--n2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    max-width: 660px;\n  }\n\n  @container livbuildings (min-width: 700px) {\n    .liv-buildings .liv-buildings__grid--n3 {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      max-width: 820px;\n    }\n  }\n\n  \/* 5 or 9 buildings across 4 columns strands a single card on its own\n     row. Three columns divides both evenly (3+2, 3+3+3). Declared after\n     the base grid so it wins on source order in both engines. *\/\n  @media only screen and (min-width: 900px) {\n    .liv-buildings .liv-buildings__grid--three {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n    }\n  }\n\n  @container livbuildings (min-width: 700px) {\n    .liv-buildings .liv-buildings__grid--three {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n    }\n  }\n\n  \/* ---------- Card ----------\n     Qualified with the tag so it also outranks theme rules aimed at\n     `.entry-content a`, which is where link colour usually comes from. *\/\n  .liv-buildings a.liv-buildings__card {\n    display: flex !important;\n    flex-direction: column;\n    background: #ffffff !important;\n    border: 1px solid #d2d7df !important;\n    border-radius: 8px !important;\n    box-shadow: 0 0 16px 0 rgba(69, 79, 91, 0.12) !important;\n    overflow: hidden;\n    margin: 0 !important;\n    padding: 0 !important;\n    text-decoration: none !important;\n    color: #0e131b !important;\n    cursor: pointer;\n  }\n\n  .liv-buildings a.liv-buildings__card:hover,\n  .liv-buildings a.liv-buildings__card:focus,\n  .liv-buildings a.liv-buildings__card:visited {\n    text-decoration: none !important;\n    color: #0e131b !important;\n  }\n\n  .liv-buildings .liv-buildings__media {\n    display: block !important;\n    position: relative;\n    width: 100%;\n    aspect-ratio: 16 \/ 10;\n    background: #f3f5f7;\n    overflow: hidden;\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n\n  @supports not (aspect-ratio: 16 \/ 10) {\n    .liv-buildings .liv-buildings__media {\n      height: 140px;\n    }\n  }\n\n  .liv-buildings img.liv-buildings__img {\n    display: block !important;\n    width: 100% !important;\n    height: 100% !important;\n    max-width: 100% !important;\n    object-fit: cover;\n    margin: 0 !important;\n    padding: 0 !important;\n    border: 0 !important;\n    border-radius: 0 !important;\n    box-shadow: none !important;\n  }\n\n  .liv-buildings .liv-buildings__badge {\n    display: inline-block !important;\n    position: absolute;\n    top: 8px;\n    left: 8px;\n    max-width: calc(100% - 16px);\n    background: #0e131b !important;\n    color: #ffffff !important;\n    font-size: 10px !important;\n    font-weight: 500 !important;\n    line-height: 16px !important;\n    margin: 0 !important;\n    padding: 1px 6px !important;\n    border: 0 !important;\n    border-radius: 2px !important;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    pointer-events: none;\n  }\n\n  .liv-buildings .liv-buildings__body {\n    display: flex !important;\n    flex-direction: column;\n    flex: 1;\n    gap: 5px;\n    margin: 0 !important;\n    padding: 10px !important;\n  }\n\n  .liv-buildings .liv-buildings__price-row {\n    display: flex !important;\n    align-items: baseline;\n    flex-wrap: nowrap;\n    gap: 4px;\n    min-width: 0;\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n\n  .liv-buildings .liv-buildings__price {\n    font-size: 15px !important;\n    font-weight: 700 !important;\n    line-height: 1.3 !important;\n    color: #0e131b !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n\n  .liv-buildings .liv-buildings__period {\n    font-size: 11px !important;\n    font-weight: 400 !important;\n    line-height: 1.3 !important;\n    color: #0e131b !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    white-space: nowrap;\n  }\n\n  .liv-buildings .liv-buildings__details {\n    display: block !important;\n    font-size: 12px !important;\n    font-weight: 500 !important;\n    line-height: 1.4 !important;\n    color: #5a6881 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .liv-buildings .liv-buildings__divider {\n    display: block !important;\n    height: 1px;\n    width: 100%;\n    background: #d2d7df !important;\n    border: 0 !important;\n    margin: 3px 0 !important;\n    padding: 0 !important;\n  }\n\n  \/* Building names run long, so give them two lines rather than\n     truncating \"Lakeview Pointe Kelowna Apartments\" to nothing. *\/\n  .liv-buildings .liv-buildings__name {\n    display: -webkit-box !important;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    font-size: 12px !important;\n    font-weight: 600 !important;\n    line-height: 1.35 !important;\n    color: #0e131b !important;\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n\n  \/* Two lines rather than one ellipsized line: on a 2-up phone layout a\n     single line drops the city, which is the half that matters when the\n     block spans more than one of them. *\/\n  .liv-buildings .liv-buildings__region {\n    display: -webkit-box !important;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    font-size: 11px !important;\n    font-weight: 400 !important;\n    line-height: 1.35 !important;\n    color: #5a6881 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n\n  \/* `margin: auto 0 0` rather than `margin-top: auto` - the reset zeroes\n     the shorthand, so a longhand top margin would be overwritten and the\n     buttons would stop aligning along the bottom of a row. *\/\n  .liv-buildings .liv-buildings__cta {\n    display: flex !important;\n    align-items: center;\n    justify-content: center;\n    height: 32px;\n    margin: auto 0 0 !important;\n    padding: 0 8px !important;\n    background: #051a49 !important;\n    color: #ffffff !important;\n    font-size: 11px !important;\n    font-weight: 500 !important;\n    line-height: 1 !important;\n    text-align: center !important;\n    border: 0 !important;\n    border-radius: 6px !important;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    transition: background 0.15s ease;\n  }\n\n  .liv-buildings a.liv-buildings__card:hover .liv-buildings__cta {\n    background: #0d3880 !important;\n  }\n\n  \/* One step up once the block itself has room. Scoped to the block, not\n     the card, so there is only a single set of overrides to reason about. *\/\n  @container livbuildings (min-width: 700px) {\n    .liv-buildings .liv-buildings__body {\n      gap: 7px;\n      padding: 12px !important;\n    }\n\n    .liv-buildings .liv-buildings__badge {\n      top: 12px;\n      left: 12px;\n      max-width: calc(100% - 24px);\n      font-size: 11px !important;\n      line-height: 18px !important;\n      padding: 1px 8px !important;\n    }\n\n    .liv-buildings .liv-buildings__price {\n      font-size: 17px !important;\n    }\n\n    .liv-buildings .liv-buildings__period {\n      font-size: 13px !important;\n    }\n\n    .liv-buildings .liv-buildings__details,\n    .liv-buildings .liv-buildings__name {\n      font-size: 13px !important;\n    }\n\n    .liv-buildings .liv-buildings__region {\n      font-size: 12px !important;\n    }\n\n    .liv-buildings .liv-buildings__cta {\n      height: 38px;\n      font-size: 13px !important;\n    }\n  }\n\n  .liv-buildings a.liv-buildings__footer-link {\n    display: block !important;\n    font-size: 14px !important;\n    font-weight: 500 !important;\n    line-height: 1.4 !important;\n    color: #051a49 !important;\n    text-align: center !important;\n    margin: 18px 0 0 !important;\n    padding: 0 !important;\n    background: none !important;\n    text-decoration: none !important;\n  }\n\n  .liv-buildings a.liv-buildings__footer-link:visited,\n  .liv-buildings a.liv-buildings__footer-link:focus,\n  .liv-buildings a.liv-buildings__footer-link:hover {\n    color: #051a49 !important;\n  }\n\n  .liv-buildings a.liv-buildings__footer-link:hover {\n    text-decoration: underline !important;\n  }\n\n  \/* The placeholder the block renders INTO is ordinary post content, so\n     the theme styles it too - a stray `padding` there silently re-centres\n     the whole block, and a `margin-bottom` adds phantom space under it.\n     findMount() tags the div it creates as a fallback with the same class\n     so this rule reaches that one as well. *\/\n  .liv-buildings-root.liv-buildings-root,\n  #liv-buildings-root {\n    display: block !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    border: 0 !important;\n    background: none !important;\n    font-size: inherit !important;\n    line-height: normal !important;\n    text-align: left !important;\n    text-indent: 0 !important;\n  }\n<\/style>\n\n<script type=\"text\/javascript\">\n  \/* ==================================================================\n   * DO NOT PUT AN AMPERSAND CHARACTER ANYWHERE IN THIS SCRIPT.\n   *\n   * WordPress runs post content through wptexturize(), which rewrites a\n   * bare ampersand into a numeric HTML entity. Inside a script tag that\n   * is a syntax error, so the whole block dies on parse: the markup is\n   * still visible in the DOM, but nothing runs and no request is made.\n   * It rewrites only SOME of them, which makes it look intermittent.\n   *\n   * That is why this file uses nested ifs, ternaries, early returns and\n   * the get() helper instead of the logical-and operator. Keeping the\n   * character out entirely means `grep` is a reliable check.\n   * ================================================================== *\/\n  (function () {\n    \/\/ Captured while this script runs, so each copy of the block can find\n    \/\/ its OWN placeholder. `document.currentScript` is null inside the\n    \/\/ deferred callback, so it has to be read here at the top level.\n    var SELF = document.currentScript;\n\n    \/* ----------------------------------------------------------------\n     * CONFIG - edit these\n     * ---------------------------------------------------------------- *\/\n    var CONFIG = {\n      \/\/ Buildings to show, in the order they should appear. Paste the\n      \/\/ full liv.rent URL: the id is read out of it for the query and\n      \/\/ the URL itself becomes the card link, slug and all.\n      \/\/ Works with 1 building, works with 10.\n      BUILDING_URLS: [\n        \"https:\/\/liv.rent\/building\/55739\/kingston-tower-apartment-building-342-15-avenue-sw-calgary-ab\",\n        \"https:\/\/liv.rent\/building\/55590\/mayfair-place-apartments-apartment-building-6707-elbow-drive-sw-calgary-ab\",\n        \"https:\/\/liv.rent\/building\/33476\/bonaventure-estates-apartment-building-9100-bonaventure-dr-se-calgary-ab\",\n        \"https:\/\/liv.rent\/building\/55777\/the-view-apartment-building-9922-111-street-nw-edmonton-ab\",\n        \"https:\/\/liv.rent\/building\/55783\/the-maclaren-apartment-building-10141-124-street-edmonton-ab\",\n      ],\n      TITLE: \"Now renting in Alberta\",\n      FOOTER_LINK_TEXT: \"See all CAPREIT rental listings\",\n      FOOTER_LINK_URL: \"https:\/\/liv.rent\/company\/capreit\",\n      ROOT_SELECTOR: \".liv-buildings-root, #liv-buildings-root\",\n      IMAGES_URL: \"https:\/\/cdn.liv.rent\",\n      GRAPHQL_URL: \"https:\/\/nemesis-prod.liv.rent\/graphql\",\n      \/\/ Safety rail so a runaway paste cannot fire a 40-alias query.\n      MAX_BUILDINGS: 10,\n    };\n\n    \/* ----------------------------------------------------------------\n     * Query - one request, two aliased fields per building.\n     *\n     *   building(...)       the building record: name, address, photos.\n     *                       Renders even with nothing available.\n     *   buildingDetail(...) the units currently live in that building.\n     *                       The server pins state_machine=published and\n     *                       is_hidden=false, so this is only ever what a\n     *                       renter could actually apply to right now.\n     *\n     * Ids are digits pulled out of the URL by regex, so they are safe to\n     * inline as Int literals.\n     * ---------------------------------------------------------------- *\/\n    var BUILDING_FIELDS = [\n      \"id\",\n      \"name\",\n      \"building_type\",\n      \"full_street_name\",\n      \"city\",\n      \"state\",\n      \"building_files { aws_s3_key tag position }\",\n    ];\n\n    var LISTING_FIELDS = [\n      \"listing_id\",\n      \"price\",\n      \"price_frequency\",\n      \"bedrooms\",\n      \"gr_unit\",\n      \"gr_count\",\n      \"gr_min_price\",\n      \"unit_type_scope_txt_id\",\n      \"cover_photo_aws_s3_key\",\n    ];\n\n    function buildQuery(ids) {\n      var lines = [\"query blogBuildings {\"];\n      ids.forEach(function (id, index) {\n        lines.push(\n          \"  b\" + index + \": building(input: { building_id: \" + id + \" }) {\",\n        );\n        lines.push(\"    \" + BUILDING_FIELDS.join(\"\\n    \"));\n        lines.push(\"  }\");\n        lines.push(\n          \"  d\" +\n            index +\n            \": buildingDetail(input: { building_id: \" +\n            id +\n            \" }) {\",\n        );\n        lines.push(\"    \" + LISTING_FIELDS.join(\"\\n    \"));\n        lines.push(\"  }\");\n      });\n      lines.push(\"}\");\n      return lines.join(\"\\n\");\n    }\n\n    \/* ----------------------------------------------------------------\n     * Lookups mirrored from the liv.rent app so wording matches\n     * ---------------------------------------------------------------- *\/\n    var PERIOD = {\n      monthly: \"\/Month\",\n      weekly: \"\/Week\",\n      daily: \"\/Day\",\n      yearly: \"\/Year\",\n      one_time: \"\/One-time\",\n    };\n\n    \/\/ Widest first: the src, then the retry ladder attachFallback() walks.\n    var SIZES = [\n      [480, 300],\n      [320, 200],\n    ];\n\n    var TYPE_LABEL = {\n      condo: \"Apartment Building\",\n      highrise: \"Apartment Building\",\n      lowrise: \"Apartment Building\",\n      house: \"House\",\n      townhouse: \"Townhouse\",\n    };\n\n    \/* ----------------------------------------------------------------\n     * Helpers\n     * ---------------------------------------------------------------- *\/\n    function el(tag, className) {\n      var node = document.createElement(tag);\n      if (className) node.className = className;\n      return node;\n    }\n\n    \/\/ Walks a path of keys, stopping at the first missing link.\n    function get(obj, path) {\n      var node = obj;\n      for (var i = 0; i < path.length; i++) {\n        if (!node) return null;\n        node = node[path[i]];\n      }\n      return node;\n    }\n\n    function money(value) {\n      var n = Number(value);\n      if (!isFinite(n)) return null;\n      if (n <= 0) return null;\n      return \"$\" + Math.round(n).toLocaleString(\"en-US\");\n    }\n\n    \/\/ gr_unit marks a \"group\" listing: one record standing in for several\n    \/\/ identical units, priced from gr_min_price.\n    function isGroup(listing) {\n      if (listing.gr_unit === true) return true;\n      return listing.gr_unit === \"1\";\n    }\n\n    \/\/ https:\/\/liv.rent\/building\/55691\/lakeview-pointe... -> '55691'\n    function idFromUrl(url) {\n      var match = String(url || \"\").match(\/\\\/building\\\/(\\d+)\/);\n      if (!match) return null;\n      return match[1];\n    }\n\n    \/\/ Mirrors getImageUrl() in the app, including the character escapes -\n    \/\/ an unescaped bracket or quote in a filename breaks the CDN path.\n    function imageUrl(key, width, height) {\n      if (!key) return null;\n      var match = String(key).match(\/static_file.+$\/);\n      if (!match) return null;\n      var path = match[0]\n        .replace(\/^\\\/\/, \"\")\n        .replace(\/ \/g, \"%20\")\n        .replace(\/\\(\/g, \"%28\")\n        .replace(\/\\)\/g, \"%29\")\n        .replace(\/'\/g, \"%27\")\n        .replace(\/\"\/g, \"%22\");\n      return (\n        CONFIG.IMAGES_URL +\n        \"\/\" +\n        width +\n        \"x\" +\n        height +\n        \"\/filters:quality(80)\/\" +\n        path\n      );\n    }\n\n    \/\/ Some older building photos are narrower than the largest thumbnail\n    \/\/ the card asks for, and the CDN answers an upscale with a 500 rather\n    \/\/ than serving the original. Step down through the smaller sizes, then\n    \/\/ give up and leave the neutral panel instead of a broken-image icon.\n    \/\/ srcset has to go with the first retry or the browser just reselects\n    \/\/ the candidate that already failed.\n    function attachFallback(img, key) {\n      var step = 0;\n      img.onerror = function () {\n        if (step >= SIZES.length) {\n          img.onerror = null;\n          if (img.parentNode) img.parentNode.removeChild(img);\n          return;\n        }\n        var size = SIZES[step];\n        step += 1;\n        img.removeAttribute(\"srcset\");\n        img.removeAttribute(\"sizes\");\n        img.setAttribute(\"src\", imageUrl(key, size[0], size[1]));\n      };\n    }\n\n    \/\/ Building photos prefer the tagged cover. Some buildings only carry\n    \/\/ untagged `building_image` rows with a null position, so the sort is\n    \/\/ a tiebreak rather than the primary rule.\n    function coverKey(building, listings) {\n      var files = building.building_files;\n      if (Array.isArray(files)) {\n        if (files.length) {\n          var cover = files.filter(function (file) {\n            return file.tag === \"cover_photo\";\n          })[0];\n          if (cover) return cover.aws_s3_key;\n\n          var ordered = files.slice().sort(function (a, b) {\n            return position(a) - position(b);\n          });\n          if (ordered[0]) return ordered[0].aws_s3_key;\n        }\n      }\n\n      \/\/ No building photo on file: borrow the first live unit's cover so\n      \/\/ the card is never a grey box.\n      var withPhoto = listings.filter(function (listing) {\n        return Boolean(listing.cover_photo_aws_s3_key);\n      })[0];\n      if (withPhoto) return withPhoto.cover_photo_aws_s3_key;\n      return null;\n    }\n\n    function position(file) {\n      var n = Number(file.position);\n      if (!isFinite(n)) return 9999;\n      return n;\n    }\n\n    function bedLabel(n) {\n      if (!n) return \"Studio\";\n      return n + \" Bed\";\n    }\n\n    \/* Rolls the live units up into the three things the card shows:\n     * how many are available, the cheapest asking price, and the spread\n     * of bedroom counts. *\/\n    function summarise(listings) {\n      var units = 0;\n      var price = null;\n      var frequency = \"\";\n      var minBeds = null;\n      var maxBeds = null;\n      var hasRoom = false;\n\n      listings.forEach(function (listing) {\n        var group = isGroup(listing);\n\n        var count = Number(listing.gr_count);\n        if (group) {\n          units += isFinite(count) ? Math.max(count, 1) : 1;\n        } else {\n          units += 1;\n        }\n\n        var amount = Number(group ? listing.gr_min_price : listing.price);\n        if (isFinite(amount)) {\n          if (amount > 0) {\n            if (price === null) {\n              price = amount;\n              frequency = listing.price_frequency;\n            } else if (amount < price) {\n              price = amount;\n              frequency = listing.price_frequency;\n            }\n          }\n        }\n\n        \/\/ A room in a shared unit has no meaningful bedroom count.\n        var scope = String(listing.unit_type_scope_txt_id || \"\").toUpperCase();\n        if (scope === \"SINGLE\") {\n          hasRoom = true;\n          return;\n        }\n\n        var beds = Number(listing.bedrooms);\n        if (isFinite(beds)) {\n          if (minBeds === null) minBeds = beds;\n          else if (beds < minBeds) minBeds = beds;\n          if (maxBeds === null) maxBeds = beds;\n          else if (beds > maxBeds) maxBeds = beds;\n        }\n      });\n\n      return {\n        units: units,\n        price: money(price),\n        period: PERIOD[frequency] || \"\",\n        beds: bedText(minBeds, maxBeds, hasRoom),\n      };\n    }\n\n    function bedText(min, max, hasRoom) {\n      if (min === null) return hasRoom ? \"Room\" : \"\";\n      if (min === max) {\n        var single = bedLabel(min);\n        return hasRoom ? single + \" \u00b7 Room\" : single;\n      }\n      var low = !min ? \"Studio\" : String(min);\n      var range = low + \" - \" + max + \" Bed\";\n      return hasRoom ? range + \" \u00b7 Room\" : range;\n    }\n\n    function unitsText(units) {\n      if (!units) return \"\";\n      if (units === 1) return \"1 Unit Available\";\n      return units + \" Units Available\";\n    }\n\n    function typeLabel(building) {\n      var type = String(building.building_type || \"\").toLowerCase();\n      return TYPE_LABEL[type] || \"Building\";\n    }\n\n    \/* ----------------------------------------------------------------\n     * Rendering\n     * ---------------------------------------------------------------- *\/\n    function buildCard(entry) {\n      var building = entry.building;\n      var listings = entry.listings;\n      var summary = summarise(listings);\n\n      var name = building.name || building.full_street_name;\n      var region = [building.full_street_name, building.city, building.state]\n        .filter(Boolean)\n        .join(\", \");\n\n      var card = el(\"a\", \"liv-buildings__card\");\n      \/\/ The pasted URL is the link, so the slug always matches the one\n      \/\/ that was checked by hand.\n      card.setAttribute(\"href\", entry.url);\n      card.setAttribute(\"id\", \"liv-blog-building-\" + building.id);\n      \/\/ Same as the footer link: new tab so the reader keeps their place,\n      \/\/ noopener for safety, and no noreferrer so the visit still\n      \/\/ attributes back to the blog.\n      card.setAttribute(\"target\", \"_blank\");\n      card.setAttribute(\"rel\", \"noopener\");\n\n      \/* Media *\/\n      var media = el(\"div\", \"liv-buildings__media\");\n      var key = coverKey(building, listings);\n      var src = imageUrl(key, 640, 400);\n\n      if (src) {\n        var img = el(\"img\", \"liv-buildings__img\");\n        img.setAttribute(\"src\", src);\n        img.setAttribute(\n          \"srcset\",\n          [\n            imageUrl(key, 320, 200) + \" 320w\",\n            imageUrl(key, 480, 300) + \" 480w\",\n            imageUrl(key, 640, 400) + \" 640w\",\n          ].join(\", \"),\n        );\n        \/\/ Layout is driven by the blog column, not the viewport, and the\n        \/\/ column count varies with how many buildings are configured, so\n        \/\/ one static hint cannot be exact. It errs to the widest case (3\n        \/\/ across) - better a slightly heavy image than a soft one.\n        img.setAttribute(\"sizes\", \"(min-width: 900px) 360px, 50vw\");\n        img.setAttribute(\"loading\", \"lazy\");\n        img.setAttribute(\"decoding\", \"async\");\n        img.setAttribute(\"alt\", [name, region].filter(Boolean).join(\", \"));\n        attachFallback(img, key);\n        media.appendChild(img);\n      }\n\n      var badgeText = unitsText(summary.units);\n      if (badgeText) {\n        var badge = el(\"span\", \"liv-buildings__badge\");\n        badge.textContent = badgeText;\n        media.appendChild(badge);\n      }\n\n      card.appendChild(media);\n\n      \/* Body *\/\n      var body = el(\"div\", \"liv-buildings__body\");\n\n      var priceRow = el(\"div\", \"liv-buildings__price-row\");\n      var priceNode = el(\"span\", \"liv-buildings__price\");\n      if (summary.price) {\n        priceNode.textContent = \"From \" + summary.price;\n        priceRow.appendChild(priceNode);\n        if (summary.period) {\n          var periodNode = el(\"span\", \"liv-buildings__period\");\n          periodNode.textContent = summary.period;\n          priceRow.appendChild(periodNode);\n        }\n      } else {\n        \/\/ Nothing live in the building today. The building page is still\n        \/\/ worth a visit, so the card stays and only the price softens.\n        priceNode.textContent = \"Contact for availability\";\n        priceRow.appendChild(priceNode);\n      }\n      body.appendChild(priceRow);\n\n      var details = el(\"p\", \"liv-buildings__details\");\n      details.textContent = summary.beds || typeLabel(building);\n      body.appendChild(details);\n\n      body.appendChild(el(\"div\", \"liv-buildings__divider\"));\n\n      var nameNode = el(\"p\", \"liv-buildings__name\");\n      nameNode.textContent = name;\n      body.appendChild(nameNode);\n\n      var regionNode = el(\"p\", \"liv-buildings__region\");\n      regionNode.textContent = region;\n      body.appendChild(regionNode);\n\n      var cta = el(\"span\", \"liv-buildings__cta\");\n      cta.textContent = \"View Building\";\n      body.appendChild(cta);\n\n      card.appendChild(body);\n      return card;\n    }\n\n    function render(entries, root) {\n      var wrapper = el(\"div\", \"liv-buildings\");\n\n      var title = el(\"h2\", \"liv-buildings__title\");\n      title.textContent = CONFIG.TITLE;\n      wrapper.appendChild(title);\n\n      var grid = el(\"div\", \"liv-buildings__grid\");\n      if (entries.length < 4) {\n        grid.className += \" liv-buildings__grid--n\" + entries.length;\n      } else if (entries.length % 4 === 1) {\n        \/\/ 5 and 9 would otherwise leave one card alone on the last row.\n        grid.className += \" liv-buildings__grid--three\";\n      }\n      entries.forEach(function (entry) {\n        grid.appendChild(buildCard(entry));\n      });\n      wrapper.appendChild(grid);\n\n      var footer = el(\"a\", \"liv-buildings__footer-link\");\n      footer.textContent = CONFIG.FOOTER_LINK_TEXT;\n      footer.setAttribute(\"href\", CONFIG.FOOTER_LINK_URL);\n      \/\/ Opens in a new tab so the reader keeps their place in the post.\n      \/\/ noopener only - the referrer is left intact so the visit still\n      \/\/ attributes back to the blog.\n      footer.setAttribute(\"target\", \"_blank\");\n      footer.setAttribute(\"rel\", \"noopener\");\n      wrapper.appendChild(footer);\n\n      root.appendChild(wrapper);\n    }\n\n    \/* ----------------------------------------------------------------\n     * Fetch + boot\n     * ---------------------------------------------------------------- *\/\n    \/\/ Two copies of this block on one page must not both render into the\n    \/\/ first placeholder, so prefer the one that follows this script and\n    \/\/ claim it before the fetch starts.\n    var CLAIMED = \"data-liv-mounted\";\n\n    function isFreePlaceholder(node) {\n      if (!node.matches) return false;\n      if (!node.matches(CONFIG.ROOT_SELECTOR)) return false;\n      return !node.hasAttribute(CLAIMED);\n    }\n\n    function findMount() {\n      var host = SELF ? SELF.parentNode : null;\n\n      if (host) {\n        var sibling = SELF.nextElementSibling;\n        while (sibling) {\n          if (isFreePlaceholder(sibling)) return sibling;\n          sibling = sibling.nextElementSibling;\n        }\n      }\n\n      var candidates = document.querySelectorAll(CONFIG.ROOT_SELECTOR);\n      for (var i = 0; i < candidates.length; i++) {\n        if (!candidates[i].hasAttribute(CLAIMED)) return candidates[i];\n      }\n\n      \/\/ No placeholder reached us - render where the script itself sits.\n      \/\/ Tagged with the placeholder class so the theme-neutralising rule\n      \/\/ in the stylesheet covers this div too.\n      if (host) {\n        var mount = document.createElement(\"div\");\n        mount.className = \"liv-buildings-root\";\n        host.insertBefore(mount, SELF.nextSibling);\n        return mount;\n      }\n\n      return null;\n    }\n\n    function parseUrls() {\n      var seen = {};\n      var parsed = [];\n\n      CONFIG.BUILDING_URLS.forEach(function (url) {\n        var id = idFromUrl(url);\n        if (!id) {\n          console.warn(\"[liv.rent buildings] Not a building URL: \" + url);\n          return;\n        }\n        if (seen[id]) return;\n        seen[id] = true;\n        parsed.push({ id: id, url: url });\n      });\n\n      if (parsed.length > CONFIG.MAX_BUILDINGS) {\n        console.warn(\n          \"[liv.rent buildings] Showing the first \" +\n            CONFIG.MAX_BUILDINGS +\n            \" of \" +\n            parsed.length +\n            \" buildings.\",\n        );\n        return parsed.slice(0, CONFIG.MAX_BUILDINGS);\n      }\n\n      return parsed;\n    }\n\n    function load() {\n      var targets = parseUrls();\n      if (!targets.length) {\n        console.warn(\"[liv.rent buildings] No usable building URLs.\");\n        return;\n      }\n\n      var root = findMount();\n      if (!root) {\n        console.warn(\n          \"[liv.rent buildings] No place to render - expected a <div \" +\n            'class=\"liv-buildings-root\"> after the script.',\n        );\n        return;\n      }\n      root.setAttribute(CLAIMED, \"1\");\n\n      var ids = targets.map(function (target) {\n        return target.id;\n      });\n\n      fetch(CONFIG.GRAPHQL_URL, {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application\/json\" },\n        body: JSON.stringify({ query: buildQuery(ids) }),\n      })\n        .then(function (res) {\n          return res.json();\n        })\n        .then(function (payload) {\n          if (payload.errors) {\n            if (payload.errors.length) {\n              throw new Error(payload.errors[0].message);\n            }\n          }\n\n          var missing = [];\n\n          \/\/ Aliases come back keyed by index, so the configured order is\n          \/\/ preserved for free - no client-side reordering needed.\n          var entries = targets\n            .map(function (target, index) {\n              var building = get(payload, [\"data\", \"b\" + index]);\n              if (!building) {\n                missing.push(target.id);\n                return null;\n              }\n              return {\n                id: target.id,\n                url: target.url,\n                building: building,\n                listings: get(payload, [\"data\", \"d\" + index]) || [],\n              };\n            })\n            .filter(Boolean);\n\n          if (missing.length) {\n            console.warn(\n              \"[liv.rent buildings] No building record for: \" +\n                missing.join(\", \"),\n            );\n          }\n\n          \/\/ Leave the post untouched rather than showing an empty frame.\n          if (!entries.length) return;\n\n          render(entries, root);\n        })\n        .catch(function (err) {\n          console.warn(\"[liv.rent buildings] Failed to load buildings.\", err);\n        });\n    }\n\n    \/\/ The block can be parsed after DOMContentLoaded has already fired.\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\"DOMContentLoaded\", load, false);\n    } else {\n      load();\n    }\n  })();\n<\/script>\n\n<!-- Where the block renders. Keep this after the script. -->\n<div class=\"liv-buildings-root\"><\/div>\n\n<style id=\"liv-buildings-subtitle-css\">\n.liv-buildings .liv-buildings__subtitle{display:block !important;font-size:14px !important;font-weight:500 !important;line-height:1.4 !important;color:#5b6472 !important;margin:-14px 0 20px !important;padding:0 !important;letter-spacing:0 !important;}\n<\/style>\n<script>\n(function(){\n  var TEXT = \"Featured buildings from CAPREIT\";\n  function place(){\n    var done = 0;\n    document.querySelectorAll('.liv-buildings').forEach(function(root){\n      var t = root.querySelector('.liv-buildings__title');\n      if(!t) return;\n      if(root.querySelector('.liv-buildings__subtitle')) { done++; return; }\n      var s = document.createElement('div');\n      s.className = 'liv-buildings__subtitle';\n      s.textContent = TEXT;\n      t.insertAdjacentElement('afterend', s);\n      done++;\n    });\n    return done;\n  }\n  if(document.readyState==='loading') document.addEventListener('DOMContentLoaded', place); else place();\n  var n=0, iv=setInterval(function(){ place(); if(++n>40) clearInterval(iv); }, 250);\n})();\n<\/script>\n\n\n<script id=\"capreit-cta-tracking\">\n(function(){\n  var PROV = \"ab\", PROVU = \"AB\";\n  function tag(){\n    document.querySelectorAll(\".liv-buildings\").forEach(function(root){\n      var cards = root.querySelectorAll(\"a.liv-buildings__card\");\n      Array.prototype.forEach.call(cards, function(a, i){\n        var pos = i + 1;\n        if(!a.getAttribute(\"data-building-id\")){\n          var m = (a.id || \"\").match(\/liv-blog-building-(\\d+)\/);\n          if(m) a.setAttribute(\"data-building-id\", m[1]);\n        }\n        if(!a.getAttribute(\"data-building-name\")){\n          var n = a.querySelector(\".liv-buildings__name\");\n          if(n) a.setAttribute(\"data-building-name\", n.textContent.trim());\n        }\n        a.setAttribute(\"data-province\", PROVU);\n        a.setAttribute(\"data-position\", String(pos));\n        a.setAttribute(\"data-cta-type\", \"building\");\n        a.id = \"blog-cta-capreit-\" + PROV + \"-building-\" + pos;\n      });\n      var f = root.querySelector(\"a.liv-buildings__footer-link\");\n      if(f){\n        f.id = \"blog-cta-capreit-\" + PROV + \"-footer-all-listings\";\n        f.setAttribute(\"data-province\", PROVU);\n        f.setAttribute(\"data-cta-type\", \"footer-all-listings\");\n      }\n    });\n  }\n  if(document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", tag); else tag();\n  var c = 0, iv = setInterval(function(){ tag(); if(++c > 40) clearInterval(iv); }, 250);\n  if(!window.__capreitCtaBound){\n    window.__capreitCtaBound = true;\n    \/\/ bubble phase, so anything that cancels the navigation has already run\n    document.addEventListener(\"click\", function(e){\n      if (e.defaultPrevented) return;                 \/\/ navigation was cancelled\n      if (typeof e.button === \"number\" && e.button !== 0) return;  \/\/ primary button only\n      var a = e.target && e.target.closest ? e.target.closest(\"a[id^='blog-cta-capreit-']\") : null;\n      if (!a) return;\n      var href = a.getAttribute(\"href\") || \"\";\n      if (!href) return;\n      if (href.charAt(0) === \"#\") return;\n      if (href.toLowerCase().indexOf(\"javascript:\") === 0) return;\n      window.dataLayer = window.dataLayer || [];\n      window.dataLayer.push({\n        event: \"capreit_blog_cta_click\",\n        cta_id: a.id,\n        cta_type: a.getAttribute(\"data-cta-type\") || \"\",\n        building_id: a.getAttribute(\"data-building-id\") || \"\",\n        building_name: a.getAttribute(\"data-building-name\") || \"\",\n        province: a.getAttribute(\"data-province\") || \"\",\n        position: a.getAttribute(\"data-position\") ? Number(a.getAttribute(\"data-position\")) : null,\n        link_url: a.href || \"\"\n      });\n    }, false);\n  }\n})();\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">2. Facebook Groups<\/h2>\n\n\n\n<p>Facebook has some great groups for people looking to find accommodation in Edmonton. There is a wide selection of everything from dedicated housing groups to general community groups that post housing listings. <\/p>\n\n\n\n<h3 style=\"color: #fe5f55\">Pros<\/h3>\n\n\n\n<ol>\n<li><strong>Social proof:<\/strong> Users are required to have a profile to post in Facebook groups, this adds a layer of transparency which generally leads to more trustworthy listings. Other users also have the ability to comment, this further reduces the likelihood of scams and fraudulent listings. <\/li>\n\n\n\n<li><strong>Community engagement:<\/strong> Housing groups facilitate the interaction of landlords and renters directly, this fosters a sense of community and trust between the two. You can also look at a landlord&#8217;s social media ahead of time to verify their identity.<\/li>\n<\/ol>\n\n\n\n<h3 style=\"color: #fe5f55\">Cons<\/h3>\n\n\n\n<ol>\n<li><strong>Limited search functionality:<\/strong> Facebook&#8217;s search features are not as advanced as dedicated rental platforms, making it harder to filter and find specific listings. This may increase the time investment necessary to find a listing that suits your needs.<\/li>\n\n\n\n<li><strong>Inconsistent moderation:<\/strong> The quality and effectiveness of group moderation can vary, affecting the reliability and safety of the group. The larger the groups generally speaking the better the moderation, it&#8217;s best to join the largest groups first.<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><a href=\"https:\/\/www.facebook.com\/groups\/151681872948887\/?paipv=0&amp;eav=Afat0rigYARLcY8gAETKJ2Hbdiko2cTk-_pI8ZbbRGxpeYAvYhIV2gEAahMl6597fPg&amp;_rdr\" target=\"_blank\" rel=\"noreferrer noopener\">liv.rent Calgary &amp; Edmonton group<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.facebook.com\/groups\/edmontonrentallistings\/\" target=\"_blank\" rel=\"noreferrer noopener\">Edmonton + Area Rental Listings<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.facebook.com\/groups\/357907417661106\/\" target=\"_blank\" rel=\"noreferrer noopener\">Edmonton AB Roommates<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">3. Secondary Housing Portals<\/h2>\n\n\n\n<p>Secondary housing portals offer a great opportunity for students to secure accommodation through a college or post-secondary institution. Often it is possible to secure a spot in a room on campus or in school-owned accommodation off campus. <\/p>\n\n\n\n<h3 style=\"color: #fe5f55\">Pros<\/h3>\n\n\n\n<ol>\n<li><strong>Socialization:<\/strong> As you will be surrounded by other college students, possibly even ones in your course you have a great opportunity to make new friends. Especially if you are not from that area. <\/li>\n\n\n\n<li><strong>Safety:<\/strong> Due to these dorm rooms being affiliated with the school, they are often quite safe places to live. Levels of safety can depend on the type of institution and cost of a room so it is recommended to do your research.<\/li>\n<\/ol>\n\n\n\n<h3 style=\"color: #fe5f55\">Cons<\/h3>\n\n\n\n<ol>\n<li><strong>Limited space:<\/strong> There is always high competition for these rooms as they are typically located either on or close to campus. This means spaces fill up fast so you must be prepared for when slots open up.<\/li>\n\n\n\n<li><strong>Up-front payment:<\/strong> Depending on the institution you may be required to pay the year&#8217;s rent upfront. This can be a limiting factor as many people don&#8217;t have that amount of cash on hand at any one time. <\/li>\n<\/ol>\n\n\n\n<ul>\n<li><a href=\"https:\/\/www.macewan.ca\/campus-life\/residence\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mac Ewan University<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.ualberta.ca\/current-students\/academic-success-centre\/accessibility-resources\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">University of Alberta<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/concordia.ab.ca\/student-services\/housing-services\/\" target=\"_blank\" rel=\"noreferrer noopener\">Concordia University of Edmonton<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">4. Roomies.ca<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.roomies.ca\/edmonton-ab\" target=\"_blank\" rel=\"noreferrer noopener\">Roomies.ca<\/a> is a dedicated rental platform focused on helping Canadians find roommates and shared housing. It offers user-friendly search tools and detailed profiles, making it easier to connect with compatible roommates and secure housing options in Edmonton.<\/p>\n\n\n\n<h3 style=\"color: #fe5f55\">Pros<\/h3>\n\n\n\n<ol>\n<li><strong>Focused on shared housing:<\/strong> Roomies.ca has a focus on roommates and shared accommodation, which makes searches more efficient and can cut down on the time it takes to find your ideal listing.<\/li>\n\n\n\n<li><strong>Verified listings:<\/strong> Safety is always a concern when you are looking for listings online. Roomies. .ca verified listings feature helps to reduce scams and fraudulent listings, giving you some peace of mind. <\/li>\n<\/ol>\n\n\n\n<h3 style=\"color: #fe5f55\">Cons<\/h3>\n\n\n\n<ol>\n<li><strong>Smaller user base:<\/strong> Compared to larger platforms like Facebook and Craigslist, Roomies.ca has a smaller user base. This may lead to fewer listings and make it more difficult to find a listing that suits you.<\/li>\n\n\n\n<li><strong>Limited features:<\/strong> Due to Roomies.ca being a less established platform than other big players in the market this means it comes with a more limited feature set. The majority of the listing information is included in a description section, this can limit filtering ability and add time to your search.<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><a href=\"https:\/\/www.roomies.ca\/profiles\/edmonton-ab\/search?minimum-budget=&amp;maximum-budget=1500\" target=\"_blank\" rel=\"noreferrer noopener\">Roomies listings for $1500<\/a> <\/li>\n\n\n\n<li><a href=\"https:\/\/www.roomies.ca\/profiles\/edmonton-ab\/search?minimum-budget=&amp;maximum-budget=1200\" target=\"_blank\" rel=\"noreferrer noopener\">Roomies listings for $1200 <\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.roomies.ca\/profiles\/edmonton-ab\/search?minimum-budget=&amp;maximum-budget=1000\" target=\"_blank\" rel=\"noreferrer noopener\">Roomies listings for $1000 <\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">5. Roomster<\/h2>\n\n\n\n<p>Roomster is a worldwide platform designed to connect people seeking roommates and shared housing. It&#8217;s a well-established platform being released in 2016 and is already in one-hundred and ninety-two countries worldwide. <\/p>\n\n\n\n<h3 style=\"color: #fe5f55\">Pros<\/h3>\n\n\n\n<ol>\n<li><strong>Verification:<\/strong> Roomster offers both phone and email verification for its users. This adds an extra layer of security to the rental process. <\/li>\n\n\n\n<li><strong>Free listings:<\/strong> It&#8217;s free to post on Roomster, making it more accessible for renters who want to bring in a roommate to post a listing. <\/li>\n<\/ol>\n\n\n\n<h3 style=\"color: #fe5f55\">Cons<\/h3>\n\n\n\n<ol>\n<li><strong>Limited filtering options:<\/strong> Roomster has essential filters like distance, gender and budget but has very limited options beyond these few filters. This can be inconvenient if you have pets or a specific type of accommodation that you are looking for.<\/li>\n\n\n\n<li><strong>Paid messaging:<\/strong> Roomster has a freemium tier that allows users to search for listings for free but you must pay a fee to message on the platform. This can be a limiting factor for those searching for accommodation on a budget.<\/li>\n<\/ol>\n\n\n\n<ul>\n<li><a href=\"https:\/\/roomster.com\/needroom\/edmonton-ab-canada\" target=\"_blank\" rel=\"noreferrer noopener\">Roomster listings for $1500<\/a><a href=\"https:\/\/edmonton.craigslist.org\/search\/roo?hasPic=1&amp;max_price=1500#search=1~gallery~0~0\" target=\"_blank\" rel=\"noreferrer noopener\"> <\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/roomster.com\/needroom\/edmonton-ab-canada\" target=\"_blank\" rel=\"noreferrer noopener\">Roomster listings for $1200 <\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/roomster.com\/needroom\/edmonton-ab-canada\" target=\"_blank\" rel=\"noreferrer noopener\">Roomster listings for $1000 <\/a><\/li>\n<\/ul>\n\n\n\n<br>\n<style>\n.background-renter-cta-safer {\n  text-align: center;\n  color: #303030;\n  font-family: 'Inter', sans-serif;\n  font-size: 24px;\n}\n\n.cta-block-renter-cta-safer p{\n  font-family: 'Inter', sans-serif;\n  color: #303030; \n  font-weight: 400;\n  text-align: center; \n  font-size: 16px;\n}\n\n.cta-block-renter-cta-safer {\n  background-color: #F5F5F5;\n  border-radius: 16px;\n  padding: 30px;\n  text-align: center;\n  margin: 20px 0px;\n}\n.button-renter-cta-safer {\n  margin-top: 20px;\n  padding: 12px 16px;\n  background: #1D415E;\n  border: 0px solid white;\n  box-shadow: 0px 6px 8px -2px rgba(29, 66, 94, 0.4), 0px 12px 16px rgba(32, 121, 193, 0.15);\n  border-radius: 6px;\n  cursor: pointer;\n  \n  font-family: 'Inter';\n  font-style: normal;\n  font-weight: 600;\n  font-size: 14px;\n  line-height: 16px;\n  text-align: center;\n  color: #FFFFFF;\n\n}\n<\/style>\n\n<div class=\"background-renter-cta-safer cta-block-renter-cta-safer\">\n<h3><strong>Discover an easier, safer way to rent<\/strong><\/h3>\n\n<p>Rent safely from verified landlords on liv.rent. Fill out &#038; submit your application, chat with landlords, and securely pay rent \u2013 all on Canada&#8217;s safest rental platform.<\/p>\n\n<a href=\"https:\/\/liv.rent\/?signup\" target=\"_blank\" rel=\"noopener noreferrer\"><button id=\"button-renter-cta-safer\" class=\"button-renter-cta-safer\">Get Started<\/button><\/a>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Honourable mention<\/h2>\n\n\n\n<p>Since none of the above platforms tick every box we have decided to include one honourable mention that&#8217;s a great option for anyone looking for affordable, safe accommodation. It is placed in the honourable mentions category as liv.rent doesn&#8217;t yet have a roommates feature but you still have the option to filter for single rooms on the platform.<\/p>\n\n\n\n<br><h3 style=\"color: #fe5f55\" class=\"wp-block-heading\">liv.rent<\/h3>\n\n\n\n<p><a href=\"https:\/\/liv.rent\/\" target=\"_blank\" rel=\"noreferrer noopener\">liv.rent<\/a> is Canada&#8217;s safest rental platform, built on a foundation of trust between landlord and renters thanks to an extensive verification process. Not to mention tools like the&nbsp;<a href=\"https:\/\/liv.rent\/blog\/2019\/10\/trust-score-explained\/\" target=\"_blank\" rel=\"noreferrer noopener\">Trust Score<\/a>&nbsp;tenant screening tools, available on a pay-per-use basis for Essentials users and included in the platform\u2019s Growth and Business plans. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>There&#8217;s a suite of filtering options so you can taper your search to only single rooms to ensure you can easily find what you are looking for. The large user base provides an abundance of listings so there is something for everyone. As you can see, liv.rent unsurprisingly ticks all the boxes, making it a great option for anyone starting out on their rental journey.<\/p>\n\n\n\n<ul>\n<li><a href=\"https:\/\/liv.rent\/rental-listings\/city\/edmonton\/rooms-under-1500\" target=\"_blank\" rel=\"noreferrer noopener\">liv.rent listings for $1500<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/liv.rent\/rental-listings\/city\/edmonton\/rooms-under-1200\" target=\"_blank\" rel=\"noreferrer noopener\">liv.rent listings for $1200<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/liv.rent\/rental-listings\/city\/edmonton\/rooms-under-1000\" target=\"_blank\" rel=\"noreferrer noopener\">liv.rent listings for $1000<\/a><\/li>\n<\/ul>\n\n\n\n<h4 style=\"color: #7494ac\">Renting as a group<\/h4>\n\n\n\n<p>If you wish to rent a home with your friends, don&#8217;t worry liv.rent has you covered. There are two ways that you can rent as a group: <\/p>\n\n\n\n<ol>\n<li><strong>Everyone on the lease \u2014 <\/strong>Everyone will need to submit an individual application to the same rental listing. Then when the landlord creates the lease, they can select all applicants who will take part in the lease.<\/li>\n\n\n\n<li><strong>Only one person on the lease  \u2014<\/strong> In this case, only one person will submit an application. In the application, they will add roommates. However, once the landlord creates the lease only the main applicant will be listed on the lease.<\/li>\n<\/ol>\n\n\n\n<br>\n<style>\n.background-renter-cta-find-room-edmonton {\n  text-align: center;\n  color: #303030;\n  font-family: 'Inter', sans-serif;\n  font-size: 24px;\n}\n\n.cta-block-renter-cta-find-room-edmonton p{\n  font-family: 'Inter', sans-serif;\n  color: #303030; \n  font-weight: 400;\n  text-align: center; \n  font-size: 16px;\n}\n\n.cta-block-renter-cta-find-room-edmonton {\n  background-color: #F5F5F5;\n  border-radius: 16px;\n  padding: 30px;\n  text-align: center;\n  margin: 20px 0px;\n}\n.button-renter-cta-find-room-edmonton {\n  margin-top: 20px;\n  padding: 12px 16px;\n  background: #1D415E;\n  border: 0px solid white;\n  box-shadow: 0px 6px 8px -2px rgba(29, 66, 94, 0.4), 0px 12px 16px rgba(32, 121, 193, 0.15);\n  border-radius: 6px;\n  cursor: pointer;\n  \n  font-family: 'Inter';\n  font-style: normal;\n  font-weight: 600;\n  font-size: 14px;\n  line-height: 16px;\n  text-align: center;\n  color: #FFFFFF;\n\n}\n<\/style>\n\n<div class=\"background-renter-cta-find-room-edmonton cta-block-renter-cta-find-room-edmonton\">\n<h3><strong>Find a room with liv.rent<\/strong><\/h3>\n\n<p>Find your perfect room in Edmonton with liv.rent. Connect instantly with verified landlords, chat for free, and save your chat history &#038; signed documents all on one platform.<\/p>\n\n<a href=\"https:\/\/liv.rent\/rental-listings\/city\/edmonton\/rooms\" target=\"_blank\" rel=\"noopener noreferrer\"><button id=\"button-renter-cta-find-room-edmonton\" class=\"button-renter-cta-find-room-edmonton\">Browse Rooms For Rent<\/button><\/a>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Roommate agreements: Why they are important and what to include<\/h2>\n\n\n\n<p>The rights and obligations of both landlords and tenants in Alberta are set out by the <a href=\"https:\/\/kings-printer.alberta.ca\/1266.cfm?page=R17P1.cfm&amp;leg_type=Acts&amp;isbncln=9780779847877\" target=\"_blank\" rel=\"noreferrer noopener\">Residential Tenancies Act\u00a0(RTA)<\/a>. It&#8217;s important to note that it doesn&#8217;t apply to shared accommodation situations. If you are living with roommates or sharing living space with your landlord, you should have <a href=\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2020\/05\/2020-06-08_Roommate-Agreement_Final_Interactive.pdf.zip\">written agreements<\/a> in place to outline rules, expectations and bills.<\/p>\n\n\n\n<p>Here are some suggestions on what to include:<\/p>\n\n\n\n<ul>\n<li><strong>Rent:<\/strong> How rent is split and paid to the landlord<\/li>\n\n\n\n<li><strong>Bills:<\/strong> How are bills divided amongst others in the home<\/li>\n\n\n\n<li><strong>Notice:<\/strong> What notice period must be given to the other roommate(s) when moving out<\/li>\n\n\n\n<li><strong>Security deposit:<\/strong>&nbsp;How will it be handled if one roommate leaves<\/li>\n\n\n\n<li><strong>Chores:<\/strong> How will chores be split between others in the home<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pros and cons of living with a roommate<\/h2>\n\n\n\n<p>There is a lot to consider when choosing a roommate and it can be easy to get bogged down. This section will lay out some important pros and cons, to make sure you have all the information you need to make an informed decision. <\/p>\n\n\n\n<h3 style=\"color: #fe5f55\" class=\"wp-block-heading\">Pros<\/h3>\n\n\n\n<ul>\n<li><strong>Cheaper rent \u2014 <\/strong>One of the biggest benefits of having a roommate is getting to split rent in half. This can afford some financial freedom to renters, especially while rents are high.<\/li>\n\n\n\n<li><strong>Companionship \u2014<\/strong> It&#8217;s common for people who share a space to form a bond and become friends. This is an often unforeseen benefit of having a roommate, the connections you make with other people.<\/li>\n\n\n\n<li><strong>Shared responsibility \u2014<\/strong> It can be hugely beneficial to have a roommate who has knowledge of how to fix things around the home. This can not only save you money on purchasing new appliances but you can also pick up some useful skills in the process.<\/li>\n\n\n\n<li><strong>Shared resources <strong>\u2014<\/strong><\/strong> You may benefit from having a roommate who has amenities that you can share such as a large TV, kitchen appliances or sports equipment. This can also lead to discovering a new hobby. <\/li>\n<\/ul>\n\n\n\n<h3 style=\"color: #fe5f55\" class=\"wp-block-heading\">Cons<\/h3>\n\n\n\n<ul>\n<li><strong>Less personal space <\/strong>\u2014 This may be a particularly difficult issue to overcome if you are an individual who requires personal space to recharge. Through utilizing a roommate agreement this issue can be overcome. <\/li>\n\n\n\n<li><strong>Conflicting schedules \u2014<\/strong> It&#8217;s common for people to have different schedules, this may present an issue if you are sharing a space with someone whose schedule conflicts with yours. An example of this is a bar worker who often gets home late at night sharing a space with an office worker who needs to get up early in the morning.<\/li>\n\n\n\n<li><strong>Mess in shared spaces<\/strong> \u2014 With more people comes an increased likelihood of shared spaces becoming messy. It&#8217;s important to share cleanliness expectations with new roommates early on and include them in a roommate agreement to help mitigate any potential tension. <\/li>\n\n\n\n<li><strong>Noise levels \u2014<\/strong> Noise can be an issue if you prefer a quieter space and your roommate is often listening to loud music or television. It&#8217;s important to always keep open lines of communication and establish an expected level of noise that both parties are happy with.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resources for Edmonton renters<\/h2>\n\n\n\n<p>For more information on renting in Edmonton including info on Alberta rental law and guides for using liv.rent to streamline your rental process, renters can check out our <a href=\"https:\/\/liv.rent\/blog\/\" target=\"_blank\" rel=\"noreferrer noopener\">blog<\/a> for more up-to-date relevant information.<\/p>\n\n\n\n<ul>\n<li><strong><a href=\"https:\/\/www.edmonton.ca\/programs_services\/housing\/tenant-support#stack89798\" target=\"_blank\" rel=\"noreferrer noopener\">Free tenant empowerment courses<\/a><\/strong><\/li>\n\n\n\n<li><a href=\"https:\/\/kings-printer.alberta.ca\/1266.cfm?page=R17P1.cfm&amp;leg_type=Acts&amp;isbncln=9780779847877\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Residential Tenancies Act<\/strong><\/a><\/li>\n\n\n\n<li><strong><a href=\"https:\/\/www.alberta.ca\/residential-tenancy-dispute-resolution-service\" target=\"_blank\" rel=\"noreferrer noopener\">Residential Tenancy Dispute Resolution Service (RTDRS)<\/a><\/strong><\/li>\n\n\n\n<li><a href=\"https:\/\/liv.rent\/blog\/renters\/guide-to-finding-off-campus-housing-near-mcgill-university\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Guide to finding off-campus housing<\/strong><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.slsedmonton.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Student Legal Services (SLS)<\/strong><\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ: How to find a roommate in Edmonton<\/h2>\n\n\n\n<h3 style=\"color: #fe5f55\" class=\"wp-block-heading\">What makes a good roommates?<\/h3>\n\n\n\n<p>There are a few things that make a good roommate. You should be considerate of other people&#8217;s belongings, clean, hygienic, well-mannered and pay your portion of bills on time. Above all else, it is best to be conscious of other people especially if you are sharing a space.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 style=\"color: #fe5f55\" class=\"wp-block-heading\">How do you trust a roommate?<\/h3>\n\n\n\n<p>A great way to establish trust early with a roommate is to ask for a reference. This way a third party will vouge for them and provide you with some peace of mind.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 style=\"color: #fe5f55\" class=\"wp-block-heading\">What expenses should roommates share?<\/h3>\n\n\n\n<p>Roommates should share expenses that come from services that are utilized by others in the home. Water, electricity and wifi are some examples of this. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 style=\"color: #fe5f55\" class=\"wp-block-heading\">What rights do I have as a roommate?<\/h3>\n\n\n\n<p>The&nbsp;<a href=\"https:\/\/kings-printer.alberta.ca\/1266.cfm?page=R17P1.cfm&amp;leg_type=Acts&amp;isbncln=9780779847877\">Residential Tenancies Ac<\/a><a href=\"https:\/\/kings-printer.alberta.ca\/1266.cfm?page=R17P1.cfm&amp;leg_type=Acts&amp;isbncln=9780779847877\" target=\"_blank\" rel=\"noreferrer noopener\">t<\/a>&nbsp;(RTA) sets out the rights and obligations of landlords and tenants in Alberta. But, it doesn&#8217;t apply to shared accommodation situations. Therefore a roommate agreement is important in setting out responsibilities between people sharing a space.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<br> \n\n<style> \n\n.button-rethink-way-you-rent { \n  background-color: #3E5B77; \n  border: 5px #26425C; \n  color: white; \n  padding: 10px 30px; \n  text-align: center; \n  text-decoration: none; \n  display: inline-block; \n  font-size: 15px; \n  margin: 5px 0px 20px 0px; \n  cursor: pointer; \n} \n<\/style> \n\n<img decoding=\"async\" class=\"alignleft wp-image-23097\" src=\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2020\/08\/Digital-Contracts-Cropped-2.gif\" alt=\"Find apartments &amp; houses for rent with the liv.rent app\" width=\"196\" height=\"370\" style=\"float:left;\"> \n\n<h3 style=\"color: #3E5B77;\">Rethink The Way You Rent<\/h3> \n\n<p>Not on <strong><a href=\"https:\/\/liv.rent\/\" target=\"_blank\" rel=\"noopener noreferrer\">liv.rent<\/a><\/strong> yet? Experience the ease of digital applications &#038; contracts, verified tenants &#038; landlords, virtual tours and more \u2013 all on one platform. <strong><a href=\"https:\/\/liv.rent\/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Sign up for free<\/a><\/strong> or <strong><a href=\"https:\/\/liv.rent\/download\" target=\"_blank\" rel=\"noopener noreferrer\"> download the app<\/a><\/strong>.<\/p> \n\n<a href=\"https:\/\/liv.rent\/\" target=\"_blank\" rel=\"noopener noreferrer\"><button id=\"button-rethink-way-you-rent\" class=\"button-rethink-way-you-rent\">Learn More<\/button><\/a> \n\n<p style=\"color: #3E5B77\"><strong><a href=\"https:\/\/315027fd.sibforms.com\/serve\/MUIEALxBmw-zX8J7nIDbE8Y0GsbO2XD2wyS5o8IJ7wVaedytZTfE-Ysnf2unVSDuBMQ_DiIreTYMftk3u84zjN-NZ459-r4fafSVJmvHqufcCZsHOdl9YPdQlyNO_8e-aEyO3JswcwrjPcNt9Ll22P85SQ6zAIiqlLhL9S2Es9edJgfjg0307yN6DptRbjGnHobRqNlUNRLczWrl\" target=\"_blank\" rel=\"noopener noreferrer\">Subscribe<\/a><\/strong> to receive the latest tenant &#038; landlord tips and get notified about changes in the Canadian rental market.\n<\/p> \n\n<p style=\"color: #3E5B77\"><strong>>> Stay up-to-date on the average rent in Vancouver, Toronto and Montreal: <\/strong> <a href=\"https:\/\/liv.rent\/blog\/rent-reports\/\" target=\"_blank\" rel=\"noopener noreferrer\">Rent Reports<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Looking for a roommate can be both exciting and challenging. Whether you&#8217;re new to Edmonton or just looking for a change, finding the right person to share your space with can make all the difference. In this guide by liv.rent, we\u2019ll walk you through the essential steps to make the process as smooth as possible. [&hellip;]<\/p>\n","protected":false},"author":42,"featured_media":60707,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false},"categories":[546,522],"tags":[609,591],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to find a roommate in Edmonton | liv.rent blog<\/title>\n<meta name=\"description\" content=\"A guide by liv.rent that covers everything you need to know when looking to find a roommate in Edmonton, Canada.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to find a roommate in Edmonton | liv.rent blog\" \/>\n<meta property=\"og:description\" content=\"A guide by liv.rent that covers everything you need to know when looking to find a roommate in Edmonton, Canada.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/\" \/>\n<meta property=\"og:site_name\" content=\"liv.rent blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/liv.rent\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-17T21:52:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-28T19:50:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2024\/07\/How-to-find-a-roommate-in-edmonton-feature-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"427\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Brad Byrne\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@liv_rent\" \/>\n<meta name=\"twitter:site\" content=\"@liv_rent\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brad Byrne\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/\"},\"author\":{\"name\":\"Brad Byrne\",\"@id\":\"https:\/\/liv.rent\/blog\/#\/schema\/person\/9b0fa908a4680e0af06b80e1e2096744\"},\"headline\":\"How to find a roommate in Edmonton\",\"datePublished\":\"2024-07-17T21:52:33+00:00\",\"dateModified\":\"2026-08-28T19:50:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/\"},\"wordCount\":2198,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/liv.rent\/blog\/#organization\"},\"keywords\":[\"Edmonton\",\"Renter Tips\"],\"articleSection\":[\"Find\",\"Renters\"],\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/\",\"url\":\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/\",\"name\":\"How to find a roommate in Edmonton | liv.rent blog\",\"isPartOf\":{\"@id\":\"https:\/\/liv.rent\/blog\/#website\"},\"datePublished\":\"2024-07-17T21:52:33+00:00\",\"dateModified\":\"2026-08-28T19:50:35+00:00\",\"description\":\"A guide by liv.rent that covers everything you need to know when looking to find a roommate in Edmonton, Canada.\",\"breadcrumb\":{\"@id\":\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/liv.rent\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to find a roommate in Edmonton\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/liv.rent\/blog\/#website\",\"url\":\"https:\/\/liv.rent\/blog\/\",\"name\":\"Liv Rent\",\"description\":\"Rental Made Easy\",\"publisher\":{\"@id\":\"https:\/\/liv.rent\/blog\/#organization\"},\"alternateName\":\"liv.rent\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/liv.rent\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-CA\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/liv.rent\/blog\/#organization\",\"name\":\"Liv Rent\",\"alternateName\":\"liv.rent\",\"url\":\"https:\/\/liv.rent\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/liv.rent\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2020\/03\/liv-rent-logo-1.png\",\"contentUrl\":\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2020\/03\/liv-rent-logo-1.png\",\"width\":1000,\"height\":457,\"caption\":\"Liv Rent\"},\"image\":{\"@id\":\"https:\/\/liv.rent\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/liv.rent\/\",\"https:\/\/twitter.com\/liv_rent\",\"https:\/\/www.instagram.com\/liv.rent\/\",\"https:\/\/www.youtube.com\/channel\/UCyx0INp1qqQ2Xhw-rMiqQiA\",\"https:\/\/www.pinterest.ca\/livrent\/\",\"https:\/\/www.tiktok.com\/@liv.rent\",\"https:\/\/www.linkedin.com\/company\/livrent\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/liv.rent\/blog\/#\/schema\/person\/9b0fa908a4680e0af06b80e1e2096744\",\"name\":\"Brad Byrne\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/liv.rent\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2024\/07\/Blog-author-pic-225x150.jpg\",\"contentUrl\":\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2024\/07\/Blog-author-pic-225x150.jpg\",\"caption\":\"Brad Byrne\"},\"description\":\"Brad Byrne is a Creative Content Writer here at liv.rent who shares insights and news with our community of landlords and tenants.\",\"url\":\"https:\/\/liv.rent\/blog\/author\/brad-byrne\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to find a roommate in Edmonton | liv.rent blog","description":"A guide by liv.rent that covers everything you need to know when looking to find a roommate in Edmonton, Canada.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/","og_locale":"en_US","og_type":"article","og_title":"How to find a roommate in Edmonton | liv.rent blog","og_description":"A guide by liv.rent that covers everything you need to know when looking to find a roommate in Edmonton, Canada.","og_url":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/","og_site_name":"liv.rent blog","article_publisher":"https:\/\/www.facebook.com\/liv.rent\/","article_published_time":"2024-07-17T21:52:33+00:00","article_modified_time":"2026-08-28T19:50:35+00:00","og_image":[{"width":640,"height":427,"url":"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2024\/07\/How-to-find-a-roommate-in-edmonton-feature-image.png","type":"image\/png"}],"author":"Brad Byrne","twitter_card":"summary_large_image","twitter_creator":"@liv_rent","twitter_site":"@liv_rent","twitter_misc":{"Written by":"Brad Byrne","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/#article","isPartOf":{"@id":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/"},"author":{"name":"Brad Byrne","@id":"https:\/\/liv.rent\/blog\/#\/schema\/person\/9b0fa908a4680e0af06b80e1e2096744"},"headline":"How to find a roommate in Edmonton","datePublished":"2024-07-17T21:52:33+00:00","dateModified":"2026-08-28T19:50:35+00:00","mainEntityOfPage":{"@id":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/"},"wordCount":2198,"commentCount":0,"publisher":{"@id":"https:\/\/liv.rent\/blog\/#organization"},"keywords":["Edmonton","Renter Tips"],"articleSection":["Find","Renters"],"inLanguage":"en-CA","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/","url":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/","name":"How to find a roommate in Edmonton | liv.rent blog","isPartOf":{"@id":"https:\/\/liv.rent\/blog\/#website"},"datePublished":"2024-07-17T21:52:33+00:00","dateModified":"2026-08-28T19:50:35+00:00","description":"A guide by liv.rent that covers everything you need to know when looking to find a roommate in Edmonton, Canada.","breadcrumb":{"@id":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/liv.rent\/blog\/renters\/how-to-find-roommate-in-edmonton\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/liv.rent\/blog\/"},{"@type":"ListItem","position":2,"name":"How to find a roommate in Edmonton"}]},{"@type":"WebSite","@id":"https:\/\/liv.rent\/blog\/#website","url":"https:\/\/liv.rent\/blog\/","name":"Liv Rent","description":"Rental Made Easy","publisher":{"@id":"https:\/\/liv.rent\/blog\/#organization"},"alternateName":"liv.rent","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/liv.rent\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-CA"},{"@type":"Organization","@id":"https:\/\/liv.rent\/blog\/#organization","name":"Liv Rent","alternateName":"liv.rent","url":"https:\/\/liv.rent\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/liv.rent\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2020\/03\/liv-rent-logo-1.png","contentUrl":"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2020\/03\/liv-rent-logo-1.png","width":1000,"height":457,"caption":"Liv Rent"},"image":{"@id":"https:\/\/liv.rent\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/liv.rent\/","https:\/\/twitter.com\/liv_rent","https:\/\/www.instagram.com\/liv.rent\/","https:\/\/www.youtube.com\/channel\/UCyx0INp1qqQ2Xhw-rMiqQiA","https:\/\/www.pinterest.ca\/livrent\/","https:\/\/www.tiktok.com\/@liv.rent","https:\/\/www.linkedin.com\/company\/livrent\/"]},{"@type":"Person","@id":"https:\/\/liv.rent\/blog\/#\/schema\/person\/9b0fa908a4680e0af06b80e1e2096744","name":"Brad Byrne","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/liv.rent\/blog\/#\/schema\/person\/image\/","url":"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2024\/07\/Blog-author-pic-225x150.jpg","contentUrl":"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2024\/07\/Blog-author-pic-225x150.jpg","caption":"Brad Byrne"},"description":"Brad Byrne is a Creative Content Writer here at liv.rent who shares insights and news with our community of landlords and tenants.","url":"https:\/\/liv.rent\/blog\/author\/brad-byrne\/"}]}},"_links":{"self":[{"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/posts\/60274"}],"collection":[{"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/users\/42"}],"replies":[{"embeddable":true,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/comments?post=60274"}],"version-history":[{"count":38,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/posts\/60274\/revisions"}],"predecessor-version":[{"id":69169,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/posts\/60274\/revisions\/69169"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/media\/60707"}],"wp:attachment":[{"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/media?parent=60274"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/categories?post=60274"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/tags?post=60274"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}