1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <link rel="icon" href="img/favicon.ico"> 8 <title>Get eSIMCard: Best eSIM data plans for international travel</title> 9 <meta name="title" content="Buy eSIM Online - Instant Activation for Any eSIM Device"> 10 <meta name="description" content="Buy international eSIMs for travel in 200+ destinations. Activate instantly with plans from $0.07. No SIM cards, no roamingâjust seamless connectivity."> 11 <!-- Open Graph / Facebook --> 12 <meta property="og:title" content="Get eSIMCard: Best eSIM data plans for international travel"> 13 <meta property="og:description" content="Buy international eSIMs for travel in 200+ destinations. Activate instantly with plans from $0.07. No SIM cards, no roamingâjust seamless connectivity."> 14 <!-- Twitter --> 15 <meta property="twitter:title" content="Get eSIMCard: Best eSIM data plans for international travel"> 16 <meta property="twitter:description" content="Buy international eSIMs for travel in 200+ destinations. Activate instantly with plans from $0.07. No SIM cards, no roamingâjust seamless connectivity."> 17 <!-- <link rel="stylesheet" href="css/bootstrap-grid.css"> --> 18 <link rel="stylesheet" href="https://esimcard.biz/css/bootstrap.min.css?v=1.0.0"> 19 <link rel="stylesheet" href="https://esimcard.biz/css/custom-style.css?v=1.0.0"> 20 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.css" 21 integrity="sha512-wR4oNhLBHf7smjy0K4oqzdWumd+r5/+6QO/vDda76MW5iug4PT7v86FoEkySIJft3XA0Ae6axhIvHrqwm793Nw==" 22 crossorigin="anonymous" referrerpolicy="no-referrer" /> 23 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.css" 24 integrity="sha512-6lLUdeQ5uheMFbWm3CP271l14RsX1xtx+J5x2yeIDkkiBpeVTNhTqijME7GgRKKi6hCqovwCoBTlRBEC20M8Mg==" 25 crossorigin="anonymous" referrerpolicy="no-referrer" /> 26 <!-- Google tag (gtag.js) -->
vendor: 68 bytes, lines 26-27
26 27 <script async src="https://www.googletagmanager.com/gtag/js?id=
27G-TPMR26GY7S
vendor: 16 bytes, lines 27-28
27"></script> 28
28<script> 29
vendor: 152 bytes, lines 29-33
29window.dataLayer = window.dataLayer || []; 30 function gtag(){dataLayer.push(arguments);} 31 gtag('js', new Date()); 32 33 gtag('config', '
33G-TPMR26GY7S
vendor: 8 bytes, lines 33-34
33'); 34
34</script>
vendor: 68 bytes, lines 34-35
34 35 <script async src="https://www.googletagmanager.com/gtag/js?id=
35AW-16922117406
vendor: 21 bytes, lines 35-37
35"> 36 </script> 37
37<script> 38
vendor: 152 bytes, lines 38-42
38window.dataLayer = window.dataLayer || []; 39 function gtag(){dataLayer.push(arguments);} 40 gtag('js', new Date()); 41 42 gtag('config', '
42AW-16922117406
vendor: 8 bytes, lines 42-43
42'); 43
43</script>
43 44
44<script> 45 gtag('event', 'conversion', { 46 'send_to': 'AW-16922117406/2TvCCIX8lqwaEJ6KjIU_', 47 'value': 1.0, 48 'currency': 'INR' 49 }); 50 </script>
50 51 52</head> 53 54<body> 55 <!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 55-56
55 56<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
56GTM-P74H323J
vendor: 83 bytes, lines 56-57
56" 57height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
58<!-- End Google Tag Manager (noscript) --> 59 <header> 60 <nav class="navbar navbar-expand-xl navbar-light fixed-top header-top d-block"> 61 <div class="container"> 62 <div class="header"> 63 <a class="navbar-brand" href="https://esimcard.biz"><img src="https://esimcard.biz/images/logo-new.svg" alt="eSIM Card Logo"></a> 64 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" 65 data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" 66 aria-expanded="false" aria-label="Toggle navigation"> 67 <span class="navbar-toggler-icon"></span> 68 </button> 69 70 <div class="collapse navbar-collapse navbar-content justify-content-between align-items-center" 71 id="navbarSupportedContent"> 72 <ul class="navbar-nav mx-auto align-items-center header-nav-links"> 73 <li class="nav-item"> 74 <a class="nav-link" href="https://esimcard.biz/esim-destinations">Destinations</a> 75 </li> 76 <li class="nav-item"> 77 <a class="nav-link" href="#how-it-works">How It Works</a> 78 </li> 79 <li class="nav-item"> 80 <a class="nav-link" href="#download-app">Download App</a> 81 </li> 82 <li class="nav-item"> 83 <a class="nav-link" href="https://esimcard.biz/contact-us">Contact Us</a> 84 </li> 85 <!-- Mobile-only Get Started Button / Status Pill (Hidden on Mobile) --> 86 <li class="nav-item d-xl-none mt-3 w-100 text-center"> 87 <a class="btn-get-started-mobile" href="https://esimcard.biz/esim-destinations">Get Started <span style="margin-left: 8px;">→</span></a> 88 </li> 89 </ul> 90 <!-- Desktop-only Get Started Button / Progress Indicator --> 91 <div class="header-action-btn-container d-none d-xl-block "> 92 <a class="btn-get-started" href="https://esimcard.biz/esim-destinations">Get Started <span style="margin-left: 8px;">→</span></a> 93 </div> 94 </div> 95 </div> 96 </div> 97 </nav> 98</header> 99
100<script> 101 (function () { 102 const TARGET_ID = 'how-it-works'; 103 104 function smoothScrollToTarget(targetId) { 105 const target = document.getElementById(targetId); 106 if (!target) return; 107 108 const header = document.querySelector('.header-top') || document.querySelector('header'); 109 const headerHeight = header ? header.offsetHeight : 0; 110 const extraOffset = 20; 111 112 const targetY = 113 target.getBoundingClientRect().top + 114 window.pageYOffset - 115 headerHeight - 116 extraOffset; 117 118 window.scrollTo({ 119 top: targetY, 120 behavior: 'smooth' 121 }); 122 } 123 124 function resolveTargetId(hash) { 125 if (hash === '#how-it-works') { 126 return 'how-it-works'; 127 } 128 if (hash === '#download-app') { 129 return 'download-app'; 130 } 131 return null; 132 } 133 134 if (resolveTargetId(window.location.hash)) { 135 window.scrollTo(0, 0); 136 if ('scrollRestoration' in history) { 137 history.scrollRestoration = 'manual'; 138 } 139 } 140 141 function closeMobileMenuThen(callback) {
142 const navbarCollapse = document.getElementById('navbarSupportedContent'); 143 const navbarToggler = document.querySelector('.navbar-toggler'); 144 const menuOpen = navbarCollapse && navbarCollapse.classList.contains('show'); 145 146 if (menuOpen && navbarToggler) { 147 navbarToggler.click(); 148 setTimeout(callback, 320); 149 return; 150 } 151 152 callback(); 153 } 154 155 document.addEventListener('DOMContentLoaded', function () { 156 document.querySelectorAll('a[href*="#how-it-works"], a[href*="#download-app"]').forEach(function (link) { 157 link.addEventListener('click', function (e) { 158 const href = link.getAttribute('href') || ''; 159 const hashIndex = href.indexOf('#'); 160 if (hashIndex === -1) return; 161 162 const targetId = resolveTargetId(href.substring(hashIndex)); 163 if (!targetId || !document.getElementById(targetId)) return; 164 165 e.preventDefault(); 166 167 closeMobileMenuThen(function () { 168 smoothScrollToTarget(targetId); 169 history.pushState(null, '', '#' + targetId); 170 }); 171 }); 172 }); 173 }); 174 175 window.addEventListener('load', function () { 176 const targetId = resolveTargetId(window.location.hash); 177 if (targetId && document.getElementById(targetId)) { 178 setTimeout(function () { 179 smoothScrollToTarget(targetId); 180 }, 150); 181 } 182 }); 183 })(); 184</script>
184 185 186 187 188 189 <main id="top"> 190 <section class="banner-section"> 191 <div class="container"> 192 193 <div class="d-flex align-items-center section-wrap"> 194 <div class="col-xl-7 col-lg-8 col-md-10 col-sm-12 hero-left-section"> 195 <h1>Travel data in 200+ <br> destinations</h1> 196 <p class="hero-desc">Prepaid plans from $1.99. Activate your eSIM in seconds and roam like you're at home.</p> 197 <div class="search-container hero-search-container"> 198 <div class="input-wrapper hero-search-wrapper"> 199 <input type="text" id="heroDestinationSearch" class="search-box hero-search-pill" placeholder="Where do you need data for?" 200 autocomplete="off" /> 201 <button type="button" class="hero-search-btn" aria-label="Search"> 202 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 203 <path d="M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/> 204 </svg> 205 </button> 206 </div> 207 <div id="heroSearchDropdown" class="hero-search-dropdown" role="listbox"></div> 208 <!-- Modal Popup --> 209 <div class="modal" id="searchModal"> 210 <div class="modal-content"> 211 <span class="close-modal" onclick="closeModal()">Ã</span> 212 <h2>Where?</h2> 213 <div class="modal-input-wrapper input-wrapper"> 214 <input type="text" class="modal-input" id="countrySearch" placeholder="Enter your destination" /> 215 </div> 216 <p>Most popular destinations</p> 217 218 <div class="destinations" id="destinations"> 219 <div class="card-country-popular"></div> 220 <div class="card-country" style="display: none;"></div> 221 </div> 222 </div> 223 </div> 224 </div> 225 </div> 226 </div> 227 228 </div> 229 </section> 230 231 <section class="destination-section"> 232 <div class="container"> 233 <div class="data-structure destination-head"> 234 <div class="destination-head-text"> 235 <h2 class="home-section-title">Most popular destinations</h2> 236 <p>Travelling to Turkey, the USA, or the UAE? We've got you covered. Our global eSIM plans are designed to match your data needs wherever you go. Just pick your destination, select an affordable eSIM plan, and enjoy instant activationâno roaming fees, no hassle.</p> 237 </div> 238 <div class="duration-tabs" id="durationTabs" role="tablist" aria-label="Plan data allowance"> 239 <button type="button" class="duration-tab active" data-gb="Unlimited" role="tab" aria-selected="true">Unlimited</button> 240 <button type="button" class="duration-tab" data-gb="1 GB" role="tab" aria-selected="false">1 GB</button> 241 <button type="button" class="duration-tab" data-gb="10 GB" role="tab" aria-selected="false">10 GB</button> 242 </div> 243 </div> 244 <div class="tab-content mt-5"> 245 <!-- Country Tab --> 246 <div class="tab-pane fade show active country-region" id="country" role="tabpanel"> 247 <div class="row g-3" id="country-list"> 248 </div> 249 </div> 250 251 </div> 252 253 <div class="destination-btn"> 254 <a href="https://esimcard.biz/esim-destinations" class="arrow-right">View All Destinations</a> 255 </div> 256 </div> 257 </section> 258 259 <section class="home-stats-section"> 260 <div class="container"> 261 <div class="home-stats-grid"> 262 <div class="home-stat-item"> 263 <div class="home-stat-number">200+</div> 264 <div class="home-stat-label">Destinations covered</div> 265 </div> 266 <div class="home-stat-item"> 267 <div class="home-stat-number">10K+</div> 268 <div class="home-stat-label">Travelers connected</div> 269 </div> 270 <div class="home-stat-item"> 271 <div class="home-stat-number">4.7â </div> 272 <div class="home-stat-label">App Store rating</div> 273 </div> 274 <div class="home-stat-item"> 275 <div class="home-stat-number">â¡Instant</div> 276 <div class="home-stat-label">Activation, no delays</div> 277 </div> 278 </div> 279 </div> 280 </section> 281 282 <section class="benefits features-revamp" id="features"> 283 <div class="container"> 284 <div class="features-header">
285 <span class="features-eyebrow">WHY ESIM CARD?</span> 286 <h2 class="features-title home-section-title">Enjoy reliable and affordable internet anytime, anywhere.</h2> 287 <p class="features-subtitle">Connect globally with seamless, fast internet â no SIM cards, no extra hassle.</p> 288 </div> 289 <div class="features-grid"> 290 <div class="feature-card"> 291 <div class="feature-icon"> 292 <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> 293 <path d="M18.178 8c5.096 0 5.096 8 0 8-5.095 0-7.133-8-12.739-8-4.585 0-4.585 8 0 8 5.606 0 7.644-8 12.74-8z"/> 294 </svg> 295 </div> 296 <h3 class="feature-card-title">Unlimited Data</h3> 297 <p class="feature-card-text">Access unlimited data for work, streaming, and browsing without worrying about extra charges.</p> 298 </div> 299 <div class="feature-card"> 300 <div class="feature-icon"> 301 <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> 302 <rect x="5" y="2" width="14" height="20" rx="2" ry="2"/> 303 <path d="M12 18h.01"/> 304 </svg> 305 </div> 306 <h3 class="feature-card-title">Use Your Favourite Apps</h3> 307 <p class="feature-card-text">Stay connected to social media, video calls and all your apps wherever you are.</p> 308 </div> 309 <div class="feature-card"> 310 <div class="feature-icon"> 311 <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> 312 <path d="M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3"/> 313 </svg> 314 </div> 315 <h3 class="feature-card-title">24/7 Customer Support</h3> 316 <p class="feature-card-text">Our support team is just a message away, ready to assist with any queries or issues.</p> 317 </div> 318 <div class="feature-card"> 319 <div class="feature-icon"> 320 <svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> 321 <path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"/> 322 </svg> 323 </div> 324 <h3 class="feature-card-title">Fast Internet Connection</h3> 325 <p class="feature-card-text">Seamless and fast internet with a secure, reliable connection tailored to your needs.</p> 326 </div> 327 </div> 328 </div> 329 </section> 330 331 <section class="testimonial-section home-testimonials-section"> 332 <div class="container"> 333 <div class="home-testimonials-header"> 334 <span class="home-testimonials-eyebrow">REAL CUSTOMERS</span> 335 <h2 class="home-testimonials-title home-section-title">Why People Are Choosing <br> eSIM Card</h2> 336 <p class="home-testimonials-subtitle">A game-changer for global connectivity.</p> 337 </div> 338 <div class="home-testimonials-grid"> 339 <div class="home-review-card"> 340 <div class="home-review-stars" aria-label="Rated 5 out of 5 stars">â â â â â </div> 341 <p class="home-review-text">"This app is a game-changer! Activating my eSIM was quick and hassle-free. The connection was super reliable, even in remote areas."</p> 342 <div class="home-reviewer"> 343 <div class="home-reviewer-avatar">J</div> 344 <div class="home-reviewer-meta">
345 <span class="home-reviewer-name">John Martinez</span> 346 <span class="home-reviewer-date">April 2026</span> 347 </div> 348 </div> 349 </div> 350 <div class="home-review-card"> 351 <div class="home-review-stars" aria-label="Rated 5 out of 5 stars">â â â â â </div> 352 <p class="home-review-text">"I love the flexibility of the data plans. It's perfect for someone who needs internet for both work and personal use."</p> 353 <div class="home-reviewer"> 354 <div class="home-reviewer-avatar">E</div> 355 <div class="home-reviewer-meta"> 356 <span class="home-reviewer-name">Emma Wilson</span> 357 <span class="home-reviewer-date">March 2026</span> 358 </div> 359 </div> 360 </div> 361 <div class="home-review-card"> 362 <div class="home-review-stars" aria-label="Rated 5 out of 5 stars">â â â â </div> 363 <p class="home-review-text">"The app interface is so user-friendly! I had my eSIM activated within minutes. Highly recommended for seamless connectivity."</p> 364 <div class="home-reviewer"> 365 <div class="home-reviewer-avatar">M</div> 366 <div class="home-reviewer-meta"> 367 <span class="home-reviewer-name">Michael Jones</span> 368 <span class="home-reviewer-date">March 2026</span> 369 </div> 370 </div> 371 </div> 372 <div class="home-review-card"> 373 <div class="home-review-stars" aria-label="Rated 5 out of 5 stars">â â â â </div> 374 <p class="home-review-text">"Fast internet and no more swapping SIM cards â this app made my life so much easier. Great customer support too!"</p> 375 <div class="home-reviewer"> 376 <div class="home-reviewer-avatar">S</div> 377 <div class="home-reviewer-meta"> 378 <span class="home-reviewer-name">Sarah Anderson</span> 379 <span class="home-reviewer-date">February 2026</span> 380 </div> 381 </div> 382 </div> 383 <div class="home-review-card"> 384 <div class="home-review-stars" aria-label="Rated 5 out of 5 stars">â â â â </div> 385 <p class="home-review-text">"Affordable and reliable internet everywhere I go. This app exceeded my expectations. The 24/7 support is a big plus!"</p> 386 <div class="home-reviewer"> 387 <div class="home-reviewer-avatar">D</div> 388 <div class="home-reviewer-meta"> 389 <span class="home-reviewer-name">Daniel Clark</span> 390 <span class="home-reviewer-date">February 2026</span> 391 </div> 392 </div> 393 </div> 394 <div class="home-review-card"> 395 <div class="home-review-stars" aria-label="Rated 5 out of 5 stars">â â â â â </div> 396 <p class="home-review-text">"Impressive app! The QR code activation was seamless, and the connection speed was excellent throughout my trip."</p> 397 <div class="home-reviewer"> 398 <div class="home-reviewer-avatar">O</div> 399 <div class="home-reviewer-meta"> 400 <span class="home-reviewer-name">Olivia Brown</span> 401 <span class="home-reviewer-date">January 2026</span> 402 </div> 403 </div> 404 </div> 405 </div> 406 </div> 407 </section> 408 409 <section class="global-users"> 410 <div class="container"> 411 <div class="row"> 412 <div class="col"> 413 <div class="user-review text-center"> 414 <div class="user-img"> 415 <img src="img/trust-us.svg" alt="trust-us"> 416 </div> 417 <h3>Trusted by 10K+ Travelers</h3>
418 <span class="customer-review">Thousands of satisfied users trust our eSIM service for 419 seamless and reliable global 420 connectivity, supported by excellent customer reviews.</span> 421 </div> 422 <p class="text-center">Stay connected wherever you go with an affordable and reliable eSIM. 423 Enjoy hassle-free global communication without worrying about high roaming charges and SIM 424 swaps.</p> 425 </div> 426 </div> 427 </div> 428 </section> 429 430 <section class="home-how-section" id="how-it-works"> 431 <span class="home-how-shape" aria-hidden="true"></span> 432 <div class="container"> 433 <div class="home-how-header"> 434 <span class="home-how-eyebrow">SIMPLE & FAST</span> 435 <h2 class="home-how-title">How does it work?</h2> 436 <p class="home-how-subtitle">New to eSIM? No Problem! It's simple, affordable, and convenient. With eSIM Card, purchase your data plan now and activate it whenever you're ready to roam!</p> 437 </div> 438 <div class="home-how-grid"> 439 <div class="home-how-step"> 440 <div class="home-how-placeholder"> 441 <img src="https://esimcard.biz/img/Step 1.jpg" alt="Select destination step"> 442 </div> 443 <div class="home-how-number">1</div> 444 <p class="home-how-text">Select your destination and pick the data plan most suited to your travel needs.</p> 445 </div> 446 <div class="home-how-step"> 447 <div class="home-how-placeholder"> 448 <img src="https://esimcard.biz/img/Step 2.jpg" alt="Activate eSIM step"> 449 </div> 450 <div class="home-how-number">2</div> 451 <p class="home-how-text">Download the eSIM Card app and follow the easy on-screen steps to install your eSIM instantly.</p> 452 </div> 453 <div class="home-how-step"> 454 <div class="home-how-placeholder"> 455 <img src="https://esimcard.biz/img/Step 3.jpg" alt="Connected plan step"> 456 </div> 457 <div class="home-how-number">3</div> 458 <p class="home-how-text">Activate your plan on the app when you're ready, switch your settings and you're good to go!</p> 459 </div> 460 </div> 461 <div class="home-how-download-container" id="download-app"> 462 <h3 class="home-how-download-title">Download the eSIM Card App</h3> 463 <div class="home-how-actions"> 464 <a href="https://apple.co/3FNFgsN" target="_blank" rel="noopener" class="home-how-store"> 465 <img src="https://esimcard.biz/img/app-store.svg" alt="Download on the App Store"> 466 </a> 467 </div> 468 </div> 469 </div> 470 </section> 471 472 <section class="digital-sim" id="digital-sim-card"> 473 <div class="container"> 474 <div class="d-flex align-items-center section-wrap"> 475 <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12"> 476 <img src="img/what-is-an-esim.png" alt="What is an eSIM?"> 477 </div> 478 <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12"> 479 <h2>What is an eSIM?</h2> 480 <p>An eSIM card is a built-in digital SIM that allows you to connect to mobile networks instantly no physical SIM, no store visits required. It's the fastest, easiest way to stay connected worldwide, making it the best eSIM for international travel.</p> 481 </div> 482 </div> 483 </div> 484 </section> 485 486 <section class="home-footer" id="site-footer"> 487 <div class="container"> 488 <div class="home-footer-inner"> 489 <nav class="home-footer-links" aria-label="Footer"> 490 <a href="https://esimcard.biz/privacy">Privacy Policy</a> 491 <a href="https://esimcard.biz/terms">Terms of Use</a> 492 <a href="https://esimcard.freshdesk.com/support/home" target="_blank" rel="noopener">FAQs</a> 493 <a href="https://esimcard.biz/contact-us">Contact Us</a> 494 <a href="#digital-sim-card">What is an eSIM?</a> 495 </nav> 496 <p class="home-footer-copy">© 2026 eSIM Card Connect. Seamless 497 Connectivity, Anytime, Anywhere. 498 </p> 499 </div> 500 </div> 501</section> 502 503 504 </main> 505 506
506<script> 507 var newClass = document.getElementById("searchModal"); 508 function openModal() { 509 document.getElementById("searchModal").style.display = "flex"; 510 newClass.classList.add('modal-popup-open'); 511 } 512 513 function closeModal() { 514 document.getElementById("searchModal").style.display = "none"; 515 newClass.classList.remove('modal-popup-open'); 516 } 517 518 // Optional: Close on outside click 519 window.onclick = function (event) { 520 const modal = document.getElementById("searchModal"); 521 if (event.target === modal) { 522 modal.style.display = "none"; 523 newClass.classList.remove('modal-popup-open'); 524 } 525 }; 526 </script>
526 527 528 529
529<script src="https://esimcard.biz/js/jquery.min.js"></script>
529 530 531
531<script src="https://esimcard.biz/js/jquery.validate.min.js"></script>
531 532
532<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.js" 533 integrity="sha512-eP8DK17a+MOcKHXC5Yrqzd8WI5WKh6F1TIk5QZ/8Lbv+8ssblcz7oGC8ZmQ/ZSAPa7ZmsCU4e/hcovqR8jfJqA==" 534 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
534 535
535<script src="https://esimcard.biz/js/script.js"></script>
535 536
536<script src="https://esimcard.biz/js/bootstrap.bundle.min.js"></script>
536 537
537<script src="https://esimcard.biz/js/popper.min.js"></script>
537 538 539
539<script> 540 jQuery(document).ready(function () { 541 // ===== Hero inline search dropdown ===== 542 var heroBaseUrl = "https://esimcard.biz"; 543 var heroDefaultImg = heroBaseUrl + '/images/country/default.png'; 544 545 function renderHeroDropdown() { 546 var term = ($('#heroDestinationSearch').val() || '').trim().toLowerCase(); 547 var data = window.heroData; 548 var $dd = $('#heroSearchDropdown'); 549 550 if (!data) { 551 $dd.html('<div class="hero-search-empty">Loading destinations...</div>'); 552 return; 553 } 554 555 var list = term === '' 556 ? data.popular 557 : data.all.filter(function (item) { 558 if (item.name.toLowerCase().indexOf(term) !== -1) { 559 return true; 560 } 561 // Match by city name (e.g. "dubai" -> United Arab Emirates) 562 return (item.cities || []).some(function (city) { 563 return String(city).toLowerCase().indexOf(term) !== -1; 564 }); 565 }); 566 567 if (!list.length) { 568 $dd.html('<div class="hero-search-empty">No destinations found</div>'); 569 return; 570 } 571 var html = list.map(function (item) { 572 return '<a href="' + item.url + '" class="hero-search-result" role="option">' 573 + '<img src="' + item.img + '" class="hero-search-result-flag" alt="" ' 574 + 'onerror="this.onerror=null;this.src=\'' + heroDefaultImg + '\';">' 575 + '<span class="hero-search-result-name"></span>' 576 + '</a>'; 577 }).join(''); 578 $dd.html(html); 579 // set names via text() to avoid HTML injection from response data 580 $dd.find('.hero-search-result-name').each(function (i) { 581 $(this).text(list[i].name); 582 }); 583 } 584 function showHeroDropdown() { 585 renderHeroDropdown(); 586 $('#heroSearchDropdown').addClass('open'); 587 } 588 function hideHeroDropdown() { 589 $('#heroSearchDropdown').removeClass('open'); 590 } 591 592 $('#heroDestinationSearch').on('focus click', function () { showHeroDropdown(); }); 593 $('#heroDestinationSearch').on('input', function () { showHeroDropdown(); }); 594 $('.hero-search-btn').on('click', function (e) { 595 e.preventDefault(); 596 $('#heroDestinationSearch').trigger('focus'); 597 showHeroDropdown(); 598 }); 599 $(document).on('click', function (e) { 600 if (!$(e.target).closest('.hero-search-container').length) { 601 hideHeroDropdown(); 602 } 603 }); 604 $(document).on('keydown', function (e) { 605 if (e.key === 'Escape' || e.keyCode === 27) { hideHeroDropdown(); } 606 }); 607 608 // ===== Destination plan GB tabs ===== 609 window.selectedPlanGb = window.selectedPlanGb || 'Unlimited'; 610 var heroSearchDestinations = []; 611 var popularDestinations = []; 612 613 function normalizeGbKey(value) { 614 return String(value || '') 615 .toLowerCase() 616 .replace(/\s+/g, '') 617 .replace('-', ''); 618 } 619 620 function parsePriceNumber(value) { 621 var number = Number(String(value || '').replace(/[^0-9.]/g, '')); 622 return Number.isFinite(number) && number > 0 ? number : Number.POSITIVE_INFINITY; 623 } 624 625 function getSelectedGbPriceRaw(item, selectedGbKey) { 626 if (!item) return null; 627 628 var prices = item.prices || {}; 629 if (prices[selectedGbKey] !== undefined && prices[selectedGbKey] !== null) { 630 return prices[selectedGbKey]; 631 } 632 633 var matchingKey = Object.keys(prices).find(function (key) { 634 return normalizeGbKey(key) === selectedGbKey; 635 }); 636 637 if (matchingKey) { 638 return prices[matchingKey]; 639 } 640 641 return null; 642 } 643 644 function getSelectedGbPrice(item, selectedGbKey) { 645 return parsePriceNumber(getSelectedGbPriceRaw(item, selectedGbKey)); 646 } 647 648 function renderPopularCountries(gbCategory) { 649 var $grid = $('#country-list'); 650 if (!$grid.length) { 651 console.error('Popular destinations grid not found'); 652 return; 653 } 654 655 $grid.empty(); 656 var url = "https://esimcard.biz"; 657 var allItems = window.popularCountriesData || popularDestinations || []; 658 if (!Array.isArray(allItems)) return; 659 660 var selectedGbKey = normalizeGbKey(gbCategory); 661 var filteredDestinations = allItems.filter(function (country) { 662 return country && country.code && getSelectedGbPrice(country, selectedGbKey) !== Number.POSITIVE_INFINITY; 663 }); 664 665 if (!filteredDestinations.length) { 666 console.warn('Popular filter returned empty for ' + gbCategory + ', falling back to full data'); 667 filteredDestinations = allItems.filter(function (country) { return country && country.code; }); 668 } 669 670 var sortedDestinations = filteredDestinations.slice(); 671 try { 672 sortedDestinations.sort(function (a, b) { 673 return getSelectedGbPrice(a, selectedGbKey) - getSelectedGbPrice(b, selectedGbKey); 674 }); 675 } catch (error) { 676 console.error('Sorting popular destinations failed:', error); 677 sortedDestinations = filteredDestinations; 678 } 679 680 $.each(sortedDestinations, function (index, country) { 681 var countrySlug = (country.sitemapSlug && country.sitemapSlug.trim() !== '') 682 ? country.sitemapSlug 683 : 'esim-' + country.code.toLowerCase(); 684 var priceVal = getSelectedGbPriceRaw(country, selectedGbKey); 685 686 if (priceVal === undefined || priceVal === null) { 687 priceVal = country.minPrice || ''; 688 } 689 690 var countryCard = ` 691 <div class="col-12 col-md-6 col-lg-4 country-card"> 692 <a href="${url + (countrySlug.charAt(0) === '/' ? countrySlug : '/' + countrySlug)}" class="card-destination"> 693 <img src="${country.flag || url + '/images/country/default.png'}" class="flag-img" alt="${country.name}" 694 onerror="this.onerror=null; this.src='${url}/images/country/default.png';"> 695 <div> 696 <div class="fw-bold country-name">${country.name}</div> 697 <div class="plans-row">
698 <span class="country-rate">From USD ${priceVal}</span> 699 <div class="discount-badge">10% OFF</div> </div> 700 </div> 701 </a> 702 </div>`; 703 $grid.append(countryCard); 704 }); 705 } 706 $('#durationTabs').on('click', '.duration-tab', function () { 707 var $tab = $(this); 708 if ($tab.hasClass('active')) { return; } 709 $tab.siblings('.duration-tab').removeClass('active').attr('aria-selected', 'false'); 710 $tab.addClass('active').attr('aria-selected', 'true'); 711 712 const selectedGb = $tab.data('gb'); 713 window.selectedPlanGb = selectedGb; 714 715 // Height locking and smooth fade transition 716 const $list = $('#country-list'); 717 const currentHeight = $list.outerHeight(); 718 $list.css('min-height', currentHeight + 'px'); 719 720 $list.fadeOut(100, function () { 721 renderPopularCountries(selectedGb); 722 $list.fadeIn(100, function () { 723 $list.css('min-height', ''); 724 }); 725 }); 726 }); 727 728 $.ajax({ 729 url: "https://esimcard.biz/api/countries-regions", 730 method: 'GET', 731 dataType: 'json', 732 success: function (response) { 733 let url = "https://esimcard.biz"; 734 let countries = Array.isArray(response.country_list) ? response.country_list : []; 735 let regions = Array.isArray(response.continent_list) ? response.continent_list : []; 736 737 let selectedCountries = ['TR', 'US', 'TH', 'MY', 'AE', 'CN', 'JP', 'FR', 'IN']; // Example selected countries 738 let filteredCountries = selectedCountries.map(code => 739 countries.find(country => country && country.code && normalizeGbKey(country.code) === normalizeGbKey(code)) 740 ).filter(Boolean); 741 742 if (!filteredCountries.length) { 743 console.warn('Popular country codes were not found; falling back to first countries in response.'); 744 filteredCountries = countries.slice(0, selectedCountries.length); 745 } 746 747 popularDestinations = filteredCountries; 748 window.popularCountriesData = popularDestinations; 749 750 // Render default active tab (Unlimited) 751 renderPopularCountries('Unlimited'); 752 753 $('#destinations .card-country-popular, #destinations .card-country').empty(); 754 755 let popularCountries = ['TR', 'US', 'TH', 'MY', 'AE', 'CN', 'IN']; 756 let filterPopularCountries = popularCountries.map(code => 757 countries.find(country => country && country.code && normalizeGbKey(country.code) === normalizeGbKey(code)) 758 ).filter(Boolean); 759 760 $.each(filterPopularCountries, function (index, country) { 761 let countrySlug = (country.sitemapSlug && country.sitemapSlug.trim() !== '') 762 ? country.sitemapSlug 763 : 'esim-'+country.code.toLowerCase(); 764 let countryCard = ` 765 <div class="destination"> 766 <a href="${url+countrySlug}" class="card-destination"> 767 <img src="${country.flag || url + '/images/country/default.png'}" alt="${country.name}" 768 onerror="this.onerror=null; this.src='${url}/images/country/default.png';"> 769 <div class="destination-info"> 770 <span class="destination-name">${country.name}</span> 771 <div class="plans-row">
772 <span class="destination-price">From USD ${country.minPrice}</span> 773 <div class="discount-badge">10% OFF</div> </div> 774 </div> 775 </a> 776 </div>`; 777 778 $('#destinations .card-country-popular').append(countryCard); 779 }); 780 781 $.each(countries, function (index, country) { 782 let countrySlug = (country.sitemapSlug && country.sitemapSlug.trim() !== '') 783 ? country.sitemapSlug 784 : 'esim-'+country.code.toLowerCase(); 785 let countryCard = ` 786 <div class="destination"> 787 <a href="${url+countrySlug}" class="card-destination"> 788 <img src="${country.flag || url + '/images/country/default.png'}" alt="${country.name}" 789 onerror="this.onerror=null; this.src='${url}/images/country/default.png';"> 790 <div class="destination-info"> 791 <span class="destination-name">${country.name}</span> 792 <div class="plans-row"> 793 <span class="destination-price">From USD ${country.minPrice}</span> 794 <div class="discount-badge">10% OFF</div> </div> 795 </div> 796 </a> 797 </div>`; 798 799 $('#destinations .card-country').append(countryCard); 800 }); 801 802 $.each(regions, function (index, region) { 803 let regionSlug = (region.sitemapSlug && region.sitemapSlug.trim() !== '') 804 ? region.sitemapSlug 805 : 'esim-'+region.code.toLowerCase(); 806 let regionCard = ` 807 <div class="destination"> 808 <a href="${url+regionSlug}" class="card-destination"> 809 <img src="${region.flag || url + '/images/country/default.png'}" alt="${region.name}" 810 onerror="this.onerror=null; this.src='${url}/images/country/default.png';"> 811 <div class="destination-info"> 812 <span class="destination-name">${region.name}</span> 813 <div class="plans-row"> 814 <span class="destination-price">From USD ${region.minPrice}</span> 815 <div class="discount-badge">10% OFF</div> </div> 816 </div> 817 </a> 818 </div>`; 819 820 $('#destinations .card-country').append(regionCard); 821 }); 822 823 // ---- Hero inline search: build data from the same response ---- 824 function heroCountryItem(c) { 825 var slug = (c.sitemapSlug && c.sitemapSlug.trim() !== '') 826 ? c.sitemapSlug 827 : 'esim-' + c.code.toLowerCase(); 828 return { 829 name: c.name, 830 img: c.flag || heroDefaultImg, 831 url: url + slug, 832 cities: Array.isArray(c.cities) ? c.cities : [] 833 }; 834 } 835 function heroRegionItem(r) { 836 var slug = (r.sitemapSlug && r.sitemapSlug.trim() !== '') 837 ? r.sitemapSlug 838 : 'esim-' + r.code.toLowerCase(); 839 return { name: r.name, img: r.flag || heroDefaultImg, url: url + slug }; 840 } 841 var heroPopularSpec = [ 842 { kind: 'region', key: 'Europe' }, 843 { kind: 'country', key: 'US' }, 844 { kind: 'country', key: 'TR' }, 845 { kind: 'country', key: 'AE' }, 846 { kind: 'country', key: 'JP' }, 847 { kind: 'country', key: 'IN' }, 848 { kind: 'country', key: 'TH' }, 849 { kind: 'country', key: 'MY' }, 850 { kind: 'country', key: 'FR' } 851 ]; 852 var heroPopular = [];
853 heroPopularSpec.forEach(function (spec) { 854 if (spec.kind === 'country') { 855 var c = countries.find(function (x) { return x.code === spec.key; }); 856 if (c) heroPopular.push(heroCountryItem(c)); 857 } else { 858 var r = regions.find(function (x) { 859 return x.name && x.name.toLowerCase() === spec.key.toLowerCase(); 860 }); 861 if (r) heroPopular.push(heroRegionItem(r)); 862 } 863 }); 864 window.heroData = { 865 popular: heroPopular, 866 all: countries.map(heroCountryItem).concat(regions.map(heroRegionItem)) 867 }; 868 heroSearchDestinations = window.heroData.all; 869 // refresh if the dropdown is already open while data loads 870 if ($('#heroSearchDropdown').hasClass('open')) { renderHeroDropdown(); } 871 }, 872 error: function () { 873 console.warn('Failed to fetch data'); 874 } 875 }); 876 $('#countrySearch').on('input', function () { 877 const searchTerm = this.value.toLowerCase(); 878 if (searchTerm !== '') { 879 $('.card-country-popular').hide(); 880 $('.card-country').show(); 881 882 $('.destinations .card-country .destination').each(function () { 883 const name = $(this).find('.destination-name').text().toLowerCase(); 884 $(this).toggle(name.includes(searchTerm)); 885 }); 886 } else { 887 $('.card-country-popular').show(); 888 $('.card-country').hide(); 889 $('.destinations .card-country .destination').each(function () { 890 $(this).show(); 891 }); 892 } 893 }); 894 }); 895 </script>
895 896 897 898 <link rel="stylesheet" href="https://esimcard.biz/css/promo-coupon.css?v=1.0.0"> 899 900<!-- Overlay Background --> 901<div class="promo-overlay" aria-hidden="true"></div> 902 903<!-- Desktop/Tablet Modal --> 904<div class="promo-modal" role="dialog" aria-modal="true" aria-labelledby="promoModalTitle" aria-describedby="promoModalDesc"> 905 <button class="promo-close-btn" id="promoModalCloseBtn" aria-label="Close promotion"> 906 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> 907 <line x1="18" y1="6" x2="6" y2="18"></line> 908 <line x1="6" y1="6" x2="18" y2="18"></line> 909 </svg> 910 </button> 911 <img src="https://esimcard.biz/images/logo-new.svg" alt="eSIM Card" class="promo-logo"> 912 <h2 class="promo-title" id="promoModalTitle">Special Offer Just For You</h2> 913 <p class="promo-description" id="promoModalDesc"> 914 Get 10% OFF on your first eSIM purchase.<br>Use the coupon code below at checkout. 915 </p> 916 <div class="promo-coupon-card" aria-label="Coupon code">GLOBAL10</div> 917 <button class="promo-primary-btn" id="promoModalCopyBtn">Copy Coupon Code</button> 918 <button class="promo-secondary-btn" id="promoModalLaterBtn">Maybe Later</button> 919</div> 920 921<!-- Mobile Bottom Sheet --> 922<div class="promo-sheet" role="dialog" aria-modal="true" aria-labelledby="promoSheetTitle" aria-describedby="promoSheetDesc"> 923 <div class="promo-sheet-handle" aria-hidden="true"></div> 924 <img src="https://esimcard.biz/images/logo-new.svg" alt="eSIM Card" class="promo-logo"> 925 <h2 class="promo-title" id="promoSheetTitle">Special Offer Just For You</h2> 926 <p class="promo-description" id="promoSheetDesc"> 927 Get 10% OFF on your first eSIM purchase.<br>Use the coupon code below at checkout. 928 </p> 929 <div class="promo-coupon-card" aria-label="Coupon code">GLOBAL10</div> 930 <button class="promo-primary-btn" id="promoSheetCopyBtn">Copy Coupon Code</button> 931 <button class="promo-secondary-btn" id="promoSheetCloseBtn">Close</button> 932</div> 933 934<!-- Premium Floating Coupon Pill Trigger (All Devices) --> 935<div class="promo-pill-wrapper" id="promoPillWrapper"> 936 <div class="promo-pill-float-container"> 937 <button class="promo-floating-pill" id="promoFloatingPill" aria-label="Open first purchase 10% off coupon promotion"> 938 <div class="promo-pill-left"> 939 <span class="promo-pill-title">ð 10% OFF Available</span> 940 <span class="promo-pill-subtitle">Use Code: <strong class="promo-pill-code">GLOBAL10</strong></span> 941 </div> 942 <div class="promo-pill-right"> 943 <span class="promo-pill-tag">Offer Saved</span> 944 </div> 945 </button> 946 </div> 947</div> 948
949<script src="https://esimcard.biz/js/promo-coupon.js" defer></script>
949 950</body> 951 952</html>
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.