1<!DOCTYPE html> 2<html lang="en-us"> 3 <head> 4 <link rel="preconnect" href="https://fonts.googleapis.com"> 5<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 6<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap" rel="stylesheet"> 7<link rel="stylesheet" href="https://use.typekit.net/sob4wle.css">
7<script> 8 document.addEventListener("DOMContentLoaded", function(event) { 9 function usmPageRenderUtil(){var e=this;e.pageCategory="",e.heroElements=[],e.fpTime=null,e.fmpTime=null,e.fmpToTti=null,e.ttiTime=null,e.checker=null,e.waitTime=5e3,e.debug=!1,e.run=function(t){var n=t.heroElementIdentifiers||[".page-hero-element"];return e.pageCategory=t.pageCategory,e.debug=t.debug||!1,new Promise(function(t,r){e.observePaint().then(function(){e.observeHeroElements(n).then(function(){e.observeLongTasks().then(function(){e.fmpToTti=e.ttiTime-e.fmpTime,e.debug&&(console.log("FP: "+e.fpTime),console.log("FMP: "+e.fmpTime),console.log("FMP to TTI: "+e.fmpToTti),console.log("TTI: "+e.ttiTime)),t(e)})})})})},e.observePaint=function(){return new Promise(function(t,n){if(PerformanceObserver===null||PerformanceObserver===undefined)return n(),!1;var r=new PerformanceObserver(function(n){var r=n.getEntries();for(var i in r){var s=r[i],o=s.name;e.fpTime=performance.now();if("first-paint"===s.name){e.debug&&(console.log(s),console.log("metricName"),console.log(o)),t();return}}});r.observe({entryTypes:["paint"]})})},e.observeHeroElements=function(t){return new Promise(function(n,r){t=t.join(),e.debug&&console.log("Hero elements: "+t),e.heroElements=[].slice.call(document.querySelectorAll(t)),e.debug&&console.log("Hero elements count: ["+e.heroElements.length+"]");var i=new MutationObserver(function(t){for(var r=0;r<e.heroElements.length;r++){var s=e.heroElements[r];document.contains(s)&&e.heroElements.splice(r,1)}e.heroElements.length<=0&&(i.disconnect(),e.fmpTime=performance.now(),e.debug&&console.log("Hero observer disconnected. ["+e.getCurrentTime(!0)+"] Unix: ["+e.getCurrentTime()+"]"),n()),e.debug&&console.log("Hero elements not displayed. ["+e.heroElements.length+"].")});i.observe(document,{attributes:!0,childList:!0,characterData:!1,subtree:!0})})},e.observeLongTasks=function(){return new Promise(function(t,n){if(PerformanceObserver===null||PerformanceObserver===undefined)return n(),!1;var r=new PerformanceObserver(function(n){var i=n.getEntries();for(var s in i){var o=i[s];o instanceof PerformanceLongTaskTiming&&(e.debug&&console.log(o),e.scheduleCheck(r,t))}});r.observe({entryTypes:["longtask"]})})},this.scheduleCheck=function(e,t){var n=this,r=performance.now();clearTimeout(this.checker),this.checker=setTimeout(function(){n.ttiTime=r,e.disconnect(),t(),n.debug&&console.log("Performance observer disconnected. ["+n.getCurrentTime(!0)+"] Unix: ["+n.getCurrentTime()+"]")},n.waitTime)},e.getCurrentTime=function(e){return e===!0?(new Date).toUTCString():(new Date).getTime()},e.getPayload=function(){return{"Time to Interactive":e.formatTime(e.ttiTime),"First Paint":e.formatTime(e.fpTime),"First Meaningful Paint":e.formatTime(e.fmpTime),"FMP to TTI":e.formatTime(e.fmpToTti),"Page Category":e.pageCategory}},e.formatTime=function(e){e/=1e3;var t=Math.pow(10,1);return Math.round(e*t)/t}}; 10 var renderUtil = new usmPageRenderUtil(); 11 var debug = false; 12 renderUtil.run({heroElementIdentifiers: [".default-nav",".naturallanguagesearch",".featuredlistings"], pageCategory: "Home Page", debug: debug}).then(function (renderUtil) { 13 if (debug) { 14 console.log(renderUtil.getPayload()); 15 } 16 }); 17 }); 18 </script>
18<script> 19window.dataLayer = window.dataLayer || []; 20window.dataLayer.push({"hasNoSEO":"UA-73987-40","hasGlobalRE":"UA-73987-25","hasCompassV2":"UA-73987-51","NumberOfAgents":0,"NumberOfAgentWebsites":25,"MLS":["CA_BRIDGES","CA_CRMLS_TRESTLE"],"CallTracking":false,"MapSearchV2":true,"OffMarketProperty":false,"VendorsPage":false,"Blog":true,"LuxuryBuildings":false,"TownPages":false,"MarketReportTool":false,"AVMTool":false,"LeadRouter":false}); 21</script>
21 22�<!-- Google Tag Manager --> 23�
23<script>
vendor: 317 bytes, line 23
23(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
23GTM-NR38L3C
vendor: 3 bytes, line 23
23');
23</script>
23 24�<!-- End Google Tag Manager --> 25�<title>The Grubb Company | Homes for Sale in Oakland, Berkeley & Piedmont, CA</title> 26 <meta name="description" content="The Grubb Company is the leading residential real estate company in the East Bay Area. Together we will find the perfect home for you." /> 27 <meta name="author" content="Faye Keogh" /> 28 <link rel="canonical" href="https://fayekeogh.com/"/> 29 <link rel="copyright" href="https://d.usmre.com/UnionStreetMediaTermsofUse.pdf"/><meta property="og:title" content="The Grubb Company | Homes for Sale in Oakland, Berkeley & Piedmont, CA" /> 30 <meta property="og:description" content="The Grubb Company is the leading residential real estate company in the East Bay Area. Together we will find the perfect home for you." /> 31 <meta property="og:url" content="https://fayekeogh.com/" /> 32 <meta property="og:type" content="website" /> 33 <meta property="og:site_name" content="Faye Keogh" /> 34 <meta name="twitter:card" content="summary" /> 35 <meta name="twitter:title" content="The Grubb Company | Homes for Sale in Oakland, Berkeley & Piedmont, CA" /> 36 <meta name="twitter:description" content="The Grubb Company is the leading residential real estate company in the East Bay Area. Together we will find the perfect home for you." /> 37 <link rel="shortcut icon" href="https://s3.amazonaws.com/files.usmre.com/11924/i/favicon.jpg?t=1765213218" /> 38<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 39<meta name="viewport" content="width=device-width, initial-scale=1"> 40<link rel="stylesheet" type="text/css" href="https://d1nn5t56all1qd.cloudfront.net/11924/styles.min.css?version=1787992123" media="screen" /><link rel="stylesheet" type="text/css" href="https://d1nn5t56all1qd.cloudfront.net/layouts/46/print.css?version=1740650949" media="print" />
40<script src="https://kit.fontawesome.com/c7bcd66c3f.js" crossorigin="anonymous"></script>
40<script>/** vim: et:ts=4:sw=4:sts=4 41 * @license RequireJS 2.3.3 Copyright jQuery Foundation and other contributors. 42 * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE 43 */ 44var requirejs,require,define;!function(global,setTimeout){function commentReplace(e,t){return t||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i<e.length&&(!e[i]||!t(e[i],i,e));i+=1);}}function eachReverse(e,t){if(e){var i;for(i=e.length-1;i>-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){!i&&hasProp(e,n)||(!r||"object"!=typeof t||!t||isArray(t)||isFunction(t)||t instanceof RegExp?e[n]=t:(e[n]||(e[n]={}),mixin(e[n],t,i,r)))}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;t<e.length;t++)if(i=e[t],"."===i)e.splice(t,1),t-=1;else if(".."===i){if(0===t||1===t&&".."===e[2]||".."===e[t-1])continue;t>0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,o,a,s,u,c,d,p,f,l,h,m,g=i&&i.split("/"),v=y.map,x=v&&v["*"];if(e&&(e=e.split("/"),d=e.length-1,y.nodeIdCompat&&jsSuffixRegExp.test(e[d])&&(e[d]=e[d].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&g&&(m=g.slice(0,g.length-1),e=m.concat(e)),t(e),e=e.join("/")),r&&v&&(g||x)){a=e.split("/");e:for(s=a.length;s>0;s-=1){if(c=a.slice(0,s).join("/"),g)for(u=g.length;u>0;u-=1)if(o=getOwn(v,g.slice(0,u).join("/")),o&&(o=getOwn(o,c))){p=o,f=s;break e}!l&&x&&getOwn(x,c)&&(l=getOwn(x,c),h=s)}!p&&l&&(p=l,f=h),p&&(a.splice(0,f,p),e=a.join("/"))}return n=getOwn(y.pkgs,e),n?n:e}function r(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName)return t.parentNode.removeChild(t),!0})}function n(e){var t=getOwn(y.paths,e);if(t&&isArray(t)&&t.length>1)return t.shift(),q.require.undef(e),q.makeRequire(null,{skipMap:!0})([e]),!0}function o(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function a(e,t,r,n){var a,s,u,c,d=null,p=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(T+=1)),c=o(e),d=c[0],e=c[1],d&&(d=i(d,p,n),s=getOwn(j,d)),e&&(d?h=r?e:s&&s.normalize?s.normalize(e,function(e){return i(e,p,n)}):e.indexOf("!")===-1?i(e,p,n):e:(h=i(e,p,n),c=o(h),d=c[0],h=c[1],r=!0,a=q.nameToUrl(h))),u=!d||s||r?"":"_unnormalized"+(A+=1),{prefix:d,name:h,parentMap:t,unnormalized:!!u,url:a,originalName:f,isDefine:l,id:(d?d+"!"+h:h)+u}}function s(e){var t=e.id,i=getOwn(S,t);return i||(i=S[t]=new q.Module(e)),i}function u(e,t,i){var r=e.id,n=getOwn(S,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e),n.error&&"error"===t?i(n.error):n.on(t,i)):"defined"===t&&i(j[r])}function c(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(S,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function d(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(q.defQueueMap[t]=!0),O.push(e)}),globalDefQueue=[])}function p(e){delete S[e],delete k[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var o=r.id,a=getOwn(S,o);!a||e.depMatched[n]||i[o]||(getOwn(t,o)?(e.defineDep(n,j[o]),e.check()):f(a,t,i))}),i[r]=!0)}function l(){var e,t,i=1e3*y.waitSeconds,o=i&&q.startTime+i<(new Date).getTime(),a=[],s=[],u=!1,d=!0;if(!x){if(x=!0,eachProp(k,function(e){var i=e.map,c=i.id;if(e.enabled&&(i.isDefine||s.push(e),!e.error))if(!e.inited&&o)n(c)?(t=!0,u=!0):(a.push(c),r(c));else if(!e.inited&&e.fetched&&i.isDefine&&(u=!0,!i.prefix))return d=!1}),o&&a.length)return e=makeError("timeout","Load timeout for modules: "+a,null,a),e.contextName=q.contextName,c(e);d&&each(s,function(e){f(e,{},{})}),o&&!t||!u||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),x=!1}}function h(e){hasProp(j,e[0])||s(a(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;
44for(d();O.length;){if(e=O.shift(),null===e[0])return c(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}q.defQueueMap={}}var x,b,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},S={},k={},M={},O=[],j={},P={},R={},T=1,A=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?j[e.map.id]=e.exports:e.exports=j[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(y.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},b=function(e){this.events=getOwn(M,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},b.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;return this.shim?void q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()})):e.prefix?this.callPlugin():this.load()}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,o=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,o,r,n)}catch(t){e=t}else n=q.execCb(i,o,r,n);if(this.map.isDefine&&void 0===n&&(t=this.module,t?n=t.exports:this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",c(this.error=e)}else n=o;if(this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad)){var a=[];each(this.depMaps,function(e){a.push(e.normalizedMap||e)}),req.onResourceLoad(q,this.map,a)}p(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(q.defQueueMap,i)||this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=a(e.prefix);this.depMaps.push(r),u(r,"defined",bind(this,function(r){var n,o,d,f=getOwn(R,this.map.id),l=this.map.name,h=this.map.parentMap?this.map.parentMap.name:null,m=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(l=r.normalize(l,function(e){return i(e,h,!0)})||""),o=a(e.prefix+"!"+l,this.map.parentMap,!0),u(o,"defined",bind(this,function(e){this.map.normalizedMap=o,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),d=getOwn(S,o.id),void(d&&(this.depMaps.push(o),this.events.error&&d.on("error",bind(this,function(e){this.emit("error",e)})),d.enable()))):f?(this.map.url=q.nameToUrl(f),void this.load()):(n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})}),n.error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(S,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&p(e.map.id)}),c(e)}),n.fromText=bind(this,function(i,r){var o=e.name,u=a(o),d=useInteractive;r&&(i=r),d&&(useInteractive=!1),s(u),hasProp(y.config,t)&&(y.config[o]=y.config[t]);try{req.exec(i)}catch(e){return c(makeError("fromtexteval","fromText eval for "+t+" failed: "+e,e,[t]))}d&&(useInteractive=!0),this.depMaps.push(u),q.completeLoad(o),m([o],n)}),void r.load(e.name,m,n,y))})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){k[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=a(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,u(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?u(e,"error",bind(this,this.errback)):this.events.error&&u(e,"error",bind(this,function(e){this.emit
44("error",e)}))}i=e.id,r=S[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(S,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:S,defined:j,urlFetched:P,defQueue:O,defQueueMap:{},Module:b,makeModuleMap:a,nextTick:req.nextTick,onError:c,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var t=e.urlArgs;e.urlArgs=function(e,i){return(i.indexOf("?")===-1?"?":"&")+t}}var i=y.shim,r={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?(y[t]||(y[t]={}),mixin(y[t],e,!0,!0)):y[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(R[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&each(e.packages,function(e){var t,i;e="string"==typeof e?{name:e}:e,i=e.name,t=e.location,t&&(y.paths[i]=e.location),y.pkgs[i]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(S,function(e,t){e.inited||e.map.unnormalized||(e.map=a(t,null,!0))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){function t(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}return t},makeRequire:function(t,n){function o(i,r,u){var d,p,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?c(makeError("requireargs","Invalid require call"),u):t&&hasProp(E,i)?E[i](S[t.id]):req.get?req.get(q,i,t,o):(p=a(i,t,!1,!0),d=p.id,hasProp(j,d)?j[d]:c(makeError("notloaded",'Module name "'+d+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),f=s(a(null,t)),f.skipMap=n.skipMap,f.init(i,r,u,{enabled:!0}),l()}),o)}return n=n||{},mixin(o,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),o=e.split("/")[0],a="."===o||".."===o;return n!==-1&&(!a||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,a(e,t,!1,!0).id)},specified:function(e){return e=a(e,t,!1,!0).id,hasProp(j,e)||hasProp(S,e)}}),t||(o.undef=function(e){d();var i=a(e,t,!0),n=getOwn(S,e);n.undefed=!0,r(e),delete j[e],delete P[i.url],delete M[e],eachReverse(O,function(t,i){t[0]===e&&O.splice(i,1)}),delete q.defQueueMap[e],n&&(n.events.defined&&(M[e]=n.events),p(e))}),o},enable:function(e){var t=getOwn(S,e.id);t&&s(e).enable()},completeLoad:function(e){var t,i,r,o=getOwn(y.shim,e)||{},a=o.exports;for(d();O.length;){if(i=O.shift(),null===i[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(q.defQueueMap={},r=getOwn(S,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||a&&getGlobal(a)))return n(e)?void 0:c(makeError("nodefine","No define call for "+e,null,[e]));h([e,o.deps||[],o.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,o,a,s,u,c,d=getOwn(y.pkgs,e);if(d&&(e=d),c=getOwn(R,e))return q.nameToUrl(c,t,i);if(req.jsExtRegExp.test(e))s=e+(t||"");else{for(r=y.paths,n=e.split("/"),o=n.length;o>0;o-=1)if(a=n.slice(0,o).join("/"),u=getOwn(r,a)){isArray(u)&&(u=u[0]),n.splice(0,o,u);break}s=n.join("/"),s+=t||(/^data\:|^blob\:|\?/.test(s)||i?"":".js"),s=("/"===s.charAt(0)||s.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+s}return y.urlArgs&&!/^blob\:/.test(s)?s+y.urlArgs(e,s):s},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);if(!n(t.id)){var i=[];return eachProp(S,function(e,r){0!==r.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===t.id)return i.push(r),!0})}),c(makeError("scripterror",'Script error for "'+t.id+(i.length?'", needed by: '+i.join(", "):'"'),e,[t.id]))}}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.3.3",commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if("undefined"==typeof define){if("undefined"!=typeof requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}"undefined"==typeof require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,o,a=defContextName;return isArray(e)||"string"==typeof e||(o=e,isArray(t)?(e=t,t=i,i=r):e=[]),o&&o.context&&(a=o.context),n=getOwn(contexts,a),n||(n=contexts[a]=req.s.newContext(a)),o&&n.configure(o),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick="undefined"!=typeof setTimeout?function(e){setTimeout(e,4)}:function(e){e()}
44,require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],baseElement=document.getElementsByTagName("base")[0],baseElement&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return r=req.createNode(n,t,i),r.setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,n.onNodeCreated&&n.onNodeCreated(r,n,t,i),currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{setTimeout(function(){},0),importScripts(i),e.completeLoad(t)}catch(r){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,r,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||mainScript.indexOf("!")!==-1||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript(),r&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")])),n?(n.defQueue.push([e,t,i]),n.defQueueMap[e]=!0):globalDefQueue.push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this,"undefined"==typeof setTimeout?void 0:setTimeout);</script>
44<script type="text/javascript"> 45 var requireConfig = {"waitSeconds":20,"baseUrl":"https:\/\/d1mlo4htassgww.cloudfront.net\/shipyard\/build\/","paths":{"async":"profiles\/default","bootstrap":"profiles\/default","goog":"profiles\/default","jquery":"profiles\/default","jquery.browser":"profiles\/default","jquery.deparam":"profiles\/default","jquery.dropdownchecklist":"profiles\/default","jquery.form":"profiles\/default","jquery.history":"profiles\/default","jquery.html5-placeholder-shim":"profiles\/default","jquery.inview":"profiles\/default","jquery.usmNlsShipyard":"profiles\/default","jquery.pageitems":"profiles\/default","jquery.usmajaxtogglebutton":"profiles\/default","jquery.usmmortgageestimate":"profiles\/default","jquery.usmtruncate":"profiles\/default","jquery.validation":"profiles\/default","jquery.validation-extensions-usm":"profiles\/default","jqueryui":"profiles\/default","knockout":"knockout-2.3.0","owlcarousel":"profiles\/default","picturefill.min":"profiles\/default","propertyParser":"profiles\/default","shim.polyfills":"profiles\/default","captcha":"profiles\/default","shipyard":"profiles\/default","static-map-search":"profiles\/default","usm":"profiles\/default","usm.analytics":"profiles\/default","usm.cookie":"profiles\/default","usm.url":"profiles\/default","usm.user":"profiles\/default","usm.favorite":"profiles\/default","usm.savesearch":"profiles\/default","usm.modalform":"profiles\/default","usm.dynamicsearch":"profiles\/default","LLSDKsJS":"https:\/\/sdk.locallogic.co\/sdks-js\/1.19.30\/index.umd","webfontloader":"\/\/ajax.googleapis.com\/ajax\/libs\/webfont\/1\/webfont","Leaflet":"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.0.1\/leaflet","mapboxgl":"https:\/\/api.tiles.mapbox.com\/mapbox-gl-js\/v0.42.0\/mapbox-gl","plunk":"plunkComponents.min","emblaCarousel":"https:\/\/unpkg.com\/[email protected]\/embla-carousel.umd","emblaCarouselAutoplay":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-autoplay.umd","emblaCarouselClassNames":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-class-names.umd","emblaCarouselFade":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-fade.umd","emblaCarouselPlugins":"emblaCarouselPlugins","map.regions":"\/realestate\/regions\/?json","jquery.validationextensionsusm":"\/data\/shipyard\/js\/jquery.validation-extensions-usm"}}; 46 requireConfig.urlArgs = function(id, url) { 47 var args = ""; 48 if (url.indexOf("d1nn5t56all1qd") <= 0 && url.indexOf("dy0meowegjlo2") <= 0) { 49 args = "version=1791388468"; 50 return (url.indexOf("?") === -1 ? "?" : "&") + args; 51 } 52 53 return ""; 54 }; 55 56 require.config(requireConfig); 57 </script>
57 58
58<script type="text/javascript">require(["profiles/default", "usm", "usm.calltracking", "usm.goscript"], function (listing, usm) { 59 if (usm.touchSupport) { require(["profiles/touch"]); } 60 });</script>
vendor: 73 bytes, line 60
60<script async src="https://www.google.com/recaptcha/enterprise.js?render=
606Lf9JBksAAAAAGACUCxT1FwHQ7NntBp1UFHXzcUn
vendor: 24 bytes, lines 60-61
60"></script> 61
61<link rel="preconnect" href="https://www.google.com"> 62 <link rel="preconnect" href="https://www.gstatic.com" crossorigin> 63</head> 64�<body class="view homepage array1-article array1-view array1-356281 array1-1 array1-55747 fall home-category" data-site-type="shipyard" data-re-captcha-site-key="6Lf9JBksAAAAAGACUCxT1FwHQ7NntBp1UFHXzcUn"> 65�<!-- Google Tag Manager (noscript) -->
vendor: 63 bytes, lines 65-66
65 66�<noscript><iframe src="//www.googletagmanager.com/ns.html?id=
66GTM-NR38L3C
vendor: 84 bytes, lines 66-67
66" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 67�
67<!-- End Google Tag Manager (noscript) --> 68�<header class="utilBarWrap"> 69 <div id="sidebar3"><div id="menuwidget-389338" class="widget menu menuwidget default-nav container"><h3 class="widget-title">Menu</h3><div class="widget-inner"><div class="desktop-nav"><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-389338"><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class=" menu-item-187223"><a href="/" target="_self" rel="noopener" role="menuitem">Home</a></li><li role="presentation" class=" menu-item-187224"><a href="/listings/" target="_self" role="menuitem">Property Search</a></li><li role="presentation" class="has-children menu-item-187225"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-187225" class="dropdown-toggle" role="menuitem">Explore the East Bay<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-187225" role="menu"><li role="presentation" class=" menu-item-187214"><a href="/areas/alameda/" target="_self" role="menuitem">Alameda</a></li><li role="presentation" class=" menu-item-187215"><a href="/areas/albany/" target="_self" role="menuitem">Albany</a></li><li role="presentation" class=" menu-item-187216"><a href="/areas/berkeley/" target="_self" role="menuitem">Berkeley</a></li><li role="presentation" class=" menu-item-187217"><a href="/areas/el-cerrito/" target="_self" role="menuitem">El Cerrito</a></li><li role="presentation" class=" menu-item-187218"><a href="/areas/emeryville/" target="_self" role="menuitem">Emeryville</a></li><li role="presentation" class=" menu-item-187219"><a href="/areas/kensington/" target="_self" role="menuitem">Kensington</a></li><li role="presentation" class=" menu-item-187220"><a href="/areas/oakland/" target="_self" role="menuitem">Oakland</a></li><li role="presentation" class=" menu-item-187221"><a href="/areas/piedmont/" target="_self" role="menuitem">Piedmont</a></li><li role="presentation" class=" menu-item-187222"><a href="/areas/" target="_self" role="menuitem">All Cities</a></li></ul></li><li role="presentation" class="has-children menu-item-187226"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-187226" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-187226" role="menu"><li role="presentation" class=" menu-item-187208"><a href="/sellers/" target="_self" role="menuitem">Sellers</a></li><li role="presentation" class=" menu-item-187209"><a href="/buyers/" target="_self" role="menuitem">Buyers</a></li><li role="presentation" class=" menu-item-187210"><a href="/global-reach/" target="_self" role="menuitem">Global Reach</a></li><li role="presentation" class=" menu-item-187211"><a href="/home-worth/" target="_self" role="menuitem">Home Value Estimator</a></li><li role="presentation" class=" menu-item-187212"><a href="/market-analysis/" target="_self" role="menuitem">Market Analysis</a></li><li role="presentation" class=" menu-item-187213"><a href="/mortgage-calculator/" target="_self" role="menuitem">Mortgage Calculator</a></li></ul></li><li role="presentation" class="has-children menu-item-187227"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-187227" class="dropdown-toggle" role="menuitem">About<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-187227" role="menu"><li role="presentation" class=" menu-item-187206"><a href="/testimonials/" target="_self" role="menuitem">Testimonials</a></li><li role="presentation" class=" menu-item-187207"><a href="/about/" target="_self" role="menuitem">About The Grubb Co.</a></li></ul></li><li role="presentation" class=" menu-item-187228"><a href="/contact-me/" target="_self" role="menuitem">Ask a Question</a></li></ul></div></nav></div></div><div class="mobile-nav"><button type="button" class="navbar-toggle" data-target="#navbar-mobile-389338" aria-label="Toggle navigation"><span>Menu</span><span class="fa fa-bar"></span><span class="fa fa-bar"></span><span class="fa fa-bar"></span></button><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-mobile-389338"><a href="#" class="menu-close"><i class="fa fa-times-circle-o"></i><span class="sr-only">Close Button</span></a><div class="menu-sign-on"><a class="usm-btn nav-login" href="/user/login/" rel="nofollow">Log In</a><a class="usm-btn nav-register" href="/user/register/" rel="nofollow">Sign Up</a><a class="usm-btn nav-account" href="/user/" rel="nofollow">My Account</a></div><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class=" menu-item-187223"><a href="/" target="_self" rel="noopener" role="menuitem">Home</a></li><li role="presentation" class=" menu-item-187224"><a href="/listings/" target="_self" role="menuitem">Property Search</a></li><li role="presentation" class="has-children menu-item-187225"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-187225" class="dropdown-toggle" role="menuitem">Explore the East Bay<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-187225" role="menu"><li role="presentation" class=" menu-item-187214"><a href="/areas/alameda/" target="_self" role="menuitem">Alameda</a></li><li role="presentation" class=" menu-item-187215"><a href="/areas/albany/" target="_self" role="menuitem">Albany</a></li><li role="presentation" class=" menu-item-187216"><a href="/areas/berkeley/" target="_self" role="menuitem">Berkeley</a></li><li role="presentation" class=" menu-item-187217"><a href="/areas/el-cerrito/" target="_self" role="menuitem">El Cerrito</a></li><li role="presentation" class=" menu-item-187218"><a href="/areas/emeryville/" target="_self" role="menuitem">Emeryville</a></li><li role="presentation" class=" menu-item-187219"><a href="/areas/kensington/" target="_self" role="menuitem">Kensington</a></li><li role="presentation" class=" menu-item-187220"><a href="/areas/oakland/" target="_self" role="menuitem">Oakland</a></li><li role="presentation" class=" menu-item-187221"><a href="/areas/piedmont/" target="_self" role="menuitem">Piedmont</a></li><li role="presentation" class=" menu-item-187222"><a href="/areas/" target="_self" role="menuitem">All Cities</a></li></ul></li><li role="presentation" class="has-children menu-item-187226"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-187226" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-187226" role="menu"><li role="presentation" class=" menu-item-187208"><a href="/sellers/" target="_self" role="menuitem">Sellers</a></li><li role="presentation" class=" menu-item-187209"><a href="/buyers/" target="_self" role="menuitem">Buyers</a></li><li role="presentation" class=" menu-item-187210"><a href="/global-reach/" target="_self" role="menuitem">Global Reach</a></li><li role="presentation" class=" menu-item-187211"><a href="/home-worth/" target="_self" role="menuitem">Home Value Estimator</a></li><li role="presentation" class=" menu-item-187212"><a href="/market-analysis/" target="_self" role="menuitem">Market Analysis</a></li><li role="presentation" class=" menu-item-187213"><a href="/mortgage-calculator/" target="_self" role="menuitem">Mortgage Calculator</a></li></ul></li><li role="presentation" class="has-children menu-item-187227"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-187227" class="dropdown-toggle" role="menuitem">About<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-187227" role="menu"><li role="presentation" class=" menu-item-187206"><a href="/testimonials/" target="_self" role="menuitem">Testimonials</a></li><li role="presentation" class=" menu-item-187207"><a href="/about/" target="_self" role="menuitem">About The Grubb Co.</a></li></ul></li><li role="presentation" class=" menu-item-187228"><a href="/contact-me/" target="_self" role="menuitem">Ask a Question</a></li></ul><ul class="nav navbar-nav user-nav"><li class="menu-item-saved-search" role="presentation"><a href="/realestate/searches/" rel="nofollow">Saved Searches</a></li><li class="menu-item-favorites" role="presentation"><a href="/realestate/favorites/view/" rel="nofollow">Favorites</a></li></ul></div></nav></div></div></div></div><div id="sitelogo-389339" class="widget sitelogo container"> <div class="sitelogo__box sitelogo--white"> 70 <a href="/" target="_self" class="sitelogo__link"> 71 <img 72 src="https://s3.amazonaws.com/files.usmre.com/11924/i/logo.png?version=1762359343" 73 alt="The Grubb Company | Agent Template Logo" 74 class="sitelogo__image" 75 > 76 </a> 77 </div> 78 <style> 79 .sitelogo--white .sitelogo__image { 80 filter: brightness(0) invert(1); 81 } 82 </style> 83 </div><div class="contact-links nav-contacts"> 84 <div class="header-user"> 85 <div class="header-user-logged-in"> 86 <div class="account-link"> 87 <a href="/user/" rel="nofollow"><i class="fas fa-user"></i>Account</a> 88 </div> 89 </div> 90 <div class="header-user-logged-out"> 91 <div class="header-user-login"> 92 <div class="login-link"><a href="/user/login/" rel="nofollow"><i class="fas fa-user"></i>Log In</a></div> 93 </div>
94 <span>|</span> 95 <div class="header-user-register"> 96 <div class="register-link"><a href="/user/register/" rel="nofollow">Sign Up</a></div> 97 </div> 98 </div> 99 </div> 100 <a class="contact-link contact-link-contactus" href="/contact-me/"><i class="fas fa-envelope"></i> Ask a question</a> 101</div></div> 102</header> 103<div class="topWrap"> 104 <div id="top"><div id="header-content-widget" class="widget headercontent header-content-widget container"><div class="hero-section"><img src="https://d15zjc2r4e8kr7.cloudfront.net/11924/img/global/hero.jpg" alt="The Grubb Company" width="2000" height="900" loading="lazy"><div data-pb-dropzone="Drop Page Title Here" class="hero-content"><h1 id="i06qog" class="custom-title --underlined"><span class="subtitle">Meet</span>Faye Keogh</h1></div></div><div data-pb-dropzone="Drop Hero Section Here" id="hero-dropzone"></div></div></div> 105</div> 106<div class="sub1Wrap"> 107 <div id="group1"><div class="assw-wrapper"><div id="autosuggestionsearch-389367" class="widget autosuggestionsearch container"><div class="autosuggest widget-autosuggest"><div class="widget-inner"><form action="/listings/" method="get"><div class="autosuggest-searchbar"><input type="search" placeholder="Search by Location, Address, Postal Code, MLS#..." aria-label=" Search: Search by Location, Address, Postal Code, MLS#... Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu, press Tab to select the option and exit the menu. " autocomplete="off" name="autosuggest-search-query" id="autosuggest-search-query-389367" maxlength="200" class="search-input form-control"/><div class="buttons"><div class="autosuggest-loader"></div><button class="usm-btn btn-search" id="autosuggest-search-button" role="button" aria-label="Search"><i class="fa fa-search"></i></button></div></div><div class="autosuggest-links"><div class="col-links"></div></div></form></div></div></div><div id="recsearch-389368" class="widget recsearchlist recsearch recommendedsearchlist magnet-tabs container"><div class="magnet-tabs-wrapper magnet-tabs-389368"><ul class="nav"><li class="recsearch-category-item recsearch-category-property-type"><a title="Property Type">Property Type</a><ul class="nav"><li><a title="Exclusive non-mls" href="/property-type/exclusive/">Exclusive non-mls</a></li><li><a title="Single Family Homes for Sale, CA" href="/property-type/single-family/">Single Family Homes</a></li><li><a title="Condos for Sale, CA" href="/property-type/condos/">Condos</a></li><li><a title="Land for Sale, CA" href="/property-type/land/">Land</a></li><li><a title="Multi-Family Homes for Sale, CA" href="/property-type/multi-family/">Multi-Family Homes</a></li></ul></li><li class="recsearch-category-item recsearch-category-price"><a title="Price">Price</a><ul class="nav"><li><a title="Properties for Sale Under $1M" href="/price/under-1m/">Under $1M</a></li><li><a title="Properties for Sale from $1M to $1.5M" href="/price/1m-1-5m/">$1M-$1.5M</a></li><li><a title="Properties for Sale from $1.5M to $2M" href="/price/1-5m-2m/">$1.5M-$2M</a></li><li><a title="Properties for Sale from $2M to $3M" href="/price/2m-3m/">$2M-$3M</a></li><li><a title="Properties for Sale Over $3m" href="/price/over-3m/">$3M+</a></li></ul></li><li class="recsearch-category-item recsearch-category-location"><a title="Location">Location</a><ul class="nav"><li><a title="Alamo Real Estate, CA" href="/location/alamo/">Alamo</a></li><li><a title="Danville Real Estate, CA" href="/location/danville/">Danville</a></li><li><a title="Lafayette Real Estate, CA" href="/location/lafayette/">Lafayette</a></li><li><a title="Moraga Real Estate, CA" href="/location/moraga/">Moraga</a></li><li><a title="Orinda Real Estate, CA" href="/location/orinda/">Orinda</a></li><li><a title="Alameda Real Estate, CA" href="/location/alameda/">Alameda</a></li><li><a title="Albany Real Estate, CA" href="/location/albany/">Albany</a></li><li><a title="Berkeley Real Estate, CA" href="/location/berkeley/">Berkeley</a></li><li><a title="El Cerrito, Real Estate CA" href="/location/el-cerrito/">El Cerrito</a></li><li><a title="Emeryville Real Estate, CA" href="/location/emeryville/">Emeryville</a></li><li><a title="Kensington Real Estate, CA" href="/location/kensington/">Kensington</a></li><li><a title="Oakland Real Estate, CA" href="/location/oakland/">Oakland</a></li><li><a title="Piedmont Real Estate, CA" href="/location/piedmont/">Piedmont</a></li></ul></li></ul></div> 108</div></div></div> 109</div> 110<div class="sub2Wrap"> 111 <div id="group2"></div> 112</div> 113<section id="wrapper"> 114 <div class="content-row"> 115 <div class="contentWrap"> 116 <main><div class="article content-wrapper-default" id="article-356281"><h1 class="title">Faye Keogh</h1><div class="content content-default"><style id="gjs-page-styles"></style><div id="featuredagent-389414" class="widget featuredagent container"><h3 class="widget-title">Agent Intro Section</h3><div class="widget-inner"><div class="photo"><a href="/realestate/agent/faye-keogh/"><img data-src="https://dl6bglhcfn2kh.cloudfront.net/11693/114342/FayeK.jpg" alt="Faye Keogh" class="lazyload"/></a></div><div class="name"><a href="/realestate/agent/faye-keogh/">
116Faye Keogh</a></div><div class="position"><span class="featured-agent-position">Realtor®</span></div><div class="title"><span class="featured-agent-title">DRE#00988354</span></div><div class="email"><a href="mailto:[email protected]" data-rmif="rmif-featured-agent-114342" class="rmif-trigger">[email protected]</a></div><div class="phone"><a href="tel:510-220-6373">510-220-6373</a></div><div class="featured-bio"><p>Originally from a cattle ranch in North Dakota, Faye Keogh pursued a Masters Degree in Sociology with an emphasis in environmental studies. She spent six years as a research sociologist consulting on energy projects including working for the Department of Energy in Puerto Rico, and then three years in Wells Fargo’s International Banking Group, focusing on product development and marketing as well as coordinating special projects for the Chairman of the Board. Her interest in working with individuals prevailed and she began residential real estate in the East Bay in 1988. Faye’s keen...</p></div><a href="/realestate/agent/faye-keogh/" class="agent-bio-read-more-link" title="Link to the agent page">Read More</a><div id="rmif-featured-agent-114342" style="display: none;" class="contact-modal "><div class="success-content" style="display: none;"><div class="thank-you-popup"><div class="inner"><div class="thank-you-top-header"><div class="exit"><div class="exit-button"><i class="fa fa-times"></i></div></div><div class="text-wrapper top-header-message"><div class="top-header-message-icon"><span><i class="fa fa-check"></i></span></div><div class="top-header-message-text"><p>Success!</p></div><div class="content-message-text">While you wait to hear back from us:<div class="border-bottom-line"></div></div></div></div><div class="content-section"><div class="links"><div class="links-btn search-for-properties " onclick="window.location='/listings/'"><i class="fa fa-search"></i><div><a href="/listings/" class="links-btn-link">Search For Properties</a></div><i class="fa fa-chevron-right chevron-icon"></i></div><div class="links-btn browse-search-categories " onclick="window.location='/realestate/searchcategories/'"><i class="fa fa-home"></i><div><a href="/realestate/searchcategories/" class="links-btn-link">Browse Search Categories</a></div><i class="fa fa-chevron-right chevron-icon"></i></div><div class="links-btn explore-your-account " onclick="window.location='/user/user/'"><i class="fa fa-user"></i><div><a href="/user/user/" class="links-btn-link">Explore Your Account</a></div><i class="fa fa-chevron-right chevron-icon"></i></div><div class="links-btn close-continue close-link" onclick="window.location='#'"><i class="fa fa-times"></i><div><a href="#" class="links-btn-link">Close & Continue</a></div><i class="fa fa-chevron-right chevron-icon"></i></div></div></div></div></div></div><div class="inner"><div class="top-header"><div class="exit"><div class="exit-button"><i class="fa fa-times"></i></div></div><div class="text-wrapper"><h3>Hi there! How can we help you?</h3><p>Contact us using the form below or give us a call.</p></div></div><div class="form-section"><div class="form-section-head"><div class="form-section-text">Send Us A Message:</div></div><div class="error-message-container"></div><form method="POST" action="/mail/send/agent_contact_form" class="rmif agent-rmif" data-pageview="/complete/agents-ask-aquestion" data-new-reg-modals-container="#rmif-featured-agent-114342"><div class="contact-form-fields"><input type="hidden" name="Realtor" id="Realtor" value="114342"/><input type="hidden" name="ContactByText" id="ContactByText" value="false"/><input type="hidden" name="Sent_Form" id="Sent_Form" value="Agent Profile Contact"/><input type="hidden" name="Sent_From" id="Sent_From"/><input type="hidden" name="mailformid" id="mailformid" value="agent_contact_form"/><input type="hidden" name="FormKey" id="FormKey" value="eb92fa51f27bd6c204cabb3d4ca460a1"/><input type="hidden" name="AgentEmail" id="AgentEmail" value="[email protected]"/><div class="form-group name-group"><label class="required">Name</label><input type="text" name="Name" id="Name" size="40" class="required form-control" placeholder="*Full Name" required="required"/></div><div class="form-group email-group"><label class="required">Email</label><input type="text" name="Email" id="Email" size="40" class="required email form-control" placeholder="*Email" required="required"/></div><div class="form-group phone-group"><label>Phone</label><input type="text" name="Phone" id="Phone" size="25" class=" form-control" placeholder="Phone"/></div></div><div class="contact-form-comment"><div class="form-group comments-group"><label>Questions or Comments?</label><textarea name="Comments or questions" id="Comments or questions" cols="45" rows="10" class="required form-control" placeholder="*Questions or Comments?"></textarea></div></div><div class="form-group opt-in-block"><label class="show"><input type="checkbox" name="OptIn" value="1"/><span class="control-label">Opt in</span></label><p>
116I agree to receive marketing, customer service calls, and text messages from Faye Keogh. To opt out, you can reply 'stop' at any time or click the unsubscribe link in the emails. Consent is not a condition of purchase. Msg/data rates may apply. Msg frequency varies. <a href="/privacy-policy/">Privacy Policy</a>.</p></div><div style="display: none;">Do not fill in this field:<input type="text" name="topyenoh" id="topyenoh"/></div><div class="contact-form-submit submit-btn"><input type="submit" name="Submit" id="Submit" value="Send" class="btn usm-btn btn-default submit"/></div></form></div></div></div></div></div><div id="iztq" class="tabbed-section flw-option"><div class="tabbed-section-header"><div class="title-wrapper"><h2 id="ikdumq" class="custom-title --center-aligned --underlined">View 117 Faye Keogh's Transactions 118</h2></div><ul id="ixhep" class="tabs-wrapper"><li class="tab"><a href="#" class="btn btn-big btn-white --decorated">Active</a></li><li id="iunfh" class="tab"><a href="#" id="iu2kw" class="btn btn-big btn-white --decorated">Pending</a></li><li id="izfx2" class="tab"><a href="#" id="ij8kv" class="btn btn-big btn-white --decorated">Sold</a></li></ul></div><div id="i9jby" class="tabbed-section-body"><div data-pb-dropzone="Drop Content Here" data-pb-dropzone-toolbar="true" id="if41y" class="content-tab"><div id="featuredlistingsv2-389428" class="widget featuredlistingsv2 feature-listings-widget-v2 container"><div class="featured-listings-wrapper" id="flw-grid-389428"><h3 class="widget-title">Exclusive Active Listings</h3><div class="flw-grid"><div class="featured-listings-grid"><div itemscope class="listing ca_bridges matched-with-list-agent" itemtype="http://schema.org/Product"><span itemprop="name" content="Berkeley CA, 2711 Buena Vista Way" class="hidden"></span><div itemscope itemprop="offers" itemtype="http://schema.org/Offer" class="hidden"><span itemprop="price" content="1250000"></span><span itemprop="priceCurrency" content="USD"></span><span itemprop="availability" content="https://schema.org/InStock"></span><span itemprop="url" content="/property/2711-buena-vista-way-berkeley-ca-94708/109435567/"></span></div><div class="listing-image"><link itemprop="image" href="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG59dXVxdw/1024/1/2711-buena-vista-way-berkeley-ca-94708.webp?t=1789599050"/><a href="/property/2711-buena-vista-way-berkeley-ca-94708/109435567/" itemprop="url" title="Link to the real estate listing"><img class="lazyload" data-src="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG59dXVxdw/1024/1/2711-buena-vista-way-berkeley-ca-94708.webp?t=1789599050" alt="Berkeley CA, 2711 Buena Vista Way"/></a></div><div class="listing-details"><h3><a href="/property/2711-buena-vista-way-berkeley-ca-94708/109435567/" itemprop="url" title="Link to the real estate listing">Berkeley CA, 2711 Buena Vista Way</a></h3><ul itemprop="description"><li class="list-price"><span class="field-label">List Price</span><span data-usm-currency class="value">$1,250,000</span></li><li class="display-address"><span class="field-label">Address</span><span class="value">2711 Buena Vista Way</span></li><li class="town"><span class="field-label">Town</span><span class="value">Berkeley</span></li><li class="state"><span class="field-label">State</span><span class="value">CA</span></li><li class="bedrooms"><span class="field-label">Bed</span><span class="value">1</span></li><li class="bathroom"><span class="field-label">Bath</span><span class="value">2</span></li><li class="square-feet"><span class="field-label">SqFt</span><span class="value">958</span></li></ul><a href="/property/2711-buena-vista-way-berkeley-ca-94708/109435567/" class="usm-btn view-details" title="Link to the real estate listing">View Details</a></div><a href="/property/2711-buena-vista-way-berkeley-ca-94708/109435567/" class="bdg active" title="Link to the real estate listing"><span>For Sale</span></a></div></div></div></div></div><div class="btn-wrapper --center-aligned"><a href="/exclusive-listings/" class="btn btn-big btn-white --decorated">View All</a></div></div><div data-pb-dropzone="Drop Content Here" data-pb-dropzone-toolbar="true" id="io4jo" class="content-tab"><div id="featuredlistingsv2-390468" class="widget featuredlistingsv2 feature-listings-widget-v2 container"><spam class="empty-result"></spam></div><div class="btn-wrapper --center-aligned"><a href="/exclusive-pending-listings/" class="btn btn-big btn-white --decorated">View All</a></div></div><div data-pb-dropzone="Drop Content Here" data-pb-dropzone-toolbar="true" id="i7zar" class="content-tab"><div id="featuredlistingsv2-390469" class="widget featuredlistingsv2 feature-listings-widget-v2 container"><div class="featured-listings-wrapper" id="flw-grid-390469"><h3 class="widget-title">Exclusive Sold Listings</h3><div class="flw-grid"><div class="featured-listings-grid"><div itemscope class="listing ca_bridges matched-with-list-agent" itemtype="http://schema.org/Product"><span itemprop="name" content="Berkeley CA, 98 El Camino Real" class="hidden"></span><div itemscope itemprop="offers" itemtype="http://schema.org/Offer" class="hidden"><span itemprop="price" content="2650000"></span><span itemprop="priceCurrency" content="USD"></span><span itemprop="availability" content="https://schema.org/SoldOut"></span><span itemprop="url" content="/property/98-el-camino-real-berkeley-ca-94705/99014063/"></span></div><div class="listing-image"><link itemprop="image" href="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG57fXlxcg/1024/1/98-el-camino-real-berkeley-ca-94705.webp?t=571860"/><a href="/property/98-el-camino-real-berkeley-ca-94705/99014063/" itemprop="url" title="Link to the real estate listing"><img class="lazyload" data-src="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG57fXlxcg/1024/1/98-el-camino-real-berkeley-ca-94705.webp?t=571860" alt="Berkeley CA, 98 El Camino Real"/></a></div><div class="listing-details"><h3><a href="/property/98-el-camino-real-berkeley-ca-94705/99014063/" itemprop="url" title="Link to the real estate listing">Berkeley CA, 98 El Camino Real</a></h3><ul itemprop="description"><li class="sale-price"><span class="field-label">Sale Price</span><span data-usm-currency class="value">$2,500,000</span></li><li class="display-address"><span class="field-label">Address</span><span class="value">98 El Camino Real</span></li><li class="town"><span class="field-label">Town</span><span class="value">Berkeley</span></li><li class="state"><span class="field-label">State</span><span class="value">CA</span></li><li class="bedrooms"><span class="field-label">Bed</span><span class="value">4</span></li><li class="bathroom"><span class="field-label">Bath</span><span class="value">4</span></li><li class="square-feet"><span class="field-label">SqFt</span><span class="value">3,449</span></li></ul><a href="/property/98-el-camino-real-berkeley-ca-94705/99014063/" class="usm-btn view-details" title="Link to the real estate listing">View Details</a></div><a href="/property/98-el-camino-real-berkeley-ca-94705/99014063/" class="bdg closed" title="Link to the real estate listing"><span>Sold</span></a></div><div itemscope class="listing ca_bridges matched-with-list-agent" itemtype="http://schema.org/Product"><span itemprop="name" content="Berkeley CA, 830 Alvarado Road" class="hidden"></span><div itemscope itemprop="offers" itemtype="http://schema.org/Offer" class="hidden"><span itemprop="price" content="1795000"></span><span itemprop="priceCurrency" content="USD"></span><span itemprop="availability" content="https://schema.org/SoldOut"></span><span itemprop="url" content="/property/830-alvarado-road-berkeley-ca-94705/97423368/"></span></div><div class="listing-image"><link itemprop="image" href="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG54eXV3cw/1024/1/830-alvarado-road-berkeley-ca-94705.webp?t=514086"/><a href="/property/830-alvarado-road-berkeley-ca-94705/97423368/" itemprop="url" title="Link to the real estate listing"><img class="lazyload" data-src="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG54eXV3cw/1024/1/830-alvarado-road-berkeley-ca-94705.webp?t=514086" alt="Berkeley CA, 830 Alvarado Road"/></a></div><div class="listing-details"><h3><a href="/property/830-alvarado-road-berkeley-ca-94705/97423368/" itemprop="url" title="Link to the real estate listing">Berkeley CA, 830 Alvarado Road</a></h3><ul itemprop="description"><li class="sale-price"><span class="field-label">Sale Price</span><span data-usm-currency class="value">$1,730,000</span></li><li class="display-address"><span class="field-label">Address</span><span class="value">830 Alvarado Road</span></li><li class="town"><span class="field-label">Town</span><span class="value">Berkeley</span></li><li class="state"><span class="field-label">State</span><span class="value">CA</span></li><li class="bedrooms"><span class="field-label">Bed</span><span class="value">2</span></li><li class="bathroom"><span class="field-label">Bath</span><span class="value">2</span></li><li class="square-feet"><span class="field-label">SqFt</span><span class="value">1,456</span></li></ul><a href="/property/830-alvarado-road-berkeley-ca-94705/97423368/" class="usm-btn view-details" title="Link to the real estate listing">View Details</a></div><a href="/property/830-alvarado-road-berkeley-ca-94705/97423368/" class="bdg closed" title="Link to the real estate listing"><span>Sold</span></a></div><div itemscope class="listing ca_bridges matched-with-list-agent" itemtype="http://schema.org/Product"><span itemprop="name" content="Berkeley CA, 305 The Uplands" class="hidden"></span><div itemscope itemprop="offers" itemtype="http://schema.org/Offer" class="hidden"><span itemprop="price" content="3275000"></span><span itemprop="priceCurrency" content="USD"></span><span itemprop="availability" content="https://schema.org/SoldOut"></span><span itemprop="url" content="/property/305-the-uplands-berkeley-ca-94705/97413403/"></span></div><div class="listing-image"><link itemprop="image" href="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG54fHFxcw/1024/1/305-the-uplands-berkeley-ca-94705.webp?t=646277"/><a href="/property/305-the-uplands-berkeley-ca-94705/97413403/" itemprop="url" title="Link to the real estate listing"><img class="lazyload" data-src="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG54fHFxcw/1024/1/305-the-uplands-berkeley-ca-94705.webp?t=646277" alt="Berkeley CA, 305 The Uplands"/></a></div><div class="listing-details"><h3><a href="/property/305-the-uplands-berkeley-ca-94705/97413403/" itemprop="url" title="Link to the real estate listing">Berkeley CA, 305 The Uplands</a></h3><ul itemprop="description"><li class="sale-price"><span class="field-label">Sale Price</span><span data-usm-currency class="value">$3,050,000</span></li><li class="display-address"><span class="field-label">Address</span><span class="value">305 The Uplands</span></li><li class="town"><span class="field-label">Town</span><span class="value">Berkeley</span></li><li class="state"><span class="field-label">State</span><span class="value">CA</span></li><li class="bedrooms"><span class="field-label">Bed</span><span class="value">4</span></li><li class="bathroom"><span class="field-label">Bath</span><span class="value">5</span></li><li class="square-feet"><span class="field-label">SqFt</span><span class="value">3,674</span></li></ul><a href="/property/305-the-uplands-berkeley-ca-94705/97413403/" class="usm-btn view-details" title="Link to the real estate listing">View Details</a></div><a href="/property/305-the-uplands-berkeley-ca-94705/97413403/" class="bdg closed" title="Link to the real estate listing"><span>Sold</span></a></div><div itemscope class="listing ca_bridges matched-with-list-agent" itemtype="http://schema.org/Product"><span itemprop="name" content="Berkeley CA, 2826 Garber Street" class="hidden"></span><div itemscope itemprop="offers" itemtype="http://schema.org/Offer" class="hidden"><span itemprop="price" content="2195000"></span><span itemprop="priceCurrency" content="USD"></span><span itemprop="availability" content="https://schema.org/SoldOut"></span><span itemprop="url" content="/property/2826-garber-street-berkeley-ca-94705/97489514/"></span></div><div class="listing-image"><link itemprop="image" href="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG9we3J3dg/1024/1/2826-garber-street-berkeley-ca-94705.webp?t=206774"/><a href="/property/2826-garber-street-berkeley-ca-94705/97489514/" itemprop="url" title="Link to the real estate listing"><img class="lazyload" data-src="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG9we3J3dg/1024/1/2826-garber-street-berkeley-ca-94705.webp?t=206774" alt="Berkeley CA, 2826 Garber Street"/></a></div><div class="listing-details"><h3><a href="/property/2826-garber-street-berkeley-ca-94705/97489514/" itemprop="url" title="Link to the real estate listing">
118Berkeley CA, 2826 Garber Street</a></h3><ul itemprop="description"><li class="sale-price"><span class="field-label">Sale Price</span><span data-usm-currency class="value">$2,150,000</span></li><li class="display-address"><span class="field-label">Address</span><span class="value">2826 Garber Street</span></li><li class="town"><span class="field-label">Town</span><span class="value">Berkeley</span></li><li class="state"><span class="field-label">State</span><span class="value">CA</span></li><li class="bedrooms"><span class="field-label">Bed</span><span class="value">3</span></li><li class="bathroom"><span class="field-label">Bath</span><span class="value">3</span></li><li class="square-feet"><span class="field-label">SqFt</span><span class="value">2,633</span></li></ul><a href="/property/2826-garber-street-berkeley-ca-94705/97489514/" class="usm-btn view-details" title="Link to the real estate listing">View Details</a></div><a href="/property/2826-garber-street-berkeley-ca-94705/97489514/" class="bdg closed" title="Link to the real estate listing"><span>Sold</span></a></div><div itemscope class="listing ca_bridges matched-with-list-agent" itemtype="http://schema.org/Product"><span itemprop="name" content="Berkeley CA, 904 Alvarado Road" class="hidden"></span><div itemscope itemprop="offers" itemtype="http://schema.org/Offer" class="hidden"><span itemprop="price" content="2175000"></span><span itemprop="priceCurrency" content="USD"></span><span itemprop="availability" content="https://schema.org/SoldOut"></span><span itemprop="url" content="/property/904-alvarado-road-berkeley-ca-94705/97500329/"></span></div><div class="listing-image"><link itemprop="image" href="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG9weXRxcQ/1024/1/904-alvarado-road-berkeley-ca-94705.webp?t=576188"/><a href="/property/904-alvarado-road-berkeley-ca-94705/97500329/" itemprop="url" title="Link to the real estate listing"><img class="lazyload" data-src="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG9weXRxcQ/1024/1/904-alvarado-road-berkeley-ca-94705.webp?t=576188" alt="Berkeley CA, 904 Alvarado Road"/></a></div><div class="listing-details"><h3><a href="/property/904-alvarado-road-berkeley-ca-94705/97500329/" itemprop="url" title="Link to the real estate listing">Berkeley CA, 904 Alvarado Road</a></h3><ul itemprop="description"><li class="sale-price"><span class="field-label">Sale Price</span><span data-usm-currency class="value">$2,130,000</span></li><li class="display-address"><span class="field-label">Address</span><span class="value">904 Alvarado Road</span></li><li class="town"><span class="field-label">Town</span><span class="value">Berkeley</span></li><li class="state"><span class="field-label">State</span><span class="value">CA</span></li><li class="bedrooms"><span class="field-label">Bed</span><span class="value">4</span></li><li class="bathroom"><span class="field-label">Bath</span><span class="value">4</span></li><li class="square-feet"><span class="field-label">SqFt</span><span class="value">3,993</span></li></ul><a href="/property/904-alvarado-road-berkeley-ca-94705/97500329/" class="usm-btn view-details" title="Link to the real estate listing">View Details</a></div><a href="/property/904-alvarado-road-berkeley-ca-94705/97500329/" class="bdg closed" title="Link to the real estate listing"><span>Sold</span></a></div><div itemscope class="listing ca_bridges matched-with-list-agent" itemtype="http://schema.org/Product"><span itemprop="name" content="Berkeley CA, 12 Tunnel Road" class="hidden"></span><div itemscope itemprop="offers" itemtype="http://schema.org/Offer" class="hidden"><span itemprop="price" content="2200000"></span><span itemprop="priceCurrency" content="USD"></span><span itemprop="availability" content="https://schema.org/SoldOut"></span><span itemprop="url" content="/property/12-tunnel-road-berkeley-ca-94705/97656120/"></span></div><div class="listing-image"><link itemprop="image" href="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG9wfnR2dQ/1024/1/12-tunnel-road-berkeley-ca-94705.webp?t=633987"/><a href="/property/12-tunnel-road-berkeley-ca-94705/97656120/" itemprop="url" title="Link to the real estate listing"><img class="lazyload" data-src="https://d1u39ah4l74ffy.cloudfront.net/img/NjISPTskJSAgIHpnfG9wfnR2dQ/1024/1/12-tunnel-road-berkeley-ca-94705.webp?t=633987" alt="Berkeley CA, 12 Tunnel Road"/></a></div><div class="listing-details"><h3><a href="/property/12-tunnel-road-berkeley-ca-94705/97656120/" itemprop="url" title="Link to the real estate listing">Berkeley CA, 12 Tunnel Road</a></h3><ul itemprop="description"><li class="sale-price"><span class="field-label">Sale Price</span><span data-usm-currency class="value">$2,200,000</span></li><li class="display-address"><span class="field-label">Address</span><span class="value">12 Tunnel Road</span></li><li class="town"><span class="field-label">Town</span><span class="value">Berkeley</span></li><li class="state"><span class="field-label">State</span><span class="value">CA</span></li><li class="bedrooms"><span class="field-label">Bed</span><span class="value">3</span></li><li class="bathroom"><span class="field-label">Bath</span><span class="value">3</span></li><li class="square-feet"><span class="field-label">SqFt</span><span class="value">2,625</span></li></ul><a href="/property/12-tunnel-road-berkeley-ca-94705/97656120/" class="usm-btn view-details" title="Link to the real estate listing">View Details</a></div><a href="/property/12-tunnel-road-berkeley-ca-94705/97656120/" class="bdg closed" title="Link to the real estate listing"><span>Sold</span></a></div></div></div></div></div><div class="btn-wrapper --center-aligned"><a href="/exclusive-sold-listings/" class="btn btn-big btn-white --decorated">View All</a></div></div></div></div><div id="testimonials-389378" class="widget testimonial testimonials container"><img src="https://trixels.ratemyagent.com.au/trixel/init" alt="RMA tracking pixel" style="display:none"/> 119 <style> 120 .testimonials p.testimonial { 121 padding-right: 27px; 122 padding-left: 30px; 123 float: left; 124 margin: 0 0 10px; 125 } 126 .testimonials .owl-prev { 127 background:transparent; 128 width: 25px; 129 height: 70px; 130 position: absolute; 131 top: 40%; 132 display: block !important; 133 border:0px solid black; 134 } 135 .testimonials .owl-next { 136 margin-right: 2px; 137 background:transparent; 138 width: 25px; 139 height: 70px; 140 position: absolute; 141 top: 40%; 142 right: 0px; 143 display: block !important; 144 border:0px solid black; 145 } 146 .testimonials .owl-prev i, .owl-next i { 147 height: auto; 148 width: auto; 149 color: black 150 }
151 .testimonials .owl-theme .owl-controls .owl-page { 152 display: inline-block; 153 zoom: 1; 154 *display: inline;/*IE7 life-saver */ 155 } 156 .testimonials .owl-theme .owl-controls{ 157 margin-top: 10px; 158 text-align: center; 159 } 160 .testimonials .owl-theme .owl-controls .owl-page span { 161 display: block; 162 width: 12px; 163 height: 12px; 164 margin: 5px 7px; 165 filter: Alpha(Opacity=50);/*IE7 fix*/ 166 opacity: 0.5; 167 -webkit-border-radius: 20px; 168 -moz-border-radius: 20px; 169 border-radius: 20px; 170 background: #869791; 171 } 172 .testimonials .owl-theme .owl-controls .owl-page.active span, 173 .testimonials .owl-theme .owl-controls.clickable .owl-page:hover span { 174 filter: Alpha(Opacity=100);/*IE7 fix*/ 175 opacity: 1; 176 } 177 /* If PaginationNumbers is true */ 178 .testimonials .owl-theme .owl-controls .owl-page span.owl-numbers { 179 height: auto; 180 width: auto; 181 color: #FFF; 182 padding: 2px 10px; 183 font-size: 12px; 184 -webkit-border-radius: 30px; 185 -moz-border-radius: 30px; 186 border-radius: 30px; 187 } 188 </style> 189 <h3 class="widget-title">Testimonials</h3><div class="owl-carousel owl-theme" style="overflow:hidden"><div itemscope class="item active rma-rating-5" itemtype="http://schema.org/Review"><img src="https://trixels.ratemyagent.com.au/?e=1&t=du7GYOIURQNZkmzGDHmF5pHY3r5CWfjDFmQ69lOPfcAiC2lXMeLMk5CkfN7DMkt79X2WD%2B%2BqXlmGoxCs6Op2zWrmx2Cxagfxpphw27vDX6c8dQh3dobpxhyPCKzWNmiNbj8ny6Ndvl0%2FKeM2xabjlwdSuEocoFDpR6%2F7HBCtmcunmo93vn7YLZsXfZwPlBgGrwVZFcvVy6%2FaMcfI5A4%2BTQ%3D%3D" alt="RMA tracking pixel" style="display:none"/><span class="agentname">Faye Keogh</span><p class="testimonial">Faye first found us a house in 1991 â it hadnât even gone on the market yet but she knew it was just what we were looking for, and she made it happen. Fast forward 35 years and she just helped us quickly and efficiently sell our most recent house in the hills. The real estate business has evolved dramatically over those 35 years â itâs more complicated and requires attention to the most minute details â but Faye hasnât missed a beat. Sheâs totally on top of all the issues and makes things as clean and easy as possible for her clients. Through it all sheâs cheerful, upbeat and always available. Whenever weâre asked to recommend an agent, we donât hesitate â itâs always Faye Keogh. Setting aside the real estate aspect, Fayeâs also just been a good friend over those 35 years. Sheâs the best. </p><meta itemprop="reviewBody" content="Faye first found us a house in 1991 â it hadnât even gone on the market yet but she knew it was just what we were looking for, and she made it happen. Fast forward 35 years and she just helped us quickly and efficiently sell our most recent house in the hills. The real estate business has evolved dramatically over those 35 years â itâs more complicated and requires attention to the most minute details â but Faye hasnât missed a beat. Sheâs totally on top of all the issues and makes things as clean and easy as possible for her clients. Through it all sheâs cheerful, upbeat and always available. Whenever weâre asked to recommend an agent, we donât hesitate â itâs always Faye Keogh. Setting aside the real estate aspect, Fayeâs also just been a good friend over those 35 years. Sheâs the best."/><div class="signature"><span itemscope itemprop="author" itemtype="https://schema.org/Person"><span itemprop="name">Bill McClave</span></span></div><div id="testimonial-rating"><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i></div><span itemscope itemprop="itemReviewed" itemtype="https://schema.org/RealEstateAgent" itemid="https://fayekeogh.com/#organization"><meta itemprop="name" content="Faye Keogh"/><link itemprop="url" href="https://fayekeogh.com/"/></span><div class="testimonial-publish"><span>23 March 2026, 16:25 PM</span></div><a href="https://www.ratemyagent.com/real-estate-agent/faye-keogh-ar721/sales/overview" class="testimonial-rma-logo-link" target="_blank" rel="noopener noreferrer"><img src="https://d18dt42v346q1f.cloudfront.net/assets/images/admin/third-parties/rate-my-agent-logo.svg" loading="lazy" class="testimonial-rma-logo" width="100" alt="RateMyAgent logo"/></a></div><div itemscope class="item rma-rating-5" itemtype="http://schema.org/Review"><img src="https://trixels.ratemyagent.com.au/?e=1&t=du7GYOIURQNZkmzGDHmF5ujytjY8Kn3XB3wC%2FQpxLkDDGkXRsubwucPjMFVEVIrwuKQgi%2FzQbH%2F7bQfs5efgzDlMTUr7KPQL3bXfwMEuKV%2FAMSf8iVnstG1fqR88YMN2HiIUbKbAyL%2BSpISDSDW10iEVrI52r9JZt4qKnoYdN7Mtha7cn1RBg5bj8WIA1SaoVaYW%2B21ojTiUs9qUxZjHDA%3D%3D" alt="RMA tracking pixel" style="display:none"/><span class="agentname">Faye Keogh</span>
189<p class="testimonial">Forget about âBetter Call Saulâ âcause you âBetter Call Fayeâ as she is the absolute BEST in real estate. My husband and I both highly recommend her as we bought and sold our house with her! 190 191In 2013, we moved from Boston to Berkeley and we needed to find a house for our growing family. We were extremely fortunate to find Faye Keogh at The Grubb Company who became our realtor! It seems like such a cliche, but she actually listened to us and only took us to houses that had true potential for our family. I remember walking into this beautiful Mediterranean house that she found and instantly thinking, âThis is it!â We made so many beautiful and wonderful memories there as a family and with our friends. Twelve years later in 2025, with our kids in college and officially empty-nesters, we decided to downsize and put the house on the market. We went straight back to Faye! She returned and walked us through the entire selling process, keeping a keen, trained, and experienced eye on the current housing market, offered helpful suggestions for refreshing the house (We did live in it for 12 years with 2 busy kids!), organized effective Open Houses, and she hired the most amazing photographer, landscapers, house cleaners, and other professionals to showcase the house to its fullest potential. She is a true and seasoned professional, organized, kind, knowledgeable, an excellent communicator, and always very generous with her time, energy, and spirit. We really appreciated this! Plus, she knows the Berkeley area like the back of her hand! It was pure pleasure to work with her because buying and selling your most precious possession should be easy, drama- free, and dare I even say itâ¦enjoyable and fun too. We truly had an amazing experience working with Faye! 192</p><meta itemprop="reviewBody" content="Forget about âBetter Call Saulâ âcause you âBetter Call Fayeâ as she is the absolute BEST in real estate. My husband and I both highly recommend her as we bought and sold our house with her! In 2013, we moved from Boston to Berkeley and we needed to find a house for our growing family. We were extremely fortunate to find Faye Keogh at The Grubb Company who became our realtor! It seems like such a cliche, but she actually listened to us and only took us to houses that had true potential for our family. I remember walking into this beautiful Mediterranean house that she found and instantly thinking, âThis is it!â We made so many beautiful and wonderful memories there as a family and with our friends. Twelve years later in 2025, with our kids in college and officially empty-nesters, we decided to downsize and put the house on the market. We went straight back to Faye! She returned and walked us through the entire selling process, keeping a keen, trained, and experienced eye on the current housing market, offered helpful suggestions for refreshing the house (We did live in it for 12 years with 2 busy kids!), organized effective Open Houses, and she hired the most amazing photographer, landscapers, house cleaners, and other professionals to showcase the house to its fullest potential. She is a true and seasoned professional, organized, kind, knowledgeable, an excellent communicator, and always very generous with her time, energy, and spirit. We really appreciated this! Plus, she knows the Berkeley area like the back of her hand! It was pure pleasure to work with her because buying and selling your most precious possession should be easy, drama- free, and dare I even say itâ¦enjoyable and fun too. We truly had an amazing experience working with Faye!"/><div class="signature"><span itemscope itemprop="author" itemtype="https://schema.org/Person"><meta itemprop="name" content="Faye Keogh"/></span></div><div id="testimonial-rating"><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i></div><span itemscope itemprop="itemReviewed" itemtype="https://schema.org/RealEstateAgent" itemid="https://fayekeogh.com/#organization"><meta itemprop="name" content="Faye Keogh"/><link itemprop="url" href="https://fayekeogh.com/"/></span><div class="testimonial-publish"><span>21 March 2026, 01:14 AM</span></div><a href="https://www.ratemyagent.com/real-estate-agent/faye-keogh-ar721/sales/overview" class="testimonial-rma-logo-link" target="_blank" rel="noopener noreferrer"><img src="https://d18dt42v346q1f.cloudfront.net/assets/images/admin/third-parties/rate-my-agent-logo.svg" loading="lazy" class="testimonial-rma-logo" width="100" alt="RateMyAgent logo"/></a></div><div itemscope class="item rma-rating-5" itemtype="http://schema.org/Review"><img src="https://trixels.ratemyagent.com.au/?e=1&t=du7GYOIURQNZkmzGDHmF5n3rzfhCICVBp8w9GfIq%2F0w4HrSNc2C3AwycDavH8I92dA5v6E13DrQc4vkcdf76M9SNJw3JPCa19rktWuVQ7q9o
1925OKGv6mrq6ekjuIQrRQmXX1AkI1V5%2Bmg27eCCOXfxyKtakiGEgCXK6Tz7qgBez%2FSdj7mrVvYbLCsc3%2BrgOkEaF7FotxPvw4HvSBGqGCm1A%3D%3D" alt="RMA tracking pixel" style="display:none"/><span class="agentname">Faye Keogh</span><p class="testimonial">Faye is a pleasure to communicate and work with, knows the area and the market, and helped us conclude the sale of our home. She is also highly respected.</p><meta itemprop="reviewBody" content="Faye is a pleasure to communicate and work with, knows the area and the market, and helped us conclude the sale of our home. She is also highly respected."/><div class="signature"><span itemscope itemprop="author" itemtype="https://schema.org/Person"><meta itemprop="name" content="Faye Keogh"/></span></div><div id="testimonial-rating"><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i></div><span itemscope itemprop="itemReviewed" itemtype="https://schema.org/RealEstateAgent" itemid="https://fayekeogh.com/#organization"><meta itemprop="name" content="Faye Keogh"/><link itemprop="url" href="https://fayekeogh.com/"/></span><div class="testimonial-publish"><span>20 March 2026, 21:21 PM</span></div><a href="https://www.ratemyagent.com/real-estate-agent/faye-keogh-ar721/sales/overview" class="testimonial-rma-logo-link" target="_blank" rel="noopener noreferrer"><img src="https://d18dt42v346q1f.cloudfront.net/assets/images/admin/third-parties/rate-my-agent-logo.svg" loading="lazy" class="testimonial-rma-logo" width="100" alt="RateMyAgent logo"/></a></div><div itemscope class="item rma-rating-5" itemtype="http://schema.org/Review"><img src="https://trixels.ratemyagent.com.au/?e=1&t=du7GYOIURQNZkmzGDHmF5kSY0McduU9tJyVG%2BcHets2N%2FXld%2Bty4F6ZQU2ELz%2BFw8Qp%2FRPJQ6hrfI3gHmPilSsnO7QPITZHaHoUlG0Qyc%2BvJllPB6bmQj9Ug8Ub%2FJgqfhrAsIrskUWKrwmOMFBuJ%2BhVdqT4HLUiVISsN9GkKegj5fBzYozL1wEz9bYd%2F%2F5HOgFYyCzoHZOAEfIWHLtYuxQ%3D%3D" alt="RMA tracking pixel" style="display:none"/><span class="agentname">Faye Keogh</span><p class="testimonial">I chose to work with Faye Keogh on the sale of my 1908 3-story craftsman style home in the Claremont neighborhood (El Camino Real) because of her long and successful history of working with this area. Faye was able to give me a good sense of recent changes in the local market and what to expect from potential buyers today. We began discussions about a year before I was fully committed to getting the house on the market, and during that time Faye was responsive without any pressure. She was very good about getting me going on disclosures and making decisions about necessary work vs. later staging options. In the end I was fortunate to find an off-market buyer through Faye, saving me a lot of time and trouble that a full staging would have entailed. Recommendations for contractors and other services were very helpful. Because I was trying to make an offer on a new home at the same time as the off-market sale of my Berkeley home âfairly suddenlyâ materialized, we had some bumpy moments in coordinating the two closings, but it the end all worked out well, and above all I was able to get the exact asking price I'd originally suggested, without all the repairs and staging expenses I'd at first envisioned. </p><meta itemprop="reviewBody" content="I chose to work with Faye Keogh on the sale of my 1908 3-story craftsman style home in the Claremont neighborhood (El Camino Real) because of her long and successful history of working with this area. Faye was able to give me a good sense of recent changes in the local market and what to expect from potential buyers today. We began discussions about a year before I was fully committed to getting the house on the market, and during that time Faye was responsive without any pressure. She was very good about getting me going on disclosures and making decisions about necessary work vs. later staging options. In the end I was fortunate to find an off-market buyer through Faye, saving me a lot of time and trouble that a full staging would have entailed. Recommendations for c
192ontractors and other services were very helpful. Because I was trying to make an offer on a new home at the same time as the off-market sale of my Berkeley home âfairly suddenlyâ materialized, we had some bumpy moments in coordinating the two closings, but it the end all worked out well, and above all I was able to get the exact asking price I'd originally suggested, without all the repairs and staging expenses I'd at first envisioned."/><div class="signature"><span itemscope itemprop="author" itemtype="https://schema.org/Person"><span itemprop="name">Tom G.</span></span></div><div id="testimonial-rating"><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i><i class="fas fa-star" style="color: #ffca00;"></i></div><span itemscope itemprop="itemReviewed" itemtype="https://schema.org/RealEstateAgent" itemid="https://fayekeogh.com/#organization"><meta itemprop="name" content="Faye Keogh"/><link itemprop="url" href="https://fayekeogh.com/"/></span><div class="testimonial-publish"><span>19 March 2026, 01:14 AM</span></div><a href="https://www.ratemyagent.com/real-estate-agent/faye-keogh-ar721/sales/overview" class="testimonial-rma-logo-link" target="_blank" rel="noopener noreferrer"><img src="https://d18dt42v346q1f.cloudfront.net/assets/images/admin/third-parties/rate-my-agent-logo.svg" loading="lazy" class="testimonial-rma-logo" width="100" alt="RateMyAgent logo"/></a></div></div><div class="view-all"><a href="/testimonial/" class="usm-btn">View All Testimonials</a></div></div><div id="i74pm" class="cta-section icons-option"><div class="title-wrapper"><h2 id="ikrxs" class="custom-title --underlined"> The Grubb Co. </h2></div><div class="cta-section-container"><a href="/sellers/" id="ievqo" class="cta"><h3>Sell With Us 193 </h3><div class="icon-wrapper"><img src="https://d15zjc2r4e8kr7.cloudfront.net/11693/img/icons/icon-globe.svg" alt="Globe icon" width="50" height="50" loading="lazy"></div><p>The strongest selling performance in the East Bay 194 </p></a><a href="/buyers/" id="io49p" class="cta"><h3>Buy With Us 195 </h3><div class="icon-wrapper"><img src="https://d15zjc2r4e8kr7.cloudfront.net/11693/img/icons/icon-notes.svg" alt="Notes icon" width="50" height="50" loading="lazy"></div><p>Over 8,000 transactions since 2000 196 </p></a><a href="/global-reach/" id="iy0hf" class="cta"><h3>Global Reach 197 </h3><div class="icon-wrapper"><img src="https://d15zjc2r4e8kr7.cloudfront.net/11693/img/icons/icon-home.svg" alt="Home icon" width="50" height="50" loading="lazy"></div><p>Connections in over 70 countries 198 </p></a><a href="/about/#community-support" id="iy0ci" class="cta"><h3>Community Support 199 </h3><div class="icon-wrapper"><img src="https://d15zjc2r4e8kr7.cloudfront.net/11693/img/icons/icon-insurance.svg" alt="Insurance icon" width="50" height="50" loading="lazy"></div><p>Donations to 154 recipients (and counting) 200 </p></a></div></div><div class="ff-section option2 option2-1 --reversed"><div class="ff-section-container"><div class="text-side"><div id="i25gc" class="text-side-container"><div class="title-wrapper"><h2 class="custom-title --small">Search cities 201 </h2></div><p id="i5y39l">The Grubb Company specializes in helping clients buy and sell residential property in the San Francisco East Bay. Our expertise is focused on cities such as Piedmont, Oakland, Berkeley and El Cerrito. Search the best of East Bay cities.  </p><div class="btn-wrapper"><a href="/areas/" id="insvcm" class="btn btn-big">View All</a></div></div></div><div data-pb-dropzone="Drop Your 50/50 Slider Here" class="media-side"> <div id='slider-389380' class="embla-slider "> 202 203 <style> 204 .embla { 205 overflow: hidden; 206 } 207 .embla__viewport { 208 overflow: hidden; 209 } 210 .embla__container { 211 backface-visibility: hidden; 212 display: flex; 213 touch-action: pan-y; 214 } 215 .embla__slide { 216 flex: 0 0 100%; 217 min-width: 0; 218 } 219 .embla__slide img { 220 max-width: 100%; 221 } 222 /* Slides gap settings */ 223 #slider-389380 .embla__container { 224 margin-left: calc(25px * -1); 225 } 226 #slider-389380 .embla__slide { 227 padding-left: 25px 228 } 229 230 231 @media (min-width: 1px) { 232 #slider-389380 .embla__slide { 233 flex: 0 0 100%; 234 } 235 } 236 237 238 </style> 239 <div class="embla"> 240 <div class="embla__viewport"> 241 <div class="embla__container"> 242 <div class="embla__slide embla__slide--image "> 243 <a href='/areas/piedmont/' class='embla__img-link'> <img 244 src='https://d3w216np43fnr4.cloudfront.net/11924/389380/Piedmont.webp' srcset='https://d3w216np43fnr4.cloudfront.net/11924/389380/Piedmont.webp, https://d3w216np43fnr4.cloudfront.net/750x750/11924/389380/Piedmont.webp 750w, https://d3w216np43fnr4.cloudfront.net/320x320/11924/389380/Piedmont.webp 320w' alt='Piedmont' 245 fetchPriority='auto' 246 class="embla__img" 247 /> 248 </a> <a href='/areas/piedmont/' class='embla__slide-caption'>Piedmont</a> </div> 249 <div class="embla__slide embla__slide--image "> 250 <a href='/areas/oakland/' class='embla__img-link'> <img 251 src='https://d3w216np43fnr4.cloudfront.net/11924/389380/Oakland1.webp' srcset='https://d3w216np43fnr4.cloudfront.net/11924/389380/Oakland1.webp, https://d3w216np43fnr4.cloudfront.net/1170x1170/11924/389380/Oakland1.webp 1170w, https://d3w216np43fnr4.cloudfront.net/970x970/11924/389380/Oakland1.webp 970w, https://d3w216np43fnr4.cloudfront.net/750x750/11924/389380/Oakland1.webp 750w, https://d3w216np43fnr4.cloudfront.net/320x320/11924/389380/Oakland1.webp 320w' alt='Oakland' 252 fetchPriority='auto' 253 class="embla__img" 254 /> 255 </a> <a href='/areas/oakland/' class='embla__slide-caption'>Oakland</a> </div> 256 <div class="embla__slide embla__slide--image "> 257 <a href='/areas/berkeley/' class='embla__img-link'> <img 258 src='https://d3w216np43fnr4.cloudfront.net/11924/389380/Berkeley1.webp' srcset='https://d3w216np43fnr4.cloudfront.net/11924/389380/Berkeley1.webp, https://d3w216np43fnr4.cloudfront.net/750x750/11924/389380/Berkeley1.webp 750w, https://d3w216np43fnr4.cloudfront.net/320x320/11924/389380/Berkeley1.webp 320w' alt='Berkeley' 259 fetchPriority='auto' 260 class="embla__img" 261 /> 262 </a> <a href='/areas/berkeley/' class='embla__slide-caption'>Berkeley</a> </div> 263 <div class="embla__slide embla__slide--image "> 264 <a href='/areas/alameda/' class='embla__img-link'> <img 265 src='https://d3w216np43fnr4.cloudfront.net/11924/389380/Alameda1.webp' srcset='https://d3w216np43fnr4.cloudfront.net/11924/389380/Alameda1.webp, https://d3w216np43fnr4.cloudfront.net/1170x1170/11924/389380/Alameda1.webp 1170w, https://d3w216np43fnr4.cloudfront.net/970x970/11924/389380/Alameda1.webp 970w, https://d3w216np43fnr4.cloudfront.net/750x750/11924/389380/Alameda1.webp 750w, https://d3w216np43fnr4.cloudfront.net/320x320/11924/389380/Alameda1.webp 320w' alt='Alameda' 266 fetchPriority='auto' 267 class="embla__img" 268 /> 269 </a> <a href='/areas/alameda/' class='embla__slide-caption'>Alameda</a> </div> 270 <div class="embla__slide embla__slide--image "> 271 <a href='/areas/albany/' class='embla__img-link'> <img 272 src='https://d3w216np43fnr4.cloudfront.net/11924/389380/Albany3.webp' srcset='https://d3w216np43fnr4.cloudfront.net/11924/389380/Albany3.webp, https://d3w216np43fnr4.cloudfront.net/1170x1170/11924/389380/Albany3.webp 1170w, https://d3w216np43fnr4.cloudfront.net/970x970/11924/389380/Albany3.webp 970w, https://d3w216np43fnr4.cloudfront.net/750x750/11924/389380/Albany3.webp 750w, https://d3w216np43fnr4.cloudfront.net/320x320/11924/389380/Albany3.webp 320w' alt='Albany' 273 fetchPriority='auto' 274 class="embla__img" 275 /> 276 </a> <a href='/areas/albany/' class='embla__slide-caption'>Albany</a> </div> 277 <div class="embla__slide embla__slide--image "> 278 <a href='/areas/el-cerrito/' class='embla__img-link'> <img 279 src='https://d3w216np43fnr4.cloudfront.net/11924/389380/El_Cerrito1.webp' srcset='https://d3w216np43fnr4.cloudfront.net/11924/389380/El_Cerrito1.webp, https://d3w216np43fnr4.cloudfront.net/750x750/11924/389380/El_Cerrito1.webp 750w, https://d3w216np43fnr4.cloudfront.net/320x320/11924/389380/El_Cerrito1.webp 320w' alt='El Cerrito' 280 fetchPriority='auto' 281 class="embla__img" 282 /> 283 </a> <a href='/areas/el-cerrito/' class='embla__slide-caption'>El Cerrito</a> </div> 284 <div class="embla__slide embla__slide--image "> 285 <a href='/areas/emeryville/' class='embla__img-link'> <img 286 src='https://d3w216np43fnr4.cloudfront.net/11924/389380/Emeryville11.webp' srcset='https://d3w216np43fnr4.cloudfront.net/11924/389380/Emeryville11.webp, https://d3w216np43fnr4.cloudfront.net/750x750/11924/389380/Emeryville11.webp 750w, https://d3w216np43fnr4.cloudfront.net/320x320/11924/389380/Emeryville11.webp 320w' alt='Emeryville' 287 fetchPriority='auto' 288 class="embla__img" 289 /> 290 </a> <a href='/areas/emeryville/' class='embla__slide-caption'>Emeryville</a> </div> 291 <div class="embla__slide embla__slide--image "> 292 <a href='/areas/kensington/' class='embla__img-link'> <img 293 src='https://d3w216np43fnr4.cloudfront.net/11924/389380/Kensington1.webp' srcset='https://d3w216np43fnr4.cloudfront.net/11924/389380/Kensington1.webp, https://d3w216np43fnr4.cloudfront.net/750x750/11924/389380/Kensington1.webp 750w, https://d3w216np43fnr4.cloudfront.net/320x320/11924/389380/Kensington1.webp 320w' alt='Kensington' 294 fetchPriority='auto' 295 class="embla__img" 296 /> 297 </a> <a href='/areas/kensington/' class='embla__slide-caption'>Kensington</a> </div> 298 </div> 299 </div> 300 301 302 <div class="embla__buttons"> 303 <button 304 class="embla__button embla__button--prev" 305 type="button" 306 aria-label="Previous slide" 307 disabled="" 308 > 309 <i class="fas fa-angle-left"></i> 310 </button> 311 <button 312 class="embla__button embla__button--next" 313 type="button" 314 aria-label="Next slide" 315 disabled="" 316 > 317 <i class="fas fa-angle-right"></i> 318 </button> 319 </div> 320 321 322 </div> 323 </div> 324 325 </div></div></div></div></div></main> 326 <aside id="sidebar1"></aside> 327 </div> 328 </div> 329</section> 330<div class="sub3Wrap"> 331 <div id="group3"></div> 332</div> 333<div class="sub4Wrap"> 334 <div id="group4"><div id="featuredagent-389462" class="widget featuredagent container"><h3 class="widget-title">Contact Form agent info</h3><div class="widget-inner"><div class="photo"><a href="/realestate/agent/faye-keogh/"><img data-src="https://dl6bglhcfn2kh.cloudfront.net/11693/114342/FayeK.jpg" alt="Faye Keogh" class="lazyload"/></a></div><div class="name"><a href="/realestate/agent/faye-keogh/">
334Faye Keogh</a></div><div class="email"><a href="mailto:[email protected]" data-rmif="rmif-featured-agent-114342" class="rmif-trigger">[email protected]</a></div><div class="phone"><a href="tel:510-220-6373">510-220-6373</a></div><div id="rmif-featured-agent-114342" style="display: none;" class="contact-modal "><div class="success-content" style="display: none;"><div class="thank-you-popup"><div class="inner"><div class="thank-you-top-header"><div class="exit"><div class="exit-button"><i class="fa fa-times"></i></div></div><div class="text-wrapper top-header-message"><div class="top-header-message-icon"><span><i class="fa fa-check"></i></span></div><div class="top-header-message-text"><p>Success!</p></div><div class="content-message-text">While you wait to hear back from us:<div class="border-bottom-line"></div></div></div></div><div class="content-section"><div class="links"><div class="links-btn search-for-properties " onclick="window.location='/listings/'"><i class="fa fa-search"></i><div><a href="/listings/" class="links-btn-link">Search For Properties</a></div><i class="fa fa-chevron-right chevron-icon"></i></div><div class="links-btn browse-search-categories " onclick="window.location='/realestate/searchcategories/'"><i class="fa fa-home"></i><div><a href="/realestate/searchcategories/" class="links-btn-link">Browse Search Categories</a></div><i class="fa fa-chevron-right chevron-icon"></i></div><div class="links-btn explore-your-account " onclick="window.location='/user/user/'"><i class="fa fa-user"></i><div><a href="/user/user/" class="links-btn-link">Explore Your Account</a></div><i class="fa fa-chevron-right chevron-icon"></i></div><div class="links-btn close-continue close-link" onclick="window.location='#'"><i class="fa fa-times"></i><div><a href="#" class="links-btn-link">Close & Continue</a></div><i class="fa fa-chevron-right chevron-icon"></i></div></div></div></div></div></div><div class="inner"><div class="top-header"><div class="exit"><div class="exit-button"><i class="fa fa-times"></i></div></div><div class="text-wrapper"><h3>Hi there! How can we help you?</h3><p>Contact us using the form below or give us a call.</p></div></div><div class="form-section"><div class="form-section-head"><div class="form-section-text">Send Us A Message:</div></div><div class="error-message-container"></div><form method="POST" action="/mail/send/agent_contact_form" class="rmif agent-rmif" data-pageview="/complete/agents-ask-aquestion" data-new-reg-modals-container="#rmif-featured-agent-114342"><div class="contact-form-fields"><input type="hidden" name="Realtor" id="Realtor" value="114342"/><input type="hidden" name="ContactByText" id="ContactByText" value="false"/><input type="hidden" name="Sent_Form" id="Sent_Form" value="Agent Profile Contact"/><input type="hidden" name="Sent_From" id="Sent_From"/><input type="hidden" name="mailformid" id="mailformid" value="agent_contact_form"/><input type="hidden" name="FormKey" id="FormKey" value="eb92fa51f27bd6c204cabb3d4ca460a1"/><input type="hidden" name="AgentEmail" id="AgentEmail" value="[email protected]"/><div class="form-group name-group"><label class="required">Name</label><input type="text" name="Name" id="Name" size="40" class="required form-control" placeholder="*Full Name" required="required"/></div><div class="form-group email-group"><label class="required">Email</label><input type="text" name="Email" id="Email" size="40" class="required email form-control" placeholder="*Email" required="required"/></div><div class="form-group phone-group"><label>Phone</label><input type="text" name="Phone" id="Phone" size="25" class=" form-control" placeholder="Phone"/></div></div><div class="contact-form-comment"><div class="form-group comments-group"><label>Questions or Comments?</label><textarea name="Comments or questions" id="Comments or questions" cols="45" rows="10" class="required form-control" placeholder="*Questions or Comments?"></textarea></div></div><div class="form-group opt-in-block"><label class="show"><input type="checkbox" name="OptIn" value="1"/><span class="control-label">Opt in</span></label><p>
334I agree to receive marketing, customer service calls, and text messages from Faye Keogh. To opt out, you can reply 'stop' at any time or click the unsubscribe link in the emails. Consent is not a condition of purchase. Msg/data rates may apply. Msg frequency varies. <a href="/privacy-policy/">Privacy Policy</a>.</p></div><div style="display: none;">Do not fill in this field:<input type="text" name="topyenoh" id="topyenoh"/></div><div class="contact-form-submit submit-btn"><input type="submit" name="Submit" id="Submit" value="Send" class="btn usm-btn btn-default submit"/></div></form></div></div></div></div></div><div id="widget-ask-389357" class="widget askaquestion niceform container"><div class="widget-inner"><h3 class="widget-title">Iâm Here To Help</h3><div class="error-message-container"></div><form method="POST" action="/mail/send/sidebar_ask_a_question/" id="aaq-389357" data-pageview="/complete/ask-a-question/"><div><h4></h4><div class="contact-info"></div></div><div class="form-group form-group-name"><label class="sr-only" for="ask-389357-name">Full Name</label><input type="text" name="Name" class="required form-control" placeholder="*Full Name" id="ask-389357-name" required="required"/></div><div class="form-group form-group-email"><label class="sr-only" for="ask-389357-email">Email</label><input type="text" name="Email" class="required form-control email" placeholder="*Email Address" id="ask-389357-email" required="required"/></div><div class="form-group form-group-phone"><label class="sr-only" for="ask-389357-phone">Phone</label><input type="text" name="Phone" class="form-control phone " placeholder="Phone" id="ask-389357-phone"/></div><div class="form-group form-group-comments"><label class="sr-only" for="ask-389357-question">Questions or Comments?</label><textarea name="Comments" id="ask-389357-question" class="form-control required" placeholder="*Questions or Comments" cols="12" rows="7"></textarea></div><div style="display:none;">Do not fill in this field:<input type="text" name="topyenoh" id="topyenoh"/></div><input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response" value="initalize" class="g-recaptcha-response"/><input type="hidden" name="FormKey" id="FormKey" value="eb92fa51f27bd6c204cabb3d4ca460a1"/><input type="hidden" name="Sent From" id="Sent From" value="https://fayekeogh.com/article/view/356281/1/55747/"/><input type="hidden" name="mailformid" id="mailformid" value="sidebar_ask_a_question"/><input type="hidden" name="Sent_Form" id="Sent_Form" value="sidebar_ask_a_question"/><input type="hidden" name="RealtorID" id="RealtorID" title="RealtorID"/><div class="form-group opt-in-block"><label class="show"><input type="checkbox" name="OptIn" value="1"/><span class="control-label">Opt in</span></label><p>I agree to receive marketing, customer service calls, and text messages from Faye Keogh. To opt out, you can reply 'stop' at any time or click the unsubscribe link in the emails. Consent is not a condition of purchase. Msg/data rates may apply. Msg frequency varies. <a href="/privacy-policy/">Privacy Policy</a>.</p></div><div class="submit-btn"><button type="submit" name="send" class="usm-btn">Send</button></div><div class="recaptcha-notice">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://policies.google.com/terms">Terms of Service</a> apply.</div></form></div></div></div> 335</div> 336<div class="footWrap"> 337 <div id="footer"><div class="footer-logos"> 338 <a href="/"><img src="https://s3.amazonaws.com/files.usmre.com/11693/img/logos/logo-color.png" alt="Faye Keogh Logo" width="400" height="115" loading="lazy"></a> 339 <img src="https://s3.amazonaws.com/files.usmre.com/11693/img/logos/leadingre-logo.png" alt="Leading RE Companies of the world logo" width="400" height="115" loading="lazy"> 340</div><div class="footer-contacts"> 341 <div class="footer-contacts-block footer-agent-contacts"> 342 <h4>Contact Info</h4> 343 <ul class="footer-contacts-items"> 344 <li class="footer-contacts-item email"><span class="label">Email:</span><a href="mailto:[email protected]">[email protected]</a></li> 345 <li class="footer-contacts-item phone"><span class="label">Phone:</span><a href="tel:510-220-6373">510-220-6373</a></li> 346 </ul><div id="sociallinks-389360" class="widget sociallinks socialinkswidget flat container"><ul class="fa-social-links sm40"><li><a target="_blank" title="Linkedin" href="https://www.linkedin.com/in/faye-keogh-98918010/" class="fa-social-links fsml-linkedin" rel="noopener nofollow"><i class="fa fa-linkedin"></i><span class="sr-only">Linkedin</span></a></li></ul></div> </div> 347 <div class="footer-contacts-block footer-office-contacts"> 348 <h4 class="office-item-name">Office Location</h4> 349 <ul class="footer-contacts-items"> 350 <li class="footer-contacts-item address"><span class="label">Address:</span> 351 <p> 352 3070 Claremont Ave. <br /> 353 Berkeley, CA 94705 354 </p> 355 </li> 356 </ul> 357 </div> 358</div><div class="footer-disclaimer"> 359 <p>© <span class="year-value"></span> The Grubb Company. All rights reserved.</p> 360 <p class="sqft-note --hidden">*Square footage is approximate</p> 361</div></div> 362</div> 363<footer class="usmWrap"> 364 <div id="group5"><div id="associations-389363" class="widget associations container"><div id="footer-logos" style="width: 100%"><div id="footer-logos-left-assoc"></div><div id="footer-logos-right-accred"></div><div id="footer-logos-right-custom"><img src="https://d3w216np43fnr4.cloudfront.net/11924/389363/1.png?version=1763392356" title="Association logos" alt="Association logos"/></div></div></div><div class="privacy-links"> 365 <a href="/privacy-policy/">Privacy Policy</a> 366</div><div id="usmlogo-389365" class="widget usmlogo container"><a href="https://www.unionstreetmedia.com/?utm_campaign=passive&utm_medium=usm-badge&utm_source=www.stevemichaelides.com&
366utm_content=real-estate" rel="nofollow noopener" title="VT NH Real Estate Web Design" target="_blank"><img src="https://d3w216np43fnr4.cloudfront.net/11924/389365/1.png?version=1763392417" alt="Union Street Media Logo"/></a></div></div> 367</footer><div id="progress"><i class="fa fa-spinner fa-spin"></i></div>
367<script type="text/javascript"> require(["jquery"], function ($) { 368 $(".testimonials .owl-carousel").show().owlCarousel({ 369 items: 10, 370 navigation: true, 371 navigationText: ["<i class=\"fa fa-angle-left fa-2x\" aria-hidden=\"true\"></i>","<i class=\"fa fa-angle-right fa-2x\" aria-hidden=\"true\"></i>"], 372 pagination: true, 373 paginationNumbers: true, 374 rewind: true, 375 mouseDrag: false, 376 itemsDesktop: [1140,3], //3 items 1140px 377 itemsDesktopSmall: [768,2], // 2 items between 768 and 1140 378 itemsTablet: [540,1], //1 item between 540 and 0, 379 addClassActive : true, 380 itemsCustom: [[1, 1]] 381 }); 382 }); 383 require([ 384 "emblaCarousel", "emblaCarouselClassNames", "emblaCarouselPlugins" ], ( 385 EmblaCarousel, 386 ClassNames ) => { 387 if (typeof EmblaCarousel === 'undefined') { 388 console.error('Slider library is not available.'); 389 390 return; 391 } 392 393 if (typeof initEmblaCarousel === 'undefined') { 394 console.error('Slider init function is not available.'); 395 396 return; 397 } 398 399 const sliderConfig = {"infinite":true,"lazyLoad":false,"arrows":true,"dots":false,"thumbnails":false,"autoplaySpeed":"1","slidesGap":"25","slidesAlign":"start","autoplay":false,"fade":false}; 400 const pluginsConfig = { 401 ClassNames }; 402 403 // We should store widget instance globally to let Webdevs adjust it if needed 404 window["slider-389380"] = initEmblaCarousel( 405 "#slider-389380 .embla", 406 sliderConfig, 407 EmblaCarousel, 408 pluginsConfig, 409 ); 410 }); 411 412 require(["jquery", "shipyard"], function ($, shipyard) { 413 shipyard.validateForm($('.agent-rmif')); 414 }); 415 416 require(["jquery"], function ($) { 417 var $navbarToggle = $("#menuwidget-389338 .navbar-toggle"); 418 419 $navbarToggle.click(function () { 420 var target = $(this).data("target"); 421 $(target).parent("nav").toggleClass("active"); 422 if ($(target).parent("nav").hasClass("active")) { 423 $("body").addClass("modal-open"); 424 } else { 425 $("body.modal-open").removeClass("modal-open"); 426 } 427 }); 428 429 $("#menuwidget-389338 .menu-close").click(function (e) { 430 $navbarToggle.click(); 431 e.preventDefault(); 432 }); 433 434 $("#menuwidget-389338 li.has-children ul li").click(function (event) { 435 event.stopPropagation(); 436 }); 437 }); 438 439 // Searchable suggestions with a label values for the suggestion. 440 var SEARCHABLE_SUGGESTIONS_OPTIONS = { 441 usmCityAndState: '', 442 county: ' - County', 443 stateOrProvince: '', 444 usmNeighborhood: ' - Neighborhood', 445 postalCode: ' - Zip Code', 446 listingId: ' - MLS Number', 447 usmNonMlsId: ' - Internal ID', 448 elementarySchool: ' - Elementary School', 449 middleOrJuniorSchool: ' - Middle Or Junior High School', 450 usmArea: ' - Area', 451 address: ' - Address', 452 highSchool: ' - High School', 453 highSchoolDistrict: ' - School District', 454 usmVillage: ' - Village', 455 usmSubdivision: ' - Subdivision', 456 streetName: ' - Street', 457 usmComplex: ' - Complex', 458 usmPropertyName: ' - Property Name', 459 mlsAreaMinor: ' - MLS Area Minor', 460 mlsAreaMajor: ' - MLS Area Major', 461 offMarketData: ' - Off Market', 462 title: 'title', 463 agent: ' - Agent', 464 team: ' - Team', 465 } 466 467 var displayWaterBodyNameSuggestions = ''; 468 var showAgentsSearch = '0'; 469 470 if (displayWaterBodyNameSuggestions) { 471 SEARCHABLE_SUGGESTIONS_OPTIONS.waterBodyName = ' - Water Body Name'; 472 } 473 474 var suggestionResponse = null; 475 require(['jquery'], function($) { 476 /** 477 * Get current search mode based on active button 478 */ 479 function getCurrentSearchMode() { 480 if (showAgentsSearch === '1' && $('#agents-389367').hasClass('active')) { 481 return 'agents'; 482 } else if ($('#rentals-property-types-389367').hasClass('active')) { 483 return 'rentals'; 484 } else { 485 return 'sales'; 486 } 487 } 488 489 /** 490 * Filter out not supported suggestions. 491 * 492 * @param suggestions 493 * @returns {[]} 494 */ 495 function sanitizeSuggestions(suggestions) { 496 const sanitizedSuggestions = []; 497 if (suggestions && Array.isArray(suggestions)) { 498 for (var suggestionIndex in suggestions) { 499 var suggestion = suggestions[suggestionIndex]; 500 501 var suggestionType = suggestion.type; 502 // Filter out suggestions that are not currently supported 503 if (!SEARCHABLE_SUGGESTIONS_OPTIONS.hasOwnProperty(suggestionType)) { 504 continue; 505 } 506 507 sanitizedSuggestions.push(suggestion); 508 } 509 return sanitizedSuggestions; 510 } 511 512 return []; 513 } 514 515 /** 516 * Transform agents API response to suggestions format 517 */ 518 function transformAgentsToSuggestions(responseData) { 519 if (!Array.isArray(responseData?.agents) || !Array.isArray(responseData?.teams)) { 520 return []; 521 } 522 const data = [ 523 ...responseData.agents.map(agent => ({ ...agent, type: 'agent' })), 524 ...responseData.teams.map(team => ({ ...team, type: 'team' })) 525 ]; 526 527 return data.map((item) => ({ 528 label: item.name, 529 value: item.name, 530 type: item.type, 531 id: item.id, 532 slug: item.slug, 533 })); 534 } 535 536 /** 537 * Check if the parameter looks like an address (starts with digits followed by words) 538 */ 539 function shouldReduceByAddress(value) { 540 var addressPattern = /^\d+\s+\w+/i; 541 return addressPattern.test(value.trim()); 542 } 543 544 function fetchSuggestions(request, response) { 545 var param = request.term; 546 var requestPrefix = ''; 547 var isOMPEnabled = requestPrefix === 'OMP:'; 548 var searchMode = getCurrentSearchMode(); 549 550 // Restrict search length to minimum 2 characters before sending the request. 551 if (param.length < 2) { 552 // We do not store and show recent searches if OMP is enabled or in agents mode 553 var isRecentSearchesDisabled = isOMPEnabled || searchMode === 'agents'; 554 var recentSearches = isRecentSearchesDisabled ? [] : JSON.parse(window.localStorage.getItem('lastSearches')); 555 556 if (recentSearches && recentSearches.length > 0) { 557 recentSearches.unshift({label: 'Recent Searches', value: 'Recent Searches', type: 'title'}) 558 response(recentSearches); 559 } else { 560 response([{label: 'The search word must be at least 3 characters long.', noResults: true}]); 561 } 562 } else { 563 // Different API endpoints based on search mode 564 var baseUrl = ''; 565 var requestData = {}; 566 567 if (searchMode === 'agents') { 568 baseUrl = '/api/suggestions/teams/'; 569 requestData = { 570 q: param, 571 }; 572 } else { 573 baseUrl = '/api/suggestions/'; 574 requestData = { 575 q: requestPrefix + param 576 }; 577 578 if (shouldReduceByAddress(param)) { 579 requestData.reduce = 'usmFullAddress'; 580 } 581 } 582 583 $.ajax({ 584 dataType: 'json', 585 url: baseUrl, 586 data: requestData, 587 type: 'GET', 588 timeout: 10000, 589 success: function(data) { 590 var suggestions = []; 591 592 if (searchMode === 'agents') { 593 // Transform agents response 594 suggestions = transformAgentsToSuggestions(data); 595 } else { 596 // Regular suggestions 597 if (data.suggestions && data.suggestions.length > 0) { 598 suggestions = sanitizeSuggestions(data.suggestions); 599 } 600 } 601 602 if (suggestions.length > 0) { 603 // Set the suggestion response to the first suggestion 604 suggestionResponse = suggestions[0]; 605 response(suggestions); 606 } else { 607 // No results from API 608 var noResultsMessage = searchMode === 'agents' ? 'No agents found.' : 'Enter another region.'; 609 response([{label: noResultsMessage, noResults: true}]); 610 } 611 }, 612 error: function() { 613 response([{label: 'Problem contacting server, please refresh and try again.', noResults: true}]); 614 $('.autosuggest-loader').removeClass('fal fa-spinner fa-pulse'); 615 $('.autosuggest-loader').addClass('fal fa-exclamation-triangle'); 616 } 617 }); 618 } 619 } 620 621 $('#autosuggest-search-query-389367').autocomplete({ 622 source: function(request, response) { 623 fetchSuggestions(request, response); 624 }, 625 minLength: 0, 626 open: function() {
627 inputWidth = $('#autosuggest-search-query-389367').outerWidth(); 628 $('ul.ui-menu').css( 'width', inputWidth ); 629 }, 630 search: function(event, ui) { 631 $('.autosuggest-loader').addClass('fal fa-spinner fa-pulse'); 632 }, 633 response: function(event, ui) { 634 $('.autosuggest-loader').removeClass('fal fa-spinner fa-pulse'); 635 }, 636 position: { 637 offset: '0 -6' 638 }, 639 autoFocus: true, 640 messages: { 641 //These messages are for accessability and are not visible in the UI (with proper styling). 642 noResults: 'No options found.', 643 results: function(amount) { 644 return amount + (amount > 1 ? ' results ' : ' result ') + 'found.' 645 } 646 }, 647 delay: 300 648 }).focus(function() { 649 $(this).autocomplete('search', $(this).val()); 650 }).data('ui-autocomplete')._renderItem = function(ul, item) { 651 let txt = String(item.label); 652 653 if (item.type) { 654 txt = txt.replace(new RegExp(this.term, 'gi'),'<b>$&</b>'); 655 } 656 657 var type = item.type; 658 659 if (SEARCHABLE_SUGGESTIONS_OPTIONS.hasOwnProperty(type)) { 660 type = SEARCHABLE_SUGGESTIONS_OPTIONS[type]; 661 662 if (type == 'listingId') { 663 txt = txt.toUpperCase(); 664 } 665 } else { 666 type = ''; 667 } 668 669 if (type === 'title') { 670 return $('<li></li>') 671 .append('<div class="item-title"><b>' + txt + '</b></div>') 672 .appendTo(ul); 673 } 674 675 var status = ''; 676 if (item.standardStatus && item.standardStatus.length === 1 && item.standardStatus[0] === 'Closed') { 677 status = ' <span class="ui-status">Sold</span>'; 678 } 679 680 const itemNoResultsClassName = !!item?.noResults ? 'autosuggest-item-no-result' : ''; 681 682 return $(`<li class='${itemNoResultsClassName}'></li>`) 683 .data('ui-autocomplete-item', item) 684 .append('<a>' + txt + '<span>' + type + '</span>' + status + '</a>') 685 .appendTo(ul); 686 }; 687 }); 688 689 require(['jquery'], function($) { 690 var stateMap = JSON.parse('{"Alabama":"AL","Alaska":"AK","Arizona":"AZ","Arkansas":"AR","Bahamas":"BS","California":"CA","Colorado":"CO","Connecticut":"CT","Delaware":"DE","D.C.":"DC","Florida":"FL","Georgia":"GA","Hawaii":"HI","Idaho":"ID","Illinois":"IL","Indiana":"IN","Iowa":"IA","Kansas":"KS","Kentucky":"KY","Louisiana":"LA","Maine":"ME","Maryland":"MD","Massachusetts":"MA","Michigan":"MI","Minnesota":"MN","Mississippi":"MS","Missouri":"MO","Montana":"MT","Nebraska":"NE","Nevada":"NV","New Hampshire":"NH","New Jersey":"NJ","New Mexico":"NM","New York":"NY","North Carolina":"NC","North Dakota":"ND","Ohio":"OH","Oklahoma":"OK","Oregon":"OR","Pennsylvania":"PA","Rhode Island":"RI","South Carolina":"SC","South Dakota":"SD","Tennessee":"TN","Texas":"TX","Utah":"UT","Vermont":"VT","Virginia":"VA","Washington":"WA","West Virginia":"WV","Wisconsin":"WI","Wyoming":"WY","Alberta":"AB","British Columbia":"BC","Manitoba":"MB","New Brunswick":"NB","Newfoundland and Labrador":"NL","Nova Scotia":"NS","Ontario":"ON","Prince Edward Island":"PE","Quebec":"QC","Saskatchewan":"SK"}'); 691 const MAX_RECENT_SEARCHES_CACHED = 5; 692 var showAgentsSearch = '0'; 693 694 function getCurrentSearchMode() { 695 if (showAgentsSearch === '1' && $('#agents-389367').hasClass('active')) { 696 return 'agents'; 697 } else if ($('#rentals-property-types-389367').hasClass('active')) { 698 return 'rentals'; 699 } else { 700 return 'sales'; 701 } 702 } 703 704 /** 705 * Update placeholder based on current search mode 706 */ 707 function updatePlaceholder() { 708 var searchMode = getCurrentSearchMode(); 709 var searchInput = $('#autosuggest-search-query-389367'); 710 var placeholder = ''; 711 712 switch(searchMode) { 713 case 'agents': 714 placeholder = 'Search for agents by name'; 715 break; 716 case 'rentals': 717 case 'sales': 718 default: 719 placeholder = `Search by Location, Address, Postal Code, MLS#...`; 720 break; 721 } 722 723 searchInput.attr('placeholder', placeholder); 724 } 725 726 function getStateAbbreviation(stateName) { 727 if (!stateName) { 728 return null; 729 } 730 731 if (!stateMap.hasOwnProperty(stateName)) { 732 return null; 733 } 734 735 return stateMap[stateName]; 736 } 737
738 function goToDetailView(filter) { 739 var baseUrl = '/api/listings/'; 740 // We should use this replace in order to divide params into array in the ListingSearch.php in the V2 741 filter = filter.replace(/\S&\S/g, function (tmpVal) { 742 return tmpVal.replace(/&/g, '#'); 743 }); 744 filter = encodeURIComponent(filter); 745 $.ajax({ 746 dataType: 'json', 747 url: baseUrl + '?suggestionFilter=' + filter, 748 type: 'GET', 749 success: function(data) { 750 if (!Array.isArray(data.listings)) { 751 return; 752 } 753 754 if (data.listings.length === 1) { 755 window.location.href = data.listings[0].usmDetailPath; 756 757 return; 758 } 759 760 if (data.listings.length > 1) { 761 window.location.href = '/listings/' + '?suggestionFilter=' + filter; 762 763 return; 764 } 765 } 766 }); 767 } 768 769 function getCityAndStatePath(value) { 770 var array = value.split(' '); 771 772 const state = array.pop().toLowerCase(); 773 const city = array.join('-').toLowerCase(); 774 775 return state + '/' + city + '/'; 776 } 777 778 function parseFilterString(filterString) { 779 var filters = {}; 780 if (!filterString) { 781 return filters; 782 } 783 filterString.split('&').forEach(function(f) { 784 var parts = f.split('='); 785 if (parts.length >= 2) { 786 var name = parts[0].match(/\[(.*?)\]/)?.[1]; 787 if (name) { 788 filters[name] = decodeURIComponent(parts.slice(1).join('=')); 789 } 790 } 791 }); 792 return filters; 793 } 794 795 function getStateAbbrFromFilterValue(stateValue) { 796 if (!stateValue) { 797 return null; 798 } 799 var abbr = getStateAbbreviation(stateValue); 800 if (abbr) { 801 return abbr.toLowerCase(); 802 } 803 if (stateValue.length === 2) { 804 return stateValue.toLowerCase(); 805 } 806 return null; 807 } 808 809 /** 810 * Build url with path based on the selected suggestion. 811 * 812 */ 813 function getUrlPath(suggestion) { 814 let path = ''; 815 switch (suggestion.type) { 816 case 'cityAndState': 817 path += getCityAndStatePath(suggestion.value); 818 819 return path; 820 case 'stateOrProvince': 821 var stateAbbreviation = getStateAbbreviation(suggestion.value); 822 823 if (stateAbbreviation && stateAbbreviation.length == 2) { 824 path += stateAbbreviation.toLowerCase() + '/'; 825 } 826 827 return path; 828 case 'neighborhood': 829 case 'village': 830 path += convertFilterString(suggestion.filter); 831 832 return path; 833 case 'county': { 834 var filters = parseFilterString(suggestion.filter); 835 var county = filters.county; 836 var stateAbbr = getStateAbbrFromFilterValue(filters.stateOrProvince); 837 if (county && stateAbbr) { 838 var countySlug = county.replace(/\s+county$/i, '').toLowerCase().replace(/\s+/g, '-') + '-county'; 839 path = stateAbbr + '/' + countySlug + '/'; 840 } 841 return path; 842 } 843 case 'postalCode': { 844 var filters = parseFilterString(suggestion.filter); 845 var postalCode = filters.postalCode; 846 var stateAbbr = getStateAbbrFromFilterValue(filters.stateOrProvince); 847 if (postalCode && stateAbbr) { 848 path = stateAbbr + '/' + postalCode + '/'; 849 } 850 return path; 851 } 852 default: 853 return path; 854 } 855 } 856 857 function convertFilterString(filterString) { 858 if (!filterString) { 859 return ''; 860 } 861 862 const filters = filterString.split('&'); 863 const suggestionFilters = filters.map(filter => { 864 const filterPart = filter.split('='); 865 866 if (filterPart.length !== 2) { 867 return null; 868 } 869 870 const [key, value] = filterPart; 871 const name = key.match(/\[(.*?)\]/)?.[1]; 872 873 if (!name) return null; 874 875 return name === 'cityAndState' || name === 'usmCityAndState' 876 ? getCityAndStatePath(value) + '?' 877 : name + '=' + value ; 878 }); 879 880 return getPathFromFilters(suggestionFilters); 881 } 882 883 function getPathFromFilters(suggestionFilters) { 884 if (!suggestionFilters || suggestionFilters.length === 0) { 885 return ''; 886 } 887 888 const cityAndStateItem = suggestionFilters.find(item => item.includes('/?')); 889 890 if (!cityAndStateItem) { 891 return '?' + suggestionFilters.join('&'); 892 } 893 894 const filtersWithoutCityAndState = suggestionFilters.filter(item => item !== cityAndStateItem); 895 896 return cityAndStateItem + filtersWithoutCityAndState.join('&'); 897 } 898 899 function getPropertyDetailPathFromOffMarketSuggestion(suggestion) { 900 if (!suggestion) { 901 return ''; 902 } 903 904 const { value, filter } = suggestion; 905 const startIndex = filter?.indexOf('=') + 1; 906 const usmPid = filter?.substring(startIndex); 907 908 const address = value?.split(' ') 909 ?.map(function(word) { return word.toLowerCase() }) 910 ?.join('-') || ''; 911 912 return '/property/' + address + '/' + usmPid + '/'; 913 }; 914 915 function submitSearch(e, item) { 916 e.preventDefault(); 917 918 if (!item) { 919 return; 920 } 921 922 // If the item has no type, it's an error message and shouldn't send anywhere 923 if (!item.type) { 924 return; 925 } 926 927 var searchMode = getCurrentSearchMode(); 928
929 // Finish the input in case a selection was made without completing it 930 $('#autosuggest-search-query').val(item.type === 'listingId' ? item.value.toUpperCase() : item.label); 931 932 if (item.type === 'agent' || item.type === 'team') { 933 window.location.href = `/realestate/${item.type}/${item.slug}/`; 934 935 return; 936 } 937 938 // Send to detail view if MLS Number 939 if (item.type === 'listingId' || item.type === 'address' || item.type === 'usmPropertyName' || item.type === 'usmNonMlsId') { 940 var filter = item.filter; 941 942 if (item.standardStatus && item.standardStatus.length > 0) { 943 var statusList = Array.isArray(item.standardStatus) 944 ? item.standardStatus 945 : [item.standardStatus]; 946 // It is very common for listings other than 'Active 'to being filtered out, so we need to add this filter to ensure that they are returned by the listings api 947 filter += (filter !== '' ? '&' : '') + 'filter[standardStatus]=' + statusList.join(','); 948 } 949 goToDetailView(filter); 950 951 return; 952 } else if (item.type === 'offMarketData') { 953 const propertyPath = getPropertyDetailPathFromOffMarketSuggestion(item); 954 955 window.location.href = propertyPath; 956 957 return; 958 } 959 960 item.type = item.type.replace('usmCityAndState', 'cityAndState') 961 .replace('usmNeighborhood', 'neighborhood') 962 .replace('usmVillage', 'village') 963 .replace('usmSubdivision', 'subdivision') 964 .replace('usmComplex', 'complex'); 965 966 if (item.type === 'cityAndState') { 967 item.value = item.value.replace(', ', ' '); 968 } 969 970 path = getUrlPath(item); 971 972 // Don't save agents to recent searches 973 if (searchMode !== 'agents') { 974 var searches = [Object.assign({}, item)]; 975 var storedSearches = JSON.parse(localStorage.getItem('lastSearches')); 976 977 if (storedSearches) { 978 searches = storedSearches.filter(function(storedSearch) { 979 storedSearch.value !== item.value 980 }); 981 storedSearches = searches.length <= (MAX_RECENT_SEARCHES_CACHED - 1) 982 ? searches 983 : searches.slice(0,-1); 984 searches = [Object.assign({}, item), ...storedSearches]; 985 } 986 987 localStorage.setItem('lastSearches', JSON.stringify(searches)); 988 } 989 990 var propertyTypeFilter = ''; 991 var displaySalesRentalsToggle = ''; 992 993 if (displaySalesRentalsToggle && searchMode !== 'agents') { 994 var forSalePropertyTypes = ''; 995 var rentalsPropertyTypes = ''; 996 var forSaleLabel = 'Sales'; 997 var rentalsLabel = 'Rentals'; 998 var agentsLabel = ''; 999 var propertyTypes = $('#sales-property-types-389367').hasClass('active') ? forSalePropertyTypes : rentalsPropertyTypes; 1000 1001 if (propertyTypes) { 1002 var urlPathTypes = ['cityAndState', 'county', 'postalCode']; 1003 if (urlPathTypes.indexOf(item.type) !== -1 && !propertyTypes.includes(',')) { 1004 path = path + propertyTypes.toLowerCase() + '/'; 1005 } else { 1006 propertyTypeFilter = 'propertyTypes=' + propertyTypes; 1007 } 1008 } 1009 } 1010 1011 var fullPath = ''; 1012 if (path.length > 0) { 1013 var separator = path.indexOf('?') !== -1 ? '&' : '?'; 1014 fullPath = '/listings/' + path + separator +'' + propertyTypeFilter; 1015 } else { 1016 fullPath = '/listings/?' + item.type + '=' + encodeURIComponent(item.value) + '&' + propertyTypeFilter; 1017 } 1018 1019 // Remove trailing ? or & 1020 const lastChar = fullPath.charAt(fullPath.length - 1); 1021 if (lastChar === '?' || lastChar === '&') { 1022 fullPath = fullPath.slice(0, -1); 1023 } 1024 1025 window.location.href = fullPath; 1026 } 1027 1028 $('.widget-autosuggest').on('submit', function(e) { 1029 submitSearch(e, suggestionResponse); 1030 }); 1031 1032 $('.widget-autosuggest').on('autocompleteselect', function(e, ui) { 1033 submitSearch(e, ui.item); 1034 }); 1035 1036 var salesPropertyTypesButton = $('#sales-property-types-389367'); 1037 var rentalPropertyTypesButton = $('#rentals-property-types-389367'); 1038 var agentsButton = $('#agents-389367'); 1039 1040 // Function to clear search and refresh autocomplete 1041 function clearSearchAndRefresh() { 1042 $('#autosuggest-search-query-389367').val('').autocomplete('search', ''); 1043 } 1044
1045 const buttons = [salesPropertyTypesButton, rentalPropertyTypesButton]; 1046 if (showAgentsSearch === '1') { 1047 buttons.push(agentsButton); 1048 } 1049 1050 function setActiveButton(activeButton, buttons) { 1051 $.each(buttons, function(index, btn) { 1052 btn.removeClass('active'); 1053 }); 1054 activeButton.addClass('active'); 1055 updatePlaceholder(); 1056 clearSearchAndRefresh(); 1057 } 1058 1059 salesPropertyTypesButton.on('click', function() { 1060 setActiveButton(salesPropertyTypesButton, buttons); 1061 }); 1062 1063 rentalPropertyTypesButton.on('click', function() { 1064 setActiveButton(rentalPropertyTypesButton, buttons); 1065 }); 1066 1067 // Only add event handler if agents search is enabled 1068 if (showAgentsSearch === '1') { 1069 agentsButton.on('click', function() {
1070 setActiveButton(agentsButton, buttons); 1071 }); 1072 } 1073 1074 // Initialize placeholder on document ready 1075 $(document).ready(function() { 1076 updatePlaceholder(); 1077 }); 1078 }); 1079 1080 (function () { 1081 let wrap = document.querySelector(".magnet-tabs-389368"); 1082 let categories = wrap.querySelectorAll('.recsearch-category-item'); 1083 1084 categories.forEach(category => category.firstElementChild.addEventListener('click', e => { 1085 let list = category.querySelector('ul'); 1086 if (list && ((list.offsetWidth + list.offsetLeft) > window.innerWidth)) { 1087 list.style.right = '0'; 1088 list.classList.add('not-screen-fit'); 1089 } 1090 category.classList.toggle('active'); 1091 })); 1092 1093 window.addEventListener('click', 1094 e => categories.forEach(c => e.target !== c && !c.contains(e.target) && c.classList.remove('active'))); 1095 })(); 1096 1097 require(["jquery", "shipyard"], function ($, shipyard) { 1098 shipyard.validateForm($('.agent-rmif')); 1099 }); 1100 1101 require(["jquery", "usm", "usm.modalform", "usm.analytics"], function($, usm) { 1102 var $form = $('form#aaq-389357'); 1103 1104 var options = { 1105 postSuccess: function (e) { 1106 } 1107 }; 1108 1109 usm.modalForm.addValidation($form, options); 1110 }); 1111 var URI = "/article/view/356281/1/55747/";require(['usm', 'usm.user'], function (usm) { usm.user.setModal(true); });require(["jquery"], function ($) { $("body").addClass("js"); });</script>
1111<script type="text/javascript">require(["https://d1nn5t56all1qd.cloudfront.net/11924/js/custom.js?version=1781788139"]);</script>
1111</body> 1112</html><!-- You're on: Some other server - 172.18.22.9 - fayekeogh.com Time: 2.593 -->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.