How to Identify Hosting Provider Traffic vs Real Users? (with API implementation)
In backend engineering, not all traffic is equal. When a request hits your server, the IP address carries more than just a routing destination; it carries metadata about the origin network. For any production application, distinguishing between a real user (on a residential or mobile connection) and hosting traffic (originating from a data center) is a critical technical requirement.
Modern web applications receive traffic from many sources: end users on consumer ISPs, corporate networks, cloud platforms, CDNs, monitoring tools, and automated crawlers. Treating all traffic as “users” leads to distorted analytics, weaker security controls, and ineffective rate limiting.
This article explains how to identify hosting provider traffic vs real users using IP intelligence. It focuses on practical techniques backend and security engineers can apply today, with concrete examples and clear limitations.

Understanding the problem
From a server’s point of view, every request originates from an IP address. That IP might belong to:
- A residential ISP (typical human users)
- A mobile carrier
- A cloud or hosting provider (AWS, Azure, GCP, VPS providers)
- A CDN edge node
- A corporate proxy or VPN
- An automated monitoring or scraping system
Many non-human or semi-automated systems run from hosting provider IP ranges. This includes scrapers, credential stuffers, vulnerability scanners, uptime checks, and internal automation.
If you don’t distinguish these sources, you may:
- Overcount active users
- Misclassify fraud or abuse
- Apply incorrect rate limits
- Break legitimate bots (or fail to stop abusive ones)
What defines “hosting provider traffic”?
Hosting provider traffic usually originates from IP ranges assigned to:
- Cloud infrastructure providers
- Data centers and VPS providers
- Dedicated server networks
Technically, these IPs share common properties:
- a. ASN ownership: They belong to Autonomous Systems registered to cloud or hosting companies.
- b. Network allocation type: Labeled as “hosting”, “datacenter”, or “cloud” in IP intelligence databases.
- c. Usage patterns: High request rates, uniform user agents, predictable request intervals.
It’s important to note that hosting traffic is not always malicious. Legitimate use cases include webhooks, background jobs, CI/CD systems, and monitoring services.
Why You Must Identify Hosting Traffic
Identifying hosting traffic isn't just about blocking bots; it's about context-aware logic in your backend.
Security and Fraud Prevention
Most automated attacks—DDoS, brute force, and vulnerability scanning—are executed from cloud infrastructure because of its scalability. If a login attempt for a "local" user comes from a DigitalOcean data center in a different country, the risk profile is significantly higher.
Accurate Analytics
If 30% of your "unique visitors" are actually uptime monitors and search engine crawlers, your conversion metrics are wrong. Identifying hosting traffic allows you to segment your data to see how actual humans interact with your product.
Content Licensing and Compliance
Many streaming services and SaaS platforms restrict access based on user type to prevent VPN usage. Since most commercial VPNs host their exit nodes in data centers, identifying "hosting" traffic is the most effective way to detect proxy usage.
Practical Implementation: Inspecting the IP using IP2GEO API
To identify the traffic type, you need to query an IP intelligence database that maps IP ranges to their known usage types.
Using a specialized service like ip2geoapi.com, you can retrieve the type of an IP address in a single GET request.
curl "https://api.ip2geoapi.com/ip/8.8.8.8?key=YOUR_API_KEY"
Get your free API key from our API key page. (free tier includes 100,000 requests per month).
Analyzing the JSON Response
A robust IP intelligence API will return a field specifically identifying the connection type. Here is what a typical response looks like for a hosting provider:
{
"success": true,
"ip": "8.8.8.8",
"version": "ipv4",
"geo": {
"city": "Chicago",
"country": "United States",
"countryCode": "US",
"region": null,
"regionCode": null,
"latitude": 37.751,
"longitude": -97.822,
"postalCode": null,
"geonameId": 6252001,
"accuracyRadius": 1000,
"metroCode": null,
"continentName": "North America",
"continentCode": "NA",
"isEuMember": false
},
"countryInfo": {
"name": "United States of America",
"alpha2Code": "US",
"alpha3Code": "USA",
"flag": "https://api.ip2geoapi.com/assets/flags/us.svg",
"callingCodes": [
"1"
],
"currencies": [
{
"code": "USD",
"name": "United States dollar",
"symbol": "$"
}
],
"languages": [
{
"iso639_1": "en",
"iso639_2": "eng",
"name": "English",
"nativeName": "English"
}
]
},
"timezoneInfo": {
"timezone": "America/Chicago",
"utcOffsetSeconds": -21600,
"utcOffsetText": "-06:00",
"utcOffsetHours": -6,
"isDst": false,
"abbreviation": "CST",
"localTime": "2026-01-11T20:27:34-06:00"
},
"network": {
"cidr": "8.8.8.8/32",
"prefixLen": 32,
"asn": 15169,
"asFormatted": "AS15169",
"asName": "GOOGLE",
"isp": "Google",
"organization": "Google",
"connectionType": "Corporate",
"mobile": {
"mcc": null,
"mnc": null
}
},
"asDetails": {
"asn": 15169,
"abuser_score": "0.001 (Low)",
"descr": "GOOGLE, US",
"country": "us",
"active": true,
"org": "Google LLC",
"domain": "google.com",
"abuse": "[email protected]",
"type": "hosting",
"created": "2000-03-30",
"updated": "2012-02-24",
"rir": "ARIN"
},
"security": {
"isHosting": true,
"isProxy": false,
"proxyType": null,
"isVpn": false,
"vpnProvider": null,
"vpnProviderUrl": null,
"isTor": false,
"isAnonymous": true,
"trustScore": 65,
"riskLevel": "medium"
}
}
Key fields for identifying hosting provider traffic:
asDetails.org
Indicates who owns the IP address
asDetails.type
Common values include residential, mobile, hosting
security.isHosting
Boolean flag suitable for fast decision-making in backend code
This IP belongs to a cloud operator, not a consumer ISP, so requests from it should not be treated as typical end-user traffic.
Applying this in backend logic
if isHosting:
apply_strict_rate_limits()
reduce_trust_score()
else:
apply_standard_limits()
Avoid using IP type alone as a hard block unless you fully understand the impact.
Basic Python implementation (requests-based)
import requests
API_KEY = "YOUR_API_KEY"
API_URL = "https://api.ip2geoapi.com/ip/"
TIMEOUT = 20
def allow_request(ip: str) -> bool:
try:
r = requests.get(
f"{API_URL}{ip}",
params={"key": API_KEY},
timeout=TIMEOUT
)
r.raise_for_status()
data = r.json()
except Exception:
# fail-open on lookup failure
return True
security = data.get("security", {})
if security.get("isHosting") is True:
return False
return True
Usage
ip = "8.8.8.8"
if allow_request(ip):
print("ALLOW")
else:
print("DENY")
Implementation Strategies with IP2GEOAPI.com
Manually maintaining a database of millions of IP ranges and their ownership is unfeasible for most teams. This is where ip2geoapi.com excels. It provides high-accuracy, real-time data on IP types, including specific flags for VPNs and Proxies.
One of the standout features of the ip2geoapi.com service is its developer-friendly tier. They offer 100,000 free requests per month, which is more than enough for small to medium-sized applications to run full-scale production traffic filtering. The API is remarkably fast and highly reliable, making it an excellent choice for middleware integration where latency is a concern.
Common Pitfalls and Edge Cases
While IP intelligence is powerful, developers should be aware of specific edge cases:
- Corporate Proxies: Large enterprises often route their internal employee traffic through a central data center. This traffic might be flagged as "hosting" or "business," even though the user is a real human.
- iCloud Private Relay: Apple's Private Relay uses specific egress IPs that can appear as hosting/proxy traffic. Specialized databases are required to identify these specifically so as not to block legitimate Safari users.
- IPv6 Mapping: Ensure your provider supports IPv6. Many legacy databases have poor coverage for IPv6 hosting ranges, leading to false negatives where bot traffic slips through.
No IP classification system is perfect. Known limitations:
- Corporate networks may appear similar to hosting providers
- Mobile carrier gateways can aggregate many users behind few IPs
- New IP ranges may take time to be categorized
Best practice is to:
- Use IP intelligence as one signal
- Combine it with behavioral analysis
- Monitor false positives and adjust thresholds
| Condition | isHosting | isTor | isAnonymous | trustScore | Decision |
|---|---|---|---|---|---|
| TOR exit node | ❌ | ✅ | — | any | DENY |
| Anonymous network with low trust | — | ❌ | ✅ | < 60 | DENY |
| Hosting provider with very low trust | ✅ | ❌ | ❌ | < 50 | DENY |
| Hosting provider (normal trust) | ✅ | ❌ | ❌ | ≥ 50 | ALLOW |
| VPN or proxy (non-anonymous) | ❌ | ❌ | ❌ | any | ALLOW |
| Residential / mobile user | ❌ | ❌ | ❌ | ≥ 60 | ALLOW |
| IP lookup failed | — | — | — | — | ALLOW (fail-open) |
Conclusion
Identifying hosting provider traffic vs real users is essential for accurate analytics, effective security controls, and reliable backend behavior.
Key takeaways:
- Hosting traffic is common and not inherently bad
- ASN and network-type data are reliable indicators
- IP intelligence should inform decisions, not replace logic
- IPv4 and IPv6 must both be handled correctly
With proper classification and careful policy design, you can treat different traffic sources appropriately without breaking legitimate use cases.