It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: https://airbtics.com/airbnb-management-companies/ideal-homes-133899219/

  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5.    <meta charset="UTF-8">
  6.    <link rel="icon" type="image/png"
  7.        href="https://airbtics.com/wp-content/uploads/2020/03/cropped-PNG_Transparent-2-32x32.png" />
  8.    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  9.    <title>Ideal Homes Reviews - Short-term rental Property Manager Performance & Revenue</title>
  10.    <meta name="description"
  11.        content="Get insights on Ideal Homes’s listings, occupancy rates, and revenue. Compare with top vacation rental management companies and read customer reviews.">
  12.    <meta name="referrer" content="no-referrer-when-downgrade">
  13.    <meta name="Cross-Origin-Opener-Policy" content="same-origin-allow-popups">
  14.    <style>* {
  15.  box-sizing: border-box;
  16. }
  17.  
  18. .flex-center {
  19.  display: flex;
  20.  justify-content: center;
  21.  align-items: center;
  22. }
  23.  
  24. .btn {
  25.  border: none;
  26.  outline: none;
  27.  cursor: pointer;
  28. }
  29.  
  30. main {
  31.  position: relative;
  32.  width: 100%;
  33.  overflow-x: hidden;
  34.  background-color: white;
  35.  border-radius: 20px 20px 0 0;
  36.  margin-top: -10px;
  37.  box-shadow: -4px 0 10px #0001;
  38.  margin-bottom: 0;
  39.  padding-top: 50px;
  40. }
  41.  
  42. /* Container & Spacing */
  43. .container {
  44.  position: relative;
  45.  width: min(90%, 1200px);
  46.  margin: 0px auto;
  47. }
  48. h1,
  49. h2,
  50. h3,
  51. h4 {
  52.  /* margin: 20px 0 15px; */
  53.  font-weight: 600;
  54. }
  55.  
  56. /* VRM Summary Block */
  57. .vrm-summary {
  58.  background: #fff;
  59.  border-radius: 8px;
  60.  padding: 20px;
  61.  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
  62.  display: flex;
  63.  flex-wrap: wrap;
  64.  align-items: center;
  65.  margin-bottom: 10px;
  66. }
  67. .vrm-image {
  68.  width: 120px;
  69.  height: 80px;
  70.  background: #eee;
  71.  border-radius: 6px;
  72.  margin-right: 20px;
  73.  background-position: center;
  74.  background-size: cover;
  75.  display: flex;
  76.  align-items: center;
  77.  justify-content: center;
  78.  font-size: 0.9rem;
  79.  color: #555;
  80. }
  81. .vrm-info {
  82.  flex: 1;
  83.  margin: 10px 0;
  84. }
  85. .vrm-info h2 {
  86.  margin: 0 0 5px;
  87.  font-size: 1.4rem;
  88. }
  89. .vrm-info p {
  90.  margin-bottom: 5px;
  91.  color: #555;
  92.  line-height: 1.6;
  93. }
  94. .vrm-cta {
  95.  margin-left: auto;
  96. }
  97. .vrm-cta button {
  98.  background-color: #3aafa9;
  99.  color: #fff;
  100.  border: none;
  101.  padding: 12px 20px;
  102.  border-radius: 6px;
  103.  cursor: pointer;
  104. }
  105. .vrm-cta button:hover {
  106.  background-color: #2d8682;
  107. }
  108.  
  109. /* Stats Cards */
  110. .stats-cards {
  111.  display: grid;
  112.  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  113.  gap: 20px;
  114.  margin: 25px 0;
  115. }
  116. .stat-card {
  117.  background-color: #fff;
  118.  border-radius: 8px;
  119.  padding: 20px;
  120.  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
  121.  text-align: center;
  122. }
  123. .stat-card .title {
  124.  font-size: 0.95rem;
  125.  color: #555;
  126.  margin-bottom: 8px;
  127. }
  128. .stat-card .value {
  129.  font-size: 1.4rem;
  130.  font-weight: 600;
  131.  margin-bottom: 5px;
  132.  color: #333;
  133. }
  134. .stat-badge {
  135.  display: inline-block;
  136.  font-size: 0.8rem;
  137.  padding: 4px 8px;
  138.  border-radius: 4px;
  139.  margin-left: 6px;
  140.  vertical-align: middle;
  141. }
  142. .badge-good {
  143.  background-color: #e6ffed;
  144.  color: #00aa2f;
  145. }
  146. .badge-mid {
  147.  background-color: #fff5e0;
  148.  color: #b76e00;
  149. }
  150. .badge-big {
  151.  background-color: #e3f2ff;
  152.  color: #0070f3;
  153. }
  154. .badge-positive {
  155.  background-color: #e6ffed;
  156.  color: #00aa2f;
  157. }
  158.  
  159. /* STATS CARD CUSTOM */
  160. .card-kpi-conatiner {
  161.  width: 100%;
  162.  position: relative;
  163.  display: flex;
  164.  flex-direction: row;
  165.  justify-content: flex-start;
  166.  flex-wrap: wrap;
  167.  gap: 20px;
  168.  padding-left: 20px;
  169. }
  170.  
  171. .card-kpi {
  172.  position: relative;
  173.  padding: 30px 20px;
  174.  width: 250px;
  175.  border-radius: 12px;
  176.  box-shadow: 0 4px 120px -40px #0005;
  177. }
  178.  
  179. .card-kpi-heading {
  180.  color: #404245;
  181.  font-weight: 500;
  182.  margin-bottom: 10px;
  183. }
  184.  
  185. .card-kpi-body {
  186.  color: #3aafa9;
  187.  font-weight: bold;
  188.  font-size: 20px;
  189.  padding-bottom: 10px;
  190. }
  191.  
  192. .card-kpi-badge {
  193.  position: absolute;
  194.  right: 10px;
  195.  bottom: 10px;
  196.  font-size: 14px;
  197.  background-color: #3aafa920;
  198.  color: #3aafa9;
  199.  border-radius: 900px;
  200.  padding: 2.5px 15px;
  201. }
  202.  
  203. .last-update-text {
  204.  color: #779cc7;
  205.  margin-right: auto;
  206.  font-size: 14px;
  207.  padding-left: 20px;
  208. }
  209.  
  210. /* Reviews Section */
  211. .reviews {
  212.  margin: 30px 0;
  213. }
  214. .reviews-grid {
  215.  display: grid;
  216.  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  217.  gap: 20px;
  218.  padding: 20px;
  219. }
  220. .review-card {
  221.  background: #fff;
  222.  border-radius: 8px;
  223.  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
  224.  padding: 20px;
  225.  position: relative;
  226. }
  227. .review-user {
  228.  display: flex;
  229.  align-items: center;
  230.  margin-bottom: 10px;
  231. }
  232. .user-avatar {
  233.  width: 40px;
  234.  height: 40px;
  235.  border-radius: 40px;
  236.  background-color: #3aafa9;
  237.  color: #fff;
  238.  display: flex;
  239.  align-items: center;
  240.  justify-content: center;
  241.  margin-right: 10px;
  242.  font-weight: bold;
  243.  text-transform: uppercase;
  244. }
  245. .user-info h4 {
  246.  font-size: 1rem;
  247.  margin-bottom: 2px;
  248. }
  249. .user-info .date {
  250.  color: #999;
  251.  font-size: 0.8rem;
  252. }
  253. .review-text {
  254.  line-height: 1.5;
  255.  margin-top: 5px;
  256. }
  257. .review-stars {
  258.  color: #ffa400;
  259.  font-size: 0.95rem;
  260.  margin-bottom: 8px;
  261. }
  262.  
  263. /* Competitors */
  264. .competitors {
  265.  margin: 0;
  266.  background-color: #fff;
  267.  border-radius: 8px;
  268.  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
  269.  padding: 20px;
  270. }
  271. .competitors ul {
  272.  list-style: none;
  273. }
  274. .competitors li {
  275.  margin: 10px 0;
  276. }
  277. .competitors li::before {
  278.  content: "🔗 ";
  279.  margin-right: 5px;
  280. }
  281. .competitors li a {
  282.    text-decoration: none;
  283.    display: inline-flex;
  284.    align-items: center;
  285.    justify-content: flex-start;
  286.    gap: 5px;
  287. }
  288.  
  289. .competitors li a:hover{
  290.    text-decoration: underline;
  291. }
  292.  
  293. .competitors li i{
  294.    font-size: 0.8rem;
  295.    margin-left: 2px;
  296. }
  297.  
  298. /* CTA */
  299. .cta {
  300.  text-align: center;
  301.  margin: 40px 0;
  302. }
  303. .cta a {
  304.  background-color: #3aafa9;
  305.  color: #fff;
  306.  padding: 14px 28px;
  307.  border-radius: 6px;
  308.  text-decoration: none;
  309.  font-weight: bold;
  310.  transition: background-color 0.3s;
  311. }
  312. .cta a:hover {
  313.  background-color: #339691;
  314. }
  315.  
  316. /* INFO BOX */
  317. .info-box {
  318.  background-color: #ffffff;
  319.  border-radius: 8px;
  320.  padding: 20px;
  321.  margin-top: 20px;
  322.  margin-bottom: 20px;
  323. }
  324.  
  325. .info-box h2 {
  326.  font-size: 1.4rem;
  327.  margin-bottom: 10px;
  328.  color: #333333;
  329. }
  330.  
  331. .info-box h2 span {
  332.  color: #3aafa9;
  333. }
  334.  
  335. .info-box p {
  336.  font-size: 1.1rem;
  337.  line-height: 1.8;
  338.  color: #555555;
  339. }
  340.  
  341. .info-box strong {
  342.  color: #3aafa9;
  343.  font-size: 500;
  344. }
  345.  
  346. /* List Styles */
  347. .info-box ul,
  348. .info-box ol {
  349.  margin: 20px 0;
  350.  padding-left: 1.5rem;
  351.  line-height: 1.5;
  352. }
  353.  
  354. .info-box ul {
  355.  list-style-type: disc;
  356. }
  357.  
  358. .info-box ol {
  359.  list-style-type: decimal;
  360. }
  361.  
  362. .info-box li {
  363.  margin-bottom: 6px;
  364.  color: #555555;
  365. }
  366.  
  367. .hide-shadow-effect-end{
  368.    position: relative;
  369.    z-index: 500;
  370.    width: 100%;
  371.    height: 100px;
  372.    background: #fff;
  373.    margin-top: -10px;
  374.    margin-bottom: -80px;
  375. }</style>
  376.    <link rel="stylesheet"
  377.        href="https://airbtics-wordpress-market-assets.s3.us-east-2.amazonaws.com/header_v2_styles.css">
  378.    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css"
  379.        integrity="sha512-Kc323vGBEqzTmouAECnVceyQqyqdsSiqLQISBL29aUW4U/M7pSPA/gEUZQqv1cwx4OnYxTxve5UMg5GT6L4JJg=="
  380.        crossorigin="anonymous" referrerpolicy="no-referrer" >
  381.    <link rel="stylesheet"
  382.        href="https://airbtics-wordpress-market-assets.s3.us-east-2.amazonaws.com/footer-style-nav-p-seo.css">
  383.    <style>
  384.        a {
  385.            color: #1c8386;
  386.        }
  387.    </style>
  388. </head>
  389.  
  390. <body>
  391.    <!-- Header -->
  392.    <!-- <link rel="stylesheet" href="header_landing.css"> -->
  393. <!-- <link rel=stylesheet href=https://airbtics-wordpress-market-assets.s3.us-east-2.amazonaws.com/header_v2_styles.css> -->
  394.  
  395. <style>.dropdown-grid ul {
  396.  list-style: none;
  397.  margin: 0;
  398.  padding: 0;
  399. }
  400.  
  401. .dropdown-grid a {
  402.  text-decoration: none;
  403.  color: inherit;
  404. }
  405.  
  406. .dropdown-grid {
  407.  display: none;
  408.  position: absolute;
  409.  top: 0;
  410.  left: 0;
  411.  transform: translateX(-50%);
  412.  background: #fff;
  413.  border-radius: 16px;
  414.  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
  415.  width: max-content;
  416.  min-width: 240px;
  417.  padding: 1rem;
  418.  z-index: 999999 !important;
  419.  /* display: flex; */
  420.  flex-direction: column;
  421.  gap: 0.5rem;
  422. }
  423.  
  424. .resource-card {
  425.  display: flex;
  426.  align-items: center;
  427.  gap: 0.75rem;
  428.  padding: 0.75rem 1rem;
  429.  border-radius: 12px;
  430.  transition: background 0.2s;
  431.  cursor: pointer;
  432. }
  433.  
  434. .resource-card:hover {
  435.  background: #d2d7d5;
  436. }
  437.  
  438. .resource-card .icon {
  439.  background: #e6fbf6;
  440.  color: #3aafa9;
  441.  font-size: 1.1rem;
  442.  border-radius: 8px;
  443.  padding: 0.5rem;
  444.  display: flex;
  445.  align-items: center;
  446.  justify-content: center;
  447.  min-width: 36px;
  448.  min-height: 36px;
  449. }
  450.  
  451. .resource-card .content h4 {
  452.  font-size: 0.95rem;
  453.  font-weight: 600;
  454.  margin: 0;
  455.  color: #1a1a1a;
  456. }
  457.  
  458. .btn {
  459.  display: none; /* hidden since it's just a label now */
  460. }
  461.  
  462.  
  463. .btn i {
  464.  font-size: 0.85rem;
  465. }
  466.  
  467. /* Responsive Layout */
  468. @media (max-width: 768px) {
  469.  .dropdown-grid {
  470.    grid-template-columns: 1fr 1fr;
  471.    padding: 1.5rem;
  472.  }
  473. }
  474.  
  475. @media (max-width: 480px) {
  476.  .dropdown-grid {
  477.    grid-template-columns: 1fr;
  478.    padding: 1rem;
  479.  }
  480.  
  481.  .resource-card {
  482.    flex-direction: column;
  483.    align-items: flex-start;
  484.  }
  485.  
  486.  .icon {
  487.    margin-bottom: 0.5rem;
  488.  }
  489. }
  490.  
  491. @media (max-width: 768px) {
  492.  .dropdown-grid {
  493.    top: 30px !important;
  494.    left: auto !important;
  495.    right: 10px !important;
  496.    transform: none !important;
  497.  
  498.    width: 90vw;
  499.    min-width: unset;
  500.    max-width: unset;
  501.    padding: 1.25rem 1rem;
  502.    border-radius: 12px;
  503.    grid-template-columns: 1fr;
  504.  
  505.    max-width: 280px;
  506.  }
  507.  
  508.  .dropdown-close {
  509.    display: block;
  510.  }
  511.  
  512.  .resource-card {
  513.    display: flex;
  514.    flex-direction: row;
  515.    align-items: center;
  516.  }
  517.  
  518.  .icon {
  519.    margin-bottom: 0;
  520.  }
  521. }
  522.  
  523. .mobile-menu #resources-link {
  524.  color: #007888;
  525. }
  526.  
  527. .get-started-btn {
  528.  margin-right: -15px !important;
  529.  padding: 10px 20px;
  530.  background: var(--primary-color);
  531.  color: #fff;
  532.  border: 2px solid var(--primary-color);
  533.  border-radius: 12px;
  534.  cursor: pointer;
  535.  font-size: 16px;
  536.  font-weight: bold;
  537.  transition: all 0.3s ease;
  538. }
  539.  
  540. .get-started-btn:hover {
  541.  background: #fff;
  542.  color: var(--primary-color);
  543. }
  544.  
  545. .close-btn--menu{
  546.  position: absolute;
  547.  top: 10px;
  548.  right: 10px;
  549.  cursor: pointer;
  550. }
  551. </style>
  552.  
  553. <header>
  554.    <div class="header-container">
  555.        <div class="logo">
  556.            <a href="/">
  557.                <img src="https://airbtics.com/wp-content/uploads/2023/09/logo.webp" alt="Airbtics Logo">
  558.            </a>
  559.        </div>
  560.        <nav class="nav-links">
  561.            <ul>
  562.                <li><a href="/" referrerpolicy="no-referrer-when-downgrade" rel="noopener">Home</a></li>
  563.                <li><a href="/product-pricing" referrerpolicy="no-referrer-when-downgrade" rel="noopener">Pricing</a>
  564.                </li>
  565.                <li><a id="resources-link" href="" referrerpolicy="no-referrer-when-downgrade" rel="noopener">Resources</a>
  566.                </li>
  567.                <li><a href="/support" referrerpolicy="no-referrer-when-downgrade" rel="noopener">Support</a></li>
  568.            </ul>
  569.        </nav>
  570.        <div class="auth">
  571.            <a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade" href='https://app.airbtics.com/'
  572.                id="loggin-button">Sign
  573.                In</a>
  574.            <a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  575.                href='https://app.airbtics.com/'><button class="get-started-btn">Get Started</button></a>
  576.        </div>
  577.        <div class="hamburger-menu">
  578.            <span></span>
  579.            <span></span>
  580.            <span></span>
  581.        </div>
  582.    </div>
  583. </header>
  584. <div class="mobile-menu">
  585.    <div class="close-btn--menu"><i class="fa-solid fa-xmark"></i></div>
  586.    <nav>
  587.        <ul>
  588.            <li><a href="/" referrerpolicy="no-referrer-when-downgrade" rel="noopener">Home</a></li>
  589.            <li><a href="/product-pricing" referrerpolicy="no-referrer-when-downgrade" rel="noopener">Pricing</a>
  590.            </li>
  591.            <li><a id="resources-link" href="" referrerpolicy="no-referrer-when-downgrade" rel="noopener">Resources</a>
  592.            </li>
  593.            <li><a href="/support" referrerpolicy="no-referrer-when-downgrade" rel="noopener">Support</a></li>
  594.        </ul>
  595.        <div class="auth">
  596.            <a rel="noopener" referrerpolicy="no-referrer-when-downgrade" href='https://app.airbtics.com/'
  597.                id="loggin-button-mobile" style="color: #3AAFA9">Sign
  598.                In</a>
  599.            <a rel="noopener" referrerpolicy="no-referrer-when-downgrade" href='https://app.airbtics.com/'><button
  600.                    class="get-started-btn">Get Started</button></a>
  601.        </div>
  602.    </nav>
  603. </div>
  604.  
  605. <script>
  606.    const closeBtn = document.querySelector('.close-btn--menu');
  607.    closeBtn.addEventListener('click', () => {
  608.        document.querySelector('.mobile-menu').classList.remove('active');
  609.        document.querySelector('.hamburger-menu').classList.remove('active');
  610.        document.querySelector('.mobile-menu .hamburger-menu').classList.remove('active');
  611.    });
  612. </script>
  613.  
  614. <script>function attachDropdown({ trigger, items }) {
  615.  const triggerEls = document.querySelectorAll(trigger);
  616.  if (!triggerEls.length) {
  617.    console.warn(`[Dropdown] Trigger(s) not found: ${trigger}`);
  618.    return;
  619.  }
  620.  
  621.  const dropdownEl = createDropdown(items);
  622.  document.body.appendChild(dropdownEl);
  623.  
  624.  let isOpen = false;
  625.  let activeTriggerEl = null;
  626.  
  627.  function showDropdown(triggerEl) {
  628.    const rect = triggerEl.getBoundingClientRect();
  629.    const dropdownWidth = 600;
  630.    const padding = 16;
  631.  
  632.    let left = window.scrollX + rect.left + rect.width / 2;
  633.    let transform = "translateX(-50%)";
  634.  
  635.    const potentialLeftEdge = left - dropdownWidth / 2;
  636.    const potentialRightEdge = left + dropdownWidth / 2;
  637.  
  638.    if (potentialLeftEdge < padding) {
  639.      left = window.scrollX + rect.left;
  640.      transform = "translateX(0)";
  641.    } else if (potentialRightEdge > window.innerWidth - padding) {
  642.      left = window.scrollX + rect.right;
  643.      transform = "translateX(-100%)";
  644.    }
  645.  
  646.    dropdownEl.style.display = "grid";
  647.    dropdownEl.style.position = "absolute";
  648.  
  649.    // Disable pointer events momentarily
  650.    // dropdownEl.style.pointerEvents = 'none';
  651.  
  652.    //   // Wait a bit before allowing clicks
  653.    // setTimeout(() => {
  654.    //     dropdownEl.style.pointerEvents = 'auto';
  655.    // }, 200);
  656.  
  657.    if (window.innerWidth > 768) {
  658.      dropdownEl.style.top = `${window.scrollY + rect.bottom + 8}px`;
  659.      dropdownEl.style.left = `${left}px`;
  660.      dropdownEl.style.transform = transform;
  661.    }
  662.  
  663.    isOpen = true;
  664.    activeTriggerEl = triggerEl;
  665.  }
  666.  
  667.  function hideDropdown() {
  668.    dropdownEl.style.display = "none";
  669.    isOpen = false;
  670.    activeTriggerEl = null;
  671.  }
  672.  
  673.  function toggleDropdown(e, triggerEl) {
  674.    e.preventDefault();
  675.    if (isOpen && activeTriggerEl === triggerEl) {
  676.      hideDropdown();
  677.    } else {
  678.      showDropdown(triggerEl);
  679.    }
  680.  }
  681.  
  682.  function handleOutsideClick(e) {
  683.    if (
  684.      !dropdownEl.contains(e.target) &&
  685.      !Array.from(triggerEls).includes(e.target)
  686.    ) {
  687.      hideDropdown();
  688.    }
  689.  }
  690.  
  691.  function addEventListeners(triggerEl) {
  692.    const isTouchDevice = window.matchMedia("(pointer: coarse)").matches;
  693.  
  694.    if (isTouchDevice) {
  695.      triggerEl.addEventListener("click", (e) => {
  696.        e.preventDefault();
  697.        e.stopPropagation();
  698.        toggleDropdown(e, triggerEl);
  699.      });
  700.    } else {
  701.      triggerEl.addEventListener("mouseenter", () => showDropdown(triggerEl));
  702.      triggerEl.addEventListener("mouseleave", () => {
  703.        setTimeout(() => {
  704.          if (!isOpen || activeTriggerEl !== triggerEl) {
  705.            hideDropdown();
  706.          }
  707.        }, 200);
  708.      });
  709.      triggerEl.addEventListener("click", (e) => {
  710.        e.preventDefault();
  711.      });
  712.    }
  713.  }
  714.  
  715.  triggerEls.forEach(addEventListeners);
  716.  
  717.  dropdownEl.addEventListener("mouseenter", () => (isOpen = true));
  718.  dropdownEl.addEventListener("mouseleave", hideDropdown);
  719.  document.addEventListener("click", handleOutsideClick);
  720. }
  721.  
  722. function createDropdown(items = []) {
  723.  const dropdown = document.createElement("div");
  724.  dropdown.className = "dropdown-grid";
  725.  dropdown.style.zIndex = "1000";
  726.  
  727.  items.forEach((item) => {
  728.    const card = createCard(item);
  729.    dropdown.appendChild(card);
  730.  });
  731.  
  732.  return dropdown;
  733. }
  734.  
  735. function createCard({ icon, title, href }) {
  736.  const card = document.createElement("div");
  737.  card.className = "resource-card";
  738.  card.style.cursor = "pointer";
  739.  
  740.  card.innerHTML = `
  741.      <div class="icon">
  742.        <i class="fas ${icon}"></i>
  743.      </div>
  744.      <div class="content">
  745.        <h4>${title}</h4>
  746.        <a href="${href}" class="btn" target="_blank" rel="noopener noreferrer">
  747.          Know more <i class="fas fa-up-right-from-square"></i>
  748.        </a>
  749.      </div>
  750.    `;
  751.  
  752.  card.addEventListener("click", () => {
  753.    window.open(href, "_blank");
  754.  });
  755.  
  756.  return card;
  757. }
  758. </script>
  759.  
  760.  
  761.  
  762. <!-- <script src="header_landing.js"></script> -->
  763.    <script>
  764.        document.addEventListener('DOMContentLoaded', () => {
  765.            attachDropdown({
  766.                trigger: '#resources-link',
  767.                items: [
  768.                    { icon: 'fa-chart-line', title: 'Top Airbnb Markets', href: 'https://airbtics.com/best-airbnb-markets' },
  769.                    { icon: 'fa-building', title: 'Top Airbnb Management Companies', href: 'https://airbtics.com/top-airbnb-management-companies-in-united-states' },
  770.                    { icon: 'fa-globe', title: 'Occupancy Rates by Country', href: 'https://airbtics.com/airbnb-occupancy-rate' },
  771.                    { icon: 'fa-folder-open', title: 'Case Studies', href: 'https://airbtics.com/real-user-case-studies/' },
  772.                    { icon: 'fa-heart', title: 'Wall of Love', href: 'https://airbtics.com/wall-of-love' }
  773.                ]
  774.            });
  775.        });
  776.    </script>
  777.    
  778.  
  779.    <!-- Search Results -->
  780.    <div id="search-result-container">
  781.    </div>
  782.  
  783.    <div class="mobile-menu">
  784.        <nav>
  785.            <ul>
  786.                <li><a target="_blank" rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  787.                        href="/product-pricing">Pricing</a></li>
  788.                <li><a target="_blank" rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  789.                        href="">Resources</a></li>
  790.                <li><a target="_blank" rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  791.                        href="/support">Support</a></li>
  792.                <div class="mobile-menu-button-container">
  793.                    <div><a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  794.                            href='https://app.airbtics.com/airbnb-calculator/'><button class="auth-button"><i
  795.                                    class="fa-solid fa-calculator"></i> Calculator</button></a></div>
  796.                    <div><a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  797.                            href='https://app.airbtics.com/'><button class="auth-button auth-button-filled">Get
  798.                                Started</button></a></div>
  799.                </div>
  800.            </ul>
  801.        </nav>
  802.    </div>
  803.    <!-- Main Body -->
  804.    <main>
  805.  
  806.        <!-- Hero Section Start -->
  807.        <div class="container hero-section">
  808.            <div class="vrm-summary">
  809.                <!-- <div class="vrm-image"
  810.                    style="background-image:'');"> -->
  811.                <!-- </div> -->
  812.                <div class="vrm-info">
  813.                    <h1 style="font-size: 1.7rem; margin-bottom: 5px;">Ideal Homes Reviews - Airbnb Property Manager Performance & Revenue</h1>
  814.                    <p>Portugal · Albufeira & 1+ markets · 100 short-term rentals</p>
  815.                    <p><a target='_blank' rel='noopener noreferrer' href='https://www.idealhomesportugal.com/'>Ideal Homes <i class="fa-solid fa-arrow-up-right-from-square" style="font-size: 16px;"></i></a></p>
  816.                </div>
  817.                <div class="vrm-cta">
  818.                    <a href="https://app.airbtics.com/airbnb-data/0/0/albufeira, portugal" target="_blank" rel="noopener noreferrer">
  819.                        <button>View Ideal Homes Statistics for Free</button>
  820.                    </a>
  821.                </div>
  822.            </div>
  823.        </div>
  824.        <!-- Hero Section End -->
  825.  
  826.        <div class="container">
  827.            <div class="info-box">
  828.                <p>
  829.                    Looking for a reliable Airbnb management company to maximize your short-term rental revenue?
  830.                    <strong>Ideal Homes</strong> specializes in managing vacation rentals and holiday homes, offering
  831.                    seamless property management services. With a competitive commission structure and expert
  832.                    handling of bookings, guest communication, and pricing optimization,
  833.                    <strong>Ideal Homes</strong> helps property owners increase their occupancy rates and revenue.
  834.                </p>
  835.            </div>
  836.  
  837.            <div class="info-box">
  838.                <h2>How does Ideal Homes compare to the average Albufeira Airbnb host?</h2>
  839.                <p>
  840.                    How does <strong>Ideal Homes</strong> compare to other Airbnb Hosts? Our data-driven analysis
  841.                    covers average
  842.                    daily rate (ADR), occupancy rate, revenue per listing, and guest reviews to help you make an
  843.                    informed decision. Whether you're a property owner or investor, find out if
  844.                    <strong>Ideal Homes</strong> is the best
  845.                    choice for your short-term rental business.
  846.                </p>
  847.            </div>
  848.        </div>
  849.  
  850.        <div class="container">
  851.            <div class="card-kpi-conatiner">
  852.                
  853.            <div class="card-kpi" style="background: inherit;">
  854.                <div class="card-kpi-heading">
  855.                    Average Occupancy Rate
  856.                </div>
  857.                <div class="card-kpi-body" style="color: #3AAFA9">
  858.                    74%
  859.                </div>
  860.                
  861.            </div>
  862.  
  863.        
  864.            <div class="card-kpi" style="background: inherit;">
  865.                <div class="card-kpi-heading">
  866.                    Average Daily Rate
  867.                </div>
  868.                <div class="card-kpi-body" style="color: #FF3686">
  869.                    €120
  870.                </div>
  871.                
  872.            </div>
  873.  
  874.        
  875.            <div class="card-kpi" style="background: inherit;">
  876.                <div class="card-kpi-heading">
  877.                    Average Revenue
  878.                </div>
  879.                <div class="card-kpi-body" style="color: #FF6F1A">
  880.                    €16,782
  881.                </div>
  882.                
  883.            </div>
  884.  
  885.        
  886.            <div class="card-kpi" style="background: inherit;">
  887.                <div class="card-kpi-heading">
  888.                    Total Listings
  889.                </div>
  890.                <div class="card-kpi-body" style="color: #3AAFA9">
  891.                    100
  892.                </div>
  893.                
  894.        <div class="card-kpi-badge" style="background-color: #00CC0022; color: #00CC00;">YoY Change: 49.25%</div>
  895.    
  896.            </div>
  897.  
  898.        
  899.            </div>
  900.        </div>
  901.  
  902.        <div class="container">
  903.            <div class="info-box" style="background: #fff0">
  904.                <h2>Ideal Homes’s Growth: <strong>49.25% More</strong> in Listings YoY</h2>
  905.                <p>Over the last 12 months, Ideal Homes has increased its listing count by 49.25%. This expansion indicates
  906.                    growing demand and a strong market presence. 🏖️</p>
  907.            </div>
  908.        </div>
  909.  
  910.        <div class="container">
  911.            <div class="info-box" style="background: #fff0; margin-bottom: 0;">
  912.                <h2>Ideal Homes’s top reviews by guests</h2>
  913.            </div>
  914.        </div>
  915.        <div class="container">
  916.            <div class="reviews-grid">
  917.                
  918.                <div class="review-card">                    
  919.                    <div class="review-stars">★★★★★</div>
  920.                    <div class="review-text">
  921.                        The apartment is very nice and clean. You can walk to the beach in less than 5 minutes. To Lagos centre you need around 20 minutes by foot. We would absolutely recommend this Airbnb and always choose it again when back in town. Special thanks to Cristina for your great communication during the entire stay!
  922.                    </div>
  923.                </div>
  924.        
  925.                <div class="review-card">                    
  926.                    <div class="review-stars">★★★★★</div>
  927.                    <div class="review-text">
  928.                        Everything we wanted and more!
  929.                    </div>
  930.                </div>
  931.        
  932.                <div class="review-card">                    
  933.                    <div class="review-stars">★★★★★</div>
  934.                    <div class="review-text">
  935.                        Super sejour!
  936.                    </div>
  937.                </div>
  938.        
  939.                <div class="review-card">                    
  940.                    <div class="review-stars">★★★★★</div>
  941.                    <div class="review-text">
  942.                        WOW! What an amazing little gem. <br/>My mother and I stayed for a week and couldn’t be happier with this place.<br/>Perfect  location - 5 /10 ish minutes stroll to the beach and about 20 into town/supermarkets.<br/>GORGEOUS  pool area etc with absolutely stunning views.<br/>The view from the balcony is  just amazing and made waking up so wholesome.  Eventhough it’s winter we still got morning sun every morning as the sunrises right infront of the apartment. We thoroughly enjoyed breakfast and sunsets on the balcony every day and night.<br/>It felt like a lovely, safe and quiet area of town.<br/>The apartment itself was fresh and absolutely spotless, stunning kitchen and everything you would need, big comfy bed and plenty of wardrobe space, light and airy bathroom with an amazing mirror and hot shower.<br/>Cristina was incredibly helpful and assisted us with a later check in and help getting from faro airport to Lagos.<br/>10/10!<br/>We would definitely definitely stay here again and I shal be telling all! :)
  943.                    </div>
  944.                </div>
  945.        
  946.                <div class="review-card">                    
  947.                    <div class="review-stars">★★★★★</div>
  948.                    <div class="review-text">
  949.                        We can’t say enough about this condo. It was incredible. Super clean. Sun through the windows every day. Huge deck on the front and the back. Great little gym, indoor and outdoor pool and sauna. The hosts were some of the sweetest people we ever met. We loved the place so much that we extended our stay 2 days. We simply can say enough about this rental.
  950.                    </div>
  951.                </div>
  952.        <br><br>
  953.            </div>
  954.        </div>
  955.  
  956.  
  957.        <div class="container">            
  958.            <div class="info-box" style="background: #fff0; margin-bottom: 0;">
  959.                <h2 style="margin-bottom: 0;">Top 5 Ideal Homes’s alternatives and competitors</h2>
  960.            </div><div class="competitors">
  961. <ul>
  962.   <li><a href="https://airbtics.com/airbnb-management-companies/ideal-homes-123658009" target="_blank">HelloVacations <i class="fa-solid fa-arrow-up-right-from-square"></i></a></li>
  963.  <li><a href="https://airbtics.com/airbnb-management-companies/ideal-homes-183494775" target="_blank">CerroNovo <i class="fa-solid fa-arrow-up-right-from-square"></i></a></li>
  964.  <li><a href="https://airbtics.com/airbnb-management-companies/ideal-homes-88864577" target="_blank">Sunny Deluxe <i class="fa-solid fa-arrow-up-right-from-square"></i></a></li>
  965.  <li><a href="https://airbtics.com/airbnb-management-companies/ideal-homes-9583228" target="_blank">DreamPlaces -Holiday Rentals <i class="fa-solid fa-arrow-up-right-from-square"></i></a></li>
  966.  <li><a href="https://airbtics.com/airbnb-management-companies/ideal-homes-9720319" target="_blank">Hd Properties <i class="fa-solid fa-arrow-up-right-from-square"></i></a></li>
  967. </ul>
  968. </div>
  969.        </div>
  970.  
  971.        <div class="container">
  972.            <div class="cta">
  973.                <a href="https://app.airbtics.com/airbnb-data/0/0/albufeira, portugal" target="_blank">See the full comparison</a>
  974.            </div>
  975.        </div>
  976.  
  977.    </main>
  978.  
  979.    <div class="hide-shadow-effect-end"></div>
  980.  
  981.    <!-- Footer -->
  982.    <style>@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap'); *{ margin: 0; padding: 0; font-family: 'Inter', sans-serif; } footer { position: relative; margin-top: 100px; padding-bottom: 0; } .footer-top-background{ position: absolute; background-color: #e2fbff; width: 100%; height: 200px; top: 150px; z-index: -1; } .footer-top { position: relative; display: flex; justify-content: center; align-items: center; padding: 64px 54px; background-color: #093136; color: white; margin-left: auto; margin-right: auto; border-radius: 32px; max-width: 1140px; overflow: hidden; } .footer-top::before{ content: ""; position: absolute; background-color: #5cb0ff; width: 262px; height: 262px; top: -165px; left: -52px; border-radius: 262.625px; opacity: .4; filter: blur(128.5625px); z-index: 1; } .footer-top::after{ content: ""; position: absolute; background-color: #5cb0ff; width: 262px; height: 262px; border-radius: 262.625px; opacity: .4; filter: blur(128.5625px); bottom: -54px; right: -115px; z-index: 1; } .footer-left{ width: 58%; } .footer-right{ width: 42%; display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 15px; } .footer-top-sub-heading { color: #cecece; font-family: inter, Lato; font-size: 18px; font-weight: 500; line-height: 18px; letter-spacing: -0.36px; margin-bottom: 12px; } .footer-top-heading { font-size: 32px; line-height: 30px; margin-bottom: 20px; color: #fafeff; font-weight: 600; } .footer-top-description{ color: #cecece; font-size: 18px; font-weight: 500; line-height: 28.8px; } .get-started { padding: 20px 30px; margin-top: 20px; background-color: #0098ab; border: none; color: white; cursor: pointer; font-size: 22px; font-weight: 500; border-radius: 12px; display: flex; gap: 22px; align-items: center; text-decoration: none; } .footer-bottom { display: flex; flex-wrap: wrap; justify-content: center; padding: 40px 20px; padding-top: 80px; padding-bottom: 40px; background-color: #e2fbff; margin-top: -20px; } .footer-column { flex: 1; min-width: 200px; margin: 10px; } .footer-column h3 { font-size: 1.2em; margin-bottom: 20px; color: #121212; } .footer-column ul { list-style: none; padding: 0; } .footer-column ul li { margin: 5px 0 10px 0; padding-bottom: 10px; display: flex; gap: 10px; } .footer-column ul li a { text-decoration: none; color: #5a5a5a; font-weight: 500; transition: color 0.25s ease; } .footer-column ul li a:hover { color: #0098ab; } .footer-logo img { width: 100%; max-width: 164px; margin-bottom: 24px; } .customer-rep p, .customer-rep a { margin: 5px 0; } .social-icons a img { width: 20px; margin: 0 5px; } .footer-bottom-bar { display: flex; justify-content: space-between; padding: 40px 34px; background-color: #093136; color: white; font-size: 16px; gap: 20px; } .footer-links{ display: flex; align-items: center; justify-content: space-between; gap: 10px; } .footer-links a, .footer-links div { color: white; text-decoration: none; } .footer-links a:hover { text-decoration: underline; } .footer-content-container{ /* padding: 50px 60px 80px; */ display: flex; font-size: 16px; /* flex-wrap: wrap; */ } .footer-content-left-row{ display: flex; flex-wrap: wrap; flex: 2; } .footer-content-right-row{ flex: 1; } .footer-content-left-text-group{ max-width: 300px; padding-right: 20px; } .footer-content-left-text-group p { padding-right: 50px; color: #121212; font-size: 16px; font-weight: 400; line-height: 25.6px; } .footer-content-left-text-group h6 { color: #121212; font-size: 20px; font-weight: 600; text-transform: none; line-height: 28px; letter-spacing: -0.4px; margin-bottom: 10px; } .footer-content-left-text-group a{ color: #0098ab; margin-top: 10px; margin-bottom: 20px; } .social-icons{ display: flex; gap: 10px; } .social-icons .fab { height: 26px; width: 26px; color: #121212; font-size: 20px; } .social-icons .fab:hover { color: #0098ab; } .review-foolter-button{ background: #fffc; padding: 10px 15px; border-radius: 8px; } @media only screen and (max-width: 1170px){ .footer-content-container{ flex-wrap: wrap; } .footer-content-left-text-group{ width: 100%; max-width: 100%; width: 100%; margin-bottom: 40px; } } @media only screen and (max-width: 1024px) { .footer-top { flex-direction: column; padding: 40px; max-width: 700px; } .footer-content-container{ padding: 0; } .footer-left, .footer-right { width: 100%; justify-content: flex-start; } .footer-right { align-items: flex-start; } .footer-right button { padding: 15px 30px; } .footer-bottom-bar{ flex-direction: column; padding: 20px; gap: 10px; } .footer-links{ margin-top: 20px; justify-content: flex-start; } } @media only screen and (max-width: 600px) { .footer-top-sub-heading { font-size: 16px; } .footer-top-heading { font-size: 28px; } .footer-top-description{ font-size: 16px; } .get-started { font-size: 20px; } }</style>
  983.  
  984. <footer>
  985.    <div class="footer-top-background"></div>
  986.    <div class="footer-top">
  987.        <div class="footer-left">
  988.            <div class="footer-top-sub-heading">Accurate – Actionable – Customizable</div>
  989.            <h3 class="footer-top-heading">Airbnb Data At Your Fingertips!</h3>
  990.            <div class="footer-top-description">Achieve vacation rental market success with custom market analysis,
  991.                dynamic data, and a 3-year historical dataset at daily granularity. Ideal for Airbnb hosts,
  992.                investors, and vacation rental managers.</div>
  993.        </div>
  994.        <div class="footer-right">
  995.            <a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade" href='https://app.airbtics.com/'
  996.                style="text-decoration: none;">
  997.                <button class="get-started">
  998.                    <span>
  999.                        Get Started
  1000.                    </span>
  1001.                    <span>
  1002.                        <svg xmlns="http://www.w3.org/2000/svg" width="6" height="12" viewBox="0 0 6 12"
  1003.                            fill="none">
  1004.                            <path d="M1 1.33341L5 6.00008L1 10.6667" stroke="#C6F8FF" stroke-width="1.5"
  1005.                                stroke-linecap="round" stroke-linejoin="round"></path>
  1006.                        </svg>
  1007.                    </span>
  1008.                </button>
  1009.            </a>
  1010.        </div>
  1011.    </div>
  1012.  
  1013.    <div class="footer-bottom">
  1014.        <div class="footer-content-container">
  1015.            <div class="footer-content-left">
  1016.                <div class="footer-content-left-row">
  1017.                    <div class="footer-logo footer-content-left-text-group">
  1018.                        <a rel="noopener" referrerpolicy="no-referrer-when-downgrade" href="https://airbtics.com/">
  1019.                            <img src="https://airbtics.com/wp-content/uploads/2023/09/logo.webp"
  1020.                                alt="Airbtics Logo">
  1021.                        </a>
  1022.                        <p>We harness the power of data to empower short-term rental investors and operators to make
  1023.                            a
  1024.                            smarter decision</p>
  1025.                    </div>
  1026.  
  1027.                    <div class="footer-column">
  1028.                        <h3>Get Started</h3>
  1029.                        <ul>
  1030.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1031.                                    href="https://airbtics.com/">Go to App</a></li>
  1032.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1033.                                    href="https://www.youtube.com/playlist?list=PLHjxhf98eA2fPeIL4naEPp6BgYFMk5fRd">Onboarding Guides</a></li>
  1034.                        </ul>
  1035.                    </div>
  1036.  
  1037.                    <div class="footer-column">
  1038.                        <h3>Support</h3>
  1039.                        <ul>
  1040.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1041.                                    href="https://airbtics.com/product-pricing/">Pricing</a></li>
  1042.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1043.                                    href="https://airbtics.com/tutorials/">Tutorials</a></li>
  1044.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1045.                                    href="https://airbtics.com/support/faqs/">FAQs</a></li>
  1046.                            <li><a rel="noopener nofollow" " referrerpolicy=" no-referrer-when-downgrade" href="/cdn-cgi/l/email-protection#0d7e787d7d627f794d6c647f6f79646e7e236e6260">Email us</a></li>
  1047.                        </ul>
  1048.                    </div>
  1049.  
  1050.                </div>
  1051.  
  1052.                <div class="footer-content-left-row">
  1053.                    <div class="customer-rep footer-content-left-text-group">
  1054.                        <h6>Our Customer Representative</h6>
  1055.                        <a rel="noopener nofollow" " referrerpolicy=" no-referrer-when-downgrade" href="/cdn-cgi/l/email-protection#bfd2decdd6ccccdeffded6cdddcbd6dccc91dcd0d2"><span class="__cf_email__" data-cfemail="b4d9d5c6ddc7c7d5f4d5ddc6d6c0ddd7c79ad7dbd9">[email&#160;protected]</span></a>
  1056.                        <p style="margin-top: 20px; margin-bottom: 10px;"><b>Availability:</b> 8 AM – 5 PM Singapore
  1057.                            Time</p>
  1058.                        <div class="social-icons">
  1059.                            <a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  1060.                                href="https://www.facebook.com/airbtics/" target="_blank"><i
  1061.                                    class="fab fa-facebook"></i></a>
  1062.                            <a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  1063.                                href="https://x.com/airbtics" target="_blank"><i class="fab fa-twitter"></i></a>
  1064.                            <a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  1065.                                href="https://www.linkedin.com/company/airbtics/" target="_blank"><i
  1066.                                    class="fab fa-linkedin"></i></a>
  1067.                            <a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  1068.                                href="https://www.instagram.com/airbtics_/"><i class="fab fa-instagram"></i></a>
  1069.                        </div>
  1070.                    </div>
  1071.  
  1072.                    <div class="footer-column">
  1073.                        <h3>Solutions</h3>
  1074.                        <ul>
  1075.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1076.                                    href="https://airbtics.com/airbnb-income-calculator/">Airbnb Calculator</a></li>
  1077.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1078.                                    href="https://airbtics.com/vrbo-calculator/">VRBO Calculator</a></li>
  1079.                            <li><a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  1080.                                    href='https://app.airbtics.com/'>Airbnb Analyzer</a></li>
  1081.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1082.                                    href="https://airbtics.com/airbnb-data/" target="_blank">Custom Data Request</a>
  1083.                            </li>
  1084.                            <li><a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  1085.                                    href="https://rapidapi.com/airbtics-airbtics-default/api/airbnb-income-prediction/"
  1086.                                    target="_blank">API</a></li>
  1087.                        </ul>
  1088.                    </div>
  1089.  
  1090.                    <div class="footer-column">
  1091.                        <h3>About Airbtics</h3>
  1092.                        <ul>
  1093.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1094.                                    href="https://airbtics.notion.site/Airbtics-Data-Accuracy-1f2c154c9308802fa759f22d2556068d?pvs=74">Airbtics Data Accuracy</a></li>
  1095.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1096.                                    href="https://airbtics.notion.site/roi-of-airbtics">ROI of Airbtics</a></li>
  1097.                            <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1098.                                href="https://www.linkedin.com/company/airbtics/jobs">Careers</a></li>
  1099.                        </ul>
  1100.                    </div>
  1101.                </div>
  1102.            </div>
  1103.  
  1104.            <div class="footer-content-right">
  1105.                <div class="footer-column">
  1106.                    <h3>Resources</h3>
  1107.                    <ul>                        
  1108.                        <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1109.                                href="https://airbtics.com/best-airbnb-markets/">Top Airbnb
  1110.                                Markets</a>
  1111.                        </li>
  1112.                        <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1113.                                href="https://airbtics.com/top-airbnb-management-companies-in-united-states">Top Airbnb Management Companies</a></li>
  1114.                        <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1115.                                href="https://airbtics.com/airbnb-occupancy-rate/">Airbnb Occupancy Rates by Country</a></li>
  1116.                        <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1117.                                href="https://airbtics.com/real-user-case-studies/">Case Studies</a></li>
  1118.                        <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1119.                                href="https://airbtics.com/wall-of-love/">Wall of Love</a></li>
  1120.                        <li><a rel="noopener" referrerpolicy="no-referrer-when-downgrade"
  1121.                                href="https://airbtics.com/resources/podcasts/">Podcasts</a></li>                      
  1122.                    </ul>
  1123.                </div>
  1124.            </div>
  1125.        </div>
  1126.  
  1127.    </div>
  1128.    <div class="footer-bottom-bar">
  1129.        <p>© 2025 Airbtics, LLC. All rights reserved. Airbtics is a trademark of Airbtics, LLC.</p>
  1130.        <div class="footer-links">
  1131.            <a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  1132.                href="https://airbtics.com/privacy-policy/">Privacy Policy</a>
  1133.            <div>|</div>
  1134.            <a rel="noopener nofollow" referrerpolicy="no-referrer-when-downgrade"
  1135.                href="https://airbtics.com/privacy-policy/terms-of-service/">Terms of Service</a>
  1136.        </div>
  1137.    </div>
  1138. </footer>
  1139.  
  1140.  
  1141.  
  1142.    <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/pako/2.0.4/pako.min.js"></script>
  1143.    <script type="text/javascript">
  1144.        function handleNavbarMobileToggle() {
  1145.            const hamburgerMenu = document.querySelector('.hamburger-menu');
  1146.            const helpButton = document.querySelector('.help-button');
  1147.            const mobileMenu = document.querySelector('.mobile-menu');
  1148.  
  1149.            function addMenuToggle(e) {
  1150.                let left = Math.min(e.clientX - 40, window.innerWidth - 300);
  1151.                mobileMenu.style.left = left + 'px';
  1152.                mobileMenu.classList.toggle('active');
  1153.                hamburgerMenu.classList.toggle('active');
  1154.            }
  1155.  
  1156.            hamburgerMenu.addEventListener('click', addMenuToggle);
  1157.            helpButton.addEventListener('click', addMenuToggle);
  1158.        }
  1159.  
  1160.        function addIconBeforeLinksToFooter() {
  1161.            const footerColumnLinks = document.querySelectorAll('.footer-column li a');
  1162.  
  1163.            const span = document.createElement('span');
  1164.            span.className = 'elementor-icon-list-icon';
  1165.  
  1166.            // Create the SVG element and set its attributes
  1167.            const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
  1168.            svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
  1169.            svg.setAttribute('width', '6');
  1170.            svg.setAttribute('height', '11');
  1171.            svg.setAttribute('viewBox', '0 0 6 11');
  1172.            svg.setAttribute('fill', 'none');
  1173.  
  1174.            // Create the path element and set its attributes
  1175.            const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
  1176.            path.setAttribute('d', 'M1 0.833415L5 5.50008L1 10.1667');
  1177.            path.setAttribute('stroke', '#0098AB');
  1178.            path.setAttribute('stroke-width', '1.5');
  1179.            path.setAttribute('stroke-linecap', 'round');
  1180.            path.setAttribute('stroke-linejoin', 'round');
  1181.  
  1182.            // Append the path to the SVG
  1183.            svg.appendChild(path);
  1184.  
  1185.            // Append the SVG to the span
  1186.            span.appendChild(svg);
  1187.  
  1188.            footerColumnLinks.forEach(link => {
  1189.                link.insertAdjacentElement('beforebegin', span.cloneNode(true));
  1190.            });
  1191.        }
  1192.  
  1193.        function handleInputChange(e) {
  1194.            const value = e.target.value;
  1195.            const searchResultContainer = document.getElementById('search-result-container');
  1196.        }
  1197.  
  1198.        function handleRegulationKpiLearnMoreClick() {
  1199.            const regulationKpiLearnMoreBtn = document.getElementById('regulation_kpi_learn_more');
  1200.            regulationKpiLearnMoreBtn.addEventListener('click', () => {
  1201.                document.getElementById('profibility-section').style.backgroundColor = "rgb(140 247 140 / 10%)";
  1202.                document.getElementById('profibility-section').style.borderRadius = "12px";
  1203.            })
  1204.        }
  1205.  
  1206.  
  1207.        document.addEventListener("DOMContentLoaded", function () {
  1208.            handleNavbarMobileToggle();
  1209.            addIconBeforeLinksToFooter();
  1210.            // handleRegulationKpiLearnMoreClick();
  1211.        });
  1212.    </script>
  1213.  
  1214.    <!-- // To Handle the util functions -->
  1215.    <script>
  1216.        function abbreviateNumber(value) {
  1217.            if (value >= 1e6) {
  1218.                return (value / 1e6).toFixed(1) + 'M'; // Millions
  1219.            } else if (value >= 1e3) {
  1220.                return (value / 1e3).toFixed(1) + 'k'; // Thousands
  1221.            }
  1222.            return value;
  1223.        }
  1224.    </script>
  1225.  
  1226.  
  1227.    <!-- Handle Search Auto Complete -->
  1228.    <script type="module">
  1229.        import Fuse from "https://cdn.jsdelivr.net/npm/fuse.js@6.6.2/dist/fuse.esm.js";
  1230.  
  1231.        let fuse = null;
  1232.        let markets = null;
  1233.  
  1234.        const searchbar = document.querySelector('.market-searchbar');
  1235.        const closeIcon = document.querySelector('.close-icon');
  1236.  
  1237.        closeIcon.addEventListener('click', () => {
  1238.            searchbar.value = "";
  1239.            closeIcon.style.display = "none";
  1240.            document.getElementById("search-result-container").style.display = "none";
  1241.        });
  1242.  
  1243.        const options = {
  1244.            includeMatchers: true,
  1245.            useExtendedSearch: true,
  1246.            keys: [
  1247.                {
  1248.                    name: "district",
  1249.                    weight: 2,
  1250.                },
  1251.                {
  1252.                    name: "city",
  1253.                    weight: 0.5,
  1254.                },
  1255.                {
  1256.                    name: "country",
  1257.                    weight: 0.5,
  1258.                },
  1259.            ],
  1260.        };
  1261.  
  1262.        function getPriority(market) {
  1263.            if (markets[market]) {
  1264.                return markets[market].priority.charCodeAt(0);
  1265.            }
  1266.            return "f";
  1267.        }
  1268.  
  1269.        function calculate(input) {
  1270.            if (!input || input.trim() === "") {
  1271.                return "";
  1272.            }
  1273.            let results = fuse.search(input).map((data) => data.item);
  1274.            const resultsWithPriority = results.sort(
  1275.                (a, b) => getPriority(a) - getPriority(b)
  1276.            );
  1277.            return resultsWithPriority.slice(0, 7);
  1278.        }
  1279.  
  1280.        function debounce(func, delay) {
  1281.            let timeoutId;
  1282.  
  1283.            return function (...args) {
  1284.                clearTimeout(timeoutId);
  1285.  
  1286.                timeoutId = setTimeout(() => {
  1287.                    func.apply(this, args);
  1288.                }, delay);
  1289.            };
  1290.        }
  1291.  
  1292.        function autoComplete(event) {
  1293.            const input = event.target.value;
  1294.  
  1295.            const autoCompleteSuggessionBox = document.getElementById("search-result-container");
  1296.            autoCompleteSuggessionBox.innerHTML = "";
  1297.            autoCompleteSuggessionBox.style.display = "block";
  1298.  
  1299.            const { x: searchbarLeftGap, width: searchBarWidth } = searchbar.getClientRects()[0];
  1300.            autoCompleteSuggessionBox.style.left = searchbarLeftGap + "px";
  1301.            autoCompleteSuggessionBox.style.width = searchBarWidth + "px";
  1302.  
  1303.            if (input.length > 0) {
  1304.                const filteredData = calculate(input);
  1305.                closeIcon.style.display = "block";
  1306.  
  1307.                filteredData.forEach(function (item) {
  1308.                    let city = item.city != "0" ? item.city : null;
  1309.                    let country = item.country != "0" ? item.country : null;
  1310.  
  1311.                    const searchBarOptionText = `${item.district}${city ? ", " + city : ""
  1312.                        }${country ? " (" + country + ") " : ""}`;
  1313.  
  1314.                    const autocompleteItem = document.createElement("div");
  1315.                    autocompleteItem.classList.add("search-result");
  1316.                    autocompleteItem.textContent = searchBarOptionText;
  1317.  
  1318.                    const marketUrl = `https://app.airbtics.com/airbnb-data/${item.country ? item.country : 0}/${item.city ? item.city : 0}/${item.district}`;
  1319.                    autoCompleteSuggessionBox.innerHTML += `<a rel="noopener" referrerpolicy="no-referrer-when-downgrade" href="${marketUrl}"><div class="search-result">${searchBarOptionText}</div></a>`
  1320.                });
  1321.            } else {
  1322.                autoCompleteSuggessionBox.innerHTML = "";
  1323.                autoCompleteSuggessionBox.style.display = "none";
  1324.                closeIcon.style.display = "none";
  1325.            }
  1326.        }
  1327.  
  1328.        function initiateSearchBar() {
  1329.            fetch('https://airbtics-resource.s3.us-east-2.amazonaws.com/public_markets_compressed.json.gz')
  1330.                .then(response => response.arrayBuffer())
  1331.                .then(buffer => {
  1332.                    const decompressed = pako.ungzip(new Uint8Array(buffer), { to: 'string' });
  1333.                    markets = JSON.parse(decompressed);
  1334.  
  1335.                    fuse = new Fuse(markets, options);
  1336.  
  1337.                    searchbar.addEventListener('input', debounce(autoComplete, 200));
  1338.  
  1339.                    document.getElementById("loading-icon").style.display = "none";
  1340.                    document.getElementById("search-icon").style.display = "block";
  1341.                });
  1342.        }
  1343.  
  1344.        document.addEventListener("DOMContentLoaded", function () {
  1345.            initiateSearchBar();
  1346.        });
  1347.  
  1348.    </script>
  1349.  
  1350.  
  1351. </body>
  1352.  
  1353. </html>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda