var breeze_prefetch = {"local_url":"https://bidbat.com","ignore_remote_prefetch":"1","ignore_list":["wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
Skip to contentWhat Makes Our VAs Worth Your Real Estate SEO
Winning in real estate isn’t easy. With ever-changing market conditions, old marketing tactics become obsolete before anyone’s guess. To stay ahead, you need highly skilled, data-driven local SEO specialists who know real estate inside out.
At Bidbat, we ensure our every VA for real estate SEO is skilled, talented, creative, and motivated. You never have to worry about making the wrong hire who will waste your time and energy instead of supporting you and helping to bring in more clients.
What Our Real Estate SEO VAs Do
Search Engine Marketing
Keyword Research & Targeting | Ad Copy Creation | Ad Auction | Landing Page Optimization | Campaign Tracking & Optimization
Search Engine Optimization
Website & Listing Optimization | Keyword Research | Google Business Profile Optimization | Blog Writing | Local Citations
Pay-Per-Click Advertising
Keyword Research & Targeting | Platform Selection | Ad Creation | Bidding on Keywords | Landing Page Optimization
Social Media Ads
Profile Optimization | Ad Copy Creation | Content Calendar | Paid Ads | Storytelling | Influencer Partnership | Hashtags & Custom Branding
40+ Industries
Supporting real estate, e-commerce, healthcare, legal, and other key industries.
98.5% Client Satisfaction
Satisfaction rate reported based on post-onboarding client feedback surveys.
72% Repeat Client Rate
Our clients trust us enough to come back, again and again, for the value we deliver.
Our Work in Action
If you’re new to hiring virtual assistants, you may be confused about how things look in real life. Here are some of our past projects and case studies to give you some ideas.
Hear from Our Clients
Here’s why our clients love our services and decide to stay with us for the long-term.
Frequently Asked Questions
Work Smarter. Our Pros Will Handle the Rest.
Our friendly client reps are just a click away. Tell us what’s on your mind – this could be the start of something big!
https://bidbat.com/wp-includes/js/jquery/jquery.min.js
https://bidbat.com/wp-includes/js/jquery/jquery-migrate.min.js
https://bidbat.com/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js
window.addEventListener('load', function() {
const blurElements = document.querySelectorAll('.parallax-scroll');
// Clear zone settings - desktop and mobile
const blurSettings = {
desktop: {
clearZone: 300, // Center - 300px clear zone
maxBlur: 5
},
mobile: {
clearZone: 250, // Mobile center 150px clear zone
maxBlur: 3
}
};
const isMobile = window.innerWidth <= 768;
const currentSettings = isMobile ? blurSettings.mobile : blurSettings.desktop;
function updateBlur() {
const scrollY = window.pageYOffset;
const windowHeight = window.innerHeight;
const viewportCenter = scrollY + windowHeight / 2;
blurElements.forEach(element => {
const rect = element.getBoundingClientRect();
const elementTop = rect.top + scrollY;
const elementHeight = rect.height;
const elementCenter = elementTop + elementHeight / 2;
const distanceFromCenter = Math.abs(viewportCenter - elementCenter);
let blur = 0;
if (distanceFromCenter > currentSettings.clearZone) {
const blurDistance = distanceFromCenter - currentSettings.clearZone;
const blurProgress = Math.min(1, blurDistance / currentSettings.clearZone);
blur = blurProgress * currentSettings.maxBlur;
}
element.style.filter = `blur(${blur}px)`;
});
}
let isScrolling = false;
function handleScroll() {
if (!isScrolling) {
requestAnimationFrame(() => {
updateBlur();
isScrolling = false;
});
isScrolling = true;
}
}
window.addEventListener('scroll', handleScroll, { passive: true });
updateBlur();
});
document.addEventListener("DOMContentLoaded", function () {
if (typeof jQuery !== "undefined") {
jQuery(function ($) {
$(window).scroll(function () {
var scrollTop = $(window).scrollTop();
if (scrollTop > 100) {
$(".header-wrapper").addClass("fixed");
} else {
$(".header-wrapper").removeClass("fixed");
}
});
});
} else {
console.log("jQuery is not loaded!");
}
});
// Function to add new logos dynamically with SVG
function addNewLogo(logoName, svgContent = null) {
const marqueeWrapper = document.querySelector('.marquee-wrapper');
const existingLogos = document.querySelectorAll('.marquee-item');
const logoCount = existingLogos.length / 2; // Divide by 2 because of duplication
// Default SVG content if none provided
const defaultSvg = `
<svg class="logo" viewBox="0 0 140 60" fill="currentColor">
<rect x="15" y="20" width="20" height="20" rx="3" fill="currentColor"/>
<text x="45" y="25" font-family="Arial" font-size="12" font-weight="bold">${logoName}</text>
<text x="45" y="38" font-family="Arial" font-size="6">Brand Logo</text>
</svg>
`;
// Create new logo element
const newLogoHtml = `
<div class="marquee-item">
${svgContent || defaultSvg}
</div>
`;
// Add to both sets (original and duplicate)
const middleIndex = Math.floor(existingLogos.length / 2);
existingLogos[middleIndex - 1].insertAdjacentHTML('afterend', newLogoHtml);
existingLogos[existingLogos.length - 1].insertAdjacentHTML('afterend', newLogoHtml);
// Update animation width
const newLogoCount = logoCount + 1;
const itemWidth = window.innerWidth <= 480 ? 120 : window.innerWidth <= 768 ? 150 : 200;
marqueeWrapper.style.width = `calc(${itemWidth}px * ${newLogoCount * 2})`;
// Update animation
updateAnimation(newLogoCount, itemWidth);
}
// Function to add logo with custom SVG
function addCustomSVGLogo(svgContent) {
const marqueeWrapper = document.querySelector('.marquee-wrapper');
const existingLogos = document.querySelectorAll('.marquee-item');
const logoCount = existingLogos.length / 2;
const newLogoHtml = `
<div class="marquee-item">
${svgContent}
</div>
`;
const middleIndex = Math.floor(existingLogos.length / 2);
existingLogos[middleIndex - 1].insertAdjacentHTML('afterend', newLogoHtml);
existingLogos[existingLogos.length - 1].insertAdjacentHTML('afterend', newLogoHtml);
const newLogoCount = logoCount + 1;
const itemWidth = window.innerWidth <= 480 ? 120 : window.innerWidth <= 768 ? 150 : 200;
marqueeWrapper.style.width = `calc(${itemWidth}px * ${newLogoCount * 2})`;
updateAnimation(newLogoCount, itemWidth);
}
function updateAnimation(logoCount, itemWidth) {
const styleSheet = document.styleSheets[0];
const keyframeRule = Array.from(styleSheet.cssRules).find(rule =>
rule.type === CSSRule.KEYFRAMES_RULE && rule.name === 'scroll'
);
if (keyframeRule) {
styleSheet.deleteRule(Array.from(styleSheet.cssRules).indexOf(keyframeRule));
}
const newKeyframe = `
@keyframes scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-${itemWidth * logoCount}px); }
}
`;
styleSheet.insertRule(newKeyframe, styleSheet.cssRules.length);
}
// Example: Add new logo after 5 seconds
// setTimeout(() => {
// addNewLogo('Microsoft');
// }, 5000);
// Handle responsive changes
window.addEventListener('resize', () => {
const logoCount = document.querySelectorAll('.marquee-item').length / 2;
const itemWidth = window.innerWidth <= 480 ? 120 : window.innerWidth <= 768 ? 150 : 200;
document.querySelector('.marquee-wrapper').style.width = `calc(${itemWidth}px * ${logoCount * 2})`;
updateAnimation(logoCount, itemWidth);
});
// Add interactive click effect
const container = document.querySelector('.custom-icon-container');
container.addEventListener('click', function() {
// Create ripple effect on click
const ripple = document.createElement('div');
ripple.style.position = 'absolute';
ripple.style.width = '100%';
ripple.style.height = '100%';
ripple.style.borderRadius = '50%';
ripple.style.border = '3px solid rgba(255, 75, 51, 0.8)';
ripple.style.animation = 'ripple 0.6s ease-out';
ripple.style.pointerEvents = 'none';
this.appendChild(ripple);
setTimeout(() => {
ripple.remove();
}, 600);
});
document.addEventListener("DOMContentLoaded", function () {
const btn = document.getElementById("schedule-demo");btn.addEventListener("click", function (e) {
e.preventDefault(); // prevent page reload
Calendly.initPopupWidget({
url: 'https://calendly.com/bidbatva/bidbat',
prefill: {},
pageSettings: {
backgroundColor: 'ffffff',
hideEventTypeDetails: false,
hideLandingPageDetails: false,
primaryColor: '0073e6',
textColor: '000000'
}
});
return false;
});
});
const lazyloadRunObserver = () => {
const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
entries.forEach( ( entry ) => {
if ( entry.isIntersecting ) {
let lazyloadBackground = entry.target;
if( lazyloadBackground ) {
lazyloadBackground.classList.add( 'e-lazyloaded' );
}
lazyloadBackgroundObserver.unobserve( entry.target );
}
});
}, { rootMargin: '200px 0px 200px 0px' } );
lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
lazyloadBackgroundObserver.observe( lazyloadBackground );
} );
};
const events = [
'DOMContentLoaded',
'elementor/lazyload/observe',
];
events.forEach( ( event ) => {
document.addEventListener( event, lazyloadRunObserver );
} );
var wpilFrontend = {"ajaxUrl":"/wp-admin/admin-ajax.php","postId":"2165","postType":"post","openInternalInNewTab":"0","openExternalInNewTab":"0","disableClicks":"0","openLinksWithJS":"0","trackAllElementClicks":"0","clicksI18n":{"imageNoText":"Image in link: No Text","imageText":"Image Title: ","noText":"No Anchor Text Found"}};
//# sourceURL=wpil-frontend-script-js-extra
https://bidbat.com/wp-content/plugins/link-whisper/js/frontend.min.js
https://bidbat.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js
https://bidbat.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js
https://bidbat.com/wp-includes/js/jquery/ui/core.min.js
var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":576,"lg":992,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":575,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":767,"default_value":880,"direction":"max","is_enabled":true},"tablet":{"label":"Tablet Portrait","value":991,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1199,"default_value":1200,"direction":"max","is_enabled":true},"laptop":{"label":"Laptop","value":1300,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":true},"version":"3.30.3","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"e_optimized_markup":true,"theme_builder_v2":true,"nested-elements":true,"e_element_cache":true,"home_screen":true,"global_classes_should_enforce_capabilities":true,"cloud-library":true,"e_opt_in_v4_page":true,"mega-menu":true},"urls":{"assets":"https:\/\/bidbat.com\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/bidbat.com\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/bidbat.com\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"83e59ee1fa"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_mobile_extra","viewport_tablet","viewport_tablet_extra"],"viewport_mobile":575,"viewport_mobile_extra":767,"viewport_tablet":991,"viewport_tablet_extra":1199,"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description"},"post":{"id":2165,"title":"Hire%20a%20VA%20for%20Real%20Estate%20SEO%20%26%20Win%20More%20Clients%20-%20BidBat","excerpt":"","featuredImage":false}};
//# sourceURL=elementor-frontend-js-before
https://bidbat.com/wp-content/plugins/elementor/assets/js/frontend.min.js
https://bidbat.com/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js
https://bidbat.com/wp-includes/js/imagesloaded.min.js
https://bidbat.com/wp-content/plugins/elementor/assets/lib/swiper/v8/swiper.min.js
https://bidbat.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js
https://bidbat.com/wp-includes/js/dist/hooks.min.js
https://bidbat.com/wp-includes/js/dist/i18n.min.js
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/bidbat.com\/wp-admin\/admin-ajax.php","nonce":"645e2e39e5","urls":{"assets":"https:\/\/bidbat.com\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/bidbat.com\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"facebook_sdk":{"lang":"en_US","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/bidbat.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}};
//# sourceURL=elementor-pro-frontend-js-before
https://bidbat.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js
https://bidbat.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js
document.addEventListener('DOMContentLoaded', function() {
// Get elements
const toggleSwitch = document.getElementById('toggleSwitch');
const toggleLabelLeft = document.querySelector('.toggle-label-left');
const toggleLabelRight = document.querySelector('.toggle-label-right');
const hourlyElements = document.querySelectorAll('.hourly');
const monthlyElements = document.querySelectorAll('.monthly');
let isMonthly = false;// Toggle switch functionality
toggleSwitch.addEventListener('click', function() {
isMonthly = !isMonthly;
if (isMonthly) {
// Switch to monthly
toggleSwitch.classList.add('active');
toggleLabelLeft.classList.remove('active');
toggleLabelRight.classList.add('active');
// Show/hide price elements
hourlyElements.forEach(el => el.style.display = 'none');
monthlyElements.forEach(el => el.style.display = 'inline');
} else {
// Switch to hourly
toggleSwitch.classList.remove('active');
toggleLabelLeft.classList.add('active');
toggleLabelRight.classList.remove('active');
// Show/hide price elements
hourlyElements.forEach(el => el.style.display = 'inline');
monthlyElements.forEach(el => el.style.display = 'none');
}
});// Category Tab Switching
const categoryTabs = document.querySelectorAll('.category-tab');
const pricingContents = document.querySelectorAll('.pricing-content');categoryTabs.forEach(tab => {
tab.addEventListener('click', function() {
const category = this.getAttribute('data-category');
// Update active tab
categoryTabs.forEach(t => t.classList.remove('active'));
this.classList.add('active');// Show corresponding content
pricingContents.forEach(content => {
if (content.getAttribute('data-category') === category) {
content.classList.add('active');
} else {
content.classList.remove('active');
}
});
});
});// Select Package Button Actions
const selectBtns = document.querySelectorAll('.select-btn');
selectBtns.forEach(btn => {
btn.addEventListener('click', function() {
alert('Package selected! Redirecting to checkout...');
// Add your checkout logic here
});
});
});
jQuery(document).ready(function($) {
function addReadMore() {
$('.review-wrap h4').each(function() {
if ($(this).next('.read-more-btn').length > 0) {
return; // Already processed, skip
}
var $content = $(this);
var maxLines = 4;
var lineHeight = parseInt($content.css('line-height'));
var maxHeight = lineHeight * maxLines;
var actualHeight = $content[0].scrollHeight;
if (actualHeight > maxHeight) {
$content.css({
'max-height': maxHeight + 'px',
'overflow': 'hidden',
'position': 'relative'
});
$content.after('<span class="read-more-btn" style="color: #FF4B33; cursor: pointer; font-weight: 600; display: inline-block; margin-top: 10px;">Read More</span>');
$content.next('.read-more-btn').on('click', function() {
if ($content.css('max-height') !== 'none') {
$content.css('max-height', 'none');
$(this).text('Read Less');
} else {
$content.css('max-height', maxHeight + 'px');
$(this).text('Read More');
}
});
}
});
}addReadMore();
setTimeout(function() {
addReadMore();
}, 500);
$(document).on('click', '.swiper-button-next, .swiper-button-prev, .elementor-swiper-button', function() {
setTimeout(function() {
addReadMore();
}, 300);
});$(document).on('click', '.swiper-pagination-bullet', function() {
setTimeout(function() {
addReadMore();
}, 300);
});
});
gsap.registerPlugin(ScrollTrigger);document.querySelectorAll(".heading-container .heading-animation").forEach((heading) => {
const split = new SplitType(heading, {
types: "words, chars",
});gsap.timeline({
scrollTrigger: {
trigger: heading.closest(".heading-container"),
start: "top 68%",
end: "+=60%",
scrub: 0.5,
},
}).to(split.chars, {
color: "#071D3B",
stagger: 0.1,
duration: 0.3,
ease: "none",
});
});
//reveal
gsap.utils.toArray('.jsimg, .jscontent, .jsblock').forEach((element, index) => {
gsap.to(element, {
clipPath: 'inset(0% 0% 0% 0%)',
duration: 1.8,
ease: "power3.out",
delay: index * 0.15,
scrollTrigger: {
trigger: element,
start: 'top 80%'
}
});
});