Skip to content
IP IPBot
Get Started

ASN Lookup API - Free Autonomous System Number Lookup

Map an IP address to its ASN and organization for network intelligence and security analytics.

IPBot returns network identity under network, including the originating ASN and organization. Use ASN information for routing controls, allow/deny lists, and security analytics.

Network Classification

Identify ISP, hosting, business, or mobile networks automatically.

Organization Info

Get the company name behind any IP for allow/deny list management.

Example
curl -s https://api.ipbot.com/1.1.1.1 | jq ‘.network’

Learn more in the API Reference.

An Autonomous System Number (ASN) is a unique identifier assigned to a collection of IP networks that operate under a single administrative domain. Every organization that needs to route traffic on the internet - ISPs, cloud providers, enterprises, universities - must have an ASN.

Think of an ASN as a company ID for the internet. When you see AS15169, that’s Google. AS13335 is Cloudflare. AS7922 is Comcast. The ASN tells you who operates the network, which is valuable for security, analytics, and access control.

ASNs are assigned by Regional Internet Registries (RIRs):

RegistryRegionExample Range
ARINNorth AmericaAS1 - AS65535
RIPE NCCEurope, Middle EastAS200000+
APNICAsia-PacificVarious
LACNICLatin AmericaVarious
AFRINICAfricaVarious

There are over 100,000 assigned ASNs globally, with thousands of new assignments each year as more organizations connect to the internet.

The IPBot API returns comprehensive network data:

{
"network": {
"asn": "AS13335",
"org": "Cloudflare, Inc.",
"radar": "hosting"
}
}
FieldDescriptionTypeExample
asnAutonomous System Numberstring”AS13335”
orgOrganization namestring”Cloudflare, Inc.”
radarNetwork classificationstring”hosting”

The radar field classifies the type of network:

ValueDescriptionExamples
ispResidential Internet Service ProviderComcast, AT&T, BT
hostingCloud/datacenter/hosting providerAWS, Google Cloud, DigitalOcean
businessEnterprise/corporate networksFortune 500 companies
mobileMobile carrier networksVerizon Wireless, T-Mobile

This classification is critical for fraud detection - transactions from hosting IPs are often more suspicious than isp IPs.

75% of ecommerce businesses are increasing fraud prevention budgets in 2025. ASN lookup is a core component of fraud detection because it reveals the true nature of a connection:

const data = await fetch("https://api.ipbot.com/").then((r) => r.json());
// Flag datacenter connections for additional review
if (data.network.radar === "hosting") {
addFraudFlag("datacenter_ip", {
asn: data.network.asn,
org: data.network.org,
});
}
// Known VPN providers
const vpnAsns = ["AS9009", "AS212238", "AS62041"]; // Examples
if (vpnAsns.includes(data.network.asn)) {
addFraudFlag("known_vpn_provider");
}

Understanding your traffic sources helps optimize infrastructure and marketing:

async function analyzeTrafficSources() {
const visitors = await getRecentVisitors();
const asnStats = {};
for (const ip of visitors) {
const data = await fetch(`https://api.ipbot.com/${ip}`).then((r) =>
r.json(),
);
const asn = data.network.asn;
asnStats[asn] = asnStats[asn] || {
org: data.network.org,
type: data.network.radar,
count: 0,
};
asnStats[asn].count++;
}
// Find top ISPs serving your users
return Object.entries(asnStats)
.sort((a, b) => b[1].count - a[1].count)
.slice(0, 10);
}

Implement network-based access policies:

import requests
def check_access(client_ip: str) -> bool:
data = requests.get(f"https://api.ipbot.com/{client_ip}").json()
# Block hosting/datacenter IPs from signup
if data["network"]["radar"] == "hosting":
return False, "Datacenter IPs not allowed for registration"
# Whitelist specific corporate networks
allowed_asns = ["AS12345", "AS67890"] # Your corporate ASNs
if data["network"]["asn"] in allowed_asns:
return True, "Corporate network approved"
return True, "Access granted"

ASN data helps with:

  • Peering decisions: Identify who sends you traffic
  • CDN placement: Understand geographic distribution
  • Troubleshooting: Identify problematic networks
  • Capacity planning: Plan for growth from specific ISPs

Here are some commonly encountered ASNs:

ASNOrganizationNotes
AS16509Amazon Web ServicesLargest cloud provider
AS15169Google Cloud/GoogleAlso includes search infrastructure
AS8075Microsoft AzureMajor cloud platform
AS13335CloudflareCDN and security
AS14061DigitalOceanDeveloper-focused hosting
AS14618Amazon AWS (alternate)EC2 services
ASNOrganizationRegion
AS7922ComcastUS
AS7018AT&TUS
AS5089Virgin MediaUK
AS3320Deutsche TelekomGermany
AS4134China TelecomChina
AS4837China UnicomChina
ASNOrganizationNotes
AS9009M247Popular VPN hosting
AS62041DatacampVPN infrastructure
AS212238Datacamp LimitedVPN services
async function getNetworkInfo(ip) {
const response = await fetch(`https://api.ipbot.com/${ip}`);
const data = await response.json();
return {
asn: data.network.asn,
organization: data.network.org,
type: data.network.radar,
isDatacenter: data.network.radar === "hosting",
isResidential: data.network.radar === "isp",
};
}
// Usage
const network = await getNetworkInfo("8.8.8.8");
console.log(`${network.organization} (${network.asn}) - ${network.type}`);
// Output: "Google LLC (AS15169) - hosting"
import requests
from dataclasses import dataclass
from typing import Literal
@dataclass
class NetworkInfo:
asn: str
org: str
radar: Literal["isp", "hosting", "business", "mobile"]
@property
def is_datacenter(self) -> bool:
return self.radar == "hosting"
@property
def is_residential(self) -> bool:
return self.radar == "isp"
def get_network_info(ip: str) -> NetworkInfo:
response = requests.get(f"https://api.ipbot.com/{ip}")
data = response.json()
return NetworkInfo(
asn=data["network"]["asn"],
org=data["network"]["org"],
radar=data["network"]["radar"]
)
# Usage
network = get_network_info("8.8.8.8")
print(f"{network.org} ({network.asn}) - datacenter: {network.is_datacenter}")
Terminal window
# Get network info for any IP
curl -s https://api.ipbot.com/8.8.8.8 | jq '.network'
# Get just the ASN
curl -s https://api.ipbot.com/1.1.1.1 | jq -r '.network.asn'
# Output: AS13335
# Get organization name
curl -s https://api.ipbot.com/1.1.1.1 | jq -r '.network.org'
# Output: Cloudflare, Inc.
# Check if datacenter
curl -s https://api.ipbot.com/8.8.8.8 | jq -r '.network.radar'
# Output: hosting
# Get both location and network for context
curl -s https://api.ipbot.com/8.8.8.8 | jq '{location: .location.country, network: .network}'

Datacenter IPs are often used by bots and scrapers:

async function assessBotRisk(clientIp, userAgent) {
const data = await fetch(`https://api.ipbot.com/${clientIp}`).then((r) =>
r.json(),
);
let botScore = 0;
// Datacenter IP
if (data.network.radar === "hosting") {
botScore += 40;
}
// Known bot hosting ASNs
const botHostingAsns = ["AS62567", "AS9009"];
if (botHostingAsns.includes(data.network.asn)) {
botScore += 30;
}
// Combine with user agent analysis
if (
!userAgent ||
userAgent.includes("bot") ||
userAgent.includes("crawler")
) {
botScore += 30;
}
return { score: botScore, isLikelyBot: botScore >= 50 };
}

Understand who is accessing your site:

// Track visits from competitor networks
const competitorAsns = {
AS15169: "Google",
AS14618: "Amazon",
AS8075: "Microsoft",
};
async function trackCompetitorVisit(ip, page) {
const data = await fetch(`https://api.ipbot.com/${ip}`).then((r) => r.json());
if (competitorAsns[data.network.asn]) {
analytics.track("competitor_visit", {
company: competitorAsns[data.network.asn],
page: page,
asn: data.network.asn,
});
}
}

Apply different rate limits based on network classification:

def get_rate_limit(client_ip: str) -> int:
data = requests.get(f"https://api.ipbot.com/{client_ip}").json()
if data["network"]["radar"] == "hosting":
return 10 # Strict limit for datacenters
elif data["network"]["radar"] == "mobile":
return 100 # More lenient for mobile
else:
return 60 # Default for residential