<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Top OnlyFans Models Near You</title> <meta name="description" content="Discover the hottest OnlyFans models in your area. Click to explore their profiles and claim exclusive content!" /> <meta name="keywords" content="OnlyFans, models, exclusive content" /> <!-- Yandex.Metrika counter --> <script type="text/javascript"> (function (m, e, t, r, i, k, a) { m[i] = m[i] || function () { (m[i].a = m[i].a || []).push(arguments); }; m[i].l = 1 * new Date(); for (var j = 0; j < document.scripts.length; j++) { if (document.scripts[j].src === r) { return; } } (k = e.createElement(t)), (a = e.getElementsByTagName(t)[0]), (k.async = 1), (k.src = r), a.parentNode.insertBefore(k, a); })( window, document, "script", "https://mc.yandex.ru/metrika/tag.js?id=104339903", "ym" ); ym(104339903, "init", { ssr: true, webvisor: true, clickmap: true, ecommerce: "dataLayer", accurateTrackBounce: true, trackLinks: true, }); </script> <noscript ><div> <img src="https://mc.yandex.ru/watch/104339903" style="position: absolute; left: -9999px" alt="" /></div ></noscript> <!-- /Yandex.Metrika counter --> <style> body { margin: 0; background-color: #0b0d17; font-family: Arial, sans-serif; } h1 { text-align: center; color: white; margin-bottom: 10px; } .cards-wrapper { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 24px; padding: 24px; max-width: 1300px; margin: auto; } .card { position: relative; border-radius: 20px; overflow: hidden; background-color: #1c1c2b; color: white; text-align: center; text-decoration: none; transition: transform 0.3s; z-index: 0; } .card::before { content: ""; position: absolute; top: -2px; left: -2px; right: -2px; bottom: -2px; z-index: -1; background: linear-gradient( 270deg, #ff00cc, #3333ff, #00ffcc, #ffcc00, #ff0066 ); background-size: 1000% 1000%; animation: borderAnimation 10s ease infinite; border-radius: 22px; } @keyframes borderAnimation { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .card img { width: 100%; height: auto; display: block; } .online-badge { position: absolute; top: 12px; left: 12px; background-color: #00e676; color: white; font-size: 12px; padding: 4px 10px; border-radius: 999px; font-weight: bold; z-index: 1; } .name { font-size: 20px; font-weight: bold; padding: 12px 0; } .button-wrapper { background: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), #000); padding: 16px; border-top: 1px solid #333; display: flex; flex-direction: column; gap: 12px; } .onlyfans-button { display: inline-flex; align-items: center; justify-content: center; font-size: 16px; color: white; padding: 10px 20px; border-radius: 30px; background-color: #111; border: 2px solid #999; text-decoration: none; font-weight: bold; gap: 8px; } .onlyfans-button svg { width: 18px; height: 18px; fill: white; } .claim-button { position: relative; overflow: hidden; width: 100%; padding: 12px 20px; border-radius: 30px; font-size: 16px; font-weight: bold; color: white; background-color: #e91e63; border: none; cursor: pointer; transition: background-color 0.3s, transform 0.2s; } .claim-button:hover { background-color: #d81b60; } .claim-button .shine { content: ""; position: absolute; top: 0; left: -75%; height: 100%; width: 50%; background: linear-gradient( 120deg, transparent, rgba(255, 255, 255, 0.4), transparent ); transform: skewX(-25deg); animation: shine 2.5s infinite; } @keyframes shine { 0% { left: -75%; } 100% { left: 125%; } } .claimed { background-color: #4caf50 !important; color: #fff !important; position: relative; } .claimed::after { content: " ✅"; font-size: 18px; margin-left: 8px; } @media (max-width: 768px) { .cards-wrapper { grid-template-columns: 1fr; } } </style> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-M98STRDE16" ></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag("js", new Date()); gtag("config", "G-M98STRDE16"); </script> </head> <body> <h1>Best OnlyFans Models</h1> <h1 id="location-text">Near your area</h1> <div id="api-cards-container" class="cards-wrapper"></div> <!-- Dynamic City Detection Script --> <script> (async function () { try { console.log("Fetching location data..."); const response = await fetch("https://ipapi.co/json/"); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); console.log("Location data received:", data); if (!data.city) { console.warn("No city found in response"); throw new Error("City not available"); } const locationText = document.getElementById("location-text"); const city = data.city; console.log("Setting city to:", city); locationText.textContent = `Near 📍 ${city}`; } catch (error) { console.error("Location detection failed:", error); document.getElementById("location-text").textContent = "Near your area"; } })(); </script> <!-- Card Loader Script --> <script> (async function () { try { const urlParams = new URLSearchParams(window.location.search); const maxCards = urlParams.get("m") || 20; // Default to 20 if not specified const pid = urlParams.get("pid") || 1; // Default pid if not specified const response = await fetch( `https://adban-api-39736907df5c.herokuapp.com/getmodels?id=${pid}&max=${maxCards}` ); const data = await response.json(); const container = document.getElementById("api-cards-container"); data.forEach((item) => { const card = document.createElement("a"); card.className = "card"; card.href = item.link; card.target = "_blank"; card.rel = "noopener"; card.innerHTML = ` <span class="online-badge">● Online</span> <img src="${item.image}" alt="${item.name}" /> <div class="name">${item.name}</div> <div class="button-wrapper"> <div class="onlyfans-button"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"> <path d="M572.52 241.4c-1.46-1.78-36.45-44-93.75-82.84-53.51-35.44-113.36-54.56-181.77-54.56-68.4 0-128.26 19.12-181.77 54.56C39.93 197.4 4.94 239.62 3.48 241.4a32.13 32.13 0 0 0 0 39.2c1.46 1.78 36.45 44 93.75 82.84 53.51 35.44 113.36 54.56 181.77 54.56 68.4 0 128.26-19.12 181.77-54.56 57.3-38.81 92.29-81.03 93.75-82.84a32.13 32.13 0 0 0 0-39.2zM288 400c-70.69 0-128-57.31-128-128s57.31-128 128-128 128 57.31 128 128-57.31 128-128 128zm0-208a80 80 0 1 0 80 80 80.09 80.09 0 0 0-80-80z"/> </svg> Visit OnlyFans ${item.type === "free" ? "(Free)" : ""} </div> <button class="claim-button"> <span class="shine"></span> Chat and claim free nude </button> </div> `; container.appendChild(card); // Handle claim button behavior const claimBtn = card.querySelector(".claim-button"); claimBtn.addEventListener("click", function (e) { e.preventDefault(); claimBtn.classList.add("claimed"); claimBtn.textContent = "Claimed!"; claimBtn.style.transform = "scale(1.05)"; setTimeout(() => { claimBtn.style.transform = "scale(1)"; }, 300); }); }); } catch (error) { console.error("Error loading cards:", error); } })(); </script> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"6fc7cb8592224c21b05d1764f3390c9b","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script></body></html>