curl --request POST \
--url https://api.finowl.co/v1/ip/intelligence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ip": "8.8.8.8"
}
'{
"ip": "8.8.8.8",
"version": 4,
"country_code": "US",
"country": "United States",
"region": "California",
"city": "Mountain View",
"asn": 15169,
"as_name": "Google LLC",
"hosting": true,
"hosting_provider": "google_cloud",
"tor": false,
"reserved": false,
"location": {
"latitude": 37.422,
"longitude": -122.085,
"timezone": "America/Los_Angeles",
"local_time": "2026-10-15T10:27:05-07:00",
"utc_offset": "-07:00"
},
"country_info": {
"code": "US",
"name": "United States",
"flag": "🇺🇸",
"continent": "North America",
"currency": "USD",
"language": "en",
"in_eu": false,
"calling_code": 1
},
"network": {
"asn": 15169,
"as_name": "Google LLC",
"cidr": "8.8.8.0/24",
"rir": "ARIN",
"allocated": "2023-12-28",
"registered_country": "US",
"type": "hosting",
"reverse_dns": "dns.google"
},
"privacy": {
"hosting": true,
"hosting_provider": "google_cloud",
"tor": false,
"vpn": false,
"icloud_private_relay": false,
"crawler": null
},
"risk": {
"score": 40,
"level": "medium",
"factors": [
"hosting"
]
}
}IP Intelligence
Know whether an IP address can be trusted before you act: VPN, Tor, hosting and relay flags, network and ASN, geolocation and a risk score in one request.
curl --request POST \
--url https://api.finowl.co/v1/ip/intelligence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ip": "8.8.8.8"
}
'{
"ip": "8.8.8.8",
"version": 4,
"country_code": "US",
"country": "United States",
"region": "California",
"city": "Mountain View",
"asn": 15169,
"as_name": "Google LLC",
"hosting": true,
"hosting_provider": "google_cloud",
"tor": false,
"reserved": false,
"location": {
"latitude": 37.422,
"longitude": -122.085,
"timezone": "America/Los_Angeles",
"local_time": "2026-10-15T10:27:05-07:00",
"utc_offset": "-07:00"
},
"country_info": {
"code": "US",
"name": "United States",
"flag": "🇺🇸",
"continent": "North America",
"currency": "USD",
"language": "en",
"in_eu": false,
"calling_code": 1
},
"network": {
"asn": 15169,
"as_name": "Google LLC",
"cidr": "8.8.8.0/24",
"rir": "ARIN",
"allocated": "2023-12-28",
"registered_country": "US",
"type": "hosting",
"reverse_dns": "dns.google"
},
"privacy": {
"hosting": true,
"hosting_provider": "google_cloud",
"tor": false,
"vpn": false,
"icloud_private_relay": false,
"crawler": null
},
"risk": {
"score": 40,
"level": "medium",
"factors": [
"hosting"
]
}
}ip/lookup? IP Intelligence is the IP lookup endpoint under a new name, with the same request and response. Change the path from /v1/ip/lookup to /v1/ip/intelligence. The old path now returns 410 with the code endpoint_renamed.Good to know
- Only need the location? IP Geolocation returns the same location fields without the network and privacy signals.
- Country is reliable, city is approximate. Country-level results are accurate for most addresses. The city is often the network operator’s location, which can be far from the user, especially on mobile networks.
- The data is refreshed daily. Addresses that recently changed hands may show their previous owner for a day or two.
hostingmeans a server, not a person. The address belongs to a cloud or hosting provider. Real users rarely browse from these, so it often points to a bot, VPN or proxy. Some company VPNs and privacy relays also run on cloud providers.tormeans the user is anonymous. The address is a current Tor exit node. The location is the exit node’s, not the user’s.reserved: trueusually means the wrong address. Private and loopback addresses such as10.0.0.5are not on the internet. Behind a load balancer, send the client address fromX-Forwarded-Forinstead.data_unavailableis free. If the IP data is still loading, the request returns503and is not charged. Try again after a few seconds.- Credit DB-IP if you show locations. The geolocation data is licensed under CC BY 4.0. If you display the city, region or country to users, include “IP geolocation by DB-IP” near it.
riskis a starting point. Tor exits, VPNs, hosting networks and iCloud Private Relay raise the score; verified search engine crawlers lower it. Combine it with your own signals before blocking anyone.network.typeis a heuristic. It comes from the hosting flag and the network operator’s name, and is oftenunknown.network.allocatedcan be a re-registration date rather than the first allocation, because the registries’ files record the latest change.
Guide: sign-up fraud checks
Authorizations
Your Finowl API key, for example finowl_3f9a.... Create keys in the dashboard under API Keys.
Body
An IPv4 or IPv6 address, such as 8.8.8.8 or 2001:4860:4860::8888. Ranges (CIDR), hostnames, ports and IPv6 zones such as fe80::1%eth0 return invalid_input.
64"8.8.8.8"
Response
The lookup completed. Unknown fields are empty or null.
The address in canonical form, for example IPv6 compressed and lowercased.
The IP version.
4, 6 ISO 3166-1 alpha-2 code of the country the address is registered to or used in. Empty when unknown or reserved.
The country name for country_code. Empty when unknown.
The state, province or region, such as California. null when unknown.
The nearest city. Often the location of the network operator rather than the user, especially for mobile networks. null when unknown.
The autonomous system number of the network that announces the address. null when unknown.
The name of that network's operator, such as Google LLC or an internet provider. null when unknown.
true when the address is in a range published by a cloud provider or belongs to a known hosting network. Real users rarely browse from these addresses, so it often indicates a server, VPN or proxy.
The hosting provider when hosting is true, other_hosting for any other hosting network, null otherwise. Treat values you don't recognize like other_hosting.
aws, google_cloud, azure, cloudflare, oracle_cloud, digitalocean, linode, vultr, hetzner, ovh, other_hosting, null true when the address is a current Tor exit node, so the real user is anonymous.
true for private, loopback, link-local, carrier-grade NAT, documentation and other reserved addresses. These are not on the public internet, so all location and network fields are empty, null or false. Usually it means you sent your proxy's address instead of the client's.
Where city is, and the local time there. Every field is null for reserved addresses.
Show child attributes
Show child attributes
Details of country_code. null when country_code is empty.
Show child attributes
Show child attributes
The network that announces the address and how it was registered. Every field is null for reserved addresses.
Show child attributes
Show child attributes
Signals that the traffic is anonymized or automated. Every flag is false and every name null for reserved addresses.
Show child attributes
Show child attributes
A simple score of how likely the address hides the real user, for ranking and review rather than as a probability.
Weights are added for each factor present and the total is clamped to 0–100: tor_exit 80, vpn 50, hosting 40,
icloud_private_relay 30, unknown_network 10, and verified_crawler subtracts 40.
Show child attributes
Show child attributes