Calculator Tools Calculator Tools

Token Purchaser Finder

Aug 12, 2026

About this app

Find wallets that purchased multiple Ethereum tokens

Token Purchaser Finder 🔍 Token Purchaser Finder Enter the contract addresses of two Ethereum tokens to find wallets that purchased both tokens and the time of purchase. API Key Contract 1 Contract 2 Find Common Wallets Wallet Address Token 1 Purchase Time Token 2 Purchase Time

Put this on your site

Source

                    <html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">

<title>Token Purchaser Finder</title>
<meta name="description" content="Find wallets that purchased multiple Ethereum tokens">
<meta name="keywords" content="ethereum, token, wallet, purchase">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">

<!-- Built-In Functions for Apps -->
<script type="text/javascript">
var localStoragePrefix = "ct-168117917671587";
var lastSave = 0;
// save to localstorage
function saveLocal(data) {
if (Date.now() - lastSave < 1000) {
return;
}
// save to cookie
let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict";
cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString();
document.cookie = cookie;
lastSave = Date.now();
}

// load from localstorage
function loadLocal() {
var cookiePrefix = localStoragePrefix + "=";
var cookieStart = document.cookie.indexOf(cookiePrefix);
if (cookieStart > -1) {
let cookieEnd = document.cookie.indexOf(";", cookieStart);
if (cookieEnd == -1) {
cookieEnd = document.cookie.length;
}
var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd);
return JSON.parse(cookieData);
}
}
</script>

<script type="text/javascript">
// App Javascript Goes Here
async function fetchTransactions(contractAddress, apiKey) {
let url = `https://api.etherscan.io/api?module=account&action=tokentx&contractaddress=${contractAddress}&startblock=0&endblock=999999999&sort=asc&apikey=${apiKey}`;
let response = await fetch(url);
let data = await response.json();
return data.result;
}

async function findCommonWallets() {
let contract1 = $("#contract1").val();
let contract2 = $("#contract2").val();
let apiKey = $("#api-key").val();
let transactions1 = await fetchTransactions(contract1, apiKey);
let transactions2 = await fetchTransactions(contract2, apiKey);
let wallets1 = new Set(transactions1.map(tx => tx.from));
let wallets2 = new Set(transactions2.map(tx => tx.from));
let commonWallets = [];

for (let wallet of wallets1) {
if (wallets2.has(wallet)) {
commonWallets.push(wallet);
}
}

displayResults(commonWallets, transactions1, transactions2);
}

function displayResults(wallets, transactions1, transactions2) {
let tableBody = $("#result-table tbody");
tableBody.empty();

for (let wallet of wallets) {
let tx1 = transactions1.find(tx => tx.from === wallet);
let tx2 = transactions2.find(tx => tx.from === wallet);

let row = `
<tr>
<td>${wallet}</td>
<td>${tx1.timeStamp}</td>
<td>${tx2.timeStamp}</td>
</tr>
`;

tableBody.append(row);
}
}
</script>

<style>
/* App CSS Goes Here */
body {
font-family: 'Roboto', sans-serif;
background-color: #f5f5f5;
}
#main-container {
margin-top: 20px;
}
.input-group {
margin-bottom: 10px;
}
table {
background-color: white;
}
th, td {
padding: 10px;
}
</style>
</head>
<body>
<div id="main-container" class="container">
<!-- App HTML Goes Here -->
<h1>🔍 Token Purchaser Finder</h1>
<p>Enter the contract addresses of two Ethereum tokens to find wallets that purchased both tokens and the time of purchase.</p>

<div class="input-group">
<span class="input-group-text">API Key</span>
<input type="text" class="form-control" id="api-key" placeholder="Enter your Etherscan API Key">
</div>

<div class="input-group">
<span class="input-group-text">Contract 1</span>
<input type="text" class="form-control" id="contract1" value="0x0db5cF386a9FE104Fe3597F013db71bfAe89416c">
</div>
<div class="input-group">
<span class="input-group-text">Contract 2</span>
<input type="text" class="form-control" id="contract2" value="0x49CB7d1d6D20E217A74F8BF346F0D2c1CFaB604C">
</div>
<button class="btn btn-primary" onclick="findCommonWallets()">Find Common Wallets</button>

<table id="result-table" class="table table-bordered table-striped">
<thead>
<tr>
<th>Wallet Address</th>
<th>Token 1 Purchase Time</th>
<th>Token 2 Purchase Time</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</body>
</html>