PageSourceSearch

https://fayekeogh.com/

html fayekeogh.com collected 2026-10-07 20:32:10 UTC 141,799 bytes, 1,112 lines download raw bytes

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 &amp; 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 &amp; 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 &amp; 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="&#10;                                Search: Search by Location, Address, Postal Code, MLS#...&#10;                                Use Up and Down to choose options,&#10;                                press Enter to select the currently focused option,&#10;                                press Escape to exit the menu,&#10;                                press Tab to select the option and exit the menu.&#10;                            " 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&reg;</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&rsquo;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&rsquo;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=&#39;/listings/&#39;"><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=&#39;/realestate/searchcategories/&#39;"><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=&#39;/user/user/&#39;"><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=&#39;#&#39;"><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&#38;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&#38;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! &#10;&#10;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&#38;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&#38;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&#39;d originally suggested, without all the repairs and staging expenses I&#39;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&#39;d originally suggested, without all the repairs and staging expenses I&#39;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=&#39;/listings/&#39;"><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=&#39;/realestate/searchcategories/&#39;"><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=&#39;/user/user/&#39;"><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=&#39;#&#39;"><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&#38;utm_medium=usm-badge&#38;utm_source=www.stevemichaelides.com&#38;
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.