Skip to content
InternetData

Route players well, and keep bans in place.

Each connection's address says where the player is, whose network they're on and whether they hide behind a VPN, a proxy or a hosting server. Use it to pick their region and to keep banned players and bot farms out.

Unlimited lookups, no key needed · Sign up to try every field, no card
server.log
Example
  • Kai joined
    198.51.100.7
    Osaka, JapanAsia/TokyoTokyo region
  • xAce joined
    203.0.113.24
    VPNNordVPNKicked
  • farm_0193 joined
    192.0.2.140
    HostingKicked
  • Mia joined
    203.0.113.91
    CarrierT-MobileJoined

Better matches, and bans that stick.

  • Region routing

    Players far from a server lag and leave. Send each to the closest region by the city's coordinates, or by the country.

    Answered bylocation.latitudelocation.country
  • Ban evasion

    A banned player comes back on a VPN or a fresh proxy address. Check on connect, and the ban holds.

    Answered byis_vpnis_resproxy
  • Bot farms

    Bots run from hosting servers and datacenter proxies, where real players connect from home and mobile lines. Turn them away on connect.

    Answered byis_hostingis_dcproxy
  • Satellite and mobile players

    A geostationary satellite link lags wherever the server is. Spot it and match those players with each other rather than with fiber.

    Answered byis_satelliteis_carrier

Where players are, and what they hide behind.

Tor, the country and timezone, and the satellite and carrier flags answer with no key and no daily or monthly cap. VPN, proxy and hosting flags and the city's coordinates come with every paid plan, and Pricing lists every field by plan.

  • location.country, timezone
    The country and timezone, for regions and event times.Unlimited
  • location.latitude, longitude
    The city's coordinates, with an accuracy radius.Paid plans
  • is_vpn
    A commercial VPN's exit, with the service named.Paid plans
  • is_resproxy
    Someone's home connection resold as a proxy.Paid plans
  • is_hosting, is_dcproxy
    Hosting servers and datacenter proxies, where bots run.Paid plans
  • is_satellite, is_carrier
    Satellite and mobile carrier networks; a paid plan names the operator and a satellite's orbit.Unlimited
  • is_tor
    A Tor node, from the public Tor set, rebuilt daily.Unlimited

Check each player as they connect.

  1. 01

    On connect

    Look up the address before the player spawns, so a banned player on a VPN never reaches the match. The official clients keep each answer for an hour, so a reconnect costs no lookup.

  2. 02

    In matchmaking

    Use the city's coordinates, or the country, to pick the nearest region. Group players on satellite links together where you can.

  3. 03

    At account creation

    Hold accounts made from hosting servers or datacenter proxies for review. That's where alt and bot accounts come from, not players at home.

Start free, then add every field.

The same code runs with no key and with one: without a key it answers the free fields, and an upgrade adds the rest with no change to the code.

  1. 1

    Call it with no key

    Unlimited

    Run the code on this page as it is, with no account.

  2. 2

    Sign up for a key

    No card

    Your account's first 100 lookups each day answer every field, so you can try the VPN, proxy and hosting checks on real players.

  3. 3

    Upgrade for every lookup

    From $39 a month

    Every paid plan answers every field on every lookup, and takes up to 1,000 lookups in one request.

import { InternetData } from "@internetdata/internetdata";
// No key needed. With one, every field answers.
const client = new InternetData({ apiKey: process.env.INTERNETDATA_API_KEY });
export async function onConnect(player) {
const r = await client.lookup(player.ip);
// VPNs, proxies and hosting answer on a paid plan.
if (r.isTor || r.isVpn || r.isResproxy || r.isDcproxy
|| (r.isHosting && !r.isRelay)) {
return kick(player);
}
// The coordinates are a paid plan's; the country is every plan's.
const { country, latitude, longitude } = r.location;
return joinRegion(player, nearestRegion(country, latitude, longitude));
}
connect.mjsnpm install @internetdata/internetdata

Also available for Web, .NET, Ruby, Rust, Swift, Erlang, Perl and Zig. See all on GitHub →

On this page

Can a game server check players without a key?

Yes. Unlimited answers Tor, the country, the timezone and the satellite and carrier flags with no key and no cap, so a server plugin can ship today. VPN and proxy flags take a paid plan's key.

00 · Unlimited

Unlimited lookups, no sign-up.

Paste it into a terminal. Any address answers with its country, network, company and hostname, with no key and no daily or monthly cap. ASes and domains answer too.

curl https://api.internetdata.io/8.8.8.8
{
"ip": "8.8.8.8",
"is_bogon": false,
"is_tor": false,
"is_relay": false,
"is_anycast": true,
"is_carrier": false,
"is_satellite": false,
"is_ssh": false,
"is_smtp": false,
"is_web": true,
"is_dns_resolver": true,
"is_bittorrent": false,
"hostname": "dns.google",
"location": {
"continent": "NA",
"continent_name": "North America",
"country": "US",
"country_name": "United States",
"timezone": "America/Los_Angeles",
"currency_code": "USD",
"currency_name": "Dollar",
"currency_symbol": "$",
"flag_emoji": "🇺🇸",
"flag_unicode": "U+1F1FA U+1F1F8"
},
"asn": {
"asn": 15169,
"name": "Google LLC",
"domain": "google.com",
"type": "hosting",
"prefix": "8.8.8.0/24"
},
"company": {
"name": "Google LLC",
"domain": "google.com"
},
"tor": {},
"relay": {},
"abuse": {
"email": "network-abuse@google.com"
}
}
01 · Every field

All of the data on a paid plan.

VPN, proxy, hosting and CDN flags, each naming the operator.
Location to the city, with coordinates and an accuracy radius.
WHOIS records, the whole abuse contact and the services an address runs.
Up to 1,000 addresses, ASes and domains in one request.

A free API key answers every field for its first 100 lookups each day, with no card.