{"id":11192,"date":"2019-09-27T10:00:04","date_gmt":"2019-09-27T17:00:04","guid":{"rendered":"https:\/\/liv.rent\/blog\/?p=11192"},"modified":"2026-08-28T12:45:31","modified_gmt":"2026-08-28T19:45:31","slug":"neighbourhood-guide-dunbar","status":"publish","type":"post","link":"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/","title":{"rendered":"Neighbourhood Guide: Dunbar"},"content":{"rendered":"\n<p>There&#8217;s a quiet and charming village in Vancouver called Dunbar that would be the perfect home for families and folks.<\/p>\n\n\n\n<p>We are&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/liv.rent\/\" target=\"_blank\">liv.rent<\/a>, we create solutions for renters and landlords, and our guide to Dunbar will take you through everything you need to know about the area. Of course, if you fall in love with the neighbourhood, then you can use liv.rent to help you find your new Dunbar home!<\/p>\n\n\n\n<p>Without further ado, here&#8217;s everything you need to know about living in Dunbar:<\/p>\n\n\n\n<br>\n<h2 style=\"text-align: center;\" id=\"toc\"><strong>Table of Contents<\/strong><\/h2>\n\n\n\n<div style=\"border: 1px solid black; text-align: center; margin: 20px 0%; padding: 20px\">\n\n<p style=\"text-align: center;\"><strong><a href=\"#where\">Where is Dunbar, Vancouver?<\/a><\/strong><\/p>\n\n<p style=\"text-align: center;\"><strong><a href=\"#live\">What&#8217;s it like to live in Dunbar?<\/a><\/strong><\/p>\n\n<p style=\"text-align: center;\"><strong><a href=\"#rent\">Average rent in Dunbar<\/a><\/strong><\/p>\n\n<p style=\"text-align: center;\"><strong><a href=\"#schools\">Best schools in Dunbar<\/a><\/strong><\/p>\n\n<p style=\"text-align: center;\"><strong><a href=\"#restaurants\">Best restaurants in Dunbar<\/a><\/strong><\/p>\n\n<p style=\"text-align: center;\"><strong><a href=\"#for-rent\">Apartments for rent in Dunbar<\/a><\/strong><\/p>\n\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where\">Where is Dunbar, Vancouver?<\/h2>\n\n\n\n<p>The Dunbar-Southlands neighbourhood is defined by West 16th Avenue to the north, West 41st Avenue to the south, UBC to the west, and approximately Blenheim Street to the east.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"live\">What&#8217;s it like to live in Dunbar?<\/h2>\n\n\n\n<p>Dunbar is primarily residential with a couple of streets, notably Dunbar Street and West 41st Avenue which are full of shops, restaurants and services. Quiet and residential, this neighbourhood is popular with families and quite sleepy after 8 p.m.<\/p>\n\n\n\n<p>The streets are lined with single-family homes for the most part though some density can be found in <a href=\"https:\/\/dunbarvillage.ca\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Dunbar Village (opens in a new tab)\">Dunbar Village<\/a> and along West 16th Avenue. <\/p>\n\n\n\n<p>Also, laneway homes are starting to pop up throughout the area offering some alternative housing options. The area is typically more affluent and houses are costly. However, there are some affordable options, especially for shared housing perfect for <a href=\"https:\/\/liv.rent\/blog\/2019\/03\/best-housing-off-campus-for-ubc-students\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"UBC students (opens in a new tab)\">UBC students<\/a> to share.<\/p>\n\n\n\n<div style=\"border: 2px solid lightcoral; text-align: center; margin: 30px 0; padding: 20px; color: #BD8D7C;\">\n<p style=\"font-size: 16px;margin: 0;\"><b>&gt;&gt; Read More:<\/b> <a href=\"https:\/\/liv.rent\/blog\/2019\/03\/best-housing-off-campus-for-ubc-students\/\" target=\"_blank\" rel=\"noopener noreferrer\">Best Housing Off-Campus for UBC Students\n<\/a><\/p>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Transportation in Dunbar<\/h3>\n\n\n\n<p>Dunbar is well serviced by key <a href=\"https:\/\/www.translink.ca\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"TransLink (opens in a new tab)\">TransLink<\/a> bus routes moving people quickly and reliably both east and west as well as North into downtown. They run along West 16th Avenue, West King Edward Avenue, West 41st Avenue, and MacDonald Street.<\/p>\n\n\n\n<p>There are no skytrains that service this area, although the closest stops are Oakridge and Langara, which are accessible by bus from the Dunbar area.<\/p>\n\n\n\n<br>\n<style>\n.background-renter-cta-trusted-website {\n  text-align: center;\n  color: #303030;\n  font-family: 'Inter', sans-serif;\n  font-size: 24px;\n}\n\n.cta-block-renter-cta-trusted-website p{\n  font-family: 'Inter', sans-serif;\n  color: #303030; \n  font-weight: 400;\n  text-align: center; \n  font-size: 16px;\n}\n.cta-block-renter-cta-trusted-website li{\n  font-family: 'Inter', sans-serif;\n  color: #303030; \n  font-weight: 400;\n  text-align: center; \n  font-size: 16px;\n}\n.cta-block-renter-cta-trusted-website {\n  background-color: #F5F5F5;\n  border-radius: 16px;\n  padding: 30px;\n  text-align: center;\n  margin: 20px 0px;\n}\n.button-renter-cta-trusted-website {\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-renter-cta-trusted-website cta-block-renter-cta-trusted-website\">\n<h3><strong>liv.rent &#8211; Canada&#8217;s trusted house &amp; apartment rental website<\/strong><\/h3>\n\n<p>Search apartments, condos, and homes for rent.<\/p>\n<br>\n<li><b>Verified Landlords:<\/b> Rent from a trusted landlord. Look for the &#8220;<a href=\"https:\/\/liv.rent\/blog\/livrent\/rental-verification-process\/\" target=\"_blank\" rel=\"noopener noreferrer\">ID Verified<\/a>&#8221; tag to identify which landlords have been pre-screened.<\/li>\n<li><b>Quality Rentals:<\/b> Browse listings that have been checked by our team. Verified by official documents or by mail.<\/li>\n<li><b>One-Click Applications:<\/b> Fill out your <a href=\"https:\/\/liv.rent\/blog\/livrent\/apply-to-multiple-listings\/\" target=\"_blank\" rel=\"noopener noreferrer\">Renter Resume<\/a> once and apply to multiple listings in just a few clicks.<\/li>\n\n<a href=\"https:\/\/liv.rent\/\" target=\"_blank\" rel=\"noopener noreferrer\"><button id=\"button-renter-cta-trusted-website\" class=\"button-renter-cta-trusted-website\">Find Rentals Near You<\/button><\/a>\n<\/ul><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Things to do in Dunbar<\/h3>\n\n\n\n<p>In Dunbar, green space is abundant. Chaldecott Park at the western end of King Edward features a fun water park for young children while Balaclava Park is buzzing with baseball. Balaclava and Camosun Parks both also have running tracks and large grassy infields.<\/p>\n\n\n\n<p>Plus, <a rel=\"noreferrer noopener\" aria-label=\"Pacific Spirit Park (opens in a new tab)\" href=\"http:\/\/www.metrovancouver.org\/services\/parks\/parks-greenways-reserves\/pacific-spirit-regional-park\" target=\"_blank\">Pacific Spirit Park<\/a> is a crown jewel of Dunbar&#8217;s green spaces. Though technically part of UBC, the Pacific Spirit trails are easily accessed from trailheads at the western ends of King Edward Avenue, West 33rd, West 37th, and West 39th streets.<\/p>\n\n\n\n<p>Dunbar Village is a quaint high street offering every shop, service and convenience necessary. Shops and services can be found running the length of Dunbar Street from West 16th to West 41st Avenue.<\/p>\n\n\n\n<ul>\n<li><a href=\"http:\/\/dunbarcentre.org\/dunbar\/\">Dunbar Community Centre<\/a> \u2014 a lively hub of activity offering a full range of activities for all age groups.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.facebook.com\/DunbarTheatre\">The Dunbar Theatre<\/a> \u2014 an independent, single-screen cinema showing films serving up snacks.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.vpl.ca\/location\/dunbar-branch\">The Dunbar Branch<\/a> \u2014 The local library just a couple of blocks from the community centre.<\/li>\n<\/ul>\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\/55691\/lakeview-pointe-kelowna-apartments-apartment-building-3623-elliot-road-west-kelowna-bc\",\n        \"https:\/\/liv.rent\/building\/53981\/parque-on-park-apartment-building-20449-park-ave-langley-bc\",\n        \"https:\/\/liv.rent\/building\/8227\/the-pendrell-apartment-building-1770-pendrell-st-vancouver-bc\",\n        \"https:\/\/liv.rent\/building\/55792\/nells-place-apartment-building-4502-rupert-street-vancouver-bc\",\n        \"https:\/\/liv.rent\/building\/55771\/hub-place-apartment-building-1649-e-broadway-vancouver-bc\",\n      ],\n      TITLE: \"Now renting in B.C.\",\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 = \"bc\", PROVU = \"BC\";\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\" id=\"rent\">Average rent in Dunbar<\/h2>\n\n\n\n<p>According to <a href=\"https:\/\/liv.rent\/blog\/2021\/05\/may-2021-vancouver-rent-report\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"liv.rent rental data  (opens in a new tab)\">liv.rent rental data <\/a>from May 2021, the average rent in South Vancouver for homes looked like this:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>One-bedroom<\/td><td>$1,647<\/td><\/tr><tr><td>Two-bedroom<\/td><td>$2,366<\/td><\/tr><tr><td>Three-bedroom<\/td><td>$2,917<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Here&#8217;s what average rent looks like specifically in the Dunbar neighbourhood, broken down by listing type: <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>One-bedroom<\/td><td>$1,795<\/td><\/tr><tr><td>Two-bedroom<\/td><td>$1,900 <\/td><\/tr><tr><td>Three-bedroom<\/td><td>$3,650 <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><em>Source: <\/em><a rel=\"noreferrer noopener\" aria-label=\"Zumper (opens in a new tab)\" href=\"https:\/\/www.zumper.com\/rent-research\/vancouver-bc\/dunbar\" target=\"_blank\"><em>Zumper<\/em><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"718\" src=\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2021\/05\/map_of_dunbar-1024x718.jpg\" alt=\"Map of Dunbar Vancouver.\" class=\"wp-image-30079\" srcset=\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2021\/05\/map_of_dunbar-1024x718.jpg 1024w, https:\/\/liv.rent\/blog\/wp-content\/uploads\/2021\/05\/map_of_dunbar-300x210.jpg 300w, https:\/\/liv.rent\/blog\/wp-content\/uploads\/2021\/05\/map_of_dunbar-768x539.jpg 768w, https:\/\/liv.rent\/blog\/wp-content\/uploads\/2021\/05\/map_of_dunbar-351x247.jpg 351w, https:\/\/liv.rent\/blog\/wp-content\/uploads\/2021\/05\/map_of_dunbar.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"school\">Best schools in Dunbar<\/h2>\n\n\n\n<p>Some of Vancouver\u2019s best private and public schools are located in Dunbar including:  <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Elementary &amp; high schools<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><a rel=\"noreferrer noopener\" aria-label=\"St. George\u2019s School (opens in a new tab)\" href=\"https:\/\/www.stgeorges.bc.ca\/\" target=\"_blank\">St. George\u2019s School<\/a> (private)<\/td><td><a href=\"https:\/\/www.vsb.bc.ca\/schools\/lord-kitchener\/Pages\/default.aspx\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Lord Kitchener Elementary (opens in a new tab)\">Lord Kitchener Elementary<\/a> (public)<\/td><\/tr><tr><td><a rel=\"noreferrer noopener\" aria-label=\"Crofton House (opens in a new tab)\" href=\"https:\/\/www.croftonhouse.ca\/\" target=\"_blank\">Crofton House<\/a> (private)<\/td><td><a rel=\"noreferrer noopener\" aria-label=\"Queen Elizabeth Elementary (opens in a new tab)\" href=\"https:\/\/www.vsb.bc.ca\/schools\/queen-elizabeth\/Pages\/default.aspx\" target=\"_blank\">Queen Elizabeth Elementary<\/a> (public)<\/td><\/tr><tr><td><a href=\"https:\/\/www.vsb.bc.ca\/schools\/lord-byng\/Pages\/default.aspx\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Lord Byng Secondary (opens in a new tab)\">Lord Byng Secondary<\/a> (public)<\/td><td><a rel=\"noreferrer noopener\" href=\"https:\/\/www.vsb.bc.ca\/schools\/jules-quesnel\/Pages\/default.aspx\" target=\"_blank\">Jules Quesnel Elementary<\/a> (public, French immersion) <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Post-secondary school<\/h4>\n\n\n\n<p>The University of British Columbia (<a href=\"https:\/\/www.ubc.ca\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"UBC (opens in a new tab)\">UBC<\/a>) is one of Canada\u2019s top post-secondary institutions and it&#8217;s just a five-minute drive away from Dunbar. <\/p>\n\n\n\n<br>\n<style>\n.background-landlord-cta-for-landlords {\n  text-align: center;\n  color: #303030;\n  font-family: 'Inter', sans-serif;\n  font-size: 24px;\n}\n\n.cta-block-landlord-cta-for-landlords p{\n  font-family: 'Inter', sans-serif;\n  color: #303030; \n  font-weight: 400;\n  text-align: center; \n  font-size: 16px;\n}\n.cta-block-landlord-cta-for-landlords li{\n  font-family: 'Inter', sans-serif;\n  color: #303030; \n  font-weight: 400;\n  text-align: center; \n  font-size: 16px;\n}\n.cta-block-landlord-cta-for-landlords {\n  background-color: #F5F5F5;\n  border-radius: 16px;\n  padding: 30px;\n  text-align: center;\n  margin: 20px 0px;\n}\n.button-landlord-cta-for-landlords {\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<div class=\"background-landlord-cta-for-landlords cta-block-landlord-cta-for-landlords\">\n<h3><strong>Landlords &#038; Property Managers<\/strong><\/h3>\n\n<p>Advertise your rental for free on liv.rent &#8211; an <a href=\"https:\/\/liv.rent\/\" target=\"_blank\" rel=\"noopener noreferrer\">all-in-one rental platform.<\/a><\/p>\n<br>\n<li><b>Maximize Exposure:<\/b> Multiplatform syndication to Craigslist, Kijiji, Zumper, Facebook Rental Groups &#038; more.<\/li>\n<li><b>Generate Quality Leads:<\/b> Chat instantly with ID verified renters &#038; search from a list of suggested tenants.<\/li>\n<li><b>Screen Tenants Smarter:<\/b> Easily assess a renter&#8217;s reliability &#038; trustworthiness with <a href=\"https:\/\/liv.rent\/blog\/livrent\/trust-score-explained\/\" target=\"_blank\" rel=\"noopener noreferrer\">Trust Score<\/a> &#8211; the new intelligent rating system.<\/li>\n\n<br>\n<a href=\"https:\/\/liv.rent\/landlords\" target=\"_blank\" rel=\"noopener noreferrer\"><button id=\"button-landlord-cta-for-landlords\" class=\"button-landlord-cta-for-landlords\">Learn More<\/button><\/a>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"restaurant\">Best restaurants in Dunbar<\/h2>\n\n\n\n<ul>\n<li><a href=\"https:\/\/sweetsomethingsvancouver.com\/\">Sweet Somethings<\/a> \u2014 for beautiful cakes and cupcakes, try placing an order at this eye-catching spot.<\/li>\n\n\n\n<li><a href=\"https:\/\/butter-baked-goods.myshopify.com\/\">Butter Bakery<\/a> \u2014 a cult-favourite bakery in Vancouver, they also have a tea room for special occasions.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.lanotte.ca\/\">La Notte Restaurant<\/a> \u2014 a neighbourhood gem of an Italian restaurant loved by locals.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.facebook.com\/kumajapanese\/\">Kuma Japanese<\/a> \u2014 for when you need to fill up on sushi, place a take-out order here at this locally-favoured spot.<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" aria-label=\"Bells and Whistles (opens in a new tab)\" href=\"https:\/\/www.bellsandwhistlesyvr.ca\/\" target=\"_blank\">Bells and Whistles<\/a> \u2014 the funky new pub in town serves classic Americana roadside eats and has a variety of local beers on tap.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"for-rent\">Apartments for rent in Dunbar<\/h2>\n\n\n\n<p>Do you feel like Dunbar could be the best neighbourhood for you? Start your search for your next home today with liv.rent, choose from listing types below:<\/p>\n\n\n\n<ul>\n<li>Studio apartments for rent: <a rel=\"noreferrer noopener\" aria-label=\"Dunbar (opens in a new tab)\" href=\"https:\/\/liv.rent\/rental-listings\/city\/vancouver?bedroom_count=0&amp;page=1\" target=\"_blank\">Dunbar<\/a><\/li>\n\n\n\n<li>One-bedroom apartments for rent: <a rel=\"noreferrer noopener\" aria-label=\"Dunbar (opens in a new tab)\" href=\"https:\/\/liv.rent\/rental-listings\/city\/vancouver?bedroom_count=1&amp;page=1\" target=\"_blank\">Dunbar<\/a><\/li>\n\n\n\n<li>Two-bedroom apartments for rent: <a rel=\"noreferrer noopener\" aria-label=\"Dunbar (opens in a new tab)\" href=\"https:\/\/liv.rent\/rental-listings\/city\/vancouver?bedroom_count=2&amp;page=1\" target=\"_blank\">Dunbar<\/a> <\/li>\n\n\n\n<li>Three-bedroom apartments for rent: <a href=\"https:\/\/liv.rent\/rental-listings\/city\/vancouver?bedroom_count=3&amp;page=1\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Dunbar (opens in a new tab)\">Dunbar<\/a> <\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p><strong><em>Check out our other Metro Vancouver neighbourhood guides:<\/em><\/strong><\/p>\n\n\n\n<ol>\n<li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/liv.rent\/blog\/2018\/09\/neighborhood-guide-living-in-yaletown\/\" target=\"_blank\">Yaletown<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/liv.rent\/blog\/2018\/10\/neighborhood-guide-main-street\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Main Street<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/liv.rent\/blog\/2018\/08\/vancouver-neighbourhoods-chinatown\/\" target=\"_blank\">Chinatown<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/liv.rent\/blog\/2018\/11\/neighbourhood-guide-commercial-drive\/\" target=\"_blank\">Commercial Drive<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/liv.rent\/blog\/2019\/02\/neighbourhood-guide-west-end-vancouver\/\" target=\"_blank\">The West End<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/liv.rent\/blog\/2019\/08\/neighbourhood-guide-north-vancouver\/\" target=\"_blank\">North Vancouver<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https:\/\/liv.rent\/blog\/2019\/04\/neighbourhood-guide-marine-and-cambie-hub\/\" target=\"_blank\">Marine &amp; Cambie Hub<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" aria-label=\"New Westminster Brewery District (opens in a new tab)\" href=\"https:\/\/liv.rent\/blog\/2020\/02\/brewery-district-new-westminster\/\" target=\"_blank\">New Westminster Brewery District<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" aria-label=\"Richmond, BC (opens in a new tab)\" href=\"https:\/\/liv.rent\/blog\/2021\/05\/neighbourhood-guide-richmond-bc\/\" target=\"_blank\">Richmond, BC<\/a><\/li>\n<\/ol>\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>Dunbar is a leafy Vancouver neighbourhood on the city\u2019s western edge bordering the University Endowment Lands. The streets are primarily lined with single-family homes, though some density can be found in Dunbar Village and along 16th Ave. Dunbar is well serviced by key Translink bus routes and features abundant park space.<\/p>\n","protected":false},"author":3,"featured_media":11929,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false},"categories":[552,9,135,133],"tags":[597,349],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Vancouver Neighbourhood Guide: Dunbar | liv.rent blog<\/title>\n<meta name=\"description\" content=\"Everything you need to know about the Dunbar neighbourhood in Vancouver. Housing types. Rental Options. Transportation. Shops &amp; Services. Public Schools.\" \/>\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\/neighbourhoods\/neighbourhood-guide-dunbar\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vancouver Neighbourhood Guide: Dunbar | liv.rent blog\" \/>\n<meta property=\"og:description\" content=\"Everything you need to know about the Dunbar neighbourhood in Vancouver. Housing types. Rental Options. Transportation. Shops &amp; Services. Public Schools.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/\" \/>\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=\"2019-09-27T17:00:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-28T19:45:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2019\/09\/map-Dumbar2-compressor.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1347\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kristina Ikavalko\" \/>\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=\"Kristina Ikavalko\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/\"},\"author\":{\"name\":\"Kristina Ikavalko\",\"@id\":\"https:\/\/liv.rent\/blog\/#\/schema\/person\/d848b746dd0bf9661e52be319d6921ae\"},\"headline\":\"Neighbourhood Guide: Dunbar\",\"datePublished\":\"2019-09-27T17:00:04+00:00\",\"dateModified\":\"2026-08-28T19:45:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/\"},\"wordCount\":802,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/liv.rent\/blog\/#organization\"},\"keywords\":[\"Off Campus Guides\",\"Vancouver\"],\"articleSection\":[\"BC\",\"Lifestyle\",\"Neighbourhoods\",\"Vancouver\"],\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/\",\"url\":\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/\",\"name\":\"Vancouver Neighbourhood Guide: Dunbar | liv.rent blog\",\"isPartOf\":{\"@id\":\"https:\/\/liv.rent\/blog\/#website\"},\"datePublished\":\"2019-09-27T17:00:04+00:00\",\"dateModified\":\"2026-08-28T19:45:31+00:00\",\"description\":\"Everything you need to know about the Dunbar neighbourhood in Vancouver. Housing types. Rental Options. Transportation. Shops & Services. Public Schools.\",\"breadcrumb\":{\"@id\":\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/liv.rent\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Neighbourhood Guide: Dunbar\"}]},{\"@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\/d848b746dd0bf9661e52be319d6921ae\",\"name\":\"Kristina Ikavalko\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/liv.rent\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0a5bbf3fd596506205981f6d985d6969?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0a5bbf3fd596506205981f6d985d6969?s=96&d=mm&r=g\",\"caption\":\"Kristina Ikavalko\"},\"description\":\"Creative Content Creator for liv.rent, based in Vancouver.\",\"url\":\"https:\/\/liv.rent\/blog\/author\/kristina\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Vancouver Neighbourhood Guide: Dunbar | liv.rent blog","description":"Everything you need to know about the Dunbar neighbourhood in Vancouver. Housing types. Rental Options. Transportation. Shops & Services. Public Schools.","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\/neighbourhoods\/neighbourhood-guide-dunbar\/","og_locale":"en_US","og_type":"article","og_title":"Vancouver Neighbourhood Guide: Dunbar | liv.rent blog","og_description":"Everything you need to know about the Dunbar neighbourhood in Vancouver. Housing types. Rental Options. Transportation. Shops & Services. Public Schools.","og_url":"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/","og_site_name":"liv.rent blog","article_publisher":"https:\/\/www.facebook.com\/liv.rent\/","article_published_time":"2019-09-27T17:00:04+00:00","article_modified_time":"2026-08-28T19:45:31+00:00","og_image":[{"width":1920,"height":1347,"url":"https:\/\/liv.rent\/blog\/wp-content\/uploads\/2019\/09\/map-Dumbar2-compressor.jpg","type":"image\/jpeg"}],"author":"Kristina Ikavalko","twitter_card":"summary_large_image","twitter_creator":"@liv_rent","twitter_site":"@liv_rent","twitter_misc":{"Written by":"Kristina Ikavalko","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/#article","isPartOf":{"@id":"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/"},"author":{"name":"Kristina Ikavalko","@id":"https:\/\/liv.rent\/blog\/#\/schema\/person\/d848b746dd0bf9661e52be319d6921ae"},"headline":"Neighbourhood Guide: Dunbar","datePublished":"2019-09-27T17:00:04+00:00","dateModified":"2026-08-28T19:45:31+00:00","mainEntityOfPage":{"@id":"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/"},"wordCount":802,"commentCount":0,"publisher":{"@id":"https:\/\/liv.rent\/blog\/#organization"},"keywords":["Off Campus Guides","Vancouver"],"articleSection":["BC","Lifestyle","Neighbourhoods","Vancouver"],"inLanguage":"en-CA","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/","url":"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/","name":"Vancouver Neighbourhood Guide: Dunbar | liv.rent blog","isPartOf":{"@id":"https:\/\/liv.rent\/blog\/#website"},"datePublished":"2019-09-27T17:00:04+00:00","dateModified":"2026-08-28T19:45:31+00:00","description":"Everything you need to know about the Dunbar neighbourhood in Vancouver. Housing types. Rental Options. Transportation. Shops & Services. Public Schools.","breadcrumb":{"@id":"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/liv.rent\/blog\/neighbourhoods\/neighbourhood-guide-dunbar\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/liv.rent\/blog\/"},{"@type":"ListItem","position":2,"name":"Neighbourhood Guide: Dunbar"}]},{"@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\/d848b746dd0bf9661e52be319d6921ae","name":"Kristina Ikavalko","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/liv.rent\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0a5bbf3fd596506205981f6d985d6969?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0a5bbf3fd596506205981f6d985d6969?s=96&d=mm&r=g","caption":"Kristina Ikavalko"},"description":"Creative Content Creator for liv.rent, based in Vancouver.","url":"https:\/\/liv.rent\/blog\/author\/kristina\/"}]}},"_links":{"self":[{"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/posts\/11192"}],"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\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/comments?post=11192"}],"version-history":[{"count":2,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/posts\/11192\/revisions"}],"predecessor-version":[{"id":69149,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/posts\/11192\/revisions\/69149"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/media\/11929"}],"wp:attachment":[{"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/media?parent=11192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/categories?post=11192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liv.rent\/blog\/wp-json\/wp\/v2\/tags?post=11192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}