An automatically updated list of IP addresses associated with the popular mobile VPN provider, TunnelBear.
IPBlocklist | IP2X | ProtonVPN-IPs | TunnelBear-IPs | Windscribe-IPs
| File | Raw Link | Purpose |
|---|---|---|
tunnelbear_ips.json |
Raw | Unique server IP addresses (JSON array) |
tunnelbear_ips.txt |
Raw | Unique server IP addresses (plain text, one per line) |
tunnelbear_ips_ttl.json |
Raw | TTL tracking data for IP expiry |
Server IPs are fetched from the TunnelBear/PolarBear API across all supported countries. A TTL mechanism keeps the list accurate over time:
- Newly discovered IPs receive a TTL of 30
- IPs absent from the latest fetch have their TTL decremented by 1
- IPs that reach TTL 0 are removed from the list
One or more TunnelBear accounts are required to authenticate against the API.
| Secret | Purpose |
|---|---|
tunnelbear_email |
TunnelBear account email (primary) |
tunnelbear_password |
TunnelBear account password (primary) |
tunnelbear_email1 |
Additional account email (optional) |
tunnelbear_password1 |
Additional account password (optional) |
Additional accounts can be added by incrementing the suffix (tunnelbear_email2 / tunnelbear_password2, etc.). Using multiple accounts reduces the chance of rate-limiting during the full country sweep.
- Create a TunnelBear account: Sign up at tunnelbear.com (free accounts work)
- Add secrets: In your repository go to Settings → Secrets and variables → Actions, add the required secrets
- Test: Run the workflow from the Actions tab
import json
def is_tunnelbear_ip(ip_to_check):
with open('tunnelbear_ips.json', 'r') as f:
tunnelbear_ips = set(json.load(f))
return ip_to_check in tunnelbear_ips
if is_tunnelbear_ip("216.238.101.72"):
print("TunnelBear server IP detected")import json
from typing import List, Dict
def check_multiple_ips(ips_to_check: List[str]) -> Dict[str, bool]:
try:
with open('tunnelbear_ips.json', 'r') as f:
tunnelbear_ips = set(json.load(f))
return {ip: ip in tunnelbear_ips for ip in ips_to_check}
except Exception as e:
return {'error': str(e)}
ips = ["216.238.101.72", "192.168.1.1"]
results = check_multiple_ips(ips)
for ip, is_tb in results.items():
print(f"{ip}: TunnelBear={is_tb}")