# IPinfo Developer Documentation - Complete Reference This file contains all IPinfo developer documentation in a single document, optimized for consumption by Large Language Models (LLMs) and AI assistants. Generated: 2026-04-26T08:52:14.796Z Source: https://ipinfo.io/developers Documentation Pages: 57 --- ================================================================================ PAGE: Developer Resource URL: https://ipinfo.io/developers/ SLUG: index DESCRIPTION: Welcome to our IPinfo developer resource - the quickest and easiest way to get started with IPinfo is to use one of our official libraries. ================================================================================ # IPinfo Developer Resource [Watch video](https://www.youtube.com/embed/oMwqfJZ8Lfc) The quickest and easiest way to get started with IPinfo is to use one of our [official libraries](/developers/libraries), which are available for many popular programming languages and frameworks. If you'd like to write your own library or interact directly with our API, then the documentation below can help you. ![IPinfo Quickstat](https://website-cdn.assets.ipinfo.io/images/developers/ipinfo_quickstart.png) ## Authentication Your browser does not support the video tag. Your API token is used to authenticate you with our API and can be provided either as an HTTP Basic Auth username, a bearer token, or alternatively as a token URL parameter. **IPinfo Lite** [IPinfo Lite](/developers/lite-api) is our free tier API service available to all users. The API returns country and ASN information without any API request quota restrictions. > IPinfo Lite uses the **`api.ipinfo.io`** API URL and **`/lite`** endpoint. ```bash # With token query parameter $ curl https://api.ipinfo.io/lite/me?token=$TOKEN $ curl https://api.ipinfo.io/lite/8.8.8.8?token=$TOKEN # With Basic Auth $ curl -u $TOKEN: https://api.ipinfo.io/lite/me $ curl -u $TOKEN: https://api.ipinfo.io/lite/8.8.8.8 # With Bearer token $ curl -H "Authorization: Bearer $TOKEN" https://api.ipinfo.io/lite/me $ curl -H "Authorization: Bearer $TOKEN" https://api.ipinfo.io/lite/8.8.8.8 ``` API Response ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **IPinfo Core** [IPinfo Core](/developers/core-api) is our entry-level premium API service that combines granular geolocation, ASN data, and network flags. > IPinfo Core uses the **`api.ipinfo.io`** API URL and **`/lookup`** endpoint. ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/me?token=$TOKEN $ curl https://api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN # With Basic Auth $ curl -u $TOKEN: https://api.ipinfo.io/lookup/me $ curl -u $TOKEN: https://api.ipinfo.io/lookup/8.8.8.8 # With Bearer token $ curl -H "Authorization: Bearer $TOKEN" https://api.ipinfo.io/lookup/me $ curl -H "Authorization: Bearer $TOKEN" https://api.ipinfo.io/lookup/8.8.8.8 ``` API Response ```json { "ip": "8.8.8.8", "hostname": "dns.google", "geo": { "city": "Mountain View", "region": "California", "region_code": "CA", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 37.4056, "longitude": -122.0775, "timezone": "America/Los_Angeles", "postal_code": "94043" }, "as": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "type": "hosting" }, "is_anonymous": false, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **IPinfo Lookup** [IPinfo Plus](/developers/plus-api) API service provides granular geolocation information with accuracy radius, mobile carrier details, anonymous IP address data, and network flags. > IPinfo Plus uses the **`api.ipinfo.io`** API URL and **`/lookup`** endpoint. ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/me?token=$TOKEN $ curl https://api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN # With Basic Auth $ curl -u $TOKEN: https://api.ipinfo.io/lookup/me $ curl -u $TOKEN: https://api.ipinfo.io/lookup/8.8.8.8 # With Bearer token $ curl -H "Authorization: Bearer $TOKEN" https://api.ipinfo.io/lookup/me $ curl -H "Authorization: Bearer $TOKEN" https://api.ipinfo.io/lookup/8.8.8.8 ``` API Response ```json { "ip": "8.8.8.8", "hostname": "dns.google", "geo": { "city": "Mountain View", "region": "California", "region_code": "CA", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 38.00881, "longitude": -122.11746, "timezone": "America/Los_Angeles", "postal_code": "94043", "dma_code": "807", "geoname_id": "5375478", "radius": 500 }, "as": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **IPinfo Max** [IPinfo Max](/developers/max-api) API service provides granular geolocation information with accuracy radius, mobile carrier details, anonymous IP address data, residential proxy detection, and network flags. > IPinfo Max uses the **`api.ipinfo.io`** API URL and **`/lookup`** endpoint. ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/me?token=$TOKEN $ curl https://api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN # With Basic Auth $ curl -u $TOKEN: https://api.ipinfo.io/lookup/me $ curl -u $TOKEN: https://api.ipinfo.io/lookup/8.8.8.8 # With Bearer token $ curl -H "Authorization: Bearer $TOKEN" https://api.ipinfo.io/lookup/me $ curl -H "Authorization: Bearer $TOKEN" https://api.ipinfo.io/lookup/8.8.8.8 ``` API Response ```json { "ip": "1.0.66.247", "hostname": "247.66.0.1.megaegg.ne.jp", "geo": { "city": "Hiroshima", "region": "Hiroshima", "region_code": "34", "country": "Japan", "country_code": "JP", "continent": "Asia", "continent_code": "AS", "latitude": 34.4, "longitude": 132.45, "timezone": "Asia/Tokyo", "postal_code": "730-0011", "geoname_id": "1862415", "radius": 1000, "last_changed": "2023-07-02" }, "as": { "asn": "AS18144", "name": "Enecom,Inc.", "domain": "enecom.co.jp", "type": "business", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "name": "anyIP", "last_seen": "2026-03-30", "percent_days_seen": 25, "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": true }, "is_anonymous": true, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **IPinfo Enterprise** The [IPinfo Enterprise API](/developers/enterprise-api) service is a highly customizable service that may include all different types of IP metadata. This schema can vary for users customized to their needs. ```bash # With token query parameter $ curl https://ipinfo.io?token=$TOKEN $ curl https://ipinfo.io/8.8.8.8?token=$TOKEN # With Basic Auth $ curl -u $TOKEN: https://ipinfo.io $ curl -u $TOKEN: https://ipinfo.io/8.8.8.8 # With Bearer token $ curl -H "Authorization: Bearer $TOKEN" https://ipinfo.io $ curl -H "Authorization: Bearer $TOKEN" https://ipinfo.io/8.8.8.8 ``` API Response ```json { "ip": "82.102.30.130", "city": "Los Angeles", "region": "California", "country": "US", "loc": "34.0522,-118.2437", "org": "AS9009 M247 Europe SRL", "postal": "90012", "timezone": "America/Los_Angeles", "asn": { "asn": "AS9009", "name": "M247 Europe SRL", "domain": "m247global.com", "route": "82.102.30.0/24", "type": "hosting" }, "company": { "name": "VENUS BUSINESS COMMUNICATIONS LIMITED", "domain": "m247.com", "type": "hosting" }, "privacy": { "vpn": true, "proxy": false, "tor": false, "relay": false, "hosting": true, "service": "PrivateVPN", "confidence": 3, "coverage": 1, "census": false, "census_ports": "", "device_activity": false, "inferred": false, "vpn_config": false, "whois": false, "first_seen": "2025-10-14", "last_seen": "2026-01-11" }, "abuse": { "address": "Turing House, Archway 5, Manchester, M15 5RL, UNITED KINGDOM", "country": "GB", "email": "network.infrastructure@m247.com", "name": "M247 UK Ltd Network Infrastructure", "network": "82.102.30.128/25", "phone": "" }, "domains": { "ip": "82.102.30.130", "total": 53, "domains": [ "hdchina.org", "ymjump.com", "musicool.cn", "viewpointcloud.com", "itempurl.com" ] }, "resproxy": { "last_seen": "2026-01-05", "percent_days_seen": 13, "service": "ProxyScrape" }, "is_anycast": false, "is_mobile": false, "is_anonymous": true, "is_satellite": false, "is_hosting": true } ``` ## IP Address Parameter The API supports passing in a single IPv4 or IPv6 IP address. Alternatively, if you do not pass in any IP address, we'll return details for the calling address. This allows you to look up your own (or a visitor to your site) IP address details without knowing the IP address in advance. ### URL Structure The API follows a consistent URL structure with the following components: | Component | Description | Examples | |-----------|-------------|----------| | **Base URL** | The base domain for all API requests | `api.ipinfo.io` | | **Endpoint** | The API version endpoint | `lite` (IPinfo Lite)
`lookup` (Core/Plus) | | **IP Address** | The IP to lookup (optional, defaults to requester's IP) | `me` (your IP)
`8.8.8.8` (IPv4)
`2001:4860:4860::8888` (IPv6) | | **Field Filter** | Optional filter to return only specific fields (returned as plaintext) | `/country`
`/asn`
`/country_code`
`/is_proxy` | | **Token** | Your authentication token (query parameter) | `?token=$TOKEN` | **Example URLs:** ``` https://api.ipinfo.io/lite/me?token=$TOKEN https://api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN https://api.ipinfo.io/lite/2001:4860:4860::8888/country?token=$TOKEN ``` **IPinfo Lite** ```bash # Get details for 8.8.8.8 $ curl https://api.ipinfo.io/lite/8.8.8.8?token=$TOKEN # Get details for 2001:4860:4860::8888 $ curl https://api.ipinfo.io/lite/2001:4860:4860::8888?token=$TOKEN # Get details for your own IP address, which'll be included in the response $ curl https://api.ipinfo.io/lite/me?token=$TOKEN ``` **IPinfo Lookup** ```bash # Get details for 8.8.8.8 $ curl https://api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN # Get details for 2001:4860:4860::8888 $ curl https://api.ipinfo.io/lookup/2001:4860:4860::8888?token=$TOKEN # Get details for your own IP address, which'll be included in the response $ curl https://api.ipinfo.io/lookup/me?token=$TOKEN ``` **IPinfo Legacy** ```bash # Get details for 8.8.8.8 $ curl https://ipinfo.io/8.8.8.8?token=$TOKEN # Get details for 2001:4860:4860::8888 $ curl https://ipinfo.io/2001:4860:4860::8888?token=$TOKEN # Get details for your own IP address, which'll be included in the response $ curl https://ipinfo.io?token=$TOKEN ``` > Our API is available over a secure HTTPS connection for all users. Simply add `https://` to the request URLs to make the requests secure. ## Rate Limits IPinfo Lite offers unlimited access to our API. Paid plans include monthly request limits with configurable alerts to help you stay in control. If you exceed your plan’s limit, you’ll receive a 429 HTTP status code—but with metered billing, you can automatically extend your usage without interruptions. [Paid plans](/pricing) come with higher monthly limits, and configurable alerts. ## Filtering Responses Your browser does not support the video tag. You can filter the API response down to specific fields or objects by adding the field or object name to the URL. In the case of a field you'll get it returned in plaintext, and an object will get returned as JSON. **IPinfo Lite** ```bash # Get the ASN $ curl https://api.ipinfo.io/lite/8.8.8.8/asn?token=$TOKEN AS15169 # Get country ISO code as plaintext $ curl https://api.ipinfo.io/lite/8.8.8.8/country_code?token=$TOKEN US ``` **IPinfo Lookup** ```bash ## Get all the Geolocation data as a JSON object $ curl https://api.ipinfo.io/lookup/8.8.8.8/geo?token=$TOKEN ## Get the city name as a string $ curl https://api.ipinfo.io/lookup/8.8.8.8/geo/city?token=$TOKEN ## Get the ASN data as a JSON object $ curl https://api.ipinfo.io/lookup/8.8.8.8/as?token=$TOKEN ## Get the ASN as a string $ curl https://api.ipinfo.io/lookup/8.8.8.8/as/asn?token=$TOKEN ## Get network flag data as a string $ curl https://api.ipinfo.io/lookup/8.8.8.8/is_anonymous?token=$TOKEN $ curl https://api.ipinfo.io/lookup/8.8.8.8/is_satellite?token=$TOKEN ``` **IPinfo Enterprise** ```bash # Get the organization field $ curl https://ipinfo.io/8.8.8.8/org?token=$TOKEN AS15169 Google Inc. # Get just the city as plaintext $ curl https://ipinfo.io/8.8.8.8/city?token=$TOKEN Mountain View # Get country ISO code as plaintext $ curl https://ipinfo.io/8.8.8.8/country?token=$TOKEN US ``` ## Dual Stack API Service Our API system is dual-stacked, making it easier for users on IPv6 connections. You can access the API seamlessly without needing to switch endpoints. The examples below show how to force IPv4 or IPv6 connections using the `-4` and `-6` flags with curl. **IPinfo Lite** On IPv4 Connection: ```bash $ curl -4 https://api.ipinfo.io/lite/me?token=$TOKEN ``` API Response ```json { "ip": "102.135.36.0", "asn": "AS208485", "as_name": "Nese Mala trading as Moon Dc", "as_domain": "moondc.com", "country_code": "TR", "country": "Turkey", "continent_code": "AS", "continent": "Asia" } ``` --- On IPv6 Connection: ```bash $ curl -6 https://api.ipinfo.io/lite/me?token=$TOKEN ``` API Response ```json { "ip": "2602:f8de::", "asn": "AS53356", "as_name": "Free Range Cloud Hosting Inc.", "as_domain": "freerangecloud.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **IPinfo Lookup** On IPv4 Connection: ```bash $ curl -4 https://api.ipinfo.io/lookup/me?token=$TOKEN ``` API Response ```json { "ip": "102.135.36.0", "geo": { "city": "Victoria", "region": "La Rivière Anglaise", "region_code": "16", "country": "Seychelles", "country_code": "SC", "continent": "Africa", "continent_code": "AF", "latitude": -4.62001, "longitude": 55.45501, "timezone": "Indian/Mahe", "geoname_id": "241131", "radius": 5000, "last_changed": "2025-12-07" }, "as": { "asn": "AS9009", "name": "M247 Europe SRL", "domain": "m247global.com", "type": "hosting", "last_changed": "2025-09-04" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` --- On IPv6 Connection: ```bash $ curl -6 https://api.ipinfo.io/lookup/me?token=$TOKEN ``` API Response ```json { "ip": "2602:f8de::", "geo": { "city": "Sheridan", "region": "Wyoming", "region_code": "WY", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 44.79719, "longitude": -106.95618, "timezone": "America/Denver", "postal_code": "82801", "dma_code": "764", "geoname_id": "5838198", "radius": 20, "last_changed": "2024-08-04" }, "as": { "last_changed": "2025-10-02" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` ### Explicit IPv4 and IPv6 endpoint **IPinfo Lite** For IPv4 connections, you can prepend the API endpoint with the subdomain `v4`. ```bash $ curl https://v4.api.ipinfo.io/lite/me?token=$TOKEN $ curl https://v4.api.ipinfo.io/lite/8.8.8.8?token=$TOKEN ``` For IPv6 connections, you can prepend the API endpoint with the subdomain `v6`. ```bash $ curl https://v6.api.ipinfo.io/lite/me?token=$TOKEN $ curl https://v6.api.ipinfo.io/lite/8.8.8.8?token=$TOKEN ``` **IPinfo Lookup** For IPv4 connections, you can prepend the API endpoint with the subdomain `v4`. ```bash $ curl https://v4.api.ipinfo.io/lookup/me?token=$TOKEN $ curl https://v4.api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN ``` For IPv6 connections, you can prepend the API endpoint with the subdomain `v6`. ```bash $ curl https://v6.api.ipinfo.io/lookup/me?token=$TOKEN $ curl https://v6.api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN ``` ## JSONP/CORS Requests JSONP and CORS are supported, allowing you to use ipinfo.io entirely in client-side code. For JSONP you just need to specify the callback parameter, e.g. `http://ipinfo.io/?callback=callback&token=$TOKEN`. **Fetch API (Promise)** ```javascript fetch("https://api.ipinfo.io/lite/me?token=$TOKEN") .then((response) => response.json()) .then((jsonResponse) => console.log(jsonResponse.ip, jsonResponse.country)); ``` **Fetch API (Async/Await)** ```javascript const request = await fetch("https://api.ipinfo.io/lite/me?token=$TOKEN"); const jsonResponse = await request.json(); console.log(jsonResponse.ip, jsonResponse.country); ``` **JSONP** ```html function recordData(data) { console.log(data.ip, data.country); } ``` ================================================================================ PAGE: IPinfo API Overview URL: https://ipinfo.io/developers/ipinfo-api SLUG: ipinfo-api DESCRIPTION: Complete guide to IPinfo's API tiers including Lite, Core, Plus, Business, and Enterprise plans with feature comparisons. ================================================================================ # IPinfo API IPinfo's API services provide a mix of geolocation, ASN, privacy, carrier detection, and confidence metrics across different tiers of API services. ### IPinfo Bundle APIs - **[IPinfo Lite](/developers/lite-api)**: A free API with unlimited requests provides general location data (country, country code, continent, continent code) and ASN details (ASN, name, domain). - **[IPinfo Core](/developers/core-api)**: The IPinfo Core API plan provides detailed IP address information including geolocation (city, region, country, continent, latitude/longitude, timezone, postal code), ASN and ISP details (ASN, name, domain, type), and network characteristics such as anonymity, anycast, hosting, mobile, and satellite status. - **[IPinfo Plus](/developers/plus-api)**: The IPinfo Plus API plan provides comprehensive IP data including full geolocation (city, region, country, continent, coordinates, timezone, postal code, geoname ID, radius, and last change date), ASN details (ASN, name, domain, type), and extensive network characteristics such as mobile, anonymous proxy, relay, Tor, VPN, anycast, hosting, and satellite status. - **[IPinfo Max](/pricing)**: The IPinfo Max API provides comprehensive IP intelligence with complete anonymization coverage. It includes full geolocation data (city, region, country, continent, coordinates, timezone, postal code, geoname ID, accuracy radius, and last change date), ASN details (ASN, name, domain, type), and advanced network characteristics including VPN, proxy, Tor, relay, hosting, and residential proxy detection with behavioral activity signals. Your browser does not support the video tag. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo API Response", "description": "Schema for IPinfo API response across Lite, Core, Plus, and Max tiers", "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address being queried.", "example": "51.68.57.72", "availability": { "lite": true, "core": true, "plus": true, "max": true } }, "hostname": { "type": "string", "description": "The hostname associated with the IP address.", "example": "generic.hostname.com", "availability": { "lite": true, "core": true, "plus": true, "max": true } }, "geo": { "type": "object", "description": "Geographic location information for the IP address.", "properties": { "city": { "type": "string", "description": "The city where the IP address is located.", "example": "Lille", "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "region": { "type": "string", "description": "The region or state where the IP address is located.", "example": "Hauts-de-France", "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "region_code": { "type": "string", "description": "The two-letter region code in ISO 3166 format.", "example": "HDF", "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "country": { "type": "string", "description": "The country where the IP address is located.", "example": "France", "availability": { "lite": true, "core": true, "plus": true, "max": true } }, "country_code": { "type": "string", "description": "The ISO 3166 country code of the IP address.", "example": "FR", "availability": { "lite": true, "core": true, "plus": true, "max": true } }, "continent": { "type": "string", "description": "The continent where the IP address is located.", "example": "Europe", "availability": { "lite": true, "core": true, "plus": true, "max": true } }, "continent_code": { "type": "string", "description": "The two-letter continent code.", "example": "EU", "availability": { "lite": true, "core": true, "plus": true, "max": true } }, "latitude": { "type": "number", "description": "The latitude coordinate of the IP address location.", "example": 50.63297, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "longitude": { "type": "number", "description": "The longitude coordinate of the IP address location.", "example": 3.05858, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "timezone": { "type": "string", "description": "The local timezone of the IP address location, formatted according to the IANA Time Zone Database.", "example": "Europe/Paris", "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "postal_code": { "type": "string", "description": "The postal or zip code associated with the IP address location.", "example": "59000", "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "dma_code": { "type": "string", "description": "The Designated Market Area (DMA) code, representing a TV media market region.", "example": "59", "availability": { "lite": false, "core": false, "plus": true, "max": true } }, "geoname_id": { "type": "integer", "description": "The unique numerical identifier for geographic locations from Geonames.org.", "example": 2998324, "availability": { "lite": false, "core": false, "plus": true, "max": true } }, "radius": { "type": "integer", "description": "The location accuracy radius in kilometers.", "example": 200, "availability": { "lite": false, "core": false, "plus": true, "max": true } }, "last_changed": { "type": "string", "format": "date", "description": "The date when the IP address's location was last updated, in YYYY-MM-DD format (ISO-8601).", "example": "2025-06-15", "availability": { "lite": false, "core": false, "plus": true, "max": true } } } }, "as": { "type": "object", "description": "Autonomous System (AS) information for the IP address.", "properties": { "asn": { "type": "string", "description": "The Autonomous System Number (ASN) identifying the organization that owns or operates the IP address.", "example": "AS16276", "availability": { "lite": true, "core": true, "plus": true, "max": true } }, "name": { "type": "string", "description": "The official name of the Autonomous System (AS) organization.", "example": "OVH SAS", "availability": { "lite": true, "core": true, "plus": true, "max": true } }, "domain": { "type": "string", "description": "The official domain name of the Autonomous System (AS) organization.", "example": "ovhcloud.com", "availability": { "lite": true, "core": true, "plus": true, "max": true } }, "type": { "type": "string", "description": "The type of the Autonomous System (AS) organization, such as hosting, ISP, education, government, or business.", "example": "hosting", "enum": ["hosting", "isp", "education", "government", "business"], "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "last_changed": { "type": "string", "format": "date", "description": "The date when the IP address's ASN was last updated, in YYYY-MM-DD format (ISO-8601).", "example": "2025-03-09", "availability": { "lite": false, "core": false, "plus": true, "max": true } } } }, "mobile": { "type": "object", "description": "Mobile carrier information for the IP address.", "availability": { "lite": false, "core": false, "plus": true, "max": true }, "properties": { "name": { "type": "string", "description": "The name of the mobile carrier organization.", "example": "dtac", "availability": { "lite": false, "core": false, "plus": true, "max": true } }, "mcc": { "type": "string", "description": "The Mobile Country Code (MCC) of the carrier.", "example": "520", "availability": { "lite": false, "core": false, "plus": true, "max": true } }, "mnc": { "type": "string", "description": "The Mobile Network Code (MNC) of the carrier.", "example": "05", "availability": { "lite": false, "core": false, "plus": true, "max": true } } } }, "anonymous": { "type": "object", "description": "Anonymity and privacy service detection information.", "properties": { "is_proxy": { "type": "boolean", "description": "Indicates whether the IP address is an open web proxy.", "example": false, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "is_relay": { "type": "boolean", "description": "Indicates whether the IP address is part of an anonymous relay service, such as iCloud Private Relay.", "example": false, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "is_tor": { "type": "boolean", "description": "Indicates whether the IP address is a TOR (The Onion Router) exit node.", "example": false, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "is_vpn": { "type": "boolean", "description": "Indicates whether the IP address is a Virtual Private Network (VPN) exit node.", "example": true, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "name": { "type": "string", "description": "The name of the privacy service provider, such as a VPN, Proxy, or Relay service provider.", "example": "NordVPN", "availability": { "lite": false, "core": false, "plus": true, "max": true } }, "last_seen": { "type": "string", "format": "date", "description": "The latest date this IP was detected as a VPN, Residential Proxy or other proxies.", "example" "2025-12-03", }, "availability": { "lite": false, "core": false, "plus": false, "max": true } }, "percent_days_seen": { "type": "integer", "description": "Percentage of the past 90 days this IP was seen as a residential proxy.", "example": 13, "availability": { "lite": false, "core": false, "plus": false, "max": true } } } }, "is_anonymous": { "type": "boolean", "description": "Indicates whether the IP address is anonymous. true if the IP address is associated with an IP privacy service.", "example": false, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "is_anycast": { "type": "boolean", "description": "Indicates whether the IP address is an anycast IP. true if the IP address maps to multiple physical servers.", "example": false, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "is_hosting": { "type": "boolean", "description": "Indicates whether the IP address is an internet service hosting IP address.", "example": true, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "is_mobile": { "type": "boolean", "description": "Indicates whether the IP address belongs to a mobile network.", "example": false, "availability": { "lite": false, "core": true, "plus": true, "max": true } }, "is_satellite": { "type": "boolean", "description": "Indicates whether the IP address is part of a satellite internet connection.", "example": false, "availability": { "lite": false, "core": true, "plus": true, "max": true } } } } ``` | Field Name | Description | Example | [IPinfo Lite](/developers/lite-api) | [IPinfo Core](/developers/core-api) | [IPinfo Plus](/developers/plus-api) | [IPinfo Max](/pricing) | | --- | --- | --- | --- | --- | --- | --- | | **`ip`** | The IP address being queried. | `51.68.57.72` | ✓ | ✓ | ✓ | ✓ | | **`hostname`** | The hostname associated with the IP address. | `generic.hostname.com` | ✓ | ✓ | ✓ | ✓ | | **`geo`** | `city` | The city where the IP address is located. | `Lille` | ✗ | ✓ | ✓ | ✓ | | `region` | The region or state where the IP address is located. | `Hauts-de-France` | ✗ | ✓ | ✓ | ✓ | | `region_code` | The two-letter region code in ISO 3166 format. | `HDF` | ✗ | ✓ | ✓ | ✓ | | `country` | The country where the IP address is located. | `France` | ✓ | ✓ | ✓ | ✓ | | `country_code` | The ISO 3166 country code of the IP address. | `FR` | ✓ | ✓ | ✓ | ✓ | | `continent` | The continent where the IP address is located. | `Europe` | ✓ | ✓ | ✓ | ✓ | | `continent_code` | The two-letter continent code. | `EU` | ✓ | ✓ | ✓ | ✓ | | `latitude` | The latitude coordinate of the IP address location. | `50.63297` | ✗ | ✓ | ✓ | ✓ | | `longitude` | The longitude coordinate of the IP address location. | `3.05858` | ✗ | ✓ | ✓ | ✓ | | `timezone` | The local timezone of the IP address location, formatted according to the IANA Time Zone Database. | `Europe/Paris` | ✗ | ✓ | ✓ | ✓ | | `postal_code` | The postal or zip code associated with the IP address location. | `59000` | ✗ | ✓ | ✓ | ✓ | | `dma_code` | The Designated Market Area (DMA) code, representing a TV media market region. | `59` | ✗ | ✗ | ✓ | ✓ | | `geoname_id` | The unique numerical identifier for geographic locations from Geonames.org. | `2998324` | ✗ | ✗ | ✓ | ✓ | | `radius` | The location accuracy radius in kilometers. | `200` | ✗ | ✗ | ✓ | ✓ | | `last_changed` | The date when the IP address's location was last updated, in YYYY-MM-DD format (ISO-8601). | `2025-06-15` | ✗ | ✗ | ✓ | ✓ | | **`as`** | `asn` | The Autonomous System Number (ASN) identifying the organization that owns or operates the IP address. | `AS16276` | ✓ | ✓ | ✓ | ✓ | | `name` | The official name of the Autonomous System (AS) organization. | `OVH SAS` | ✓ | ✓ | ✓ | ✓ | | `domain` | The official domain name of the Autonomous System (AS) organization. | `ovhcloud.com` | ✓ | ✓ | ✓ | ✓ | | `type` | The type of the Autonomous System (AS) organization, such as hosting, ISP, education, government, or business. | `hosting` | ✗ | ✓ | ✓ | ✓ | | `last_changed` | The date when the IP address's ASN was last updated, in YYYY-MM-DD format (ISO-8601). | `2025-03-09` | ✗ | ✗ | ✓ | ✓ | | **`mobile`** | `name` | The name of the mobile carrier organization. | `dtac` | ✗ | ✗ | ✓ | ✓ | | `mcc` | The Mobile Country Code (MCC) of the carrier. | `520` | ✗ | ✗ | ✓ | ✓ | | `mnc` | The Mobile Network Code (MNC) of the carrier. | `05` | ✗ | ✗ | ✓ | ✓ | | **`anonymous`** | `is_proxy` | Indicates whether the IP address is an open web proxy. | `false` | ✗ | ✓ | ✓ | ✓ | | `is_relay` | Indicates whether the IP address is part of an anonymous relay service, such as iCloud Private Relay. | `false` | ✗ | ✓ | ✓ | ✓ | | `is_tor` | Indicates whether the IP address is a TOR (The Onion Router) exit node. | `false` | ✗ | ✓ | ✓ | ✓ | | `is_vpn` | Indicates whether the IP address is a Virtual Private Network (VPN) exit node. | `true` | ✗ | ✓ | ✓ | ✓ | | `name` | The name of the privacy service provider, such as a VPN, Proxy, Relay, or Residential Proxy service. | `NordVPN` | ✗ | ✗ | ✓ | ✓ | | `last_seen` | Latest detection date for VPN, Residential Proxy and other proxies. | `2026-03-07` | ✗ | ✗ | ✗ | ✓ | | `percent_days_seen` | % of past 90 days seen as Residential Proxy. | `13` | ✗ | ✗ | ✗ | ✓ | | `**is_anonymous**` | Indicates whether the IP address is anonymous. `true` if the IP address is associated with an IP privacy service. | `false` | ✗ | ✓ | ✓ | ✓ | | `**is_anycast**` | Indicates whether the IP address is an anycast IP. `true` if the IP address maps to multiple physical servers. | `false` | ✗ | ✓ | ✓ | ✓ | | `**is_hosting**` | Indicates whether the IP address is an internet service hosting IP address. | `true` | ✗ | ✓ | ✓ | ✓ | | `**is_mobile**` | Indicates whether the IP address belongs to a mobile network. | `false` | ✗ | ✓ | ✓ | ✓ | | `**is_satellite**` | Indicates whether the IP address is part of a satellite internet connection. | `false` | ✗ | ✓ | ✓ | ✓ | Currently, we have the following API services available directly for customers. - [IPinfo Lite](/developers/lite-api): The IPinfo Lite API is our free plan that includes unlimited country-level geolocation and basic ASN information. - [IPinfo Core](/developers/core-api): Our basic premium API plan that includes detailed geolocation data, ASN information, network flags, and access to the dedicated ASN API. - [IPinfo Plus](/developers/plus-api): IPinfo Plus API provides detailed IP address data, including geolocation, ASN information, carrier details, anonymous IP address data details, and geolocation and ASN change frequency. - [IPinfo Max](/pricing): IPinfo Max API provides full-coverage IP intelligence including geolocation, ASN and carrier data, provider-level anonymization detection, residential proxy behavior signals, and geo and ASN change tracking. - [IPinfo Enterprise](/developers/enterprise-api): The IPinfo Enterprise plan includes everything in the Business plan plus IP Whois, IP Ranges, IP Activity, and a full list of domains hosted on the IP. ### Other IP APIs Besides providing information about IP Addresses, IPInfo also offers APIs that can be used to get: - [Geolocation API](/developers/ip-geolocation-api-data): Query IP address geolocation data including city, region, country, and coordinates. - [Privacy Detection API](/developers/ip-privacy-detection-api-data): Detect VPNs, proxies, Tor exit nodes, relays, and hosting providers. - [ASN API](/developers/asn): Detailed information about ASNs - [IP ranges API](/developers/ranges): IP ranges owned by a company. - [Hosted Domains API](/developers/hosted-domains): Domains hosted on an IP address - [IP WHOIS API](/developers/whois): Programmatically Access WHOIS Data - [Residential Proxy Detection API](/developers/residential-proxy-api): Detection and detailed insights of residential proxy services - [IP to Privacy Detection Extended API](/developers/privacy-extended-api): Provides detection metadata and confidence metrics for detecting anonymous IP data. ### IPinfo Legacy API Starting in 2025, we rolled out a new updated API system. However, we continue to provide the same service through our legacy API service that many users have grandfathered into. The legacy API system is actively maintained and provides the identical service as our standard API service. We will continue to provide access and service to our users who have been using the legacy service; however, we recommend that no new users request joining the legacy service. The following section is for our legacy API system documentation that does not apply to our current API system. **JSON Response** We try to automatically detect when someone wants to call our API versus view our website, and then we send back the appropriate JSON response rather than HTML. We do this based on the user agent for known popular programming languages, tools, and frameworks. However, there are a couple of other ways to force a JSON response when it doesn't happen automatically. One is to append `/json` at the end of any request: ```bash curl ipinfo.io/json curl ipinfo.io/8.8.8.8/json ``` The other is to set the `Accept` header to `application/json`: ```bash curl -H "Accept: application/json" ipinfo.io curl -H "Accept: application/json" ipinfo.io/8.8.8.8 ``` **IPv6 API endpoint** IPinfo's API ensures seamless support for both IPv4 and IPv6 connection. However, for technical reasons, we use distinct API endpoints: - IPv4 connection: [ipinfo.io](https://ipinfo.io/) - IPv6 connection: [v6.ipinfo.io](https://v6.ipinfo.io/) If you're on an IPv6 address, use the ### [v6.ipinfo.io](https://v6.ipinfo.io/) API endpoint, which functions identically to the standard IPv4 API. All API parameters and arguments are supported as usual. Example: ```bash curl https://v6.ipinfo.io ``` Our website, however, is fully dual-stacked, supporting both IPv4 and IPv6 natively through the [ipinfo.io](https://ipinfo.io/) domain. Our IP data download product always includes both IPv4 and IPv6 IP addresses in each individual database download. If you are looking up IPv6 addresses as an API parameter or input, you can do so simply as well. Usage of [v6.ipinfo.io](https://v6.ipinfo.io/) only applies to IPv6 traffic visiting our API service. By separating the API endpoints, we prevent unintended behavior when tools default to IPv6 (via AAAA records). This ensures you receive the expected address type for your query. Because if we have A and AAAA records for the domain (supporting both v4 and v6), the users would get their v6 address back when they go to ipinfo.io's API (internet services usually default to v6 if it’s available), which is not usually what they expect. ================================================================================ PAGE: IPinfo Lite API URL: https://ipinfo.io/developers/lite-api SLUG: lite-api DESCRIPTION: Free API tier with unlimited country-level geolocation and basic ASN information. ================================================================================ # IPinfo Lite API **Available for**: Every IPinfo user The [IPinfo Lite API](/lite) is our free-tier API access plan, which includes unlimited country-level geolocation information and unlimited basic ASN information. Geolocation information provided by the IPinfo Lite API service includes country and continent information, while ASN information includes ASN, organization name, and domain name. The API has no daily or monthly limit and provides unlimited access. The API is based on our IPinfo Lite IP database. > You can access IPinfo Lite data as a downloadable dataset as well: **[IPinfo Lite IP Data Downloads](/developers/ipinfo-lite-database)** ## Quick Reference Your browser does not support the video tag. ![IPinfo Lite API URL breakdown](https://website-cdn.assets.ipinfo.io/images/developers/ipinfo_lite_header.png) API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Lite API Response", "description": "Schema for IPinfo Lite API response", "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address being queried.", "example": "8.8.8.8" }, "asn": { "type": "string", "description": "The Autonomous System Number (ASN) identifying the organization that owns or operates the IP address.", "example": "AS15169" }, "as_name": { "type": "string", "description": "The official name of the Autonomous System (AS) organization.", "example": "Google LLC" }, "as_domain": { "type": "string", "description": "The official domain name of the Autonomous System (AS) organization.", "example": "google.com" }, "country_code": { "type": "string", "description": "The ISO 3166 country code (ISO 3166-1 alpha-2).", "example": "US" }, "country": { "type": "string", "description": "The country where the IP address is located.", "example": "United States" }, "continent_code": { "type": "string", "description": "The two-letter continent code.", "example": "NA" }, "continent": { "type": "string", "description": "The continent where the IP address is located.", "example": "North America" } }, "required": ["ip"] } ``` | Field | Description | Example | | ---------------- | ------------------------------------------------- | --------------- | | `ip` | The client IP address or IP address being queried | `8.8.8.8` | | `asn` | Autonomous System Number | `AS15169` | | `as_name` | Organization name | `Google LLC` | | `as_domain` | Organization's domain name | `google.com` | | `country_code` | Two-letter country code (ISO 3166-1 alpha-2) | `US` | | `country` | Full country name | `United States` | | `continent_code` | Two-letter continent code | `NA` | | `continent` | Full continent name | `North America` | ## Lookup IP addresses **bash** ```bash curl https://api.ipinfo.io/lite/8.8.8.8?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Python** ```python import ipinfo # Initialize Lite handler handler = ipinfo.getHandlerLite(access_token='$TOKEN') # Look up a specific IP address details = handler.getDetails("8.8.8.8") print(details.ip) # '8.8.8.8' print(details.country_code) # 'US' print(details.country) # 'United States' print(details.asn) # 'AS15169' print(details.as_name) # 'Google LLC' print(details.all) ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **PHP** ```php getDetails('8.8.8.8'); echo $details->ip . PHP_EOL; // '8.8.8.8' echo $details->country_code . PHP_EOL; // 'US' echo $details->country . PHP_EOL; // 'United States' echo $details->asn . PHP_EOL; // 'AS15169' echo $details->as_name . PHP_EOL; // 'Google LLC' print_r($details->all); // all fields as an associative array ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Laravel (PHP)** ```php getDetails('8.8.8.8'); echo $details->ip . PHP_EOL; // '8.8.8.8' echo $details->country_code . PHP_EOL; // 'US' echo $details->country . PHP_EOL; // 'United States' echo $details->asn . PHP_EOL; // 'AS15169' echo $details->as_name . PHP_EOL; // 'Google LLC' // Get ALL details as an array/dictionary print_r($details->all); ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Node.js** ```js const { IPinfoLiteWrapper } = require("node-ipinfo"); (async () => { // Initialize Lite handler const ipinfo = new IPinfoLiteWrapper(process.env.TOKEN || "$TOKEN"); // Look up a specific IP address const details = await ipinfo.lookupIp("8.8.8.8"); console.log(details.ip); // "8.8.8.8" console.log(details.countryCode); // e.g. "US" (property names depend on the response) console.log(details.country); // e.g. "United States" console.log(details.asn); // e.g. { asn: "AS15169", name: "Google LLC", domain: "google.com", ... } // Print ALL details as JSON console.log(JSON.stringify(details, null, 2)); })().catch(console.error); ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Go** ```go name=main.go package main import ( "encoding/json" "fmt" "log" "net" "os" "github.com/ipinfo/go/v2/ipinfo" ) func main() { // Initialize Lite client token := os.Getenv("IPINFO_TOKEN") // same as $TOKEN if token == "" { log.Fatal("missing IPINFO_TOKEN") } client := ipinfo.NewLiteClient(nil, nil, token) // Look up a specific IP address details, err := client.GetIPInfo(net.ParseIP("8.8.8.8")) if err != nil { log.Fatal(err) } // Access individual fields fmt.Println(details.IP.String()) // "8.8.8.8" fmt.Println(details.CountryCode) // "US" fmt.Println(details.Country) // "United States" fmt.Println(details.ASN) // "AS15169" fmt.Println(details.ASName) // "Google LLC" // Get ALL details as JSON b, _ := json.MarshalIndent(details, "", " ") fmt.Println(string(b)) } ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Java** ```java import io.ipinfo.api.IPinfoLite; import io.ipinfo.api.errors.RateLimitedException; import io.ipinfo.api.model.IPResponseLite; public class Main { public static void main(String[] args) { // Initialize Lite client IPinfoLite client = new IPinfoLite.Builder() .setToken(System.getenv("TOKEN")) // same as $TOKEN .build(); try { // Look up a specific IP address (Lite endpoint: https://api.ipinfo.io/lite/{ip}) IPResponseLite details = client.lookupIP("8.8.8.8"); System.out.println(details.getIp()); // "8.8.8.8" System.out.println(details.getCountryCode()); // "US" System.out.println(details.getCountry()); // "United States" System.out.println(details.getAsn()); // "AS15169" System.out.println(details.getAsName()); // "Google LLC" // If you just need the raw JSON, you can serialize the object: // System.out.println(new com.google.gson.Gson().toJson(details)); } catch (RateLimitedException ex) { System.err.println("Rate limited by IPinfo API"); } } } ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Rust** ```rust use ipinfo::{IpInfoLite, IpInfoLiteConfig}; #[tokio::main] async fn main() -> Result> { // Initialize Lite handler let config = IpInfoLiteConfig { token: Some("$TOKEN".to_string()), ..Default::default() }; let mut ipinfo = IpInfoLite::new(config)?; // Look up a specific IP address let details = ipinfo.lookup("8.8.8.8").await?; println!("{}", details.ip); // "8.8.8.8" println!("{:?}", details.country_code); // Some("US") println!("{:?}", details.country); // Some("United States") println!("{:?}", details.asn); // Some("AS15169") println!("{:?}", details.as_name); // Some("Google LLC") // Print ALL details as JSON println!("{}", serde_json::to_string_pretty(&details)?); Ok(()) } ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` Get information on your or visitors' IP address: **bash** ```bash curl https://api.ipinfo.io/lite/me?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Python** ```python import ipinfo # Initialize Lite handler handler = ipinfo.getHandlerLite(access_token='$TOKEN') # Call getDetails() without an IP address details = handler.getDetails() # Access your information my_details = handler.getDetails() print(my_details.ip) # Your IP address print(my_details.country) # Your country # Get ALL details as a dictionary print(my_details.all) ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **PHP** ```php getDetails(); // Access your information echo $my_details->ip . PHP_EOL; // Your IP address echo $my_details->country . PHP_EOL; // Your country // Get ALL details as an associative array (Lite response payload) print_r($my_details->all); // Lookup a specific IP $details = $client->getDetails('8.8.8.8'); echo json_encode($details->all, JSON_PRETTY_PRINT), PHP_EOL; ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Laravel (PHP)** ```php getDetails(); echo $myDetails->ip . PHP_EOL; // Your IP address echo $myDetails->country . PHP_EOL; // Your country // Look up a specific IP (equivalent to: /lite/8.8.8.8?token=$TOKEN) $details = $client->getDetails('8.8.8.8'); // Get ALL details as an array/dictionary print_r($details->all); ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Node.js** ```js import { IPinfoLiteWrapper } from "node-ipinfo"; // Initialize Lite client const client = new IPinfoLiteWrapper(process.env.TOKEN || "$TOKEN"); // Call lookupIp() with an IP address (Lite endpoint) const details = await client.lookupIp("8.8.8.8"); // Access fields (note: this SDK uses camelCase) console.log(details.ip); // "8.8.8.8" console.log(details.asn); // "AS15169" console.log(details.asName); // "Google LLC" console.log(details.asDomain); // "google.com" console.log(details.countryCode); // "US" console.log(details.country); // "United States" console.log(details.continentCode); // "NA" console.log(details.continent); // "North America" // Get ALL details as an object console.log(details); ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Go** ```go name=main.go package main import ( "encoding/json" "fmt" "log" "net" "os" "github.com/ipinfo/go/v2/ipinfo" ) func main() { // Read token (same as $TOKEN in your curl example) token := os.Getenv("IPINFO_TOKEN") if token == "" { log.Fatal("missing IPINFO_TOKEN") } // Initialize Lite client (https://api.ipinfo.io/lite/) client := ipinfo.NewLiteClient(nil, nil, token) // Call GetIPInfo() with no IP to get "me" myInfo, err := client.GetIPInfo(nil) if err != nil { log.Fatal(err) } fmt.Println("My IP:", myInfo.IP) fmt.Println("My country:", myInfo.Country) // Call GetIPInfo() for a specific IP (like: /lite/8.8.8.8?token=...) info, err := client.GetIPInfo(net.ParseIP("8.8.8.8")) if err != nil { log.Fatal(err) } // Get ALL details as JSON b, _ := json.MarshalIndent(info, "", " ") fmt.Println(string(b)) } ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Java** ```java import io.ipinfo.api.IPinfoLite; import io.ipinfo.api.errors.RateLimitedException; import io.ipinfo.api.model.IPResponseLite; public class Main { public static void main(String[] args) { // Read token from env var (equivalent to $TOKEN in curl) String token = System.getenv("TOKEN"); // Initialize Lite client IPinfoLite client = new IPinfoLite.Builder() .setToken(token) .build(); try { // Lookup an IP (Lite endpoint: https://api.ipinfo.io/lite/{ip}) IPResponseLite details = client.lookupIP("8.8.8.8"); // Access fields (names match the Lite response) System.out.println(details.getIp()); // 8.8.8.8 System.out.println(details.getAsn()); // AS15169 System.out.println(details.getAsName()); // Google LLC System.out.println(details.getAsDomain()); // google.com System.out.println(details.getCountryCode()); // US System.out.println(details.getCountry()); // United States System.out.println(details.getContinentCode()); // NA System.out.println(details.getContinent()); // North America } catch (RateLimitedException ex) { // Handle rate limits here (HTTP 429) System.err.println("Rate limited by IPinfo API"); } } } ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Rust** ```rust use ipinfo::{IpInfoLite, IpInfoLiteConfig}; #[tokio::main] async fn main() -> Result> { // Initialize Lite handler let config = IpInfoLiteConfig { token: Some("$TOKEN".to_string()), ..Default::default() }; let mut ipinfo = IpInfoLite::new(config)?; // Call lookup_self_v4() to get details for your own public IPv4 ("me") let my_details = ipinfo.lookup_self_v4().await?; println!("{}", my_details.ip); // Your IP address println!("{:?}", my_details.country); // Your country (name) // Look up a specific IP (like: curl https://api.ipinfo.io/lite/8.8.8.8?token=$TOKEN) let details = ipinfo.lookup("8.8.8.8").await?; // Get ALL details as JSON println!("{}", serde_json::to_string_pretty(&details)?); Ok(()) } ``` ```json { "ip": "8.8.8.8", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` ## IP Address Types **US Based IP** ```bash https://api.ipinfo.io/lite/64.189.247.110?token=$TOKEN ``` ```json { "ip": "64.189.247.110", "asn": "AS54607", "as_name": "Apogee Telecom Inc.", "as_domain": "apogee.us", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **EU Based IP** ```bash https://api.ipinfo.io/lite/89.239.174.87?token=$TOKEN ``` ```json { "ip": "89.239.174.87", "asn": "AS12389", "as_name": "PJSC Rostelecom", "as_domain": "rt.ru", "country_code": "RU", "country": "Russia", "continent_code": "EU", "continent": "Europe" } ``` **Cloudflare IP** ```bash https://api.ipinfo.io/lite/1.1.1.1?token=$TOKEN ``` ```json { "ip": "1.1.1.1", "asn": "AS13335", "as_name": "Cloudflare, Inc.", "as_domain": "cloudflare.com", "country_code": "AU", "country": "Australia", "continent_code": "OC", "continent": "Oceania" } ``` **Cogent IP** ```bash https://api.ipinfo.io/lite/38.206.217.73?token=$TOKEN ``` ```json { "ip": "38.206.217.73", "asn": "AS174", "as_name": "Cogent Communications, LLC", "as_domain": "cogentco.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` ## API Endpoint Breakdown The API endpoint also supports explicit declaration of IP address connections (IPv4/IPv6). | Description | Endpoint type | Endpoint | | --- | --- | --- | | **General (Dual Stacked)** | Self / Client IP | `curl https://api.ipinfo.io/lite/me?token=$TOKEN` | | Lookup / Target IP | `curl https://api.ipinfo.io/lite/8.8.8.8?token=$TOKEN` | | **IPv4** | Self / Client IP | `curl https://v4.api.ipinfo.io/lite/me?token=$TOKEN` | | Lookup / Target IP | `curl https://v4.api.ipinfo.io/lite/8.8.8.8?token=$TOKEN` | | **IPv6** | Self / Client IP | `curl https://v6.api.ipinfo.io/lite/me?token=$TOKEN` | | Lookup / Target IP | `curl https://v6.api.ipinfo.io/lite/8.8.8.8?token=$TOKEN` | > The general API endpoint is built to support **both** IPv4 and IPv6 connections, ensuring you can call it from either without any issues. If the IP is anycast or bogon, an [additional field is returned](/developers/data-types#geolocation-data) indicating that. **Check out the [code snippets section for IPinfo Lite API](/developers/code-snippets#lite-api-snippets) related code and responses.** ## Bulk / Batch Enrichment The bulk API endpoint can enrich up to 1,000 requests per call. Your browser does not support the video tag. **JSON Array: Full Records** **Full Record Lookup** Use a JSON array of IPs to return full Lite records for each IP. ```bash curl -XPOST --data '["216.66.251.30", "187.206.182.231", "94.30.95.36", "31.251.149.240"]' "https://api.ipinfo.io/batch/lite?token=$TOKEN" ``` Response ```json { "216.66.251.30": { "ip": "216.66.251.30", "asn": "AS11123", "as_name": "Ultimate Internet Access, Inc", "as_domain": "uia.net", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" }, "31.251.149.240": { "ip": "31.251.149.240", "asn": "AS3320", "as_name": "Deutsche Telekom AG", "as_domain": "telekom.de", "country_code": "DE", "country": "Germany", "continent_code": "EU", "continent": "Europe" }, "187.206.182.231": { "ip": "187.206.182.231", "asn": "AS8151", "as_name": "UNINET", "as_domain": "telmex.com", "country_code": "MX", "country": "Mexico", "continent_code": "NA", "continent": "North America" }, "94.30.95.36": { "ip": "94.30.95.36", "asn": "AS5413", "as_name": "Wavenet Limited", "as_domain": "wavenet.co.uk", "country_code": "GB", "country": "United Kingdom", "continent_code": "EU", "continent": "Europe" } } ``` **JSON Array: Field Paths** **Targeted Field Lookup** Use URL patterns in the array when you only need specific fields. ```bash curl -XPOST --data '["140.225.129.233/asn", "99.85.48.135/country_code", "164.61.188.112/country", "91.242.168.212/continent_code"]' "https://api.ipinfo.io/batch/lite?token=$TOKEN" ``` Response ```json { "140.225.129.233/asn": "AS14763", "99.85.48.135/country_code": "US", "91.242.168.212/continent_code": "EU", "164.61.188.112/country": "Germany" } ``` **Text Input** **Plain Text Input** Send space-separated IPs with text/plain for simple shell workflows. ```bash curl -X POST https://api.ipinfo.io/batch/lite?token=$TOKEN -H 'Content-Type: text/plain' -d '216.66.251.30 31.251.149.240 187.206.182.231 94.30.95.36' ``` Response ```json { "31.251.149.240": { "ip": "31.251.149.240", "asn": "AS3320", "as_name": "Deutsche Telekom AG", "as_domain": "telekom.de", "country_code": "DE", "country": "Germany", "continent_code": "EU", "continent": "Europe" }, "216.66.251.30": { "ip": "216.66.251.30", "asn": "AS11123", "as_name": "Ultimate Internet Access, Inc", "as_domain": "uia.net", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" }, "187.206.182.231": { "ip": "187.206.182.231", "asn": "AS8151", "as_name": "UNINET", "as_domain": "telmex.com", "country_code": "MX", "country": "Mexico", "continent_code": "NA", "continent": "North America" }, "94.30.95.36": { "ip": "94.30.95.36", "asn": "AS5413", "as_name": "Wavenet Limited", "as_domain": "wavenet.co.uk", "country_code": "GB", "country": "United Kingdom", "continent_code": "EU", "continent": "Europe" } } ``` ================================================================================ PAGE: IPinfo Core API URL: https://ipinfo.io/developers/core-api SLUG: core-api DESCRIPTION: Basic premium API plan with geolocation, ASN data, network flags, and dedicated ASN API access. ================================================================================ # IPinfo Core API The [IPinfo Core API](/core) is our entry-level premium API access plan, which includes granular [geolocation information](/developers/data-types#geolocation-data), ASN information, network flags, and access to the [dedicated ASN API](/developers/asn). - **Geolocation information**: City, Region/State, Country, Postal code etc. - **ASN information**: ASN (Autonomous System Number), AS Name, ASN Domain and ASN Type - **Network flags**: Anonymous IP address (VPN, proxy, Tor, or relay), Hosting IP address (data center or server IP), Anycast IP, Carrier mobile IP flag, and Satellite IP address > IPinfo Core data is also available as a downloadable database for enterprise customers. Database downloads are not included in self-serve API plans and require a separate enterprise subscription. Learn more: **[IPinfo Core IP Data Downloads](/developers/ipinfo-core-database)** ## Quick Reference Your browser does not support the video tag. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Core API Response", "description": "Schema for IPinfo Core API response", "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address being queried.", "example": "51.68.57.72" }, "hostname": { "type": "string", "description": "The hostname associated with the IP address.", "example": "generic.hostname.com" }, "geo": { "type": "object", "description": "Geographic location information for the IP address.", "properties": { "city": { "type": "string", "description": "The city where the IP address is located.", "example": "Lille" }, "region": { "type": "string", "description": "The region or state where the IP address is located.", "example": "Hauts-de-France" }, "region_code": { "type": "string", "description": "The two-letter region code in ISO 3166 format.", "example": "HDF" }, "country": { "type": "string", "description": "The country where the IP address is located.", "example": "France" }, "country_code": { "type": "string", "description": "The ISO 3166 country code of the IP address.", "example": "FR" }, "continent": { "type": "string", "description": "The continent where the IP address is located.", "example": "Europe" }, "continent_code": { "type": "string", "description": "The two-letter continent code.", "example": "EU" }, "latitude": { "type": "number", "description": "The latitude coordinate of the IP address location.", "example": 50.63297 }, "longitude": { "type": "number", "description": "The longitude coordinate of the IP address location.", "example": 3.05858 }, "timezone": { "type": "string", "description": "The local timezone of the IP address location, formatted according to the IANA Time Zone Database.", "example": "Europe/Paris" }, "postal_code": { "type": "string", "description": "The postal or zip code associated with the IP address location.", "example": "59000" } } }, "as": { "type": "object", "description": "Autonomous System (AS) information for the IP address.", "properties": { "asn": { "type": "string", "description": "The Autonomous System Number (ASN) identifying the organization that owns or operates the IP address.", "example": "AS16276" }, "name": { "type": "string", "description": "The official name of the Autonomous System (AS) organization.", "example": "OVH SAS" }, "domain": { "type": "string", "description": "The official domain name of the Autonomous System (AS) organization.", "example": "ovhcloud.com" }, "type": { "type": "string", "description": "The type of the Autonomous System (AS) organization, such as hosting, ISP, education, government, or business.", "example": "hosting", "enum": ["hosting", "isp", "education", "government", "business"] } } }, "anonymous": { "type": "object", "description": "Anonymity and privacy service detection information.", "properties": { "is_proxy": { "type": "boolean", "description": "Indicates whether the IP address is an open web proxy.", "example": false }, "is_relay": { "type": "boolean", "description": "Indicates whether the IP address is part of an anonymous relay service, such as iCloud Private Relay.", "example": false }, "is_tor": { "type": "boolean", "description": "Indicates whether the IP address is a TOR (The Onion Router) exit node.", "example": false }, "is_vpn": { "type": "boolean", "description": "Indicates whether the IP address is a Virtual Private Network (VPN) exit node.", "example": true } } }, "is_anonymous": { "type": "boolean", "description": "Indicates whether the IP address is anonymous. true if the IP address is associated with an IP privacy service.", "example": false }, "is_anycast": { "type": "boolean", "description": "Indicates whether the IP address is an anycast IP. true if the IP address maps to multiple physical servers.", "example": false }, "is_hosting": { "type": "boolean", "description": "Indicates whether the IP address is an internet service hosting IP address.", "example": true }, "is_mobile": { "type": "boolean", "description": "Indicates whether the IP address belongs to a mobile network.", "example": false }, "is_satellite": { "type": "boolean", "description": "Indicates whether the IP address is part of a satellite internet connection.", "example": false } } } ``` | Field | Description | Example | | --- | --- | --- | | **`ip`** | Queried IP address | `51.68.57.72` | | **`geo`** | `city` | City of the IP address | `Lille` | | `region` | Region/State of the IP address | `Hauts-de-France` | | `region_code` | Region code in two-letter format in ISO 3166 | `HDF` | | `country` | Name of the country of the IP address | `France` | | `country_code` | ISO 3166 country code of the IP address | `FR` | | `continent` | Name of the continent | `Europe` | | `continent_code` | Continent name code in two-letter format | `EU` | | `latitude` | Latitude value of the IP address | `50.63297` | | `longitude` | Longitude value of the IP address | `3.05858` | | `timezone` | The local timezone of the IP address location, formatted according to the IANA Time Zone Database. | `Europe/Paris` | | `postal_code` | The postal code or zip code associated with the IP address's location. | `59000` | | **as** | asn | Autonomous System Number (ASN), identifying the organization that owns or operates the IP address. | `AS16276` | | name | The official name of the Autonomous System (AS) organization. | `OVH SAS` | | domain | The official domain name of the Autonomous System (AS) organization. | `ovhcloud.com` | | type | The type of the Autonomous System (AS) organization, such as hosting, ISP, education, government, or business. | `hosting` | | `**is_anonymous**` | Indicates whether the IP address is **anonymous**. `true` if the IP address is associated with an IP privacy service. | `false` | | `**is_anycast**` | Indicates whether the IP address is an **anycast IP**. `true` if the IP address maps to multiple physical servers. | `false` | | `**is_hosting**` | Indicates whether the IP address is an internet service hosting IP address. | `true` | | `**is_mobile**` | Indicates whether the IP address belongs to a **mobile network**. | `false` | | `**is_satellite**` | Indicates whether the IP address is part of a **satellite internet connection**. | `false` | ## Lookup IP addresses ```bash curl https://api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "geo": { "city": "Mountain View", "region": "California", "region_code": "CA", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 37.4056, "longitude": -122.0775, "timezone": "America/Los_Angeles", "postal_code": "94043" }, "as": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "type": "hosting" }, "is_anonymous": false, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` ## IP Address Types By Network Flags **Residential** ```bash https://api.ipinfo.io/lookup/201.138.203.128?token=$TOKEN ``` ```json { "ip": "201.138.203.128", "hostname": "128-203-138-201.prod-infinitum.com.mx", "geo": { "city": "Apizaco", "region": "Tlaxcala", "region_code": "TLA", "country": "Mexico", "country_code": "MX", "continent": "North America", "continent_code": "NA", "latitude": 19.41333, "longitude": -98.14358, "timezone": "America/Mexico_City", "postal_code": "90405" }, "as": { "asn": "AS8151", "name": "UNINET", "domain": "telmex.com", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Anonymous** ```bash https://api.ipinfo.io/lookup/119.17.52.130?token=$TOKEN ``` ```json { "ip": "119.17.52.130", "hostname": "130-52-17-119.static.broadbandsolutions.com.au", "geo": { "city": "Melbourne", "region": "Victoria", "region_code": "VIC", "country": "Australia", "country_code": "AU", "continent": "Oceania", "continent_code": "OC", "latitude": -37.814, "longitude": 144.96332, "timezone": "Australia/Melbourne", "postal_code": "3000" }, "as": { "asn": "AS45780", "name": "Broadband Solutions Pty Ltd", "domain": "broadbandsolutions.com.au", "type": "isp" }, "is_anonymous": true, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Anycast** ```bash https://api.ipinfo.io/lookup/45.67.215.197?token=$TOKEN ``` ```json { "ip": "45.67.215.197", "geo": { "city": "Novosibirsk", "region": "Novosibirsk Oblast", "region_code": "NVS", "country": "Russia", "country_code": "RU", "continent": "Europe", "continent_code": "EU", "latitude": 55.02259, "longitude": 82.93175, "timezone": "Asia/Novosibirsk", "postal_code": "630000" }, "as": { "asn": "AS201839", "name": "Microcredit Company Zaymer PJSC", "domain": "robo.finance", "type": "hosting" }, "is_anonymous": true, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Hosting** ```bash https://api.ipinfo.io/lookup/69.55.136.48?token=$TOKEN ``` ```json { "ip": "69.55.136.48", "geo": { "city": "Kansas City", "region": "Missouri", "region_code": "MO", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 39.09973, "longitude": -94.57857, "timezone": "America/Chicago", "postal_code": "64106" }, "as": { "asn": "AS62943", "name": "Missouri Network Alliance, LLC", "domain": "bluebirdnetwork.com", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Carrier** ```bash https://api.ipinfo.io/lookup/2804:389:95:d700::?token=$TOKEN ``` ```json { "ip": "2804:389:95:d700::", "geo": { "city": "Hortolândia", "region": "São Paulo", "region_code": "SP", "country": "Brazil", "country_code": "BR", "continent": "South America", "continent_code": "SA", "latitude": -22.85833, "longitude": -47.22, "timezone": "America/Sao_Paulo", "postal_code": "13183-000" }, "as": { "asn": "AS22085", "name": "Claro S/A", "domain": "claro.com.br", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": true, "is_satellite": false } ``` **Satellite** ```bash https://api.ipinfo.io/lookup/150.228.13.132?token=$TOKEN ``` ```json { "ip": "150.228.13.132", "hostname": "customer.frntdeu1.isp.starlink.com", "geo": { "city": "Paris", "region": "Île-de-France", "region_code": "IDF", "country": "France", "country_code": "FR", "continent": "Europe", "continent_code": "EU", "latitude": 48.85341, "longitude": 2.3488, "timezone": "Europe/Paris", "postal_code": "75000" }, "as": { "asn": "AS14593", "name": "Space Exploration Technologies Corporation", "domain": "spacex.com", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": true } ``` By ASN Types **Education** ```bash https://api.ipinfo.io/lookup/193.174.10.177?token=$TOKEN ``` ```json { "ip": "193.174.10.177", "geo": { "city": "Potsdam", "region": "Brandenburg", "region_code": "BB", "country": "Germany", "country_code": "DE", "continent": "Europe", "continent_code": "EU", "latitude": 52.39886, "longitude": 13.06566, "timezone": "Europe/Berlin", "postal_code": "14461" }, "as": { "asn": "AS680", "name": "Verein zur Foerderung eines Deutschen Forschungsnetzes e.V.", "domain": "dfn.de", "type": "education" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Hosting** ```bash https://api.ipinfo.io/lookup/221.254.47.177?token=$TOKEN ``` ```json { "ip": "221.254.47.177", "hostname": "221x254x47x177.ap221.ftth.ucom.ne.jp", "geo": { "city": "Tokyo", "region": "Tokyo", "region_code": "13", "country": "Japan", "country_code": "JP", "continent": "Asia", "continent_code": "AS", "latitude": 35.6895, "longitude": 139.69171, "timezone": "Asia/Tokyo", "postal_code": "101-8656" }, "as": { "asn": "AS17506", "name": "ARTERIA Networks Corporation", "domain": "arteria-net.com", "type": "hosting" }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Government** ```bash https://api.ipinfo.io/lookup/137.75.67.8?token=$TOKEN ``` ```json { "ip": "137.75.67.8", "hostname": "lo-0.1.brtr.clpk.nwave.noaa.gov", "geo": { "city": "College Park", "region": "Maryland", "region_code": "MD", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 38.98067, "longitude": -76.93692, "timezone": "America/New_York", "postal_code": "20740" }, "as": { "asn": "AS3477", "name": "National Oceanic and Atmospheric Administration", "domain": "noaa.gov", "type": "government" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **ISP ** ```bash https://api.ipinfo.io/lookup/2409:8a56:330e:2fc::?token=$TOKEN ``` ```json { "ip": "2409:8a56:330e:2fc::", "geo": { "city": "Shanghai", "region": "Shanghai", "region_code": "SH", "country": "China", "country_code": "CN", "continent": "Asia", "continent_code": "AS", "latitude": 31.22222, "longitude": 121.45806, "timezone": "Asia/Shanghai", "postal_code": "200000" }, "as": { "asn": "AS56040", "name": "China Mobile communications corporation", "domain": "chinamobile.com", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Business** ```bash https://api.ipinfo.io/lookup/69.158.225.86?token=$TOKEN ``` ```json { "ip": "69.158.225.86", "geo": { "city": "Toronto", "region": "Ontario", "region_code": "ON", "country": "Canada", "country_code": "CA", "continent": "North America", "continent_code": "NA", "latitude": 43.70643, "longitude": -79.39864, "timezone": "America/Toronto", "postal_code": "M5A" }, "as": { "asn": "AS398262", "name": "Smart IP Inc", "domain": "smartip.ca", "type": "business" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` ## API Endpoint Breakdown The API endpoint also supports explicit declaration of IP address connections (IPv4/IPv6). | Description | Endpoint type | Endpoint | | --- | --- | --- | | **General (Dual Stacked)** | Self / Client IP | `curl https://api.ipinfo.io/lookup/me?token=$TOKEN` | | Lookup / Target IP | `curl https://api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN` | | **IPv4** | Self / Client IP | `curl https://v4.api.ipinfo.io/lookup/me?token=$TOKEN` | | Lookup / Target IP | `curl https://v4.api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN` | | **IPv6** | Self / Client IP | `curl https://v6.api.ipinfo.io/lookup/me?token=$TOKEN` | | Lookup / Target IP | `curl https://v6.api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN` | > The general API endpoint is built to support **both** IPv4 and IPv6 connection, ensuring you can call it from either without any issues. ## Alternative API Schema Our legacy API is still maintained with fresh data, and we are committed to providing continued service to existing customers. IPinfo Core (Legacy) Built on top of the IPinfo Basic tier API service, the IPinfo Core API service includes the IPinfo Core API and the network flags. ```bash curl https://ipinfo.io/8.8.8.8/json?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "hostname": "dns.google", "city": "Mountain View", "region": "California", "country": "US", "loc": "37.4056,-122.0775", "postal": "94043", "timezone": "America/Los_Angeles", "is_anycast": true, "is_mobile": false, "is_anonymous": false, "is_satellite": false, "is_hosting": true, "asn": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "route": "8.8.8.0/24", "type": "hosting" } } ``` IPinfo Basic (Legacy) IPinfo Basic has been upgraded to the IPinfo Core API tier. It now includes network flags and extended geolocation details that were previously not available in the Basic tier. ```bash curl https://ipinfo.io/8.8.8.8/json?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "hostname": "dns.google", "city": "Mountain View", "region": "California", "country": "US", "loc": "37.4056,-122.0775", "postal": "94043", "timezone": "America/Los_Angeles", "asn": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "route": "8.8.8.0/24", "type": "hosting" } } ``` **Check out the [code snippets section for IPinfo Core API](/developers/code-snippets#core-api-snippets) related code and responses.** ================================================================================ PAGE: IPinfo Plus API URL: https://ipinfo.io/developers/plus-api SLUG: plus-api ================================================================================ # IPinfo Plus API The [IPinfo Plus](/plus) API is our most popular API service that provides detailed IP address data, including geolocation, ASN information, mobile carrier details, privacy-related flags and access to the [dedicated ASN API](/developers/asn). - **Geolocation information**: City, Region/State, Country, Postal code etc. and accuracy radius and last change date. - **ASN information**: ASN (Autonomous System Number), AS Name, ASN Domain, ASN Type and last change date - **Anonymous IP address**: Identifies whether an IP address is associated with privacy services such as VPNs, proxies, Tor nodes, or relay services. - **Carrier information**: Provides details about the mobile carrier, including the carrier name, Mobile Country Code (MCC), and Mobile Network Code (MNC). - **Network flags**: Anonymous IP address (VPN, proxy, Tor, or relay), Hosting IP address (data center or server IP), Anycast IP, Carrier mobile IP flag, and Satellite IP address > IPinfo Plus data is also available as a downloadable database for enterprise customers. Database downloads are not included in self-serve API plans and require a separate enterprise subscription. Learn more: **[IPinfo Plus IP Data Downloads](/developers/ipinfo-plus-database)** ## Quick Reference Your browser does not support the video tag. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Plus API Response", "description": "Schema for IPinfo Plus API response", "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address being queried.", "example": "51.68.57.72" }, "hostname": { "type": "string", "description": "The hostname associated with the IP address.", "example": "generic.hostname.com" }, "geo": { "type": "object", "description": "Geographic location information for the IP address.", "properties": { "city": { "type": "string", "description": "The city where the IP address is located.", "example": "Lille" }, "region": { "type": "string", "description": "The region or state where the IP address is located.", "example": "Hauts-de-France" }, "region_code": { "type": "string", "description": "The two-letter region code in ISO 3166 format.", "example": "HDF" }, "country": { "type": "string", "description": "The country where the IP address is located.", "example": "France" }, "country_code": { "type": "string", "description": "The ISO 3166 country code of the IP address.", "example": "FR" }, "continent": { "type": "string", "description": "The continent where the IP address is located.", "example": "Europe" }, "continent_code": { "type": "string", "description": "The two-letter continent code.", "example": "EU" }, "latitude": { "type": "number", "description": "The latitude coordinate of the IP address location.", "example": 50.63297 }, "longitude": { "type": "number", "description": "The longitude coordinate of the IP address location.", "example": 3.05858 }, "timezone": { "type": "string", "description": "The local timezone of the IP address location, formatted according to the IANA Time Zone Database.", "example": "Europe/Paris" }, "postal_code": { "type": "string", "description": "The postal or zip code associated with the IP address location.", "example": "59000" }, "dma_code": { "type": "string", "description": "The Designated Market Area (DMA) code, representing a TV media market region.", "example": "59" }, "geoname_id": { "type": "string", "description": "The unique numerical identifier for geographic locations from Geonames.org.", "example": 2998324 }, "radius": { "type": "integer", "description": "The location accuracy radius in kilometers.", "example": 200 }, "last_changed": { "type": "string", "format": "date", "description": "The date when the IP address's location was last updated, in YYYY-MM-DD format (ISO-8601).", "example": "2025-06-15" } } }, "as": { "type": "object", "description": "Autonomous System (AS) information for the IP address.", "properties": { "asn": { "type": "string", "description": "The Autonomous System Number (ASN) identifying the organization that owns or operates the IP address.", "example": "AS16276" }, "name": { "type": "string", "description": "The official name of the Autonomous System (AS) organization.", "example": "OVH SAS" }, "domain": { "type": "string", "description": "The official domain name of the Autonomous System (AS) organization.", "example": "ovhcloud.com" }, "type": { "type": "string", "description": "The type of the Autonomous System (AS) organization, such as hosting, ISP, education, government, or business.", "example": "hosting", "enum": ["hosting", "isp", "education", "government", "business"] }, "last_changed": { "type": "string", "format": "date", "description": "The date when the IP address's ASN was last updated, in YYYY-MM-DD format (ISO-8601).", "example": "2025-03-09" } } }, "mobile": { "type": "object", "description": "Mobile carrier information for the IP address.", "properties": { "name": { "type": "string", "description": "The name of the mobile carrier organization.", "example": "dtac" }, "mcc": { "type": "string", "description": "The Mobile Country Code (MCC) of the carrier.", "example": "520" }, "mnc": { "type": "string", "description": "The Mobile Network Code (MNC) of the carrier.", "example": "05" } } }, "anonymous": { "type": "object", "description": "Anonymity and privacy service detection information.", "properties": { "is_proxy": { "type": "boolean", "description": "Indicates whether the IP address is an open web proxy.", "example": false }, "is_relay": { "type": "boolean", "description": "Indicates whether the IP address is part of an anonymous relay service, such as iCloud Private Relay.", "example": false }, "is_tor": { "type": "boolean", "description": "Indicates whether the IP address is a TOR (The Onion Router) exit node.", "example": false }, "is_vpn": { "type": "boolean", "description": "Indicates whether the IP address is a Virtual Private Network (VPN) exit node.", "example": true }, "name": { "type": "string", "description": "The name of the privacy service provider, such as a VPN, Proxy, or Relay service provider.", "example": "NordVPN" } } }, "is_anonymous": { "type": "boolean", "description": "Indicates whether the IP address is anonymous. true if the IP address is associated with an IP privacy service.", "example": false }, "is_anycast": { "type": "boolean", "description": "Indicates whether the IP address is an anycast IP. true if the IP address maps to multiple physical servers.", "example": false }, "is_hosting": { "type": "boolean", "description": "Indicates whether the IP address is an internet service hosting IP address.", "example": true }, "is_mobile": { "type": "boolean", "description": "Indicates whether the IP address belongs to a mobile network.", "example": false }, "is_satellite": { "type": "boolean", "description": "Indicates whether the IP address is part of a satellite internet connection.", "example": false } } } ``` | Field | Description | Example | | --- | --- | --- | | **`ip`** | The IP address being queried. | `51.68.57.72` | | **`hostname`** | The hostname associated with the IP address. | `generic.hostname.com` | | **`geo`** | `city` | The city where the IP address is located. | `Lille` | | `region` | The region or state where the IP address is located. | `Hauts-de-France` | | `region_code` | The two-letter region code in ISO 3166 format. | `HDF` | | `country` | The country where the IP address is located. | `France` | | `country_code` | The ISO 3166 country code of the IP address. | `FR` | | `continent` | The continent where the IP address is located. | `Europe` | | `continent_code` | The two-letter continent code. | `EU` | | `latitude` | The latitude coordinate of the IP address location. | `50.63297` | | `longitude` | The longitude coordinate of the IP address location. | `3.05858` | | `timezone` | The local timezone of the IP address location, formatted according to the IANA Time Zone Database. | `Europe/Paris` | | `postal_code` | The postal or zip code associated with the IP address location. | `59000` | | `dma_code` | The Designated Market Area (DMA) code, representing a TV media market region. | `59` | | `geoname_id` | The unique numerical identifier for geographic locations from Geonames.org. | `2998324` | | `radius` | The location accuracy radius in kilometers. | `200` | | `last_changed` | The date when the IP address's location was last updated, in YYYY-MM-DD format (ISO-8601). | `2025-06-15` | | **as** | `asn` | The Autonomous System Number (ASN) identifying the organization that owns or operates the IP address. | `AS16276` | | `name` | The official name of the Autonomous System (AS) organization. | `OVH SAS` | | `domain` | The official domain name of the Autonomous System (AS) organization. | `ovhcloud.com` | | `type` | The type of the Autonomous System (AS) organization, such as hosting, ISP, education, government, or business. | `hosting` | | `last_changed` | The date when the IP address's ASN was last updated, in YYYY-MM-DD format (ISO-8601). | `2025-03-09` | | **mobile** | `name` | The name of the mobile carrier organization. | `dtac` | | `mcc` | The Mobile Country Code (MCC) of the carrier. | `520` | | `mnc` | The Mobile Network Code (MNC) of the carrier. | `05` | | **anonymous** | `is_proxy` | Indicates whether the IP address is an open web proxy. | `false` | | `is_relay` | Indicates whether the IP address is part of an anonymous relay service, such as iCloud Private Relay. | `false` | | `is_tor` | Indicates whether the IP address is a TOR (The Onion Router) exit node. | `false` | | `is_vpn` | Indicates whether the IP address is a Virtual Private Network (VPN) exit node. | `true` | | `name` | The name of the privacy service provider, such as a VPN, Proxy, or Relay service provider. | `NordVPN` | | `**is_anonymous**` | Indicates whether the IP address is anonymous. `true` if the IP address is associated with an IP privacy service. | `false` | | `**is_anycast**` | Indicates whether the IP address is an anycast IP. `true` if the IP address maps to multiple physical servers. | `false` | | `**is_hosting**` | Indicates whether the IP address is an internet service hosting IP address. | `true` | | `**is_mobile**` | Indicates whether the IP address belongs to a mobile network. | `false` | | `**is_satellite**` | Indicates whether the IP address is part of a satellite internet connection. | `false` | ## Lookup IP addresses ```bash curl https://api.ipinfo.io/lookup/51.68.57.72?token=$TOKEN ``` ```json { "ip": "51.68.57.72", "hostname": "ip72.ip-51-68-57.eu", "geo": { "city": "Lille", "region": "Hauts-de-France", "region_code": "HDF", "country": "France", "country_code": "FR", "continent": "Europe", "continent_code": "EU", "latitude": 50.63297, "longitude": 3.05858, "timezone": "Europe/Paris", "postal_code": "59000", "dma_code": "59", "geoname_id": "2998324", "radius": 200, "last_changed": "2025-06-15" }, "as": { "asn": "AS16276", "name": "OVH SAS", "domain": "ovhcloud.com", "type": "hosting", "last_changed": "2025-03-09" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` Get information on your or visitors' IP address: ```bash curl https://api.ipinfo.io/lookup/me?token=$TOKEN ``` The IPinfo Plus also supports ASN lookups via the [ASN API](/developers/asn). ## IP Address Types By IP Privacy Service **VPN** ```bash https://api.ipinfo.io/lookup/83.136.182.124?token=$TOKEN ``` ```json { "ip": "83.136.182.124", "geo": { "city": "Denver", "region": "Colorado", "region_code": "CO", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 39.7878, "longitude": -104.8288, "timezone": "America/Denver", "postal_code": "80239", "dma_code": "751", "geoname_id": "5419384", "radius": 20 }, "as": { "asn": "AS141039", "name": "PacketHub S.A.", "domain": "packethub.net", "type": "hosting", "last_changed": "2021-07-01" }, "mobile": {}, "anonymous": { "name": "NordVPN", "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": true }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Tor** ```bash https://api.ipinfo.io/lookup/66.17.125.11?token=$TOKEN ``` ```json { "ip": "66.17.125.11", "hostname": "66-17-125-11-swiftelnet.brookings.net", "geo": { "city": "Brookings", "region": "South Dakota", "region_code": "SD", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 44.31136, "longitude": -96.79839, "timezone": "America/Chicago", "postal_code": "57006", "dma_code": "725", "geoname_id": "5226534", "radius": 5000, "last_changed": "2023-11-19" }, "as": { "asn": "AS26860", "name": "SWIFTEL COMMUNICATIONS", "domain": "swiftel.net", "type": "isp", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": true, "is_vpn": false }, "is_anonymous": true, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Relay** ```bash https://api.ipinfo.io/lookup/2a02:26f7:f6c4:20f0::?token=$TOKEN ``` ```json { "ip": "2a02:26f7:f6c4:20f0::", "geo": { "city": "Lebanon", "region": "Pennsylvania", "region_code": "PA", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 40.34093, "longitude": -76.41135, "timezone": "America/New_York", "postal_code": "17042", "dma_code": "566", "geoname_id": "5197517", "radius": 50, "last_changed": "2024-05-19" }, "as": { "asn": "AS36183", "name": "Akamai Technologies, Inc.", "domain": "akamai.com", "type": "hosting", "last_changed": "2021-06-01" }, "mobile": {}, "anonymous": { "name": "Apple Private Relay", "is_proxy": false, "is_relay": true, "is_tor": false, "is_vpn": false }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Proxy** ```bash https://api.ipinfo.io/lookup/47.87.9.170?token=$TOKEN ``` ```json { "ip": "47.87.9.170", "geo": { "city": "Santiago de Querétaro", "region": "Querétaro", "region_code": "QUE", "country": "Mexico", "country_code": "MX", "continent": "North America", "continent_code": "NA", "latitude": 20.58806, "longitude": -100.38806, "timezone": "America/Mexico_City", "postal_code": "76120", "geoname_id": "3991164", "radius": 50, "last_changed": "2025-02-02" }, "as": { "asn": "AS45102", "name": "Alibaba (US) Technology Co., Ltd.", "domain": "alibabagroup.com", "type": "hosting", "last_changed": "2025-01-21" }, "mobile": {}, "anonymous": { "is_proxy": true, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` By Network Flags **Residential** ```bash https://api.ipinfo.io/lookup/2804:d41:389:4b6e::?token=$TOKEN ``` ```json { "ip": "2804:d41:389:4b6e::", "geo": { "city": "Rio de Janeiro", "region": "Rio de Janeiro", "region_code": "RJ", "country": "Brazil", "country_code": "BR", "continent": "South America", "continent_code": "SA", "latitude": -22.90642, "longitude": -43.18223, "timezone": "America/Sao_Paulo", "postal_code": "20000-000", "geoname_id": "3451190", "radius": 50, "last_changed": "2024-10-20" }, "as": { "asn": "AS7738", "name": "V tal", "domain": "vtal.com", "type": "isp", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Anonymous** ```bash https://api.ipinfo.io/lookup/3.8.8.181?token=$TOKEN ``` ```json { "ip": "3.8.8.181", "hostname": "ec2-3-8-8-181.eu-west-2.compute.amazonaws.com", "geo": { "city": "London", "region": "England", "region_code": "ENG", "country": "United Kingdom", "country_code": "GB", "continent": "Europe", "continent_code": "EU", "latitude": 51.50853, "longitude": -0.12574, "timezone": "Europe/London", "postal_code": "E1W", "dma_code": "6", "geoname_id": "2643743", "radius": 100, "last_changed": "2023-05-28" }, "as": { "asn": "AS16509", "name": "Amazon.com, Inc.", "domain": "amazon.com", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": true }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Anycast** ```bash https://api.ipinfo.io/lookup/104.25.73.240?token=$TOKEN ``` ```json { "ip": "104.25.73.240", "geo": { "city": "San Francisco", "region": "California", "region_code": "CA", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 37.7621, "longitude": -122.3971, "timezone": "America/Los_Angeles", "postal_code": "94107", "dma_code": "807", "geoname_id": "5391959", "radius": 1000 }, "as": { "asn": "AS13335", "name": "Cloudflare, Inc.", "domain": "cloudflare.com", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Hosting** ```bash https://api.ipinfo.io/lookup/2a10:bf87:9638::?token=$TOKEN ``` ```json { "ip": "2a10:bf87:9638::", "geo": { "city": "London", "region": "England", "region_code": "ENG", "country": "United Kingdom", "country_code": "GB", "continent": "Europe", "continent_code": "EU", "latitude": 51.50853, "longitude": -0.12574, "timezone": "Europe/London", "postal_code": "E1W", "dma_code": "6", "geoname_id": "2643743", "radius": 5000, "last_changed": "2025-10-26" }, "as": { "asn": "AS43668", "name": "AS43668 LLC", "domain": "as43668.net", "type": "isp", "last_changed": "2025-03-25" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Carrier** ```bash https://api.ipinfo.io/lookup/179.201.230.162?token=$TOKEN ``` ```json { "ip": "179.201.230.162", "hostname": "162.230.201.179.isp.timbrasil.com.br", "geo": { "city": "São Paulo", "region": "São Paulo", "region_code": "SP", "country": "Brazil", "country_code": "BR", "continent": "South America", "continent_code": "SA", "latitude": -23.5475, "longitude": -46.63611, "timezone": "America/Sao_Paulo", "postal_code": "01000-000", "geoname_id": "3448439", "radius": 20, "last_changed": "2024-12-08" }, "as": { "asn": "AS26615", "name": "TIM S/A", "domain": "tim.com.br", "type": "isp", "last_changed": "2021-05-01" }, "mobile": { "name": "TIM", "mcc": "724", "mnc": "02" }, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": true, "is_satellite": false } ``` **Satellite** ```bash https://api.ipinfo.io/lookup/2803:9810:407c:b900::?token=$TOKEN ``` ```json { "ip": "2803:9810:407c:b900::", "geo": { "city": "São Paulo", "region": "São Paulo", "region_code": "SP", "country": "Brazil", "country_code": "BR", "continent": "South America", "continent_code": "SA", "latitude": -23.5475, "longitude": -46.63611, "timezone": "America/Sao_Paulo", "postal_code": "01000-000", "geoname_id": "3448439", "radius": 5000, "last_changed": "2025-11-09" }, "as": { "asn": "AS14593", "name": "Space Exploration Technologies Corporation", "domain": "spacex.com", "type": "isp", "last_changed": "2022-12-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": true } ``` By ASN Types **Education** ```bash https://api.ipinfo.io/lookup/18.12.0.0?token=$TOKEN ``` ```json { "ip": "18.12.0.0", "geo": { "city": "Boston", "region": "Massachusetts", "region_code": "MA", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 42.35843, "longitude": -71.05977, "timezone": "America/New_York", "postal_code": "02108", "dma_code": "506", "geoname_id": "4930956", "radius": 5000, "last_changed": "2025-07-20" }, "as": { "asn": "AS3", "name": "Massachusetts Institute of Technology", "domain": "mit.edu", "type": "education", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Hosting** ```bash https://api.ipinfo.io/lookup/2a09:9446:4718::?token=$TOKEN ``` ```json { "ip": "2a09:9446:4718::", "geo": { "city": "Moscow", "region": "Moscow", "region_code": "MOW", "country": "Russia", "country_code": "RU", "continent": "Europe", "continent_code": "EU", "latitude": 55.75204, "longitude": 37.61781, "timezone": "Europe/Moscow", "postal_code": "101000", "geoname_id": "524901", "radius": 5000, "last_changed": "2026-03-22" }, "as": { "asn": "AS49981", "name": "WorldStream B.V.", "domain": "worldstream.com", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Government** ```bash https://api.ipinfo.io/lookup/28.39.124.0?token=$TOKEN ``` ```json { "ip": "28.39.124.0", "geo": { "city": "Columbus", "region": "Ohio", "region_code": "OH", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 39.969, "longitude": -83.0114, "timezone": "America/New_York", "postal_code": "43218", "dma_code": "535", "geoname_id": "4509177", "radius": 200, "last_changed": "2022-08-14" }, "as": { "asn": "AS749", "name": "United States Department of Defense (DoD)", "domain": "mail.mil", "type": "government", "last_changed": "2021-10-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **ISP** ```bash https://api.ipinfo.io/lookup/2804:1a4c:3726:8000::?token=$TOKEN ``` ```json { "ip": "2804:1a4c:3726:8000::", "geo": { "city": "Parauapebas", "region": "Pará", "region_code": "PA", "country": "Brazil", "country_code": "BR", "continent": "South America", "continent_code": "SA", "latitude": -6.0675, "longitude": -49.90222, "timezone": "America/Belem", "postal_code": "68515-000", "geoname_id": "6317872", "radius": 1000, "last_changed": "2025-06-15" }, "as": { "asn": "AS61851", "name": "Garra Fibra", "domain": "garratelecom.com", "type": "isp", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Business** ```bash https://api.ipinfo.io/lookup/2804:859c:8010:c3e::?token=$TOKEN ``` ```json { "ip": "2804:859c:8010:c3e::", "geo": { "city": "Boa Viagem", "region": "Ceará", "region_code": "CE", "country": "Brazil", "country_code": "BR", "continent": "South America", "continent_code": "SA", "latitude": -5.1275, "longitude": -39.73222, "timezone": "America/Fortaleza", "postal_code": "63870-000", "geoname_id": "3405616", "radius": 50, "last_changed": "2026-02-15" }, "as": { "asn": "AS272590", "name": "M. GOMES PEREIRA HYPER-NET", "type": "business", "last_changed": "2022-06-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` ## API Endpoint Breakdown The API endpoint also supports explicit declaration of IP address connections (IPv4/IPv6). | Description | Endpoint type | Endpoint | | --- | --- | --- | | **General (Dual Stacked)** | Self / Client IP | `curl https://api.ipinfo.io/lookup/me?token=$TOKEN` | | Lookup / Target IP | `curl https://api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN` | | **IPv4** | Self / Client IP | `curl https://v4.api.ipinfo.io/lookup/me?token=$TOKEN` | | Lookup / Target IP | `curl https://v4.api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN` | | **IPv6** | Self / Client IP | `curl https://v6.api.ipinfo.io/lookup/me?token=$TOKEN` | | Lookup / Target IP | `curl https://v6.api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN` | > The general API endpoint is built to support **both** IPv4 and IPv6 connections, ensuring compatibility with either protocol. ## Alternative API Schema Our legacy API is still maintained with fresh data, and we are committed to providing continued service to existing customers. IPinfo Standard (Legacy) IPinfo Standard has been upgraded to the IPinfo Plus API tier. ```bash curl https://ipinfo.io/8.8.8.8/json?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "hostname": "dns.google", "anycast": true, "city": "Mountain View", "region": "California", "country": "US", "loc": "37.4056,-122.0775", "postal": "94043", "timezone": "America/Los_Angeles", "asn": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "route": "8.8.8.0/24", "type": "business" }, "privacy": { "vpn": false, "proxy": false, "tor": false, "relay": false, "hosting": false, "service": "" } } ``` **Check out the [code snippets section for IPinfo Plus API](/developers/code-snippets#plus-api-snippets) related code and responses.** ================================================================================ PAGE: IPinfo Max API URL: https://ipinfo.io/developers/max-api SLUG: max-api DESCRIPTION: Most comprehensive IP intelligence API with geolocation, ASN, full privacy detection including residential proxy signals, carrier data, and network flags for advanced threat analysis and bot detection. ================================================================================ # IPinfo Max API The [IPinfo Max](/pricing) API is our most comprehensive API service, building on all IPinfo Plus features with full anonymization coverage including residential proxy behavioral signals. - **Geolocation information**: City, Region/State, Country, Postal code etc. and accuracy radius and last change date. - **ASN information**: ASN (Autonomous System Number), AS Name, ASN Domain, ASN Type and last change date - **Anonymous IP address**: Identifies whether an IP address is associated with privacy services such as VPNs, proxies, Tor nodes, relay services. - **Residential Proxy detection**: Residential proxy information as well as time-bound behavioral activity and frequency metadata. - **Carrier information**: Provides details about the mobile carrier, including the carrier name, Mobile Country Code (MCC), and Mobile Network Code (MNC). - **Network flags**: Anonymous IP address (VPN, proxy, Tor, or relay), Hosting IP address (data center or server IP), Anycast IP, Carrier mobile IP flag, and Satellite IP address ## Quick Reference Your browser does not support the video tag. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Max API Response", "description": "Schema for IPinfo Max API response", "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address being queried.", "example": "1.0.126.158" }, "hostname": { "type": "string", "description": "The hostname associated with the IP address. May be absent if no hostname is available.", "example": "158.126.0.1.megaegg.ne.jp" }, "geo": { "type": "object", "description": "Geographic location information for the IP address.", "properties": { "city": { "type": "string", "description": "The city where the IP address is located.", "example": "Izumo" }, "region": { "type": "string", "description": "The region or state where the IP address is located.", "example": "Shimane" }, "region_code": { "type": "string", "description": "The ISO 3166-2 region code of the IP address.", "example": "32" }, "country": { "type": "string", "description": "The country where the IP address is located.", "example": "Japan" }, "country_code": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code of the IP address.", "example": "JP" }, "continent": { "type": "string", "description": "The continent where the IP address is located.", "example": "Asia" }, "continent_code": { "type": "string", "description": "The two-letter continent code.", "example": "AS" }, "latitude": { "type": "number", "description": "The latitude coordinate of the IP address location.", "example": 35.36667 }, "longitude": { "type": "number", "description": "The longitude coordinate of the IP address location.", "example": 132.76667 }, "timezone": { "type": "string", "description": "The local timezone of the IP address location, formatted according to the IANA Time Zone Database.", "example": "Asia/Tokyo" }, "postal_code": { "type": "string", "description": "The postal or zip code associated with the IP address location. May be absent for some regions.", "example": "693-0001" }, "dma_code": { "type": "string", "description": "The Designated Market Area (DMA) code, representing a TV media market region. Applicable to US IPs only.", "example": "501" }, "geoname_id": { "type": "string", "description": "The unique identifier for the geographic location from Geonames.org.", "example": "1861084" }, "radius": { "type": "integer", "description": "The location accuracy radius in kilometers.", "example": 50 }, "last_changed": { "type": "string", "format": "date", "description": "The date when the IP address's location was last updated, in YYYY-MM-DD format (ISO-8601).", "example": "2026-03-22" } } }, "as": { "type": "object", "description": "Autonomous System (AS) information for the IP address.", "properties": { "asn": { "type": "string", "description": "The Autonomous System Number (ASN) identifying the organization that owns or operates the IP address.", "example": "AS18144" }, "name": { "type": "string", "description": "The official name of the Autonomous System (AS) organization.", "example": "Enecom,Inc." }, "domain": { "type": "string", "description": "The official domain name of the Autonomous System (AS) organization.", "example": "enecom.co.jp" }, "type": { "type": "string", "description": "The type of the Autonomous System (AS) organization, such as hosting, ISP, education, government, or business.", "example": "business", "enum": ["hosting", "isp", "education", "government", "business"] }, "last_changed": { "type": "string", "format": "date", "description": "The date when the IP address's ASN was last updated, in YYYY-MM-DD format (ISO-8601).", "example": "2021-05-01" } } }, "mobile": { "type": "object", "description": "Mobile carrier information for the IP address. Empty object if the IP is not a mobile carrier IP.", "properties": { "name": { "type": "string", "description": "The name of the mobile carrier organization.", "example": "dtac" }, "mcc": { "type": "string", "description": "The Mobile Country Code (MCC) of the carrier.", "example": "520" }, "mnc": { "type": "string", "description": "The Mobile Network Code (MNC) of the carrier.", "example": "05" } } }, "anonymous": { "type": "object", "description": "Anonymity and privacy service detection information.", "properties": { "name": { "type": "string", "description": "The name of the privacy service provider. When is_vpn is true, this reflects the VPN provider name. When is_res_proxy is true, it reflects the residential proxy service name. Absent when no privacy service is identified.", "example": "Ping Proxies" }, "last_seen": { "type": "string", "format": "date", "description": "The last recorded date this IP was detected as a residential proxy, in YYYY-MM-DD format (ISO-8601). The timezone is UTC. Uses a rolling 7-day observation window. Only present when is_res_proxy is true.", "example": "2026-03-29" }, "percent_days_seen": { "type": "integer", "description": "The percentage of days the IP was active as a residential proxy in the last 7-day observation period. For example, a value of 63 means the IP was seen as a proxy on approximately 4 of the last 7 days. Only present when is_res_proxy is true.", "minimum": 0, "maximum": 100, "example": 63 }, "is_proxy": { "type": "boolean", "description": "Indicates whether the IP address is an open web proxy.", "example": false }, "is_relay": { "type": "boolean", "description": "Indicates whether the IP address is part of an anonymous relay service, such as iCloud Private Relay.", "example": false }, "is_tor": { "type": "boolean", "description": "Indicates whether the IP address is a TOR (The Onion Router) exit node.", "example": false }, "is_vpn": { "type": "boolean", "description": "Indicates whether the IP address is a Virtual Private Network (VPN) exit node.", "example": false }, "is_res_proxy": { "type": "boolean", "description": "Indicates whether the IP address is a Residential Proxy IP.", "example": true } } }, "is_anonymous": { "type": "boolean", "description": "Indicates whether the IP address is anonymous. true if any flag in the anonymous object is true, including is_res_proxy. Note: this differs from IPinfo Plus, where residential proxy data is not included.", "example": true }, "is_anycast": { "type": "boolean", "description": "Indicates whether the IP address is an anycast IP. true if the IP address maps to multiple physical servers.", "example": false }, "is_hosting": { "type": "boolean", "description": "Indicates whether the IP address is an internet service hosting IP address.", "example": false }, "is_mobile": { "type": "boolean", "description": "Indicates whether the IP address belongs to a mobile network.", "example": false }, "is_satellite": { "type": "boolean", "description": "Indicates whether the IP address is part of a satellite internet connection.", "example": false } } } ``` | Field | Description | Example | | --- | --- | --- | | **`ip`** | The IP address being queried. | `1.0.126.158` | | **`hostname`** | The hostname associated with the IP address. May be absent if no hostname is available. | `158.126.0.1.megaegg.ne.jp` | | **`geo`** | `city` | The city where the IP address is located. | `Izumo` | | `region` | The region or state where the IP address is located. | `Shimane` | | `region_code` | The ISO 3166-2 region code of the IP address. | `32` | | `country` | The country where the IP address is located. | `Japan` | | `country_code` | The ISO 3166-1 alpha-2 country code of the IP address. | `JP` | | `continent` | The continent where the IP address is located. | `Asia` | | `continent_code` | The two-letter continent code. | `AS` | | `latitude` | The latitude coordinate of the IP address location. | `35.36667` | | `longitude` | The longitude coordinate of the IP address location. | `132.76667` | | `timezone` | The local timezone of the IP address location, formatted according to the IANA Time Zone Database. | `Asia/Tokyo` | | `postal_code` | The postal or zip code associated with the IP address location. May be absent for some regions. | `693-0001` | | `dma_code` | The Designated Market Area (DMA) code, representing a TV media market region. Applicable to US IPs only. | `501` | | `geoname_id` | The unique identifier for the geographic location from Geonames.org. | `1861084` | | `radius` | The location accuracy radius in kilometers. | `50` | | `last_changed` | The date when the IP address's location was last updated, in YYYY-MM-DD format (ISO-8601). | `2026-03-22` | | **`as`** | `asn` | The Autonomous System Number (ASN) identifying the organization that owns or operates the IP address. | `AS18144` | | `name` | The official name of the Autonomous System (AS) organization. | `Enecom,Inc.` | | `domain` | The official domain name of the Autonomous System (AS) organization. | `enecom.co.jp` | | `type` | The type of the Autonomous System (AS) organization, such as hosting, ISP, education, government, or business. | `business` | | `last_changed` | The date when the IP address's ASN was last updated, in YYYY-MM-DD format (ISO-8601). | `2021-05-01` | | **`mobile`** | `name` | The name of the mobile carrier organization. | `dtac` | | `mcc` | The Mobile Country Code (MCC) of the carrier. | `520` | | `mnc` | The Mobile Network Code (MNC) of the carrier. | `05` | | **`anonymous`** | `name` | The name of the privacy service provider. Reflects the VPN provider name when `is_vpn` is `true`, or the residential proxy service name when `is_res_proxy` is `true`. Absent when no privacy service is identified. | `Ping Proxies` | | `last_seen` | The last recorded date this IP was detected as a residential proxy, in YYYY-MM-DD format (ISO-8601). The timezone is UTC. Uses a rolling 7-day observation window. Only present when `is_res_proxy` is `true`. | `2026-03-29` | | `percent_days_seen` | The percentage of days the IP was active as a residential proxy in the last 7-day observation period. For example, a value of `63` means the IP was seen as a proxy on approximately 4 of the last 7 days. Only present when `is_res_proxy` is `true`. | `63` | | `is_proxy` | Indicates whether the IP address is an open web proxy. | `false` | | `is_relay` | Indicates whether the IP address is part of an anonymous relay service, such as iCloud Private Relay. | `false` | | `is_tor` | Indicates whether the IP address is a TOR (The Onion Router) exit node. | `false` | | `is_vpn` | Indicates whether the IP address is a Virtual Private Network (VPN) exit node. | `false` | | `is_res_proxy` | Indicates whether the IP address is a Residential Proxy IP. | `true` | | **`is_anonymous`** | Indicates whether the IP address is anonymous. `true` if any flag in the `anonymous` object is true, including `is_res_proxy`. Note: residential proxy IPs are included in this flag in the Max API, unlike IPinfo Plus. | `true` | | **`is_anycast`** | Indicates whether the IP address is an anycast IP. `true` if the IP address maps to multiple physical servers. | `false` | | **`is_hosting`** | Indicates whether the IP address is an internet service hosting IP address. | `false` | | **`is_mobile`** | Indicates whether the IP address belongs to a mobile network. | `false` | | **`is_satellite`** | Indicates whether the IP address is part of a satellite internet connection. | `false` | ## Lookup IP addresses ```bash curl https://api.ipinfo.io/lookup/1.0.126.158?token=$TOKEN ``` ```json { "ip": "1.0.126.158", "hostname": "158.126.0.1.megaegg.ne.jp", "geo": { "city": "Izumo", "region": "Shimane", "region_code": "32", "country": "Japan", "country_code": "JP", "continent": "Asia", "continent_code": "AS", "latitude": 35.36667, "longitude": 132.76667, "timezone": "Asia/Tokyo", "postal_code": "693-0001", "geoname_id": "1861084", "radius": 50, "last_changed": "2026-03-22" }, "as": { "asn": "AS18144", "name": "Enecom,Inc.", "domain": "enecom.co.jp", "type": "business", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "name": "Ping Proxies", "last_seen": "2026-03-29", "percent_days_seen": 63, "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": true }, "is_anonymous": true, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` Get information on your or visitors' IP address: ```bash curl https://api.ipinfo.io/lookup/me?token=$TOKEN ``` The IPinfo Max also supports ASN lookups via the [ASN API](/developers/asn). ## IP Address Types By IP Privacy Service **Residential Proxy** ```bash https://api.ipinfo.io/1.0.141.150?token=$TOKEN ``` ```json { "ip": "1.0.141.150", "hostname": "node-2om.pool-1-0.dynamic.nt-isp.net", "geo": { "city": "Bangkok", "region": "Bangkok", "region_code": "10", "country": "Thailand", "country_code": "TH", "continent": "Asia", "continent_code": "AS", "latitude": 13.75398, "longitude": 100.50144, "timezone": "Asia/Bangkok", "postal_code": "10200", "geoname_id": "1609350", "radius": 500, "last_changed": "2026-03-08" }, "as": { "asn": "AS23969", "name": "TOT Public Company Limited", "domain": "ntplc.co.th", "type": "isp", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "name": "Proxy-Seller", "last_seen": "2026-03-28", "percent_days_seen": 25, "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": true }, "is_anonymous": true, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Proxy** ```bash https://api.ipinfo.io/2001:4860:4801:4042::?token=$TOKEN ``` ```json { "ip": "2001:4860:4801:4042::", "geo": { "city": "Omaha", "region": "Nebraska", "region_code": "NE", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 41.25626, "longitude": -95.94043, "timezone": "America/Chicago", "postal_code": "68101", "dma_code": "652", "geoname_id": "5074472", "radius": 100, "last_changed": "2026-02-15" }, "as": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": true, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Relay** ```bash https://api.ipinfo.io/146.112.102.16?token=$TOKEN ``` ```json { "ip": "146.112.102.16", "geo": { "city": "Paris", "region": "Île-de-France", "region_code": "IDF", "country": "France", "country_code": "FR", "continent": "Europe", "continent_code": "EU", "latitude": 48.85341, "longitude": 2.3488, "timezone": "Europe/Paris", "postal_code": "75000", "dma_code": "75", "geoname_id": "2988507", "radius": 20 }, "as": { "asn": "AS36692", "name": "Cisco OpenDNS, LLC", "domain": "opendns.com", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "name": "Cisco Secure Web Gateway", "is_proxy": false, "is_relay": true, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Tor** ```bash https://api.ipinfo.io/5.255.126.81?token=$TOKEN ``` ```json { "ip": "5.255.126.81", "geo": { "city": "Dronten", "region": "Flevoland", "region_code": "FL", "country": "The Netherlands", "country_code": "NL", "continent": "Europe", "continent_code": "EU", "latitude": 52.525, "longitude": 5.71806, "timezone": "Europe/Amsterdam", "postal_code": "8251", "geoname_id": "2756559", "radius": 100, "last_changed": "2026-03-22" }, "as": { "asn": "AS60404", "name": "The Infrastructure Group B.V.", "domain": "liteserver.nl", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": true, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **VPN** ```bash https://api.ipinfo.io/145.223.7.8?token=$TOKEN ``` ```json { "ip": "145.223.7.8", "geo": { "city": "Omaha", "region": "Nebraska", "region_code": "NE", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 41.2382, "longitude": -95.9336, "timezone": "America/Chicago", "postal_code": "68108", "dma_code": "652", "geoname_id": "5074472", "radius": 20, "last_changed": "2025-04-27" }, "as": { "asn": "AS209854", "name": "Cyberzone S.A.", "domain": "cyberzonehub.com", "type": "hosting", "last_changed": "2025-05-16" }, "mobile": {}, "anonymous": { "name": "Surfshark", "last_seen": "2026-03-31", "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": true, "is_res_proxy": false }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` By Network Flags **Residential** ```bash https://api.ipinfo.io/2406:8800:9016:cdc::?token=$TOKEN ``` ```json { "ip": "2406:8800:9016:cdc::", "geo": { "city": "Malappuram", "region": "Kerala", "region_code": "KL", "country": "India", "country_code": "IN", "continent": "Asia", "continent_code": "AS", "latitude": 11.04199, "longitude": 76.08154, "timezone": "Asia/Kolkata", "postal_code": "676502", "geoname_id": "1264154", "radius": 200, "last_changed": "2026-03-29" }, "as": { "asn": "AS17465", "name": "Cable ISP in India", "domain": "asianetbroadband.in", "type": "isp", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Anonymous** ```bash https://api.ipinfo.io/108.21.192.44?token=$TOKEN ``` ```json { "ip": "108.21.192.44", "hostname": "pool-108-21-192-44.nycmny.fios.verizon.net", "geo": { "city": "New York City", "region": "New York", "region_code": "NY", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 40.71427, "longitude": -74.00597, "timezone": "America/New_York", "postal_code": "10001", "dma_code": "501", "geoname_id": "5128581", "radius": 100, "last_changed": "2023-09-24" }, "as": { "asn": "AS701", "name": "Verizon Business", "domain": "verizonbusiness.com", "type": "isp", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "last_seen": "2026-03-24", "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": true, "is_res_proxy": false }, "is_anonymous": true, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Anycast** ```bash https://api.ipinfo.io/76.223.39.166?token=$TOKEN ``` ```json { "ip": "76.223.39.166", "hostname": "a9eae21ae17f31d1a.awsglobalaccelerator.com", "geo": { "city": "Seattle", "region": "Washington", "region_code": "WA", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 47.5413, "longitude": -122.3129, "timezone": "America/Los_Angeles", "postal_code": "98108", "dma_code": "819", "geoname_id": "5809844", "radius": 1000, "last_changed": "2024-04-14" }, "as": { "asn": "AS16509", "name": "Amazon.com, Inc.", "domain": "amazon.com", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Hosting** ```bash https://api.ipinfo.io/2a02:418:3110::?token=$TOKEN ``` ```json { "ip": "2a02:418:3110::", "geo": { "city": "Zürich", "region": "Zurich", "region_code": "ZH", "country": "Switzerland", "country_code": "CH", "continent": "Europe", "continent_code": "EU", "latitude": 47.3789, "longitude": 8.5204, "timezone": "Europe/Zurich", "postal_code": "8004", "geoname_id": "2657896", "radius": 10, "last_changed": "2024-09-08" }, "as": { "asn": "AS29691", "name": "Nine Internet Solutions AG", "domain": "nine.ch", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Mobile** ```bash https://api.ipinfo.io/2a01:e0a:985:a061::?token=$TOKEN ``` ```json { "ip": "2a01:e0a:985:a061::", "geo": { "city": "Villejuif", "region": "Île-de-France", "region_code": "IDF", "country": "France", "country_code": "FR", "continent": "Europe", "continent_code": "EU", "latitude": 48.7939, "longitude": 2.35992, "timezone": "Europe/Paris", "postal_code": "94800", "dma_code": "94", "geoname_id": "2968705", "radius": 10, "last_changed": "2026-03-08" }, "as": { "asn": "AS12322", "name": "Free SAS", "domain": "free.fr", "type": "isp", "last_changed": "2021-05-01" }, "mobile": { "name": "SFR", "mcc": "208", "mnc": "10" }, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": true, "is_satellite": false } ``` **Satellite** ```bash https://api.ipinfo.io/129.222.239.174?token=$TOKEN ``` ```json { "ip": "129.222.239.174", "hostname": "customer.nwyynyx1.isp.starlink.com", "geo": { "city": "New York City", "region": "New York", "region_code": "NY", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 40.71427, "longitude": -74.00597, "timezone": "America/New_York", "postal_code": "10001", "dma_code": "501", "geoname_id": "5128581", "radius": 5000, "last_changed": "2021-12-05" }, "as": { "asn": "AS14593", "name": "Space Exploration Technologies Corporation", "domain": "spacex.com", "type": "isp", "last_changed": "2022-01-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": true } ``` By ASN Types **Education** ```bash https://api.ipinfo.io/2001:12d0:c40::?token=$TOKEN ``` ```json { "ip": "2001:12d0:c40::", "geo": { "city": "São Paulo", "region": "São Paulo", "region_code": "SP", "country": "Brazil", "country_code": "BR", "continent": "South America", "continent_code": "SA", "latitude": -23.5475, "longitude": -46.63611, "timezone": "America/Sao_Paulo", "postal_code": "01000-000", "geoname_id": "3448439", "radius": 5000, "last_changed": "2026-03-15" }, "as": { "asn": "AS28571", "name": "UNIVERSIDADE DE SAO PAULO", "domain": "usp.br", "type": "education", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Hosting** ```bash https://api.ipinfo.io/2a01:4f8:11d:8000::?token=$TOKEN ``` ```json { "ip": "2a01:4f8:11d:8000::", "geo": { "city": "Gunzenhausen", "region": "Bavaria", "region_code": "BY", "country": "Germany", "country_code": "DE", "continent": "Europe", "continent_code": "EU", "latitude": 49.11663, "longitude": 10.75971, "timezone": "Europe/Berlin", "postal_code": "91710", "dma_code": "22", "geoname_id": "2913537", "radius": 20, "last_changed": "2026-01-25" }, "as": { "asn": "AS24940", "name": "Hetzner Online GmbH", "domain": "hetzner.de", "type": "hosting", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Government** ```bash https://api.ipinfo.io/152.229.97.78?token=$TOKEN ``` ```json { "ip": "152.229.97.78", "hostname": "jogglework.okc.disa.mil", "geo": { "city": "Oklahoma City", "region": "Oklahoma", "region_code": "OK", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 35.46756, "longitude": -97.51643, "timezone": "America/Chicago", "postal_code": "73102", "dma_code": "650", "geoname_id": "4544349", "radius": 5000, "last_changed": "2023-05-28" }, "as": { "asn": "AS5307", "name": "United States Department of Defense (DoD)", "domain": "mail.mil", "type": "government", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **ISP** ```bash https://api.ipinfo.io/2804:7684:c178::?token=$TOKEN ``` ```json { "ip": "2804:7684:c178::", "geo": { "city": "São Paulo", "region": "São Paulo", "region_code": "SP", "country": "Brazil", "country_code": "BR", "continent": "South America", "continent_code": "SA", "latitude": -23.5475, "longitude": -46.63611, "timezone": "America/Sao_Paulo", "postal_code": "01000-000", "geoname_id": "3448439", "radius": 1000, "last_changed": "2023-08-20" }, "as": { "asn": "AS271117", "name": "Ultranet Ipava Telecom Ltda", "domain": "ultranetoficial.com.br", "type": "isp", "last_changed": "2021-07-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Business** ```bash https://api.ipinfo.io/106.251.31.160?token=$TOKEN ``` ```json { "ip": "106.251.31.160", "geo": { "city": "Seoul", "region": "Seoul", "region_code": "11", "country": "South Korea", "country_code": "KR", "continent": "Asia", "continent_code": "AS", "latitude": 37.566, "longitude": 126.9784, "timezone": "Asia/Seoul", "postal_code": "03141", "geoname_id": "1835848", "radius": 100, "last_changed": "2024-12-08" }, "as": { "asn": "AS3786", "name": "LG DACOM Corporation", "domain": "lguplus.com", "type": "business", "last_changed": "2021-05-01" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false, "is_res_proxy": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` ## API Endpoint Breakdown The API endpoint also supports explicit declaration of IP address connections (IPv4/IPv6). | Description | Endpoint type | Endpoint | | --- | --- | --- | | **General (Dual Stacked)** | Self / Client IP | `curl https://api.ipinfo.io/lookup/me?token=$TOKEN` | | Lookup / Target IP | `curl https://api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN` | | **IPv4** | Self / Client IP | `curl https://v4.api.ipinfo.io/lookup/me?token=$TOKEN` | | Lookup / Target IP | `curl https://v4.api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN` | | **IPv6** | Self / Client IP | `curl https://v6.api.ipinfo.io/lookup/me?token=$TOKEN` | | Lookup / Target IP | `curl https://v6.api.ipinfo.io/lookup/8.8.8.8?token=$TOKEN` | > The general API endpoint is built to support **both** IPv4 and IPv6 connections, ensuring compatibility with either protocol. ## Residential Proxy Time Window The `anonymous.last_seen` and `anonymous.percent_days_seen` fields are scoped to a **rolling 7-day observation window**. This means: - `last_seen` reflects the most recent date within the last 7 days the IP was observed as a residential proxy. - `percent_days_seen` reflects the share of those 7 days the IP was active. For example, a value of `63` means the IP was seen as a proxy on approximately 4 of the last 7 days. > For broader historical coverage, the [Residential Proxy database download](/developers/ip-to-residential-proxy) uses a 30-day observation window. ## Alternative API Schema Our legacy API is still maintained with fresh data, and we are committed to providing continued service to existing customers. IPinfo Standard (Legacy) IPinfo Standard has been upgraded to the IPinfo Max API tier. ```bash curl https://ipinfo.io/8.8.8.8/json?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "hostname": "dns.google", "anycast": true, "city": "Mountain View", "region": "California", "country": "US", "loc": "37.4056,-122.0775", "postal": "94043", "timezone": "America/Los_Angeles", "asn": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "route": "8.8.8.0/24", "type": "business" }, "privacy": { "vpn": false, "proxy": false, "tor": false, "relay": false, "hosting": false, "service": "" } } ``` ================================================================================ PAGE: IPinfo Places API URL: https://ipinfo.io/developers/places-api SLUG: places-api DESCRIPTION: Building-level IP intelligence API that identifies the physical place associated with an IP address, including hotels, airports, museums, stadiums, and 30+ other location categories. ================================================================================ # IPinfo Places API The **[IPinfo Places](/data/places)** API identifies the real-world location associated with an IP address at the building level. It matches IP addresses observed on venue Wi-Fi networks to verified physical places such as hotels, airports, museums, stadiums, transit stations, and 30+ other categories. - **Place name**: The name of the venue or building associated with the IP address. This information can be used to identify the brand of the business as well. - **Location category**: One of 30+ standardized location tags (e.g., `hotel`, `museum`, `airport`). - **Network SSID**: The Wi-Fi network name observed at the venue. - **Coordinates**: The building-level latitude and longitude of the matched place. > **IPinfo Places is currently in public beta.** Access is available via API. Additional fields and data (including brand, building dimensions, polygon boundaries, BSSIDs, and last-seen date) are available for select use cases. > > [Request access](/data/places#form) to learn more. ## Quick Reference Your browser does not support the video tag. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Places API Response", "description": "Schema for IPinfo Places API response", "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address being queried.", "example": "65.144.40.106" }, "name": { "type": "string", "description": "The name of the venue or building associated with the IP address.", "example": "Museum of History and Industry (MOHAI)" }, "category": { "type": "string", "description": "The location category tag for the venue.", "example": "museum" }, "ssid": { "type": "string", "description": "The Wi-Fi network name (SSID) observed at the venue.", "example": "MOHAI-Guest" }, "latitude": { "type": "number", "description": "The latitude coordinate of the matched place.", "example": 47.6275 }, "longitude": { "type": "number", "description": "The longitude coordinate of the matched place.", "example": -122.3367 } } } ``` | Field | Description | Example | | --- | --- | --- | | **`ip`** | The IP address being queried. | `65.144.40.106` | | **`name`** | The name of the venue or building associated with the IP address. | `Museum of History and Industry (MOHAI)` | | **`category`** | The location category tag for the venue. See the full list of supported categories below. | `museum` | | **`ssid`** | The Wi-Fi network name (SSID) observed at the venue. | `MOHAI-Guest` | | **`latitude`** | The latitude coordinate of the matched place. | `47.6275` | | **`longitude`** | The longitude coordinate of the matched place. | `-122.3367` | ## Lookup an IP address ```bash curl https://api.ipinfo.io/places/65.144.40.106?token=$TOKEN ``` ```json { "ip": "65.144.40.106", "name": "Museum of History and Industry (MOHAI)", "category": "museum", "ssid": "MOHAI-Guest", "latitude": 47.6275, "longitude": -122.3367 } ``` ### Batch lookups The Places API is supported in the [batch endpoint](/developers/batch), allowing you to combine Places lookups with other IPinfo data in a single request. ```bash curl -X POST "https://api.ipinfo.io/batch?token=$TOKEN" \ -H 'Content-Type: text/plain' \ -d 'places/65.144.40.106 places/1.0.141.187' ``` ```json { "places/65.144.40.106": { "ip": "65.144.40.106", "name": "Museum of History and Industry (MOHAI)", "category": "museum", "ssid": "MOHAI-Guest", "latitude": 47.6275, "longitude": -122.3367 }, "places/1.0.141.187": { "ip": "1.0.141.187", "name": "Blu Monkey Hub and Hotel Chanthaburi", "category": "hotel", "ssid": "BLU MONKEY", "latitude": 12.6385, "longitude": 102.0957 } } ``` ## IP Address Types Transport **Airport** Includes airports, terminals, lounges, heliports, seaplane bases, and related air-travel services. ```bash https://api.ipinfo.io/places/1.178.2.54?token=$TOKEN ``` ```json { "ip": "1.178.2.54", "name": "Mount Isa Airport", "category": "airport", "ssid": "Airport Free Wi-Fi", "latitude": -20.6664, "longitude": 139.4885 } ``` **Bus Station** Includes bus stations, coach operators, public transportation hubs, canal transport, and related bus services. ```bash https://api.ipinfo.io/places/1.145.112.19?token=$TOKEN ``` ```json { "ip": "1.145.112.19", "name": "Murrays Charter Coaches & Travel Services", "category": "bus_station", "ssid": "Murrays WiFi", "latitude": -35.2776, "longitude": 149.1287 } ``` **Ferry Station** Includes ferry terminals, piers, quays, ferry operators, and related waterfront transport infrastructure. ```bash https://api.ipinfo.io/places/1.146.85.60?token=$TOKEN ``` ```json { "ip": "1.146.85.60", "name": "Tangalooma Ferry Terminal", "category": "ferry_station", "ssid": "Tangalooma Guest", "latitude": -27.4394, "longitude": 153.1081 } ``` **Subway Station** Includes metro stations, light rail stops, cable car services, and related urban transit infrastructure. ```bash https://api.ipinfo.io/places/103.110.211.214?token=$TOKEN ``` ```json { "ip": "103.110.211.214", "name": "St. Paul's London Underground Station", "category": "subway_station", "ssid": "ST Martins Court - Staff", "latitude": 51.515, "longitude": -0.0976 } ``` **Train Station** Includes train stations, rail service operators, freight rail facilities, and related railway infrastructure. ```bash https://api.ipinfo.io/places/1.145.248.157?token=$TOKEN ``` ```json { "ip": "1.145.248.157", "name": "Mernda railway station", "category": "train_station", "ssid": "Mernda", "latitude": -37.6024, "longitude": 145.1009 } ``` Entertainment & leisure **Aquarium** Includes aquariums, aquatic specialty venues, and related visitor destinations centered on marine life. ```bash https://api.ipinfo.io/places/150.228.7.168?token=$TOKEN ``` ```json { "ip": "150.228.7.168", "name": "Cité de la Mer", "category": "aquarium", "ssid": "MSCVIRTUOSA-HOTSPOT", "latitude": 49.6462, "longitude": -1.6173 } ``` **Bar / Pub** Includes pubs, cocktail bars, wine bars, breweries, karaoke bars, sports bars, and other nightlife venues. ```bash https://api.ipinfo.io/places/1.129.104.165?token=$TOKEN ``` ```json { "ip": "1.129.104.165", "name": "Southern Cross Hotel", "category": "bar_pub", "ssid": "SCH_Guest_Wi-Fi", "latitude": -33.9158, "longitude": 151.1745 } ``` **Bowling Alley** Includes bowling alleys and closely related bowling entertainment venues. ```bash https://api.ipinfo.io/places/103.141.155.250?token=$TOKEN ``` ```json { "ip": "103.141.155.250", "name": "Strathpine Tenpin Bowl", "category": "bowling_alley", "ssid": "_StrathpineFreeWifi ", "latitude": -27.3073, "longitude": 152.9913 } ``` **Casino** Includes casinos, betting venues, bookmakers, lottery sellers, and horse-racing related gaming destinations. ```bash https://api.ipinfo.io/places/1.145.9.213?token=$TOKEN ``` ```json { "ip": "1.145.9.213", "name": "The Star", "category": "casino", "ssid": "The Star Free WiFi", "latitude": -33.8681, "longitude": 151.1952 } ``` **Cinema** Includes cinemas, drive-in theaters, and movie or television studio venues. ```bash https://api.ipinfo.io/places/1.44.156.150?token=$TOKEN ``` ```json { "ip": "1.44.156.150", "name": "Lyric Theatre at Star City", "category": "cinema", "ssid": "Club Lyric Free WiFi", "latitude": -33.8687, "longitude": 151.1958 } ``` **Gaming Arcade** Includes arcades, amusement-oriented game venues, laser tag centers, and tabletop gaming destinations. ```bash https://api.ipinfo.io/places/109.224.254.188?token=$TOKEN ``` ```json { "ip": "109.224.254.188", "name": "Babylon Park London", "category": "gaming_arcade", "ssid": "Babylon Park Free WiFi", "latitude": 51.5422, "longitude": -0.145 } ``` **Skating Rink** Includes skating rinks, ice rinks, skate parks, hockey venues, skate shops, and related action-sports facilities. ```bash https://api.ipinfo.io/places/103.141.102.30?token=$TOKEN ``` ```json { "ip": "103.141.102.30", "name": "Panmure Skatepark", "category": "skating_rink", "ssid": "FreedomPanmure", "latitude": -36.9021, "longitude": 174.8539 } ``` **Theme Park** Includes theme-park style attractions such as escape rooms, go-kart tracks, indoor play centers, and circus venues. ```bash https://api.ipinfo.io/places/103.108.94.248?token=$TOKEN ``` ```json { "ip": "103.108.94.248", "name": "Ferrymead Heritage Park", "category": "theme_park", "ssid": "Ferrymead-Staff", "latitude": -43.5676, "longitude": 172.7026 } ``` **Water Park** Includes water parks, swimming pools, pool halls, billiards venues, and other water- or pool-centered recreation spaces. ```bash https://api.ipinfo.io/places/103.250.228.207?token=$TOKEN ``` ```json { "ip": "103.250.228.207", "name": "Opunake Beach Paddling Pool", "category": "water_park", "ssid": "Opunake Beach Holiday Park", "latitude": -39.4579, "longitude": 173.8578 } ``` Arts & Leisure **Botanical Garden** Includes botanical gardens and related curated plant and garden destinations. ```bash https://api.ipinfo.io/places/109.144.16.230?token=$TOKEN ``` ```json { "ip": "109.144.16.230", "name": "Ninewells Arboretum", "category": "botanical_garden", "ssid": "NHSTayside_Free_WiFi", "latitude": 56.4613, "longitude": -3.0402 } ``` **Gallery** Includes art galleries, street-art spaces, animation studios, rehearsal studios, and adjacent creative venues. ```bash https://api.ipinfo.io/places/108.213.57.99?token=$TOKEN ``` ```json { "ip": "108.213.57.99", "name": "Ceramic League of Miami", "category": "gallery", "ssid": "CLM-WiFi-Guest", "latitude": 25.6507, "longitude": -80.3379 } ``` **Landmark Monument** Includes landmarks, monuments, castles, forts, visitor centers, historical attractions, and related tourism sites. ```bash https://api.ipinfo.io/places/103.44.24.44?token=$TOKEN ``` ```json { "ip": "103.44.24.44", "name": "Port Arthur Historic Site", "category": "landmark_monument", "ssid": "PAHSMA Public", "latitude": -43.1472, "longitude": 147.8491 } ``` **Library** Includes public libraries and related community learning or media access spaces. ```bash https://api.ipinfo.io/places/1.128.111.240?token=$TOKEN ``` ```json { "ip": "1.128.111.240", "name": "Mareeba Shire Library Service - Mareeba Library", "category": "library", "ssid": "Mareeba Library Public WiFi", "latitude": -17.004, "longitude": 145.44 } ``` **Museum** Includes art, science, history, design, photography, aviation, and other specialized museum venues. ```bash https://api.ipinfo.io/places/1.145.91.70?token=$TOKEN ``` ```json { "ip": "1.145.91.70", "name": "Australian Museum", "category": "museum", "ssid": "Tenda_D82DA0", "latitude": -33.8743, "longitude": 151.2133 } ``` **Theater** Includes theaters, comedy clubs, performing arts venues, and other live performance spaces. ```bash https://api.ipinfo.io/places/1.144.105.166?token=$TOKEN ``` ```json { "ip": "1.144.105.166", "name": "The Lion King - Musical (AU)", "category": "theater", "ssid": "Tenda_D82DA0", "latitude": -33.8796, "longitude": 151.2063 } ``` **Zoo** Includes zoos and petting zoo attractions focused on wildlife and animal experiences. ```bash https://api.ipinfo.io/places/101.178.227.144?token=$TOKEN ``` ```json { "ip": "101.178.227.144", "name": "Ipswich Nature Centre", "category": "zoo", "ssid": "Ipswich Kindy", "latitude": -27.619, "longitude": 152.7671 } ``` Sports & Outdoors **Golf** Includes golf courses, golf clubs, driving ranges, instructors, indoor golf centers, and related golf facilities. ```bash https://api.ipinfo.io/places/1.132.110.160?token=$TOKEN ``` ```json { "ip": "1.132.110.160", "name": "JK Performance Coaching", "category": "golf", "ssid": "T4GXP_TG5J", "latitude": -28.0148, "longitude": 153.3644 } ``` **Sports Center** Includes sports clubs, courts, gyms, martial arts studios, diving centers, esports venues, and broader recreation facilities. ```bash https://api.ipinfo.io/places/1.152.104.167?token=$TOKEN ``` ```json { "ip": "1.152.104.167", "name": "Albert Park Indoor Sports Centre", "category": "sports_center", "ssid": "Apollo", "latitude": -37.8431, "longitude": 144.9614 } ``` **Stadium** Includes stadiums and arenas for football, baseball, basketball, rugby, tennis, soccer, track, and similar sports. ```bash https://api.ipinfo.io/places/1.145.103.129?token=$TOKEN ``` ```json { "ip": "1.145.103.129", "name": "Home & Lifestyle Pavillion", "category": "stadium", "ssid": "TPPW4G_F886-5G", "latitude": -33.8458, "longitude": 151.0684 } ``` Events & Venues **Conference Center** Includes conference centers, exhibition halls, and trade-show venues. ```bash https://api.ipinfo.io/places/103.56.14.30?token=$TOKEN ``` ```json { "ip": "103.56.14.30", "name": "Ivory's Rock", "category": "conference_center", "ssid": "IvorysRock-Guest", "latitude": -27.7791, "longitude": 152.7758 } ``` **Co-working Space** Includes coworking offices, shared workspaces, internet cafes, kiosks, and adjacent professional service environments. ```bash https://api.ipinfo.io/places/103.115.209.195?token=$TOKEN ``` ```json { "ip": "103.115.209.195", "name": "Darwin Innovation Hub", "category": "coworking_space", "ssid": "Rydges Darwin Central", "latitude": -12.4625, "longitude": 130.8413 } ``` **Events Venue** Includes event spaces, wedding chapels, caterers, bingo halls, festivals, palaces, and broader event-hosting destinations. ```bash https://api.ipinfo.io/places/100.35.57.118?token=$TOKEN ``` ```json { "ip": "100.35.57.118", "name": "Stone House - Landmark Tavern, Weddings & Events", "category": "events_venue", "ssid": "StoneHouse-Guest", "latitude": 40.6436, "longitude": -74.4712 } ``` **Music Venue** Includes music venues, auditoriums, choirs, opera and ballet spaces, radio stations, and music production facilities. ```bash https://api.ipinfo.io/places/103.7.207.43?token=$TOKEN ``` ```json { "ip": "103.7.207.43", "name": "Wimbledon Community Chorus", "category": "music_venue", "ssid": "CommunityFibre10Gb", "latitude": 51.4184, "longitude": -0.2011 } ``` Retail & Services **Car Dealer** Includes car dealerships, used car lots, truck and motorcycle dealers, RV and boat dealers, auctions, and automotive service businesses. ```bash https://api.ipinfo.io/places/104.129.204.132?token=$TOKEN ``` ```json { "ip": "104.129.204.132", "name": "BorgWarner Inc.", "category": "car_dealer", "ssid": "BorgWarnerGuest", "latitude": 41.8375, "longitude": -89.4576 } ``` **Event Services** Includes event photography, bridal shops, party equipment rental, DJs, wedding planning, officiants, and related event service providers. ```bash https://api.ipinfo.io/places/130.65.254.12?token=$TOKEN ``` ```json { "ip": "130.65.254.12", "name": "SJSU Writing Center", "category": "event_services", "ssid": "SJSU_guest", "latitude": 37.3356, "longitude": -121.8853 } ``` Accommodation **Hotel** Includes hotels, inns, motels, lodges, hostels, cottages, cabins, and other short-stay accommodation providers. ```bash https://api.ipinfo.io/places/1.178.84.222?token=$TOKEN ``` ```json { "ip": "1.178.84.222", "name": "Seaford Hotel", "category": "hotel", "ssid": "FreePubWiFi", "latitude": -38.1133, "longitude": 145.155 } ``` **Resort** Includes resorts and destination stays such as beach resorts, holiday homes, agriturismo, and other leisure accommodations. ```bash https://api.ipinfo.io/places/1.178.83.174?token=$TOKEN ``` ```json { "ip": "1.178.83.174", "name": "Nightcap at Ferntree Gully Hotel", "category": "resort", "ssid": "Nightcap at Ferntree Gully", "latitude": -37.8893, "longitude": 145.2975 } ``` ## Supported Categories IPinfo Places currently supports 30+ location tags. The table below lists the available categories currently. Please go to our product page for a continuously updated list of [places](/data/places). | Category | Description | Sample IP | |---|---|---| | `airport` | Airport Wi-Fi networks and terminal infrastructure. | [104.0.131.52](/104.0.131.52) | | `aquarium` | Public aquarium visitor networks. | [104.255.2.38](/104.255.2.38) | | `bar_pub` | Bar and pub guest Wi-Fi and entertainment venue networks. | [100.12.1.130](/100.12.1.130) | | `botanical_garden` | Botanical garden visitor networks. | [12.11.77.34](/12.11.77.34) | | `bowling_alley` | Bowling alley guest Wi-Fi. | [104.136.188.194](/104.136.188.194) | | `bus_station` | Bus terminal networks and public transit hub infrastructure. | [107.152.6.170](/107.152.6.170) | | `car_dealer` | Car dealership visitor networks and automotive facility infrastructure. | [104.129.204.132](/104.129.204.132) | | `casino` | Casino guest networks and gaming facility infrastructure. | [100.42.173.114](/100.42.173.114) | | `cinema` | Movie theater guest Wi-Fi. | [100.33.62.82](/100.33.62.82) | | `conference_center` | Convention centers, exhibition halls, and event venue networks. | [100.37.103.126](/100.37.103.126) | | `coworking_space` | Shared office environments and flexible workspace networks. | [104.129.138.194](/104.129.138.194) | | `events_venue` | Event venue networks, including multipurpose arenas. | [100.35.57.118](/100.35.57.118) | | `event_services` | Event service provider including photography, bridal shops, equipment rental, catering etc. | [130.65.254.12](/130.65.254.12) | | `ferry_station` | Ferry terminal networks. | [100.38.58.132](/100.38.58.132) | | `gallery` | Art gallery visitor networks. | [104.228.237.131](/104.228.237.131) | | `gaming_arcade` | Gaming arcade networks. | [104.10.99.210](/104.10.99.210) | | `golf` | Golf course clubhouse networks. | [100.37.133.113](/100.37.133.113) | | `hotel` | Hotel guest networks, lobby Wi-Fi, and hospitality infrastructure. | [100.0.119.125](/100.0.119.125) | | `landmark_monument` | Visitor networks at landmarks, monuments, and tourist attractions. | [131.247.244.5](/131.247.244.5) | | `library` | Public library networks and community learning center infrastructure. | [100.42.166.242](/100.42.166.242) | | `museum` | Museum visitor networks and cultural institution Wi-Fi. | [103.77.192.157](/103.77.192.157) | | `music_venue` | Music venue guest networks and concert halls. | [100.35.28.106](/100.35.28.106) | | `resort` | Resort guest networks and destination property infrastructure. | [100.2.136.131](/100.2.136.131) | | `skating_rink` | Skating rink visitor networks. | [104.207.216.5](/104.207.216.5) | | `sports_center` | Sports center networks, fitness facilities, and recreational complexes. | [100.0.60.34](/100.0.60.34) | | `stadium` | Stadium networks and sporting event venues. | [100.8.171.163](/100.8.171.163) | | `subway_station` | Subway and metro station networks. | [107.84.152.28](/107.84.152.28) | | `theater` | Theater guest networks and performing arts venues. | [100.1.169.2](/100.1.169.2) | | `theme_park` | Theme park visitor Wi-Fi and amusement attraction networks. | [107.72.178.12](/107.72.178.12) | | `train_station` | Railway station networks and rail transit hub infrastructure. | [107.152.1.54](/107.152.1.54) | | `water_park` | Water park visitor networks. | [107.201.114.131](/107.201.114.131) | | `zoo` | Zoo visitor networks and wildlife park facilities. | [134.204.85.54](/134.204.85.54) | > **Additional Data ([Available on Request](/data/places#form))** > > For select use cases, we can provide additional points of interest and network-level metadata. ================================================================================ PAGE: IPinfo Business API URL: https://ipinfo.io/developers/business-api SLUG: business-api DESCRIPTION: Business tier API with privacy detection, abuse contacts, company data, carrier information, and domain listings. ================================================================================ # IPinfo Business > The Business API is no longer available for new customers. Existing customers retain full access. Our IPinfo Business plan includes access to multiple data fields besides ASN and geolocation, including `privacy`, `abuse`, `company`, `carrier` and limited `domains` hosted on the IP. ```bash curl https://ipinfo.io/8.8.8.8/json?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "hostname": "dns.google", "anycast": true, "city": "Mountain View", "region": "California", "country": "US", "loc": "37.4056,-122.0775", "postal": "94043", "timezone": "America/Los_Angeles", "asn": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "route": "8.8.8.0/24", "type": "hosting" }, "company": { "name": "Google LLC", "domain": "google.com", "type": "hosting" }, "privacy": { "vpn": false, "proxy": false, "tor": false, "relay": false, "hosting": true, "service": "" }, "abuse": { "address": "US, CA, Mountain View, 1600 Amphitheatre Parkway, 94043", "country": "US", "email": "network-abuse@google.com", "name": "Abuse", "network": "8.8.8.0/24", "phone": "+1-650-253-0000" }, "domains": { "ip": "8.8.8.8", "total": 9791, "domains": [ "musicool.cn", "kagou.vip", "nmgk2.com", "91xiazai.com", "bits-hyderabad.ac.in" ] } } ``` You can also query domains data separately. Check [how you can find domains hosted on IP](/developers/hosted-domains) using [Hosted Domains API](/data/hosted-domains). ```bash curl https://ipinfo.io/domains/8.8.8.8?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "total": 11606, "domains": [ "41.cn", "onionflix.cc", "newmax.info", "ftempurl.com", "itempurl.com" ] } ``` ================================================================================ PAGE: IPinfo Enterprise API URL: https://ipinfo.io/developers/enterprise-api SLUG: enterprise-api DESCRIPTION: Premium API tier with Plus features plus IP to Company, WHOIS data, IP ranges, activity tracking, and complete hosted domains lists. ================================================================================ # Enterprise API The Enterprise API is a custom solution where customers select specific API services and a request quota tailored to their needs. Rather than a fixed package, it allows you to build a custom API response by combining the services you require. The following API services are available through the Enterprise plan: - [IP Geolocation](/developers/ip-geolocation-api-data) - [IP to ASN](/developers/ip-asn-api-data) - [ASN API](/developers/asn) - [IP to Company](/developers/data-types#company-data) - [Privacy Detection API](/developers/ip-privacy-detection-api-data) - [IP to Residential Proxy Detection](/developers/residential-proxy-api) - [Extended Privacy Detection API](/developers/privacy-extended-api) - [Carrier Detection (Mobile IP Data) API](/developers/ip-carrier-api-data) - [Abuse Contact API](/developers/data-types#abuse-contact-data) - [IP WHOIS](/developers/whois) - [IP Ranges](/developers/ranges) - [Hosted Domains API](/developers/hosted-domains) - Our Standard off the shelf API service: [IPinfo Max](/developers/max-api), [IPinfo Plus](/developers/plus-api) or, [IPinfo Core](/developers/core-api) Some of these services, such as IP WHOIS, IP to Company, Abuse Contact API, IP Ranges, and Full Hosted Domains, are only available through the Enterprise plan. > **Note:** The Enterprise API does not automatically include all of the services listed above. You choose only the services and request quota that match your needs. --- ## IP Ranges API The IP Ranges API returns all known IP ranges associated with a given domain. ```bash curl /ranges/comcast.net?token=$TOKEN ``` ```json { "domain": "comcast.net", "num_ranges": "37330", "ranges": [ "23.24.240.0/29", "23.24.240.64/29", "23.24.240.128/28", "23.24.240.152/29", "23.24.240.168/29", "23.24.240.192/29", "23.24.240.208/29", "23.24.241.40/29", "23.24.241.72/29", "23.24.241.96/29", "23.24.241.112/28", "23.24.241.136/29", "23.24.241.168/29", "23.24.241.184/29", ... ] } ``` --- ## Hosted Domains API The Hosted Domains API returns the domains hosted on a given IP address. By default, the API returns up to 5 domains per lookup. Through the Enterprise plan, you can retrieve up to 1,000 domains per lookup without the need for pagination. ```bash curl /domains/8.8.8.8?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "total": "37330", "domains": [ "41.cn", "onionflix.cc", "newmax.info", "ftempurl.com", "itempurl.com", "authrock.com", "ctempurl.com", "mtqnia.com", "server-panel.net", "gtempurl.com", "htempurl.com", ... ] } ``` --- ## IP to Company API The IP to Company API identifies the organization behind an IP address, including the company name, business type, and domain. This information is sourced from various publicly available datasets. ```bash curl /8.8.8.8?token=$TOKEN ``` ```json { ... "company": { "name": "Google LLC", "domain": "google.com", "type": "business" } } ``` > **Note:** The ability to identify a company depends on its size and how it manages its network. For example, if a startup operates from a WeWork office in NYC, we may not be able to identify the startup directly since it uses the building's shared network. However, we would be able to identify that the traffic originates from WeWork. --- ## Abuse Contact API The Abuse Contact API returns contact information, typically of the network administrator, that can be used to report IP addresses engaged in fraudulent or malicious activities. ```bash curl /1.1.1.1?token=$TOKEN ``` ```json { ... "abuse": { "address": "PO Box 3646, South Brisbane, QLD 4101, Australia", "country": "AU", "email": "abuse@apnic.net", "name": "APNIC RESEARCH", "network": "1.1.1.0/24", "phone": "+61-7-3858-3188" } } ``` ================================================================================ PAGE: Residential Proxy Detection API URL: https://ipinfo.io/developers/residential-proxy-api SLUG: residential-proxy-api DESCRIPTION: Detect residential proxy IPs with activity insights, proxy service identification, and comprehensive lookup capabilities. ================================================================================ # Residential Proxy Detection API The IPinfo Residential Proxy Detection API provides detailed insights into IP addresses associated with residential, mobile, or datacenter proxy networks, including activity patterns, and service identification. > You can access IPinfo IP to Residential Proxy Detection data as a downloadable dataset as well: **[IPinfo Residential Proxy Data Downloads](/developers/ip-to-residential-proxy)** ## Quick Reference API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Residential Proxy Detection API Response", "description": "Schema for IPinfo Residential Proxy Detection API response", "type": "object", "properties": { "ip": { "type": "string", "description": "The IPv4 or IPv6 address associated with a residential proxy.", "example": "175.107.211.204" }, "last_seen": { "type": "string", "format": "date", "description": "The last recorded date when the residential proxy IP was active, formatted as YYYY-MM-DD (ISO-8601). The timezone is UTC.", "example": "2025-06-24" }, "percent_days_seen": { "type": "integer", "description": "The percentage of days the IP was active in the last 7-day period, reflecting its activity and frequency within a residential proxy pool.", "minimum": 0, "maximum": 100, "example": 14 }, "service": { "type": "string", "description": "The name of the residential proxy service. Carrier/mobile services are suffixed with `_mobile` (e.g., `soax_mobile`) and datacenter services are suffixed with `_datacenter` (e.g., `brightdata_datacenter`).", "example": "ipfoxy" } } } ``` | Field | Description | Example | | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | | `ip` | The IPv4 or IPv6 address associated with a residential proxy. | `175.107.211.204` | | `last_seen` | The last recorded date when the residential proxy IP was active, formatted as YYYY-MM-DD (ISO-8601). The timezone is UTC. | `2025-06-24` | | `percent_days_seen` | The percentage of days the IP was active in the last 7-day period, reflecting its activity and frequency within a residential proxy pool. | `14` | | `service` | The name of the residential proxy service. Carrier/mobile services are suffixed with `_mobile` (e.g., `soax_mobile`) and datacenter services are suffixed with `_datacenter` (e.g., `brightdata_datacenter`). | `ipfoxy` | ## Types of Proxies Detected We currently recognize three types of residential proxies: - Standard residential proxies: Residential proxy IP addresses - Mobile/Carrier/Phone-based residential proxy IP addresses - Datacenter-based residential proxy IP addresses ## Time Windows The Residential Proxy data is scoped to a **time window** — a rolling observation period that determines how far back an IP address's proxy activity is considered. The oldest `last_seen` date in the dataset will always fall within this period relative to today. This is not a fixed update cycle; the window moves continuously. - The **[Residential Proxy API](/developers/residential-proxy-api)** uses a **7-day** observation period. - The **[Residential Proxy Database download](/developers/ip-to-residential-proxy)** uses a **30-day** observation period. The `percent_days_seen` field reflects the percentage of days an IP was active within the observation period. For example, a `percent_days_seen` value of `50` on a 30-day dataset means the IP was seen as a proxy on approximately 15 of the last 30 days. ## Lookup IP addresses ```bash curl https://ipinfo.io/resproxy/175.107.211.204?token=$TOKEN ``` ```json { "ip": "175.107.211.204", "last_seen": "2025-06-24", "percent_days_seen": 14, "service": "ipfoxy" } ``` If you are using an IPv6 connection, please use the [v6.ipinfo.io endpoint](https://support.ipinfo.io/hc/en-us/articles/30792495690642-Does-IPinfo-support-IPv6). ================================================================================ PAGE: Privacy Detection Extended API URL: https://ipinfo.io/developers/privacy-extended-api SLUG: privacy-extended-api DESCRIPTION: Extended anonymous IP detection with metadata and detailed detection methodologies for VPNs, proxies, and hosting providers. ================================================================================ # Privacy Detection API (Extended) The IPinfo IP to Privacy Detection (Extended) API service provides detection methodology related metadata to support risk scoring, confidence metrics, and IP reputation aspects behind each IP address that IPinfo detects to be anonymous. IPinfo uses multi-modal detection methods to detect anonymous IP addresses, which includes internet measurement, IP address behavior and characteristics, internet records metadata, etc. This multi-data detection method makes for a robust detection process and can be used to fine-tune fraud detection models based on the risk models of companies. > You can access IPinfo Anonymous IP Detection (Extended) data as a downloadable dataset as well: **[Privacy Detection Extended Data Downloads](/developers/privacy-detection-extended)** ## Quick Reference API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo IP to Privacy Detection (Extended) API Response", "description": "Schema for IPinfo IP to Privacy Detection (Extended) API response", "type": "object", "properties": { "vpn": { "type": "boolean", "description": "Indicates Virtual Private Network (VPN) service exit node IP address.", "example": true }, "proxy": { "type": "boolean", "description": "Indicates an open web proxy IP address.", "example": false }, "tor": { "type": "boolean", "description": "Indicates a Tor (The Onion Router) exit node IP address.", "example": false }, "relay": { "type": "boolean", "description": "Indicates a location-preserving anonymous relay service.", "example": false }, "hosting": { "type": "boolean", "description": "Indicates a hosting/cloud service/data center IP address.", "example": true }, "service": { "type": "string", "description": "Name of the privacy service provider - includes VPN, Proxy, and Relay service provider names.", "example": "NordVPN" }, "confidence": { "type": "integer", "description": "The level of confidence attributed to the best source associated with this range. Level 3: Direct observation of commercial use (vpn_config). Level 2: Direct observation of VPN software running on the range (census) + registrar information associated with VPNs or specific providers OR highly convincing device activity. Level 1: Direct observation of VPN software running on the range (census) without known association to specific providers or VPNs in general OR suspicious device data not associated with hosting ranges.", "minimum": 1, "maximum": 3, "example": 3 }, "coverage": { "type": "number", "description": "For inferred ranges (see inferred flag), represents the proportion of the range (in IP count) that we saw direct evidence of VPN activity on; the remaining percentage of the range (1 - coverage) is composed of IPs we did not directly observe. For IPs/ranges we've fully directly observed VPN evidence on, this value is 1.0.", "minimum": 0, "maximum": 1, "example": 1.0 }, "census": { "type": "boolean", "description": "Ranges where we've observed VPN software/ports on; we run scans on ports and protocols commonly associated with VPN software. Ranges with the census flag are those where these scans obtained positive results.", "example": false }, "census_ports": { "type": "array", "description": "The ports we've gotten positive results for when running our VPN detection census.", "items": { "type": "integer" }, "example": [] }, "device_activity": { "type": "boolean", "description": "Ranges on which we've observed device activity compatible with VPN usage (outside of known infrastructure area; simultaneous use around a large area; pingable and/or associated with hosting providers).", "example": false }, "inferred": { "type": "boolean", "description": "Whether the range associated with the record is the result of direct observation or inference based on neighboring IPs.", "example": false }, "vpn_config": { "type": "boolean", "description": "Ranges where we confirmed VPN activity by directly running VPN software from almost 200 different providers and collecting exit IPs.", "example": false }, "whois": { "type": "boolean", "description": "Ranges where we've observed VPN software/ports on AND have a WHOIS association with either VPNs in general or specific VPN providers. e.g. if our ipsec scan returned a positive result for an IP and its WHOIS record indicates that it is owned by a VPN provider, this flag will be true.", "example": false }, "first_seen": { "type": "string", "format": "date", "description": "Date when the activity on an anonymous IP address was first observed. Date in YYYY-MM-DD format, ISO-8601. Within the 3-month lookback period.", "example": "2025-09-19" }, "last_seen": { "type": "string", "format": "date", "description": "Date when the activity on an anonymous IP address was last/recently observed. Date in YYYY-MM-DD format, ISO-8601.", "example": "2025-11-06" } } } ``` | Field | Description | Example | |-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------| | `vpn` | Indicates Virtual Private Network (VPN) service exit node IP address | `true` | | `proxy` | Indicates an open web proxy IP address | `false` | | `tor` | Indicates a Tor (The Onion Router) exit node IP address | `false` | | `relay` | Indicates a location-preserving anonymous relay service | `false` | | `hosting` | Indicates a hosting/cloud service/data center IP address | `true` | | `service` | Name of the privacy service provider - includes VPN, Proxy, and Relay service provider names | `NordVPN` | | `confidence` | The level (from 1 to 3) of confidence attributed to the best source associated with this range | `3` | | `coverage` | For inferred ranges (see inferred flag), represents the proportion of the range (in IP count) that we saw direct evidence of VPN activity on; the remaining percentage of the range (1 - coverage) is composed of IPs we did not directly observe. For IPs/ranges we've fully directly observed VPN evidence on, this value is 1.0. | `1` | | `census` | Ranges where we've observed VPN software/ports on; we run scans on ports and protocols commonly associated with VPN software. Ranges with the census flag are those where these scans obtained positive results | `false` | | `census_ports` | The ports we've gotten positive results for when running our VPN detection census | `` | | `device_activity` | Ranges on which we've observed device activity compatible with VPN usage (outside of known infrastructure area; simultaneous use around a large area; pingable and/or associated with hosting providers) | `false` | | `inferred` | Whether the range associated with the record is the result of direct observation or inference based on neighboring IPs | `false` | | `vpn_config` | Ranges where we confirmed VPN activity by directly running VPN software from almost 200 different providers and collecting exit IPs | `false` | | `whois` | Ranges where we've observed VPN software/ports on AND have a WHOIS association with either VPNs in general or specific VPN providers. e.g. if our ipsec scan returned a positive result for an IP and its WHOIS record indicates that it is owned by a VPN provider, this flag will be true. | `false` | | `first_seen` | Date when the activity on an anonymous IP address was first observed: Date in YYYY-MM-DD format, ISO-8601. Within the 3-month lookback period. | `2025-09-19` | | `last_seen` | Date when the activity on an anonymous IP address was last/recently observed: Date in YYYY-MM-DD format, ISO-8601. | `2025-11-06` | Confidence intervals defined: | Confidence Level | Description | | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 3 | Direct observation of commercial use (vpn_config) | | 2 | Direct observation of VPN software running on the range (census) + registrar information associated with VPNs or specific providers OR highly convincing device activity (large spread of devices on pingable networks that are not associated with carrier traffic and known to be associated with hosting providers) | | 1 | Direct observation of VPN software running on the range (census) without known association to specific providers or VPNs in general OR device data that is suspicious but not associated with hosting ranges | ## Lookup IP addresses ```bash curl https://ipinfo.io/193.42.96.221/privacy?token=$TOKEN ``` ```json { "vpn": true, "proxy": false, "tor": false, "relay": false, "hosting": true, "service": "NordVPN", "confidence": 3, "coverage": 1, "census": false, "census_ports": "", "device_activity": false, "inferred": false, "vpn_config": false, "whois": false, "first_seen": "2025-09-19", "last_seen": "2025-11-06" } ``` In the case that the IP address is not an anonymous type or actively hosting IP anonymization technology (only a hosting-type IP), the respective detection metadata fields will not be present. non-anonymous IP address ```bash curl https://ipinfo.io/93.42.96.221/privacy?token=$TOKEN ``` ```json { "vpn": false, "proxy": false, "tor": false, "relay": false, "hosting": false, "service": "" } ``` Hosting (only) type IP address ```bash curl https://ipinfo.io/2a02:6ea0:2700:1:1012:2a00:4028:0/privacy?token=$TOKEN ``` ```json { "vpn": false, "proxy": false, "tor": false, "relay": false, "hosting": true, "service": "" } ``` If you are using an IPv6 connection, please use the [v6.ipinfo.io endpoint](https://support.ipinfo.io/hc/en-us/articles/30792495690642-Does-IPinfo-support-IPv6). ================================================================================ PAGE: ASN API URL: https://ipinfo.io/developers/asn SLUG: asn DESCRIPTION: Query Autonomous System Numbers (ASN) for network ownership, routing information, and organization details. ================================================================================ # ASN API **Available in**: IPinfo Core, IPinfo Plus, IPinfo Max, and IPinfo Enterprise ASN API allows you to programmatically access details about an ASN, such as the assigned prefixes, related domain, and more. The ASN API is available at `/ASXX/json`. ## Quick Reference API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo ASN API Response", "description": "Schema for IPinfo ASN API response", "type": "object", "properties": { "asn": { "type": "string", "description": "The Autonomous System Number (ASN) in AS-prefixed format.", "example": "AS203779" }, "name": { "type": "string", "description": "The official name of the organization that owns the ASN.", "example": "NORDFIBER AS" }, "country": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code where the ASN is registered.", "example": "NO" }, "allocated": { "type": "string", "format": "date", "description": "The date when the ASN was allocated, in YYYY-MM-DD format (ISO-8601).", "example": "2015-10-30" }, "registry": { "type": "string", "description": "The Regional Internet Registry (RIR) that allocated the ASN.", "enum": ["arin", "ripe", "apnic", "lacnic", "afrinic"], "example": "ripe" }, "domain": { "type": "string", "description": "The primary domain associated with the organization that owns the ASN.", "example": "nordfiber.no" }, "num_ips": { "type": "integer", "description": "The total number of IPv4 addresses announced by this ASN.", "example": 1536 }, "type": { "type": "string", "description": "The type of organization that owns the ASN.", "enum": ["isp", "hosting", "business", "education", "government"], "example": "isp" }, "prefixes": { "type": "array", "description": "List of IPv4 prefixes (netblocks) announced by this ASN.", "items": { "type": "object", "properties": { "netblock": { "type": "string", "description": "The IPv4 CIDR notation for the prefix.", "example": "185.124.52.0/22" }, "id": { "type": "string", "description": "The network identifier or handle for the prefix.", "example": "NO-NORDFIBER-20151030" }, "name": { "type": "string", "description": "The name of the organization associated with the prefix.", "example": "NORDFIBER AS" }, "country": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code for the prefix.", "example": "NO" }, "size": { "type": "string", "description": "The number of IP addresses in the prefix.", "example": "1024" }, "status": { "type": "string", "description": "The allocation status of the prefix as assigned by the RIR.", "example": "ALLOCATED PA" }, "domain": { "type": "string", "description": "The domain associated with the prefix.", "example": "nordfiber.no" }, "rpki_status": { "type": "string", "description": "The RPKI validation status of the prefix.", "enum": ["valid", "invalid", "unknown"], "example": "valid" } } } }, "prefixes6": { "type": "array", "description": "List of IPv6 prefixes (netblocks) announced by this ASN.", "items": { "type": "object", "properties": { "netblock": { "type": "string", "description": "The IPv6 CIDR notation for the prefix.", "example": "2a06:b040::/29" }, "id": { "type": "string", "description": "The network identifier or handle for the prefix.", "example": "NO-NORDFIBER-20151030" }, "name": { "type": "string", "description": "The name of the organization associated with the prefix.", "example": "NORDFIBER AS" }, "country": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code for the prefix.", "example": "NO" }, "size": { "type": "string", "description": "The number of IP addresses in the prefix. Note: IPv6 values exceed the JavaScript safe integer range and are returned as strings.", "example": "633825300114114700748351602688" }, "status": { "type": "string", "description": "The allocation status of the prefix as assigned by the RIR.", "example": "ALLOCATED-BY-RIR" }, "domain": { "type": "string", "description": "The domain associated with the prefix.", "example": "nordfiber.no" }, "rpki_status": { "type": "string", "description": "The RPKI validation status of the prefix.", "enum": ["valid", "invalid", "unknown"], "example": "valid" } } } }, "peers": { "type": "array", "description": "List of ASN numbers (without AS prefix) that peer with this ASN.", "items": { "type": "string" }, "example": ["2116", "2119", "3356"] }, "upstreams": { "type": "array", "description": "List of ASN numbers (without AS prefix) that provide upstream transit to this ASN.", "items": { "type": "string" }, "example": ["2116", "2119", "3356"] }, "downstreams": { "type": "array", "description": "List of ASN numbers (without AS prefix) that receive downstream transit from this ASN.", "items": { "type": "string" }, "example": ["200665", "201596"] } } } ``` | Field | Type | Description | Example | | ------------- | ------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------- | | `asn` | string | The Autonomous System Number (ASN) in AS-prefixed format. | `AS203779` | | `name` | string | The official name of the organization that owns the ASN. | `NORDFIBER AS` | | `country` | string | The ISO 3166-1 alpha-2 country code where the ASN is registered. | `NO` | | `allocated` | string (date) | The date when the ASN was allocated, in YYYY-MM-DD format (ISO-8601). | `2015-10-30` | | `registry` | string | The Regional Internet Registry (RIR) that allocated the ASN. One of: `arin`, `ripe`, `apnic`, `lacnic`, `afrinic`. | `ripe` | | `domain` | string | The primary domain associated with the organization that owns the ASN. | `nordfiber.no` | | `num_ips` | integer | The total number of IPv4 addresses announced by this ASN. | `1536` | | `type` | string | The type of organization that owns the ASN. One of: `isp`, `hosting`, `business`, `education`, `government`. | `isp` | | `prefixes` | array | List of IPv4 prefixes (netblocks) announced by this ASN. | See below | | `prefixes6` | array | List of IPv6 prefixes (netblocks) announced by this ASN. | See below | | `peers` | array | List of ASNs (without AS prefix) that peer with this ASN. | `["2116", "3356"]` | | `upstreams` | array | List of ASNs (without AS prefix) that provide upstream transit to this ASN. | `["2116", "3356"]` | | `downstreams` | array | List of ASNs (without AS prefix) that receive downstream transit from this ASN. | `["200665", "201596"]` | ### Prefix Object Fields The `prefixes` and `prefixes6` arrays contain objects with the following fields: | Field | Type | Description | Example | | ------------- | ------ | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | | `netblock` | string | The CIDR notation for the prefix (IPv4 for `prefixes`, IPv6 for `prefixes6`). | `185.124.52.0/22` or `2a06:b040::/29` | | `id` | string | The network identifier or handle for the prefix. | `NO-NORDFIBER-20151030` | | `name` | string | The name of the organization associated with the prefix. | `NORDFIBER AS` | | `country` | string | The ISO 3166-1 alpha-2 country code for the prefix. | `NO` | | `size` | string | The number of IP addresses in the prefix. IPv6 values exceed the JavaScript safe integer range and are returned as strings. | `1024` | | `status` | string | The allocation status of the prefix as assigned by the RIR. | `ALLOCATED PA` | | `domain` | string | The domain associated with the prefix. | `nordfiber.no` | | `rpki_status` | string | The RPKI validation status of the prefix. One of: `valid`, `invalid:origin`, `invalid:origin` or `not_found`. | `valid` | ### Lookup ASN ```bash curl ipinfo.io/AS203779/json?token=$TOKEN ``` ```json { "asn": "AS203779", "name": "NORDFIBER AS", "country": "NO", "allocated": "2015-10-30", "registry": "ripe", "domain": "nordfiber.no", "num_ips": 1536, "type": "isp", "prefixes": [ { "netblock": "185.124.52.0/22", "id": "NO-NORDFIBER-20151030", "name": "NORDFIBER AS", "country": "NO", "size": "1024", "status": "ALLOCATED PA", "domain": "nordfiber.no", "rpki_status": "valid" } ], "prefixes6": [ { "netblock": "2a06:b040::/29", "id": "NO-NORDFIBER-20151030", "name": "NORDFIBER AS", "country": "NO", "size": "633825300114114700748351602688", "status": "ALLOCATED-BY-RIR", "domain": "nordfiber.no", "rpki_status": "valid" } ], "peers": [ "2116", "2119", "3356", "3549", "6939", "8896" ], "upstreams": [ "2116", "2119", "3356", "6939", "25400" ], "downstreams": [ "200665", "201596", "202204", "207464" ] } ``` ================================================================================ PAGE: IP Ranges API URL: https://ipinfo.io/developers/ranges SLUG: ranges DESCRIPTION: Query IP address ranges and CIDR blocks for network analysis and infrastructure mapping. ================================================================================ # IP Ranges **Available in**: IPinfo Enterprise Our [IP address ranges API](/products/ranges-api) returns a list of all of the IP addresses ranges assigned to or operated by a company, identified by the provided domain name. ```bash curl https://ipinfo.io/ranges/nytimes.com?token=$TOKEN ``` ```json { "domain": "nytimes.com", "redirects_to": null, "num_ranges": 24, "ranges": [ "80.4.179.80/28", "97.67.74.80/29", "2a00:2381:2ebf::/56", "194.73.217.40/29", "2a00:2381:2ebf:100::/56", ... ] } ``` Even though the foundational data of the IP ranges API is based on the [IP to Company Database](/data/ip-company), the API accepts domain inputs that ultimately resolve to an organization's domain. The target domain that the input domain redirects to is mentioned in the `redirects_to` key. ```bash curl https://ipinfo.io/ranges/times.com?token=$TOKEN ``` ```json { "domain": "times.com", "redirects_to": "nytimes.com", "num_ranges": 24, "ranges": [ "80.4.179.80/28", "97.67.74.80/29", "2a00:2381:2ebf::/56", "194.73.217.40/29", "2a00:2381:2ebf:100::/56", ... ] } ``` ================================================================================ PAGE: Hosted Domains API URL: https://ipinfo.io/developers/hosted-domains SLUG: hosted-domains DESCRIPTION: List all domains hosted on an IP address for competitive intelligence and security research. ================================================================================ # Hosted Domains API **Available in**: IPinfo Enterprise Our Hosted Domains, or [Reverse IP API](/data/hosted-domains) returns a list of all of the domains hosted on the provided IP address. IPinfo Enterprise plan users receive up to 1,000 domains per API request. ```bash curl "ipinfo.io/domains/198.35.26.96?token=$TOKEN" ``` ```json { "ip": "198.35.26.96", "total": 16596, "domains": [ "wikipedia.org", "wikimedia.org", "wiktionary.org", "wikisource.org", "wikibooks.org" ... ] } ``` ## API pagination with the `page` parameter The `page` query parameter can be used to go through paginated records. `page` starts at 0 and the parameter is part of the response when included in the request. ```bash curl "ipinfo.io/domains/198.35.26.96?token=$TOKEN&page=2" ``` ```json { "ip": "198.35.26.96", "page": 2, "total": 16596, "domains": [ "wikivoyage.org", "wikiversity.org", "aeronet.cz", "wikipedia.com", "wikipedia.pl" ... ] } ``` ## Limiting the number of domains per API requests 1,000 domains per API request on the IPinfo Enterprise tier. For both the API and the [database](/data/hosted-domains), we have a total limit of 1,000 domains per IP address. The `limit` parameter can be used to control the number of domains per page. ```bash curl "ipinfo.io/domains/198.35.26.96?token=$TOKEN&limit=3" ``` ```json { "ip": "198.35.26.96", "total": 16596, "domains": ["wikipedia.org", "wikimedia.org", "wiktionary.org"] } ``` ================================================================================ PAGE: IP Whois API URL: https://ipinfo.io/developers/whois SLUG: whois DESCRIPTION: Access IP WHOIS data programmatically by IP address, ID, or domain with registration and ownership details. ================================================================================ # IP Whois API **Available in**: IPinfo Enterprise IP Whois API allows you to programmatically access Whois data by IP, ID or domain. The API is available at `/whois`. The `page` query parameter can be used to go through paginated records. `page` starts at 0 and the parameter is part of the response when included in the request. The API returns up to 50 records per page. ## Search Net records by Net ID ```bash curl ipinfo.io/whois/net/NEW-ENGLAND-5?token=$TOKEN ``` ```json { "net": "NEW-ENGLAND-5", "total": 100, "page": 0, "records": [ { "range": "24.62.0.0/15", "id": "", "name": "Comcast Cable Communications Holdings, Inc", "country": "US", "org": "POC object or null", "admin": "POC object or null", "abuse": "POC object or null", "tech": "POC object or null", "maintainer": "POC object or null", "updated": "2010-10-18", "status": "REASSIGNMENT", "source": "arin", "raw": "" }, ... ] } ``` ## Search Net records by IP or IP Range ```bash curl ipinfo.io/whois/net/24.62.0.0/15?token=$TOKEN ``` ```json { "net": "24.62.0.0/15", "total": 100, "page": 0, "records": [ { "range": "24.62.0.0/15", "id": "NEW-ENGLAND-5", "name": "Comcast Cable Communications Holdings, Inc", "country": "US", "org": "C02610695", "updated": "2010-10-18", "status": "REASSIGNMENT", "source": "arin", "raw": "" }, ... ] } ``` ## Search Net records by domain ```bash curl ipinfo.io/whois/net/comcast.net?token=$TOKEN ``` ```json { "net": "comcast.net", "total": 80, "page": 0, "records": [ { "range": "24.147.0.0/17", "id": "NEW-ENGLAND-10", "name": "Comcast Cable Communications Holdings, Inc", "country": "US", "org": "C02610737", "status": "REASSIGNMENT", "tech": null, "maintainer": null, "admin": null, "abuse": null, "updated": "2010-10-18", "source": "arin", "raw": "", "domain": "comcast.net" }, ... ] } ``` ## Search Net records by ASN ```bash curl ipinfo.io/whois/net/AS9541?token=$TOKEN ``` ```json { "net": "AS9541", "total": 47, "page": 0, "records": [ { "range": "58.65.203.0/24", "id": "CYBERNET", "name": "Broadband Services", "country": "PK", "org": null, "status": "ALLOCATED NON-PORTABLE", "admin": "POC object or null", "abuse": "POC object or null", "tech": "POC object or null", "maintainer": "POC object or null", "updated": "2021-01-27", "source": "apnic", "raw": "" }, ... ] } ``` ## Search Org records by Org ID ```bash curl ipinfo.io/whois/org/PINEAP?token=$TOKEN ``` ```json { "org": "PINEAP", "total": 100, "page": 0, "records": [ { "id": "PINEAP", "name": "Pineapple Houser", "address": null, "country": "US", "admin": "POC object or null", "abuse": "POC object or null", "tech": "POC object or null", "maintainer": "POC object or null", "created": "2000-03-25", "updated": "2011-09-24", "source": "arin", "raw": "" }, ... ] } ``` ## Search POC records by POC ID ```bash curl ipinfo.io/whois/poc/CP312-ARIN?token=$TOKEN ``` ```json { "poc": "CP312-ARIN", "total": 1, "page": 0, "records": [ { "id": "CP312-ARIN", "name": "Cynthia Pararo", "email": "spararo@mindspring.com", "address": "US, GA, Atlanta, Pineapple Houser\\n2131 Plaster Bridge Rd Ne, 303244036", "country": "US", "phone": "", "fax": "", "created": "2000-03-25", "updated": "2000-03-25", "source": "arin", "raw": "" }, ... ] } ``` ## Filtering records by source All APIs accept `source` query parameter to filter records by provided Whois source. ```bash curl ipinfo.io/whois/poc/CP312-ARIN?token=$TOKEN&source=arin ``` ```json { "poc": "CP312-ARIN", "total": 1, "page": 0, "records": [ { "id": "CP312-ARIN", "name": "Cynthia Pararo", "email": "spararo@mindspring.com", "address": "US, GA, Atlanta, Pineapple Houser\\n2131 Plaster Bridge Rd Ne, 303244036", "country": "US", "phone": "", "fax": "", "created": "2000-03-25", "updated": "2000-03-25", "source": "arin", "raw": "" }, ... ], "source": "arin" } ``` ================================================================================ PAGE: IP Data Types URL: https://ipinfo.io/developers/data-types SLUG: data-types DESCRIPTION: Comprehensive reference for all IPinfo data fields including geolocation, company, ASN, privacy, mobile carrier, and more. ================================================================================ # IP Data Types When you make a request to IPinfo using a token, the API returns all the data the token has access to for the target IP address. > Please note that: > > - `https://api.ipinfo.io` is used for updated API tiers: [IPinfo Lite](/developers/lite-api), [IPinfo Core](/developers/core-api) and [IPinfo Plus](/developers/plus-api). > - `https://ipinfo.io` is used for [IPinfo Enterprise](/developers/enterprise-api). ## Geolocation Data IPinfo's IP geolocation data is available through multiple API services, from free to enterprise. Each tier offers varying levels of granularity from country and continent up to city, postal code, coordinates, and accuracy metadata. Learn more: [IPinfo API - IP Geolocation Data](/developers/ip-geolocation-api-data) ## Privacy Detection Data IPinfo's privacy detection data identifies whether an IP address is associated with anonymization services such as VPNs, proxies, Tor, or relays. It is available across Core, Plus, and Enterprise API plans, with each tier offering increasing levels of detail. Learn about them here: [IPinfo API - IP Privacy Detection Data](/developers/ip-privacy-detection-api-data) ## ASN Data IPinfo's ASN data provides information about the Autonomous System associated with an IP address, including the ASN number, organization name, domain, and type. It is available across Lite, Core, Plus, and Enterprise API plans, with each tier offering additional fields such as route/prefix information and record change history. Learn about them here: [IPinfo API - IP ASN Data](/developers/ip-asn-api-data) ## Carrier Data IPinfo's carrier data identifies the mobile network associated with an IP address, including the carrier name and its Mobile Country Code (MCC) and Mobile Network Code (MNC). It is available across Core, Plus, and Enterprise API plans, where Core returns a basic mobile flag and the higher tiers return the full carrier details. Learn about them here: [IPinfo API - Carrier or Mobile IP Data](/developers/ip-carrier-api-data) ## Company Data **Available in**: [IPinfo Enterprise](/developers/enterprise-api) [Company Data](/data/ip-company) identifies the `name` of the organization behind the IP, the `type` of business, and its `domain` . We source this information from various publicly available datasets. ```bash curl https://ipinfo.io/8.8.8.8?token=$TOKEN ``` ```json { ... "company": { "name": "Google LLC", "domain": "google.com", "type": "business" } } ``` > **Note**: The ability of IPinfo to tell the company depends on the size of the company and how it runs its network. > > Suppose, WeWork NYC has rented its space to a startup. If someone from that startups visits your website, we might not be able to identify the company since it's small and uses its building's network. We will, however, be able to tell you that it's from WeWork. ## Hosted Domains Data **Available in**: [IPinfo Enterprise](/developers/enterprise-api) [Hosted Domains Data](/data/hosted-domains) returns the `total` count of domains being hosted on the IP address and a list of domains. ```bash curl https://ipinfo.io/66.87.125.72?token=$TOKEN ``` ```json { ... "domains": { "ip": "8.8.8.8", "total": 11606, "domains": [ "41.cn", "onionflix.cc", "newmax.info", "ftempurl.com", "itempurl.com" ] } } ``` The number of domains returned per API request depends on the user's pricing tier: - [IPinfo Enterprise](/developers/enterprise-api) tier: Up to 1,000 domains are returned per API request. - Hosted Domains database download: Up to 1,000 domains are available per IP address entry. [IPinfo Enterprise](/developers/enterprise-api) users have access to a total of 1,000 domain names. The documentation and API parameters for the Hosted Domains endpoint are available in the [Hosted Domains API documentation section](/developers/hosted-domains). ## Abuse Contact Data **Available in**: [IPinfo Enterprise](/developers/enterprise-api) [Abuse Contact Data](/data/ip-abuse-contact) is contact information (usually of the network administrator) which can be used to report IP addresses that are engaged in fraudulent/malicious activites. ```bash curl https://ipinfo.io/1.1.1.1?token=$TOKEN ``` ```json { ... "abuse": { "address": "PO Box 3646, South Brisbane, QLD 4101, Australia", "country": "AU", "email": "abuse@apnic.net", "name": "APNIC RESEARCH", "network": "1.1.1.0/24", "phone": "+61-7-3858-3188" } } ``` ## IP Type Data **Available in**: [IPinfo Lite](/developers/lite-api), [IPinfo Core](/developers/core-api), [IPinfo Plus](/developers/plus-api), and [IPinfo Enterprise](/developers/enterprise-api). If the IP address is an [anycast](https://support.ipinfo.io/hc/en-us/articles/30792495607442-What-is-Anycast-IP-address) or a [bogon](https://support.ipinfo.io/hc/en-us/articles/30792495147794-What-is-a-bogon-IP-address), the API returns a field indicating that. **Bogon Address Information** ```bash curl https://ipinfo.io/127.0.0.1?token=$TOKEN ``` ```json { "ip": "127.0.0.1", "bogon": true } ``` **Anycast Information** ```bash curl https://ipinfo.io/8.8.8.8?token=$TOKEN ``` ```json { "ip": "8.8.8.8", "hostname": "dns.google", "anycast": true, "city": "Mountain View", //... } ``` ================================================================================ PAGE: RWHOIS URL: https://ipinfo.io/developers/rwhois SLUG: rwhois ================================================================================ The data we deliver via our API, and much more, is able to be purchased as a direct download. These sets of data come in any format of your choice (e.g., CSV, JSON, MMDB) and can contain any of the fields that your use case requires. We are able to automatically update these fields at a custom frequency (e.g., daily, weekly, monthly), accessible by a secure URL endpoint which will be made available specifically for you. Pricing for access to this data starts at $1000 per month, and adjustments to this price are based on the fields that you require and the frequency at which you require the data to be updated. To receive a quote on what your custom data requirements will cost, please use the form at the bottom of this page to contact our sales team. We are currently offering direct downloads for our RWHOIS, RIR WHOIS, and hosting and domains data sets. ## RWHOIS Data Our RWHOIS data is created from full WHOIS record sets of around 400 WHOIS servers updated on a regular basis. We parse the responses and combine the company, organization, and network records into a single data entry for servers that provide them separately. Here are the fields that we can provide: | | | | ------- | ---------------------------------------------------------------- | | range | IP address range/netblock (usually CIDR, occasionally start-end) | | id | Raw netblock identifier from WHOIS | | name | Name of netblock | | descr | Description | | host | RWHOIS host details | | email | Email address of RWHOIS response (if available) | | abuse | Abuse contact details (if available) | | domain | Domain name (from WHOIS entry or inferred) | | country | Two-letter ISO code of administrative contact (if available) | | city | City (if available) | | street | Street (if available) | | postal | Postal/ZIP code (if available) | | updated | Last updated date (taken from WHOIS entry) | Additional data that we can offer includes geolocation of the address data in the RWHOIS record, which we match against our location database. We can also match the IP ranges against any of our ASN data and include these fields. ## RIR WHOIS Data Our RIR WHOIS data is created by parsing IP WHOIS data from the regional Internet registries. The fields in this data are based on normalized data from the different RIRs, but we also include additional fields that we infer based on calculations using our own data. Here are the fields that we can provide: | | | | --------------- | -------------------------------------------------------------------------------------------------------------------- | | range | IP address range/netblock (usually CIDR, occasionally start-end) | | id | Raw netblock identifier from WHOIS | | name | Name of netblock | | country | Two-letter ISO code of administrative contact | | status | Range assignment type (see [RIPE’s documentation](https://www.ripe.net/publications/docs/ripe-680#7) for details) | | tech | ID for technical contact of WHOIS record | | maintainer | ID for contact authorized to update WHOIS record for netblock | | admin | ID for administrative contact of netblock | | whois_domain | Domain name (from WHOIS entry) | | source | RIR associated with record (RIPE, ARIN, etc.) | | updated | Last updated date (from WHOIS entry) | | geoloc | Latitude/longitude coordinates indicating where users of network are located | | org | ID or name of organization responsible for netblock | | org_address | Address of the associated organization | | rdns_domain | Domain associated with IP range (only available if a majority of IPs within range share a common reverse DNS domain) | | inferred_domain | Domain associated with netblock (based on our data sets) | | asn | Autonomous system number for organization that routes traffic for IP (based on BGP routing data) | | as_name | Name of AS (based on our data sets and data processing) | | as_domain | Domain of AS (based on our data sets and data processing) | | asn_type | ISP, business, or hosting (based on around 20 different features and our custom training set) | You can supplement our data with the RIR’s own documentation: - [ARIN](https://www.arin.net/resources/services/whois_guide.html#results) - [APNIC](https://www.apnic.net/manage-ip/using-whois/guide/inetnum/) - [LACNIC](https://www.lacnic.net/1040/2/lacnic/lacnics-whois) - [AFRINIC](https://www.afrinic.net/support#26) - [RIPE](https://www.ripe.net/manage-ips-and-asns/db/support/documentation/ripe-database-documentation/@@fullbodyrecursive-view#53a0473b9e154943b976d1fca8041287) ## Hosting and Domain Data Our hosting and domain data is created by collecting DNS results and scraping websites for every registered domain name on a regular basis. We can provide raw access to this data or organize it as a summary, such as how many (or which) domains are hosted on a certain IP address or ASN. We can also offer reports such as new domains by IP or ASN. Here are the fields that we can provide: | | | | ----------------- | ------------------------------------------------------------------------------------------------ | | domain | Domain name | | title | Title of index page that is hosted on domain | | description | Description from index page that is hosted on domain | | ip | IP address of domain name based on DNS resolution | | country | Country where domain is registered | | asn | Autonomous system number for organization that routes traffic for IP (based on BGP routing data) | | server | Server software that is being used by domain | | encoding | Character encoding system for domain | | backlinks_count | Number of backlinks associated to domain name | | backlinks_domains | List of domains that provide backlinks to domain | | redirect_count | Number of redirects to domain | | redirect_domains | List of domains that redirect to domain | If you are interested in any of our downloadable data sets, [click here](/contact) to contact us and our sales team will be happy to get in touch with you regarding additional details. ================================================================================ PAGE: Batch Enrichment API URL: https://ipinfo.io/developers/batch-enrichment-api SLUG: batch-enrichment-api DESCRIPTION: Batch-enrich up to 1,000 IP lookups per request with flexible URL patterns, multiple input formats, and lookup/lite endpoint support. ================================================================================ # Batch Enrichment API ![IPinfo bulk image header](https://website-cdn.assets.ipinfo.io/images/developers/ipinfo_bulk_header_docs.png) The `/batch` API endpoint lets you group up to 1,000 IPinfo API requests into a single HTTP request. This significantly speeds up bulk IP processing and also makes it easy to combine lookups across different APIs in one call. ## Endpoints The `/batch` endpoint is available on both our updated (`api.ipinfo.io`) and legacy (`ipinfo.io`) API services. There are three batch endpoints: | Endpoint | Default lookup | Tier | Use case | |---|---|---|---| | `https://api.ipinfo.io/batch` | `/lookup` (Core/Plus/Max) | Paid | Standard batch lookups on the updated API schema | | `https://api.ipinfo.io/batch/lite` | `/lite` | Free and paid | Country, continent, and ASN data for free-tier users | | `https://api.ipinfo.io/batch/legacy` (or `https://ipinfo.io/batch`) | Legacy `ipinfo.io` | Paid | Legacy response shape and Privacy Extended data | The default endpoint (`api.ipinfo.io/batch`) inherently uses `/lookup`, so you do not need to prefix IPs with `lookup/`. To use `lite`, `resproxy`, or other endpoints in the same request, use the URL patterns method described in the next section. Free-tier users should use `api.ipinfo.io/batch/lite`, since `/lookup` is a paid-tier endpoint and will return an error on free tokens. The legacy batch service is available at `https://api.ipinfo.io/batch/legacy` and at `https://ipinfo.io/batch`. Use it if you need the legacy response shape or Privacy Extended fields under `privacy`. ## URL Patterns IPinfo offers several IP data services through different API endpoints, including `lite`, general lookup, `resproxy`, and others. You may also want only part of a response, such as `/country`, `/city`, or `/asn`. To support this, the batch endpoint accepts URL patterns: ```txt 115.227.65.62 lookup/71.181.13.80 lite/157.47.66.225 lookup/74.75.228.56/anonymous lite/23.1.118.150/country_code resproxy/164.53.56.110 domains/1.1.1.1 ranges/nytimes.com AS52188 ``` ## Request Formats ![IPinfo bulk image usage example](https://website-cdn.assets.ipinfo.io/images/developers/ipinfo_bulk_demo_docs.gif) The `/batch` endpoint takes a list of IPs or URL patterns and returns a JSON object where each input is a key and the corresponding lookup is the value. You can submit inputs as a JSON array, a newline-separated list, or a space-separated list. Examples of each format follow, along with the correct `Content-Type` header. ### JSON Array ```bash curl -XPOST --data \ '["lite/8.8.4.4", "lite/8.8.4.4/country", "8.8.4.4/anonymous", "1.1.1.1"]' \ "https://api.ipinfo.io/batch?token=$TOKEN" ``` ```json { "lite/8.8.4.4/country": "United States", "lite/8.8.4.4": { "ip": "8.8.4.4", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" }, "8.8.4.4/anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "1.1.1.1": { "ip": "1.1.1.1", "hostname": "one.one.one.one", "geo": { "city": "Brisbane", "region": "Queensland", "region_code": "QLD", "country": "Australia", "country_code": "AU", "continent": "Oceania", "continent_code": "OC", "latitude": -27.48159, "longitude": 153.0175, "timezone": "Australia/Brisbane", "postal_code": "4101", "geoname_id": "2174003", "radius": 10, "last_changed": "2024-10-20" }, "as": { "asn": "AS13335", "name": "Cloudflare, Inc.", "domain": "cloudflare.com", "type": "hosting", "last_changed": "2025-03-09" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } } ``` ### Newline-Separated List ```bash echo -e "lite/8.8.4.4\nlite/8.8.4.4/country\n8.8.4.4/anonymous\n1.1.1.1" | \ curl -X POST \ --data-binary @- "https://api.ipinfo.io/batch?token=$TOKEN" ``` ```json { "lite/8.8.4.4/country": "United States", "lite/8.8.4.4": { "ip": "8.8.4.4", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" }, "8.8.4.4/anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "1.1.1.1": { "ip": "1.1.1.1", "hostname": "one.one.one.one", "geo": { "city": "Brisbane", "region": "Queensland", "region_code": "QLD", "country": "Australia", "country_code": "AU", "continent": "Oceania", "continent_code": "OC", "latitude": -27.48159, "longitude": 153.0175, "timezone": "Australia/Brisbane", "postal_code": "4101", "geoname_id": "2174003", "radius": 10, "last_changed": "2024-10-20" }, "as": { "asn": "AS13335", "name": "Cloudflare, Inc.", "domain": "cloudflare.com", "type": "hosting", "last_changed": "2025-03-09" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } } ``` ### Space-Separated List ```bash curl --request POST --url "https://api.ipinfo.io/batch?token=$TOKEN" \ --header 'Content-Type: text/plain' \ --data 'lite/8.8.4.4 lite/8.8.4.4/country 8.8.4.4/anonymous 1.1.1.1' ``` ```json { "lite/8.8.4.4/country": "United States", "lite/8.8.4.4": { "ip": "8.8.4.4", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" }, "8.8.4.4/anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "1.1.1.1": { "ip": "1.1.1.1", "hostname": "one.one.one.one", "geo": { "city": "Brisbane", "region": "Queensland", "region_code": "QLD", "country": "Australia", "country_code": "AU", "continent": "Oceania", "continent_code": "OC", "latitude": -27.48159, "longitude": 153.0175, "timezone": "Australia/Brisbane", "postal_code": "4101", "geoname_id": "2174003", "radius": 10, "last_changed": "2024-10-20" }, "as": { "asn": "AS13335", "name": "Cloudflare, Inc.", "domain": "cloudflare.com", "type": "hosting", "last_changed": "2025-03-09" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } } ``` ### IP List from File ```bash $ cat ips.txt 58.155.106.199 102.158.180.80 76.185.163.245 ``` ```bash cat ips.txt | curl -XPOST --data-binary @- "https://api.ipinfo.io/batch?token=$TOKEN" ``` ```json { "58.155.106.199": { "ip": "58.155.106.199", "geo": { "city": "Haidian", "region": "Beijing", "region_code": "BJ", "country": "China", "country_code": "CN", "continent": "Asia", "continent_code": "AS", "latitude": 39.99064, "longitude": 116.28868, "timezone": "Asia/Shanghai", "postal_code": "100000", "geoname_id": "1809104", "radius": 100, "last_changed": "2025-08-03" }, "as": { "asn": "AS4538", "name": "China Education and Research Network Center", "domain": "cernet.edu.cn", "type": "education", "last_changed": "2025-03-09" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false }, "102.158.180.80": { "ip": "102.158.180.80", "geo": { "city": "Tunis", "region": "Tunis Governorate", "region_code": "11", "country": "Tunisia", "country_code": "TN", "continent": "Africa", "continent_code": "AF", "latitude": 36.81897, "longitude": 10.16579, "timezone": "Africa/Tunis", "geoname_id": "2464470", "radius": 50 }, "as": { "asn": "AS37705", "name": "TOPNET", "domain": "topnet.tn", "type": "isp", "last_changed": "2025-03-09" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false }, "76.185.163.245": { "ip": "76.185.163.245", "hostname": "syn-076-185-163-245.res.spectrum.com", "geo": { "city": "San Antonio", "region": "Texas", "region_code": "TX", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 29.4275, "longitude": -98.4601, "timezone": "America/Chicago", "postal_code": "78202", "dma_code": "641", "geoname_id": "4726206", "radius": 10 }, "as": { "asn": "AS11427", "name": "Charter Communications Inc", "domain": "charter.com", "type": "isp", "last_changed": "2025-03-09" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } } ``` ## Endpoints and Input Parameters ### Full Reference **`https://api.ipinfo.io/batch/lite`** The `/lite` endpoint is available to all users, both free and paid tier. - `` - `/ip` - `/country` - `/country_code` - `/continent` - `/continent_code` - `/asn` - `/as_name` - `/as_domain` **`https://api.ipinfo.io/batch`** The default lookup type on this endpoint is `/lookup`, which is a paid-tier feature. Free-tier tokens will get an error. You can optionally use an explicit `lookup/` prefix, but it is not required. - `` - `/ip` - `/hostname` - `/geo` - `/city` - `/continent` - `/continent_code` - `/country` - `/country_code` - `/dma_code` - `/geoname_id` - `/latitude` - `/longitude` - `/postal_code` - `/radius` - `/region` - `/region_code` - `/timezone` - `/as` - `/as/asn` - `/as/domain` - `/as/last_changed` - `/as/name` - `/as/type` - `/anonymous` - `/anonymous/is_proxy` - `/anonymous/is_relay` - `/anonymous/is_res_proxy` - `/anonymous/is_tor` - `/anonymous/is_vpn` - `/anonymous/name` - `/mobile` - `/mobile/name` - `/mobile/mcc` - `/mobile/mnc` - `/is_anonymous` - `/is_anycast` - `/is_hosting` - `/is_mobile` - `/is_satellite` - `lite/` - `lite//ip` - `lite//country` - `lite//country_code` - `lite//continent` - `lite//continent_code` - `lite//asn` - `lite//as_name` - `lite//as_domain` - `` - `resproxy/` - `places/` - `ranges/` - `whois/net/` - `whois/net/` - `whois/net/` - `whois/net/` - `whois/net/` **`https://api.ipinfo.io/batch/legacy`** / **`https://ipinfo.io/batch`** This route points to the `ipinfo.io` legacy API. We recommend using it only if you are on the legacy API or need Privacy Extended data. - `/ip` - `/hostname` - `/geo` - `/geo/city` \ `/city` - `/geo/region` \ `/region` - `/geo/postal` \ `/postal` - `/geo/country` \ `/country` - `/geo/loc` \ `/loc` - `/geo/timezone` \ `/timezone` - `/asn` - `/asn/asn` - `/asn/domain` - `/asn/name` - `/asn/route` - `/asn/type` - `/privacy` - `/privacy/census` - `/privacy/census_ports` - `/privacy/confidence` - `/privacy/coverage` - `/privacy/device_activity` - `/privacy/first_seen` - `/privacy/hosting` - `/privacy/inferred` - `/privacy/last_seen` - `/privacy/proxy` - `/privacy/relay` - `/privacy/service` - `/privacy/tor` - `/privacy/vpn` - `/privacy/vpn_config` - `/privacy/whois` - `/company` - `/company/domain` - `/company/name` - `/company/type` - `/domains` - `/domains/domains` - `/domains/ip` - `/domains/total` - `/abuse` - `/abuse/address` - `/abuse/country` - `/abuse/email` - `/abuse/name` - `/abuse/network` - `/abuse/phone` - `/is_anonymous` - `/is_anycast` - `/is_hosting` - `/is_mobile` - `/is_satellite` ### Lite Endpoint Option You can also run batch enrichment against the Lite API: ```bash cat ips.txt | curl -XPOST --data-binary @- "https://api.ipinfo.io/batch/lite?token=$TOKEN" ``` ```json { "76.185.163.245": { "ip": "76.185.163.245", "asn": "AS11427", "as_name": "Charter Communications Inc", "as_domain": "charter.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" }, "102.158.180.80": { "ip": "102.158.180.80", "asn": "AS37705", "as_name": "TOPNET", "as_domain": "topnet.tn", "country_code": "TN", "country": "Tunisia", "continent_code": "AF", "continent": "Africa" }, "58.155.106.199": { "ip": "58.155.106.199", "asn": "AS4538", "as_name": "China Education and Research Network Center", "as_domain": "cernet.edu.cn", "country_code": "CN", "country": "China", "continent_code": "AS", "continent": "Asia" } } ``` ### Input Parameters **URL Patterns** ``` cat ip_urls.txt 8.8.4.4/anonymous 1.1.1.1 lite/8.8.4.4 lite/8.8.4.4/country AS52188 domains/1.1.1.1 ranges/nytimes.com resproxy/1.1.1.1 ``` ```bash cat ip_urls.txt | curl -XPOST --data-binary @- "https://api.ipinfo.io/batch?token=$TOKEN" ``` ```json { "1.1.1.1": { "ip": "1.1.1.1", "hostname": "one.one.one.one", "geo": { "city": "Brisbane", "region": "Queensland", "region_code": "QLD", "country": "Australia", "country_code": "AU", "continent": "Oceania", "continent_code": "OC", "latitude": -27.48159, "longitude": 153.0175, "timezone": "Australia/Brisbane", "postal_code": "4101", "geoname_id": "2174003", "radius": 10, "last_changed": "2024-10-20" }, "as": { "asn": "AS13335", "name": "Cloudflare, Inc.", "domain": "cloudflare.com", "type": "hosting", "last_changed": "2025-03-09" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false }, "lite/8.8.4.4/country": "United States", "8.8.4.4/anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "lite/8.8.4.4": { "ip": "8.8.4.4", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } // ... } ``` **Filter Option** The optional `filter` parameter removes any URLs that have no response from the output. This is useful for cases like finding hostnames that exist across a range of IPs: ```bash echo -e '8.8.8.8/hostname\n8.8.8.9/hostname' | curl -XPOST --data-binary @- "https://api.ipinfo.io/batch?token=$TOKEN" { "8.8.8.9/hostname": null, "8.8.8.8/hostname": "dns.google" } ``` ```bash echo -e '8.8.8.8/hostname\n8.8.8.9/hostname' | curl -XPOST --data-binary @- "https://api.ipinfo.io/batch?token=$TOKEN&filter=1" { "8.8.8.8/hostname": "dns.google" } ``` For request volume tracking, the `/batch` call itself is not counted, but every URL inside it is. The filter example above counts as 2 requests, and a single `/batch` call with 100 URLs counts as 100 requests. The batch endpoint works across all our APIs, including ASN, IP ranges, and hosted domains. ================================================================================ PAGE: IP Database Download URL: https://ipinfo.io/developers/database-download SLUG: database-download DESCRIPTION: Download and integrate IPinfo databases into your infrastructure. Available formats include CSV, MMDB, and JSON with automated updates. ================================================================================ # IP Database Download ## Downloading Database You can download your subscribed IPinfo database in two different ways: - Database download from your dashboard on the webpage - Database download from using `curl` on your terminal ### Option 1: Database download from the account dashboard You can visit the [Data Downloads](/account/data-downloads) page to download your IPinfo database. *Or,* you can go to: 1. your account [Dashboard](/account/home) 2. select [Data Downloads](/account/data-downloads) 3. and from there if you scroll down you will find your database that you can have subscribed to. ![Video showing steps to download a database file from the dashboard](https://website-cdn.assets.ipinfo.io/images/developers/database_download_demo.gif) ### Option 2: Database download using `cURL` You can also download your IPinfo database using `cURL`. Please make sure you add the `-L` flag to your `cURL` command, which enables `cURL` to follow redirects. ```bash curl -L https://ipinfo.io/data/location.csv.gz?token=$TOKEN -o location.csv.gz ``` ![Image showing steps to download a database file with cURL](https://cdn.assets.ipinfo.io/static/images/docs/getting-started-with-database/data-download-terminal.gif) We use `gzip` to compress our database. After downloading the database, you can extract the content or decompress the database using `gzip`, `gunzip`, or any compression software of your choice. ### How downloads are delivered Requests to `https://ipinfo.io/data/...` return an HTTP `302` redirect to a short-lived, signed URL on our CDN. Your client then follows the redirect and downloads the file from the CDN — which is why `curl` requires the `-L` flag above, and why most HTTP libraries work out of the box. If your client runs behind a firewall, web proxy, or corporate egress filter, make sure outbound HTTPS (`TCP/443`) is allowed to each of the following hosts: - `ipinfo.io` — Endpoint that issues the download redirect - `api.ipinfo.io` — API endpoint - `dl.assets.ipinfo.io` — CDN host that serves database files for most accounts (Cloudflare R2) - `dl.ipinfo.io` — CDN host used by the Splunk integration and as a fallback for files not yet available on R2 - `storage.googleapis.com` — origin behind `dl.ipinfo.io`; some firewalls and TLS-inspecting proxies need this allowed in addition to `dl.ipinfo.io` The most common failure mode is a firewall that allows `ipinfo.io` but blocks one of the CDN hosts. The first request succeeds with a `302`, but the follow-up download fails — typically as `Connection reset by peer`, an `SSL: CERTIFICATE_VERIFY_FAILED` error, or a silent timeout. For the full request flow, client requirements, and troubleshooting guidance, see [How IPinfo Delivers Database Downloads](https://community.ipinfo.io/t/how-ipinfo-delivers-database-downloads/7270) on our community. ## Database Operations ### Getting specific country location You can filter out the IP addresses from any specific country by using the `grep` command from your terminal. One thing to remember is that you must start and end the country code with commas, for example: `,US,`, `,IN,`, `,CA,` etc. ```bash (head -1 location.csv;grep ",US," location.csv) > location_us.csv ``` If you use the solution above, your outputted CSV file will contain the header row as well. ![Image showing how to get specific country by location](https://cdn.assets.ipinfo.io/static/images/docs/getting-started-with-database/getting-country-by-location.gif) ### Filtering the database with multiple countries/ASNs Like filtering the database based on a single country or ASN, creating a sub-database containing multiple specific countries or ASNs is also possible. Let’s demonstrate that using multiple country filters. Get started by creating a text file(`countries.txt`) that contains your target countries in the following fashion: ```bash ,CA, ,FR, ,US, ,DE, ,UK, ``` As we will be using grep, your country code information must include the starting and trailing commas. Then using the -f option (stands for fixed-strings) run the following command. ```bash (head -1 location.csv;grep -f countries.txt location.csv) > filtered_location.csv ``` This will create a filtered_locations.csv contains IP information of only the countries included in the countries.txt filter list. ![Image showing filtering the CSV database based on multiple country inputs](https://cdn.assets.ipinfo.io/static/images/docs/getting-started-with-database/multiple-country-filter.gif) ### Convert IP addresses to IP ranges ### Convert IP addresses to IP ranges If you want to convert the IP address range columns (`start_ip`, `end_ip`) to their CIDR equivalent, you can use our [IPinfo CLI app](https://github.com/ipinfo/cli). The `range2cidr` command of the IPinfo CLI will convert the two columns to their individual CIDR equivalent. For example: | Input (Start IP - End IP) | Output (CIDR) | | --- | --- | | 91.232.89.0 — 91.232.89.255 | 91.232.89.0/24 | ![Image showing how to convert IP addresses to IP ranges](https://cdn.assets.ipinfo.io/static/images/docs/getting-started-with-database/cidr2range.gif) How to use the range2cidr command: 1. Install the [IPinfo CLI from GitHub](https://github.com/ipinfo/cli) 2. Unzip the downloaded IPinfo CSV database 3. Run then `range2cidr` command of the IPinfo CLI and save the output to a file 4. The outputted file would have the `start_ip` and `end_ip` columns converted to `cidr` column ```bash ipinfo range2cidr location.csv > location_range.csv ``` ### Exploring `MMDB` files using mmdbctl Our open source [mmdbtctl](https://github.com/ipinfo/mmdbctl) makes exploration and management of MMDB files exceptionally easy. Feel free to explore the documentation here: https://github.com/ipinfo/mmdbctl | Code Snippet | Description | | --- | --- | | `mmdbctl read -f json-pretty 8.8.8.8 location.mmdb` | Lookup specific IP address (8.8.8.8) and output information as JSON from location.mmdb file | | `mmdbctl read 8.8.8.0/31 location.mmdb` | Checking CIDR (8.8.8.0/31) data | | `mmdbctl read 8.8.8.0-8.8.8.1 location.mmdb` | Getting IP range (8.8.8.0-8.8.8.1) data | | `mmdbctl import --in data.csv --out data.mmdb` | Converting a CSV file (data.csv) to an MMDB file (data.mmdb) | | `mmdbctl export data.mmdb data.csv` | Outputting CSV data (data.csv) from MMDB file (data.mmdb) | ![Image showing how to explore files using mmdbctl command](https://cdn.assets.ipinfo.io/static/images/docs/getting-started-with-database/mmdbctl-demo.gif) ## MMDB reader libraries If you want to read the MMDB database file using a programming language, you can use an MMDB reader library. The MMDB reader libraries supported by IPinfo are: - [C](https://github.com/maxmind/libmaxminddb) - [C#](https://github.com/maxmind/MaxMind-DB-Reader-dotnet) - [Java](https://github.com/maxmind/MaxMind-DB-Reader-java) - [Perl](https://github.com/maxmind/MaxMind-DB-Reader-perl) - [PHP](https://github.com/maxmind/MaxMind-DB-Reader-php) - [Python](https://github.com/maxmind/MaxMind-DB-Reader-python) - [Ruby](https://github.com/maxmind/MaxMind-DB-Reader-ruby) - [Nodejs](https://github.com/runk/node-maxmind) (v3.0.1+ and Node v22+ required for MMDBs larger than 4GiB) Using the MMDB reader library, you can open the database and lookup an IP address. Using the mmdbctl tool, you can create your own custom MMDB databases as well. If you need any assistance with using these libraries, feel free to reach out to us. ## Downloads Rate limit We restrict the number of times a database can be downloaded to ten (10) times per day. This restriction applies to each unique IP address for an individual device. However, we are happy to accommodate requests to increase download limits. [Learn more about rate limits on data downloads.](https://community.ipinfo.io/t/announcement-we-are-adding-rate-limits-to-data-downloads/358) ## Checksums Checksums are essential for ensuring data integrity and security. By comparing the calculated hash values with the provided checksums, users can verify that their downloaded files haven't been tampered with or corrupted during transit. We offer checksums API endpoints for every data download, supporting all the file formats. Checksums API response includes three hash values: md5, sha1, and sha256. Aside from the API endpoint, you can view checksums from your [data downloads page](/account/data-downloads) on your account dashboard. ```bash curl https://ipinfo.io/data/free/country.csv.gz/checksums?token=$TOKEN ``` ```json { "checksums": { "md5": "75405cbe6ae89342dc4c58eede9f4bb2", "sha1": "8713da968c5bc0d89eba45ea349f75ac5569e21a", "sha256": "376f8148b250948bd236c00f4a00c95d2a22696ed3313141e9666af852f9bf1c" } } ``` ## Cloud Data Delivery We have the facilities to deliver our IP databases directly to your cloud storage buckets. As part of our IPinfo Enterprise plan, we support multiple cloud platforms and can deliver our IP database downloads directly to user's cloud storage bucket at regular intervals. The facilities we currently support are: | **Cloud Storage Platform** | Google Cloud Storage AWS S3 Azure Blob Storage | | --- | --- | | **Supported File Format** | CSV MMDB JSON Parquet | | **Delivery Interval** | Daily Weekly Monthly | If you don't see the cloud platform or format you are looking for, reach out to our [data experts](/contact) and we will get you set up. ## Ecosystem Integrations ![IPinfo Data Consumption methods explained](https://cdn.assets.ipinfo.io/static/images/docs/getting-started-with-database/data_consumption_compared.png) Through our ecosystem integrations program you can access IPinfo's data download capabilities in a number of leading data, IT and security software platforms. Compared to the standard data download and data push mechanisms, our ecosystem integrations offer more enhanced user benefits including; 'on-platform' purchases, out of the box optimized user functions and often an easier path for integrating IPinfo's data across the broader enterprise technology landscape. Some of the platforms we currently support are: - Snowflake via [Snowflake Marketplace](/snowflake) - Google BigQuery via [Google Analytics Hub](https://console.cloud.google.com/bigquery/analytics-hub/exchanges;cameo=analyticshub;pageName=search;pageResource=?visibility=&queryText=ipinfo) - [Graylog Cloud](https://go2docs.graylog.org/4-1/what_is_graylog/what_is_graylog_cloud.html) - [Splunk](https://splunkbase.splunk.com/app/4070) The data push mechanism, although it will deliver the data at your specified interval, it does not facilitate usage of the data across different marketplaces and does not include any out of the box optimized user functions. If you are interested in exploring our ecosystem integrations, or have a requirement for an integration that we do not currently support, please contact alliances@ipinfo.io ## Column/Field Types Field types can differ depending on the download format: - Parquet: fully typed, preserves booleans, numbers, and nulls. - CSV: untyped, all values are strings; empty fields represents nulls. - JSON: mostly untyped; numbers and booleans preserved when present, optional fields may be omitted. - MMDB: typed for most IP database products; booleans and numbers preserved, optional fields may be absent. ## Database Guides You can read some of our blog articles that showcase how to use our database: - [Ingesting IPinfo geolocation data with PostgreSQL 13](https://ipinfo.io/blog/ingesting-ipinfo-geolocation-data-with-postgresql-13/) - [Introducing a Simpler Way to get IP Address Data in Snowflake](https://ipinfo.io/blog/ip-address-data-in-snowflake/) - [Data downloads vs API, or both?](https://ipinfo.io/blog/data-downloads-vs-api-or-both/) - [Migrating from MaxMind to IPinfo](https://ipinfo.io/blog/migrating-from-maxmind-to-ipinfo/) - [Our downloadable IP WHOIS data sets are live!](https://ipinfo.io/blog/our-downloadable-ip-whois-data-sets-are-live/) - [How to choose the best file format for your IPinfo database?](https://ipinfo.io/blog/ipinfo-database-formats/) - [IP data enrichment with IPinfo: 4 ways to add insights to your traffic/server logs](https://ipinfo.io/blog/ip-data-enrichment-in-4-ways/) Want to share your experience as an IPinfo customer by writing an article? Email us at hello@ipinfo.io with an idea, we will get you set up. ================================================================================ PAGE: IP Database Downloads Filename Reference URL: https://ipinfo.io/developers/database-filename-reference SLUG: database-filename-reference DESCRIPTION: Understand IPinfo database file naming conventions and select the right download format for your needs. ================================================================================ # IP Database Downloads Filenames Reference Table includes: - Database download names - Database file types: `CSV`, `JSON`, `MMDB`, and `Parquet` filename references - The `CSV` and `JSON` files are compressed in `gzip` format **Database download command using `curl`** ```bash curl -L https://ipinfo.io/data/standard_location.json.gz?token=$TOKEN -o location.json.gz ``` **Using the sample datasets** Each sample dataset is updated daily. It contains 100 rows of data in a systematic, randomized pattern. The data across all the different file formats for the same IP database download is identical. We recommend using these sample datasets for testing and integration development purposes. You can download the sample datasets without an IPinfo Access Token. ## [IPinfo Lite](/developers/ipinfo-lite-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_lite.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_lite.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_lite.csv**](https://ipinfo.io/data/sample/ipinfo_lite.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_lite.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_lite.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_lite.json**](https://ipinfo.io/data/sample/ipinfo_lite.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_lite.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_lite.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_lite.mmdb**](https://ipinfo.io/data/sample/ipinfo_lite.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_lite.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_lite.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_lite.parquet**](https://ipinfo.io/data/sample/ipinfo_lite.parquet) | ## [IPinfo Core](/developers/ipinfo-core-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_core.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_core.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_core.csv**](https://ipinfo.io/data/sample/ipinfo_core.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_core.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_core.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_core.json**](https://ipinfo.io/data/sample/ipinfo_core.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_core.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_core.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_core.mmdb**](https://ipinfo.io/data/sample/ipinfo_core.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_core.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_core.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_core.parquet**](https://ipinfo.io/data/sample/ipinfo_core.parquet) | ## [IPinfo Plus](/developers/ipinfo-plus-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_plus.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_plus.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_plus.csv**](https://ipinfo.io/data/sample/ipinfo_plus.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_plus.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_plus.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_plus.json**](https://ipinfo.io/data/sample/ipinfo_plus.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_plus.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_plus.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_plus.mmdb**](https://ipinfo.io/data/sample/ipinfo_plus.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_plus.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_plus.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_plus.parquet**](https://ipinfo.io/data/sample/ipinfo_plus.parquet) | ## [Residential Proxy Detection Database](/developers/ip-to-residential-proxy) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**resproxy_30d.csv.gz**?token=$TOKEN](https://ipinfo.io/data/resproxy_30d.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**resproxy_30d.csv**](https://ipinfo.io/data/sample/resproxy_30d.csv) | | **JSON** | [https://ipinfo.io/data/**resproxy_30d.json.gz**?token=$TOKEN](https://ipinfo.io/data/resproxy_30d.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**resproxy_30d.json**](https://ipinfo.io/data/sample/resproxy_30d.json) | | **MMDB** | [https://ipinfo.io/data/**resproxy_30d.mmdb**?token=$TOKEN](https://ipinfo.io/data/resproxy_30d.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**resproxy_30d.mmdb**](https://ipinfo.io/data/sample/resproxy_30d.mmdb) | | **Parquet** | [https://ipinfo.io/data/**resproxy_30d.parquet**?token=$TOKEN](https://ipinfo.io/data/resproxy_30d.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**resproxy_30d.parquet**](https://ipinfo.io/data/sample/resproxy_30d.parquet) | ## [IP to Geolocation Database](/developers/ip-to-geolocation-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|--------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_location.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_location.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_location.csv**](https://ipinfo.io/data/sample/ipinfo_location.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_location.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_location.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_location.json**](https://ipinfo.io/data/sample/ipinfo_location.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_location.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_location.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_location.mmdb**](https://ipinfo.io/data/sample/ipinfo_location.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_location.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_location.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_location.parquet**](https://ipinfo.io/data/sample/ipinfo_location.parquet) | ## [ASN Database](/developers/asn-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_asn.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_asn.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_asn.csv**](https://ipinfo.io/data/sample/ipinfo_asn.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_asn.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_asn.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_asn.json**](https://ipinfo.io/data/sample/ipinfo_asn.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_asn.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_asn.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_asn.mmdb**](https://ipinfo.io/data/sample/ipinfo_asn.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_asn.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_asn.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_asn.parquet**](https://ipinfo.io/data/sample/ipinfo_asn.parquet) | ## [IP to Privacy Detection Database](/developers/privacy-detection-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_privacy.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy.csv**](https://ipinfo.io/data/sample/ipinfo_privacy.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_privacy.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy.json**](https://ipinfo.io/data/sample/ipinfo_privacy.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_privacy.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy.mmdb**](https://ipinfo.io/data/sample/ipinfo_privacy.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_privacy.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_privacy.parquet**](https://ipinfo.io/data/sample/ipinfo_privacy.parquet) | ## [IP to Company Database](/developers/ip-to-company-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|----------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**standard_company.csv.gz**?token=$TOKEN](https://ipinfo.io/data/standard_company.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**company.csv**](https://ipinfo.io/data/sample/company.csv) | | **JSON** | [https://ipinfo.io/data/**standard_company.json.gz**?token=$TOKEN](https://ipinfo.io/data/standard_company.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**company.json**](https://ipinfo.io/data/sample/company.json) | | **MMDB** | [https://ipinfo.io/data/**standard_company.mmdb**?token=$TOKEN](https://ipinfo.io/data/standard_company.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**company.mmdb**](https://ipinfo.io/data/sample/company.mmdb) | | **Parquet** | [https://ipinfo.io/data/**standard_company.parquet**?token=$TOKEN](https://ipinfo.io/data/standard_company.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**company.parquet**](https://ipinfo.io/data/sample/company.parquet) | ## [IP to Mobile Carrier Database](/developers/ip-to-mobile-carrier-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_carrier.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_carrier.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_carrier.csv**](https://ipinfo.io/data/sample/ipinfo_carrier.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_carrier.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_carrier.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_carrier.json**](https://ipinfo.io/data/sample/ipinfo_carrier.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_carrier.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_carrier.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_carrier.mmdb**](https://ipinfo.io/data/sample/ipinfo_carrier.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_carrier.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_carrier.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_carrier.parquet**](https://ipinfo.io/data/sample/ipinfo_carrier.parquet) | ## [Hosted Domains Database](/developers/hosted-domains-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**standard_ip_hosted_domains.csv.gz**?token=$TOKEN](https://ipinfo.io/data/standard_ip_hosted_domains.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_ip_hosted_domains.csv**](https://ipinfo.io/data/sample/standard_ip_hosted_domains.csv) | | **JSON** | [https://ipinfo.io/data/**standard_ip_hosted_domains.json.gz**?token=$TOKEN](https://ipinfo.io/data/standard_ip_hosted_domains.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_ip_hosted_domains.json**](https://ipinfo.io/data/sample/standard_ip_hosted_domains.json) | | **MMDB** | [https://ipinfo.io/data/**standard_ip_hosted_domains.mmdb**?token=$TOKEN](https://ipinfo.io/data/standard_ip_hosted_domains.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_ip_hosted_domains.mmdb**](https://ipinfo.io/data/sample/standard_ip_hosted_domains.mmdb) | | **Parquet** | [https://ipinfo.io/data/**standard_ip_hosted_domains.parquet**?token=$TOKEN](https://ipinfo.io/data/standard_ip_hosted_domains.parquet?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_ip_hosted_domains.parquet**](https://ipinfo.io/data/sample/standard_ip_hosted_domains.parquet) | ## [Abuse Contact Database](/developers/abuse-contact-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**standard_abuse.csv.gz**?token=$TOKEN](https://ipinfo.io/data/standard_abuse.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_abuse.csv**](https://ipinfo.io/data/sample/standard_abuse.csv) | | **JSON** | [https://ipinfo.io/data/**standard_abuse.json.gz**?token=$TOKEN](https://ipinfo.io/data/standard_abuse.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_abuse.json**](https://ipinfo.io/data/sample/standard_abuse.json) | | **MMDB** | [https://ipinfo.io/data/**standard_abuse.mmdb**?token=$TOKEN](https://ipinfo.io/data/standard_abuse.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_abuse.mmdb**](https://ipinfo.io/data/sample/standard_abuse.mmdb) | | **Parquet** | [https://ipinfo.io/data/**standard_abuse.parquet**?token=$TOKEN](https://ipinfo.io/data/standard_abuse.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**standard_abuse.parquet**](https://ipinfo.io/data/sample/standard_abuse.parquet) | ## [RIR WHOIS](/developers/ip-whois-database#rir-whois-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**rir.csv.gz**?token=$TOKEN](https://ipinfo.io/data/rir.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**rir.csv**](https://ipinfo.io/data/sample/rir.csv) | | **JSON** | [https://ipinfo.io/data/**rir.json.gz**?token=$TOKEN](https://ipinfo.io/data/rir.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**rir.json**](https://ipinfo.io/data/sample/rir.json) | | **MMDB** | [https://ipinfo.io/data/**rir.mmdb**?token=$TOKEN](https://ipinfo.io/data/rir.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**rir.mmdb**](https://ipinfo.io/data/sample/rir.mmdb) | | **Parquet** | [https://ipinfo.io/data/**rir.parquet**?token=$TOKEN](https://ipinfo.io/data/rir.parquet?token=$TOKEN) | [https://ipinfo.io/data/sample/**rir.parquet**](https://ipinfo.io/data/sample/rir.parquet) | ## [RWHOIS](/developers/ip-whois-database#rwhois-database) | File Format | Database Download URI | Sample Dataset URI | |-------------|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**rwhois.csv.gz**?token=$TOKEN](https://ipinfo.io/data/rwhois.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**rwhois.csv**](https://ipinfo.io/data/sample/rwhois.csv) | | **JSON** | [https://ipinfo.io/data/**rwhois.json.gz**?token=$TOKEN](https://ipinfo.io/data/rwhois.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**rwhois.json**](https://ipinfo.io/data/sample/rwhois.json) | | **MMDB** | [https://ipinfo.io/data/**rwhois.mmdb**?token=$TOKEN](https://ipinfo.io/data/rwhois.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**rwhois.mmdb**](https://ipinfo.io/data/sample/rwhois.mmdb) | | **Parquet** | [https://ipinfo.io/data/**rwhois.parquet**?token=$TOKEN](https://ipinfo.io/data/rwhois.parquet?token=$TOKEN) | [https://ipinfo.io/data/sample/**rwhois.parquet**](https://ipinfo.io/data/sample/rwhois.parquet) | ## [IP to Geolocation Extended Database](/developers/ip-to-geolocation-extended) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**location_extended_v2.csv.gz**?token=$TOKEN](https://ipinfo.io/data/location_extended_v2.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**location_extended_v2.csv**](https://ipinfo.io/data/sample/location_extended_v2.csv) | | **JSON** | [https://ipinfo.io/data/**location_extended_v2.json.gz**?token=$TOKEN](https://ipinfo.io/data/location_extended_v2.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**location_extended_v2.json**](https://ipinfo.io/data/sample/location_extended_v2.json) | | **MMDB** | [https://ipinfo.io/data/**location_extended_v2.mmdb**?token=$TOKEN](https://ipinfo.io/data/location_extended_v2.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**location_extended_v2.mmdb**](https://ipinfo.io/data/sample/location_extended_v2.mmdb) | | **Parquet** | [https://ipinfo.io/data/**location_extended_v2.parquet**?token=$TOKEN](https://ipinfo.io/data/location_extended_v2.parquet?token=$TOKEN) | [https://ipinfo.io/data/sample/**location_extended_v2.parquet**](https://ipinfo.io/data/sample/location_extended_v2.parquet) | ## [IP to Privacy Detection Extended Database](/developers/privacy-detection-extended) | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_privacy_extended.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy_extended.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy_extended.csv**](https://ipinfo.io/data/sample/ipinfo_privacy_extended.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_privacy_extended.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy_extended.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy_extended.json**](https://ipinfo.io/data/sample/ipinfo_privacy_extended.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_privacy_extended.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy_extended.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy_extended.mmdb**](https://ipinfo.io/data/sample/ipinfo_privacy_extended.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_privacy_extended.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy_extended.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_privacy_extended.parquet**](https://ipinfo.io/data/sample/ipinfo_privacy_extended.parquet) | If you are interested in learning which database format suits your needs, check out our article: **[How to choose the best file format for your IPinfo database?](https://ipinfo.io/blog/ipinfo-database-formats/)** ================================================================================ PAGE: IP Database Types URL: https://ipinfo.io/developers/database-types SLUG: database-types DESCRIPTION: Overview of all available IPinfo database products including geolocation, ASN, company, privacy detection, mobile carrier, and more. ================================================================================ # IP Database Types We provide a number of different database products covering different aspects and dimensions of IP information. ## IPinfo Bundle Databases We offer a number of different IP databases that combine various IP metadata into a single database. - [IPinfo Lite](/developers/ipinfo-lite-database) (Country, ASN): IPinfo's free data download is the [IPinfo Lite](/developers/ipinfo-lite-database) data downloads, which include country and ASN information. The database is licensed under CC-BY-SA 4.0. - [IPinfo Core](/developers/ipinfo-core-database) (Location, ASN, Network Flags):IPinfo's IP geolocation, ASN, and network flag (VPN, anycast, carrier, satellite, and hosting flag) database. - [IPinfo Plus](/developers/ipinfo-plus-database) (Comprehensive IP Database): IPinfo Plus database includes IP geolocation with stability insights, detailed privacy data, ASN, and network flag information. | Field Name | Example | Data Type | Descrption | [IPinfo Lite](/developers/ipinfo-lite-database) | [IPinfo Core](/developers/ipinfo-lite-database) | [IPinfo Plus](/developers/ipinfo-lite-database) | | --- | --- | --- | --- | --- | --- | --- | | `network` | 176.53.177.43 | TEXT | CIDR/IP range or single IP address | ✓ | ✓ | ✓ | | `city` | London | TEXT | City of the IP address | ✗ | ✓ | ✓ | | `region` | England | TEXT | Region/State of the IP address | ✗ | ✓ | ✓ | | `region_code` | ENG | TEXT | Region code in two-letter format in ISO 3166 | ✗ | ✓ | ✓ | | `country` | United Kingdom | TEXT | Name of the country of the IP address | ✓ | ✓ | ✓ | | `country_code` | GB | TEXT | ISO 3166 country code of the IP address | ✓ | ✓ | ✓ | | `continent` | Europe | TEXT | Name of the continent | ✓ | ✓ | ✓ | | `continent_code` | EU | TEXT | Continent name code in two-letter format | ✓ | ✓ | ✓ | | `latitude` | 51.50853 | FLOAT | Latitude value of the IP address | ✗ | ✓ | ✓ | | `longitude` | -0.12574 | FLOAT | Longitude value of the IP address | ✗ | ✓ | ✓ | | `timezone` | Europe/London | TEXT | Local timezone of the IP address location | ✗ | ✓ | ✓ | | `postal_code` | E1W | TEXT | Postal code or zip code of the IP address | ✗ | ✓ | ✓ | | `dma_code` | 6 | TEXT | Direct Marketing Area (DMA) is a unique regional identifier for marketing. | ✗ | ✗ | ✓ | | `geoname_id` | 2643743 | INTEGER | geonames.org's unique numercial identifier for geographic locations. | ✗ | ✗ | ✓ | | `radius` | 500 | INTEGER | Location accuracy radius in terms of kilometers | ✗ | ✗ | ✓ | | `asn` | AS212238 | TEXT | Autonomous System Number (ASN) | ✓ | ✓ | ✓ | | `as_name` | Datacamp Limited | TEXT | Organization domain name of the ASN | ✓ | ✓ | ✓ | | `as_domain` | datacamp.co.uk | TEXT | Name of the ASN organization | ✓ | ✓ | ✓ | | `as_type` | hosting | TEXT | ASN Type: ISP, Hosting, Education, Government or Business | ✗ | ✓ | ✓ | | `carrier_name` | | TEXT | Name of the mobile carrier organization | ✗ | ✗ | ✓ | | `mcc` | | INTEGER | Mobile Country Code (MCC) of the carrier | ✗ | ✗ | ✓ | | `mnc` | | INTEGER | Mobile Network Code (MNC) of the carrier | ✗ | ✗ | ✓ | | `as_changed` | 2025-08-30 | DATE | Date when the IP address's ASN last changed: Date in YYYY-MM-DD format, ISO-8601 | ✗ | ✗ | ✓ | | `geo_changed` | 2025-09-21 | DATE | Date when the IP address's location last changed: Date in YYYY-MM-DD format, ISO-8601 | ✗ | ✗ | ✓ | | `is_anonymous` | TRUE | BOOLEAN | Indicates whether the IP address is anonymous. | ✗ | ✓ | ✓ | | `is_anycast` | FALSE | BOOLEAN | Indicates whether the IP address is an anycast IP address | ✗ | ✓ | ✓ | | `is_hosting` | TRUE | BOOLEAN | Indicates whether the IP address is an hosting/cloud/data center IP address | ✗ | ✓ | ✓ | | `is_mobile` | FALSE | BOOLEAN | Indicates whether the IP address belongs to a mobile network | ✗ | ✓ | ✓ | | `is_satellite` | FALSE | BOOLEAN | Indicates whether the IP address is part of a satellite internet connection | ✗ | ✓ | ✓ | | `is_proxy` | FALSE | BOOLEAN | Indicates a open web proxy IP address | ✗ | ✗ | ✓ | | `is_relay` | FALSE | BOOLEAN | Indicates location preserving anonymous relay service like iCloud private relay. | ✗ | ✗ | ✓ | | `is_tor` | FALSE | BOOLEAN | Indicates a TOR (The Onion Router) exit node IP address | ✗ | ✗ | ✓ | | `is_vpn` | TRUE | BOOLEAN | Indicates Virtual Private Network (VPN) service exit node IP address | ✗ | ✗ | ✓ | | `privacy_name` | NordVPN | TEXT | The name of the privacy service provider includes VPN, Proxy, or Relay service provider name | ✗ | ✗ | ✓ | [View spreadsheet](https://docs.google.com/spreadsheets/d/e/2PACX-1vT2_7oT9SW6xphJiYAU5pSH6dWLDVbn5w_JTKl4hu9bAXoyk1IjNNdTMj-X-A00qzkOMOwHqCb0SCMg/pubhtml?widget=true&gid=0&headers=false&chrome=true&rm=demo;frameborder=0) ## Standard Databases Our paid databases include the following: - [IP to Geolocation](/developers/ip-to-geolocation-database) - [IP to Company](/developers/ip-to-company-database) - [ASN Database](/developers/asn-database) - [IP to Privacy Detection](/developers/privacy-detection-database) - [IP to Mobile Carrier](/developers/ip-to-mobile-carrier-database) - [Hosted Domains](/developers/hosted-domains-database) - [Abuse Contact](/developers/abuse-contact-database) - [IP WHOIS](/developers/ip-whois-database) - [IP to Residential Proxy Database](/developers/ip-to-residential-proxy) ## Extended Databases IPinfo offers extended databases that covers IP geolocation precision data with accuracy radius and comprehensive IP privacy detection database with detection methodology. - [IP to Geolocation Extended](/developers/ip-to-geolocation-extended) - [IP to Privacy Detection Extended](/developers/privacy-detection-extended) If you are interested in a customized database or historical data, please feel free to [reach out to us](/contact). ================================================================================ PAGE: IPinfo Lite Database URL: https://ipinfo.io/developers/ipinfo-lite-database SLUG: ipinfo-lite-database DESCRIPTION: Free IP geolocation database with country and ASN information in CSV, JSON, and MMDB formats. ================================================================================ # IPinfo Lite Database The IPinfo Lite database is part of our [free IP data downloads offering](/lite). The IPinfo Lite database is our ultimate free IP database combining both country and ASN information in a single database. The IPinfo Lite Database includes: - **Country-level geolocation data**: Country and continent information for IP addresses. - **Basic ASN data**: Autonomous System Number (ASN), organization name, and domain name. > You can access IPinfo Lite data through our unlimited requests API service: **[IPinfo Lite API](/developers/lite-api)** ## Database Schema The IPinfo Lite database contains the following fields: | Field Name | Example | Data Type | Descrption | | -------------- | ----------------------- | --------- | ---------------------------------------------------------------------- | | network | `154.24.39.204/30` | TEXT | CIDR/IP range or single IP address | | country | `Canada` | TEXT | Country name | | country_code | `CA` | TEXT | Two-letter ISO 3166 country code of the IP addresses | | continent | `North America` | TEXT | Continent name of the IP location | | continent_code | `NA` | TEXT | Two-letter continent code of the IP location | | asn | `AS174` | TEXT | Autonomous System Number, an organization that owns the IP range block | | as_name | `Cogent Communications` | TEXT | Name of the AS (Autonomous System Number) organization | | as_domain | `cogentco.com` | TEXT | Official domain or website of the ASN organization | ![A screen image showing the table provided by our IPinfo Lite Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/ipinfo-lite-example.png) ## Sample Databases [View spreadsheet](https://docs.google.com/spreadsheets/d/e/2PACX-1vT2_7oT9SW6xphJiYAU5pSH6dWLDVbn5w_JTKl4hu9bAXoyk1IjNNdTMj-X-A00qzkOMOwHqCb0SCMg/pubhtml?widget=true&gid=895829961&headers=false&chrome=true&rm=demo;frameborder=0) - [IPinfo Lite Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/IPinfo%20Lite/ipinfo_lite_sample.csv) - [IPinfo Lite Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/IPinfo%20Lite/ipinfo_lite_sample.json) - [IPinfo Lite Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/IPinfo%20Lite/ipinfo_lite_sample.mmdb) ## Filename Reference ```bash curl -L https://ipinfo.io/data/ipinfo_lite.csv.gz?token=$TOKEN -o ipinfo_lite.csv.gz curl -L https://ipinfo.io/data/ipinfo_lite.mmdb?token=$TOKEN -o ipinfo_lite.mmdb curl -L https://ipinfo.io/data/ipinfo_lite.json.gz?token=$TOKEN -o ipinfo_lite.json.gz curl -L https://ipinfo.io/data/ipinfo_lite.parquet?token=$TOKEN -o ipinfo_lite.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_lite.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_lite.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_lite.csv**](https://ipinfo.io/data/sample/ipinfo_lite.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_lite.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_lite.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_lite.json**](https://ipinfo.io/data/sample/ipinfo_lite.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_lite.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_lite.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_lite.mmdb**](https://ipinfo.io/data/sample/ipinfo_lite.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_lite.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_lite.parquet?token=$TOKEN) | | ## Database File Metadata ## Attribution and Licensing Our IPinfo Lite data downloads service is released under Creative[ Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/). Simply credit IPinfo as your data source by including a link to our website on your platform. Mention us in your website or repository. ```html IP address data powered by [IPinfo](https://ipinfo.io) ``` Or, give us a shoutout in the social media: ```plaintext I recently used @IPinfo's free IP database to power my use case. The accuracy is incredible! ``` If you are using our IPinfo Lite data in a significant project, you can [request](/support) us to feature your logo on our [IPinfo Lite homepage](/lite). ## Alternative Database Schema **`IP to Country + ASN`** The IP to Country + ASN (`country_asn`) data downloads are structured based on the IP ranges (`start_ip` and `end_ip`). This was the previous version of the IPinfo Lite API service. However, we decided to move to a CIDR/network database structure and improve the schema structure. | Field Name | Example | Data Type | Description | | ---------------- | ---------------------------- | --------- | ------------------------------------------------- | | `start_ip` | 1.0.16.0 | TEXT | Starting IP address of an IP address range | | `end_ip` | 1.0.31.255 | TEXT | Ending IP address of an IP address range | | `country` | JP | TEXT | ISO 3166 country code of the location | | `country_name` | Japan | TEXT | Name of the country | | `continent` | AS | TEXT | Continent code of the country | | `continent_name` | Asia | TEXT | Name of the continent | | `asn` | AS2519 | TEXT | Autonomous System Number | | `as_name` | ARTERIA Networks Corporation | TEXT | Name of the AS (Autonomous System) organization | | `as_domain` | arteria-net.com | TEXT | Official domain or website of the AS organization | ![A screen image showing the table provided by our IP to Country + ASN Database Download with keys as rows](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/country-asn-example.png) | File Format | Filename / Slug | Terminal Command | | --- | --- | --- | | **CSV** | country_asn.csv.gz | `curl -L https://ipinfo.io/data/free/country_asn.csv.gz?token=$TOKEN -o country_asn.csv.gz` | | **MMDB** | country_asn.mmdb | `curl -L https://ipinfo.io/data/free/country_asn.mmdb?token=$TOKEN -o country_asn.mmdb` | | **JSON** | country_asn.json.gz | `curl -L https://ipinfo.io/data/free/country_asn.json.gz?token=$TOKEN -o country_asn.json.gz` | Samples - [IP to Country + ASN Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country%20ASN/ip_country_asn_sample.csv) - [IP to Country + ASN Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country%20ASN/ip_country_asn_sample.json) - [IP to Country + ASN Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country%20ASN/ip_country_asn_sample.mmdb) **`IP to Country`** The IP to Country (`country`) data downloads are structured based on the IP ranges (`start_ip` and `end_ip`). This is the location data subset of the IP to Country + ASN database. | Field Name | Example | Data Type | Description | | ---------------- | --------------- | --------- | ------------------------------------------ | | `start_ip` | 217.220.0.0 | TEXT | Starting IP address of an IP address range | | `end_ip` | 217.223.255.255 | TEXT | Ending IP address of an IP address range | | `country` | IT | TEXT | ISO 3166 country code of the location | | `country_name` | Italy | TEXT | Name of the country | | `continent` | EU | TEXT | Continent code of the country | | `continent_name` | Europe | TEXT | Name of the continent | ![A screen image showing the table provided by our IP to Country Database Download with keys as rows](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/country-example.png) | File Format | Filename / Slug | Terminal Command | | --- | --- | --- | | **CSV** | country.csv.gz | `curl -L https://ipinfo.io/data/free/country.csv.gz?token=$TOKEN -o country.csv.gz` | | **MMDB** | country.mmdb | `curl -L https://ipinfo.io/data/free/country.mmdb?token=$TOKEN -o country.mmdb` | | **JSON** | country.json.gz | `curl -L https://ipinfo.io/data/free/country.json.gz?token=$TOKEN -o country.json.gz` | Samples - [IP to Country Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country/ip_country_sample.csv) - [IP to Country Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country/ip_country_sample.json) - [IP to Country Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country/ip_country_sample.mmdb) **`IP to ASN (Free)`** The IP to ASN - Free (`asn`) data downloads are structured based on the IP ranges (`start_ip` and `end_ip`). This is the ASN data subset of the IP to Country + ASN database. | Field Name | Example | Data Type | Description | | ------------ | ------------------ | --------- | ------------------------------------------------- | | **start_ip** | `1.0.0.0` | TEXT | Starting IP address of an IP address range | | **end_ip** | `1.0.0.255` | TEXT | Ending IP address of an IP address range | | **asn** | `AS13335` | TEXT | Autonomous System Number | | **name** | `Cloudflare, Inc.` | TEXT | Name of the AS (Autonomous System) organization | | **domain** | `cloudflare.com` | TEXT | Official domain or website of the AS organization | ![A screen image showing the table provided by our IP to ASN free Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/asn-free-example.png) | File Format | Filename / Slug | Terminal Command | | --- | --- | --- | | **CSV** | asn.csv.gz | `curl -L https://ipinfo.io/data/free/asn.csv.gz?token=$TOKEN -o asn.csv.gz` | | **MMDB** | asn.mmdb | `curl -L https://ipinfo.io/data/free/asn.mmdb?token=$TOKEN -o asn.mmdb` | | **JSON** | asn.json.gz | `curl -L https://ipinfo.io/data/free/asn.json.gz?token=$TOKEN -o asn.json.gz` | Samples - [IP to ASN Database Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20ASN/ip_asn_sample.csv) - [IP to ASN Database Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20ASN/ip_asn_sample.json) - [IP to ASN Database Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20ASN/ip_asn_sample.mmdb) ## Links - [IPinfo Lite — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ55S) - [IPinfo Lite — Google Cloud Marketplace | US](https://console.cloud.google.com/bigquery/analytics-hub/exchanges/projects/ipinfo-public/locations/us/dataExchanges/ipinfo_lite_us_196bb97f14c/listings/ipinfo_lite_196bbbe9d39) - [IPinfo Lite — Google Cloud Marketplace | EU](https://console.cloud.google.com/bigquery/analytics-hub/exchanges/projects/ipinfo-public/locations/eu/dataExchanges/multi_region_us_196bbc7e1e7/listings/ipinfo_lite_eu_196bbd1d758) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/IPinfo%20Lite/) We highly encourage projects and software that use our data to be posted on our [IPinfo community](https://community.ipinfo.io/) for bragging rights and enabling other users to learn. The IPinfo Lite API project is dedicated to supporting enterprise, large organization open-source projects, and our community members alike. Sharing your story helps us learn and grow. ================================================================================ PAGE: IPinfo Core Database URL: https://ipinfo.io/developers/ipinfo-core-database SLUG: ipinfo-core-database DESCRIPTION: Premium IP database with city-level geolocation, coordinates, timezones, ASN data, and organization details. ================================================================================ # IPinfo Core Database IPinfo Core is a robust IP database that combines our location, ASN, network flags data in a single database. > Database downloads are a separate enterprise offering and are not included in [IPinfo Core API](/developers/core-api) self-serve plans. Please [contact our sales team](/contact) for enterprise pricing and access. ## Database Schema The IPinfo Core database contains the following fields: | Field Name | Example | Data Type | Descrption | | -------------- | ------------------------------- | --------- | --------------------------------------------------------------------------- | | network | `66.202.64.131` | TEXT | CIDR/IP range or single IP address | | city | `Chicago` | TEXT | City of the IP address | | region | `Illinois` | TEXT | Region/State of the IP address | | region_code | `IL` | TEXT | Region code in two-letter format in ISO 3166 | | country | `United States` | TEXT | Name of the country of the IP address | | country_code | `US` | TEXT | ISO 3166 country code of the IP address | | continent | `North America` | TEXT | Name of the continent | | continent_code | `NA` | TEXT | Continent name code in two-letter format | | latitude | `41.85003` | FLOAT | Latitude value of the IP address | | longitude | `-87.65005` | FLOAT | Longitude value of the IP address | | timezone | `America/Chicago` | TEXT | Local timezone of the IP address location | | postal_code | `60666` | TEXT | Postal code or zip code of the IP address | | asn | `AS7029` | TEXT | Autonomous System Number (ASN) | | as_name | `Windstream Communications LLC` | TEXT | Name of the ASN organization | | as_domain | `windstream.com` | TEXT | Organization domain name of the ASN | | as_type | `isp` | TEXT | ASN Type: ISP, Hosting, Education, Government or Business | | is_anonymous | `false` | BOOLEAN | Indicates whether the IP address is anonymous. | | is_anycast | `false` | BOOLEAN | Indicates whether the IP address is an anycast IP address | | is_hosting | `false` | BOOLEAN | Indicates whether the IP address is an hosting/cloud/data center IP address | | is_mobile | `false` | BOOLEAN | Indicates whether the IP address belongs to a mobile network | | is_satellite | `false` | BOOLEAN | Indicates whether the IP address is part of a satellite internet connection | ![A screen image showing the table provided by our IPinfo Core Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/ipinfo-core-example.png) ## Sample Databases [View spreadsheet](https://docs.google.com/spreadsheets/d/e/2PACX-1vT2_7oT9SW6xphJiYAU5pSH6dWLDVbn5w_JTKl4hu9bAXoyk1IjNNdTMj-X-A00qzkOMOwHqCb0SCMg/pubhtml?widget=true&gid=287133590&headers=false&chrome=true&rm=demo;frameborder=0) - [IPinfo Core Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/IPinfo%20Core/ipinfo_core_sample.csv) - [IPinfo Core Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/IPinfo%20Core/ipinfo_core_sample.json) - [IPinfo Core Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/IPinfo%20Core/ipinfo_core_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/ipinfo_core.csv.gz?token=$TOKEN -o ipinfo_core.csv.gz curl -L https://ipinfo.io/data/ipinfo_core.mmdb?token=$TOKEN -o ipinfo_core.mmdb curl -L https://ipinfo.io/data/ipinfo_core.json.gz?token=$TOKEN -o ipinfo_core.json.gz curl -L https://ipinfo.io/data/ipinfo_core.parquet?token=$TOKEN -o ipinfo_core.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_core.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_core.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_core.csv**](https://ipinfo.io/data/sample/ipinfo_core.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_core.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_core.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_core.json**](https://ipinfo.io/data/sample/ipinfo_core.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_core.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_core.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_core.mmdb**](https://ipinfo.io/data/sample/ipinfo_core.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_core.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_core.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_core.parquet**](https://ipinfo.io/data/sample/ipinfo_core.parquet) | | ## Database File Metadata ## Links - [IPinfo Core — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ56D) - [IPinfo Core — Google Cloud Marketplace | US](https://console.cloud.google.com/marketplace/product/ipinfo-public/cloud-marketplace-2ed5feaf-4295-4205-bb6a-e33513e13f0e.cloudpartnerservices.goog?hl=en&inv=1&invt=Ab1mSQ) - [IPinfo Core — Google Cloud Marketplace | EU](https://console.cloud.google.com/marketplace/product/ipinfo-public/cloud-marketplace-5b5e868c-60bb-42a7-b3dd-1d49ba02e67f.cloudpartnerservices.goog?hl=en&inv=1&invt=Ab1mSQ) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/IPinfo%20Core/) ================================================================================ PAGE: IPinfo Plus Database URL: https://ipinfo.io/developers/ipinfo-plus-database SLUG: ipinfo-plus-database DESCRIPTION: Complete IP intelligence database combining geolocation, company, privacy detection, ASN, and hosted domains data in one unified dataset. ================================================================================ # IPinfo Plus Database IPinfo's Plus is an enterprise-grade IP database that combines our location, insights, and confidence with ASN, privacy, carrier, and network flags in a single database. > Database downloads are a separate enterprise offering and are not included in [IPinfo Plus API](/developers/plus-api) self-serve plans. Please [contact our sales team](/contact) for enterprise pricing and access. ## Database Schema The IPinfo Plus database contains the following fields: | Field Name | Example | Data Type | Descrption | | -------------- | -------------------------------- | --------- | -------------------------------------------------------------------------------------------- | | network | `86.179.219.192/29` | TEXT | CIDR/IP range or single IP address | | city | `Weymouth` | TEXT | City of the IP address | | region | `England` | TEXT | Region/State of the IP address | | region_code | `ENG` | TEXT | Region code in two-letter format in ISO 3166 | | country | `United Kingdom` | TEXT | Name of the country of the IP address | | country_code | `GB` | TEXT | ISO 3166 country code of the IP address | | continent | `Europe` | TEXT | Name of the continent | | continent_code | `EU` | TEXT | Continent name code in two-letter format | | latitude | `50.61448` | FLOAT | Latitude value of the IP address | | longitude | `-2.45991` | FLOAT | Longitude value of the IP address | | timezone | `Europe/London` | TEXT | Local timezone of the IP address location | | postal_code | `DT3` | TEXT | Postal code or zip code of the IP address | | dma_code | `13w` | TEXT | Direct Marketing Area (DMA) is a unique regional identifier for marketing. | | geoname_id | `2634202` | TEXT | geonames.org's unique numercial identifier for geographic locations. | | radius | `20` | INTEGER | Location accuracy radius in terms of kilometers | | asn | `AS2856` | TEXT | Autonomous System Number (ASN) | | as_name | `British Telecommunications PLC` | TEXT | Name of the ASN organization | | as_domain | `bt.com` | TEXT | Organization domain name of the ASN | | as_type | `isp` | TEXT | ASN Type: ISP, Hosting, Education, Government or Business | | carrier_name | | TEXT | Name of the mobile carrier organization | | mcc | | TEXT | Mobile Country Code (MCC) of the carrier | | mnc | | TEXT | Mobile Network Code (MNC) of the carrier | | as_changed | `2025-01-10` | DATE | Date when the IP address's ASN last changed: Date in YYYY-MM-DD format, ISO-8601 | | geo_changed | `2024-11-10` | DATE | Date when the IP address's location last changed: Date in YYYY-MM-DD format, ISO-8601 | | is_anonymous | `false` | BOOLEAN | Indicates whether the IP address is anonymous. | | is_anycast | `false` | BOOLEAN | Indicates whether the IP address is an anycast IP address | | is_hosting | `false` | BOOLEAN | Indicates whether the IP address is an hosting/cloud/data center IP address | | is_mobile | `false` | BOOLEAN | Indicates whether the IP address belongs to a mobile network | | is_satellite | `false` | BOOLEAN | Indicates whether the IP address is part of a satellite internet connection | | is_proxy | `false` | BOOLEAN | Indicates a open web proxy IP address | | is_relay | `false` | BOOLEAN | Indicates location preserving anonymous relay service like iCloud private relay. | | is_tor | `false` | BOOLEAN | Indicates a TOR (The Onion Router) exit node IP address | | is_vpn | `false` | BOOLEAN | Indicates Virtual Private Network (VPN) service exit node IP address | | privacy_name | `NordVPN` | TEXT | The name of the privacy service provider includes VPN, Proxy, or Relay service provider name | ![A screen image showing the table provided by our IPinfo Plus Database Download - 1](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/ipinfo-plus-example-1.png) ![A screen image showing the table provided by our IPinfo Plus Database Download - 2](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/ipinfo-plus-example-2.png) ## Sample Databases [View spreadsheet](https://docs.google.com/spreadsheets/d/e/2PACX-1vT2_7oT9SW6xphJiYAU5pSH6dWLDVbn5w_JTKl4hu9bAXoyk1IjNNdTMj-X-A00qzkOMOwHqCb0SCMg/pubhtml?widget=true&gid=1489235819&headers=false&chrome=true&rm=demo;frameborder=0) - [IPinfo Plus Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/IPinfo%20Plus/ipinfo_plus_sample.csv) - [IPinfo Plus Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/IPinfo%20Plus/ipinfo_plus_sample.json) - [IPinfo Plus Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/IPinfo%20Plus/ipinfo_plus_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/ipinfo_plus.csv.gz?token=$TOKEN -o ipinfo_plus.csv.gz curl -L https://ipinfo.io/data/ipinfo_plus.mmdb?token=$TOKEN -o ipinfo_plus.mmdb curl -L https://ipinfo.io/data/ipinfo_plus.json.gz?token=$TOKEN -o ipinfo_plus.json.gz curl -L https://ipinfo.io/data/ipinfo_plus.parquet?token=$TOKEN -o ipinfo_plus.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_plus.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_plus.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_plus.csv**](https://ipinfo.io/data/sample/ipinfo_plus.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_plus.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_plus.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_plus.json**](https://ipinfo.io/data/sample/ipinfo_plus.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_plus.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_plus.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_plus.mmdb**](https://ipinfo.io/data/sample/ipinfo_plus.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_plus.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_plus.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_plus.parquet**](https://ipinfo.io/data/sample/ipinfo_plus.parquet) | ## Database File Metadata ## Links - [IPinfo Plus — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ56H) - [IPinfo Plus — Google Cloud Marketplace | US](https://console.cloud.google.com/marketplace/product/ipinfo-public/cloud-marketplace-7b9427b4-5c01-4cee-b100-825f7a382bf7.cloudpartnerservices.goog?hl=en&inv=1&invt=Ab1mSQ) - [IPinfo Plus — Google Cloud Marketplace | EU](https://console.cloud.google.com/marketplace/product/ipinfo-public/cloud-marketplace-1240abfc-4411-4f8b-83b0-83f543077ba2.cloudpartnerservices.goog?hl=en&inv=1&invt=Ab1mSQ) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/IPinfo%20Plus/) ================================================================================ PAGE: IP to Geolocation Database URL: https://ipinfo.io/developers/ip-to-geolocation-database SLUG: ip-to-geolocation-database DESCRIPTION: Comprehensive IP geolocation database mapping IP addresses to cities, regions, countries, and geographic coordinates. ================================================================================ # IP to Geolocation Database [IP to Geolocation](/data/ip-geolocation) database provides geolocation information such as city, region/state, country, postal code, timezone, geographic coordinates (latitude & longitude) etc. identified from IP addresses. ## Database Schema IP Location database contains the following fields: | Field Name | Example | Data Type | Description | | -------------- | ------------------ | --------- | ---------------------------------------------- | | network | `71.50.174.48/28` | TEXT | CIDR or single Address of the IP address block | | city | `Spring Lake` | TEXT | City of the IP address | | region | `North Carolina` | TEXT | Region/State of the IP address | | region_code | `NC` | TEXT | Region code in two-letter format in ISO 3166 | | country | `United States` | TEXT | Name of the country of the IP address | | country_code | `US` | TEXT | ISO 3166 country code of the IP address | | continent | `North America` | TEXT | Name of the continent | | continent_code | `NA` | TEXT | Continent name code in two-letter format | | latitude | `35.16794` | FLOAT | Latitude value of the IP address | | longitude | `-78.97281` | FLOAT | Longitude value of the IP address | | timezone | `America/New_York` | TEXT | Local timezone of the IP address location | | postal_code | `28390` | TEXT | Postal code or zip code of the IP address | ![A screen image showing the table provided by our IP Geolocation Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/geolocation-example.png) ## Sample Database [View spreadsheet](https://docs.google.com/spreadsheets/d/e/2PACX-1vT2_7oT9SW6xphJiYAU5pSH6dWLDVbn5w_JTKl4hu9bAXoyk1IjNNdTMj-X-A00qzkOMOwHqCb0SCMg/pubhtml?widget=true&gid=814553253&headers=false&chrome=true&rm=demo;frameborder=0) - [IP Geolocation Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation/ipinfo_location_sample.csv) - [IP Geolocation Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation/ipinfo_location_sample.json) - [IP Geolocation Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation/ipinfo_location_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/ipinfo_location.csv.gz?token=$TOKEN -o ipinfo_location.csv.gz curl -L https://ipinfo.io/data/ipinfo_location.mmdb?token=$TOKEN -o ipinfo_location.mmdb curl -L https://ipinfo.io/data/ipinfo_location.json.gz?token=$TOKEN -o ipinfo_location.json.gz curl -L https://ipinfo.io/data/ipinfo_location.parquet?token=$TOKEN -o ipinfo_location.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|--------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_location.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_location.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_location.csv**](https://ipinfo.io/data/sample/ipinfo_location.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_location.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_location.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_location.json**](https://ipinfo.io/data/sample/ipinfo_location.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_location.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_location.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_location.mmdb**](https://ipinfo.io/data/sample/ipinfo_location.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_location.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_location.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_location.parquet**](https://ipinfo.io/data/sample/ipinfo_location.parquet) | ## Database File Metadata ## Alternative Database Schema **`standard_location`** The `standard_location` data download is structured based on IP ranges (`start_ip` and `end_ip`). It includes the [`join_key`](https://community.ipinfo.io/t/ipinfos-join-key-column-explained/5526) column but does not include the columns `region_code` and `country_code` (as the country code is contained in the `country` column and it does not provide the name of the country). Additionally, it does not include the columns `continent` and `continent_name`. | Field Name | Example | Data Type | Description | | ----------- | ------------------ | --------- | -------------------------------------------------------- | | start_ip | `1.253.242.0` | TEXT | Starting IP address of an IP address range | | end_ip | `1.253.242.255` | TEXT | Ending IP address of an IP address range | | join_key | `1.253.0.0` | TEXT | Special variable to facilitate database `join` operation | | city | `Yangsan` | TEXT | City of the IP address | | region | `Gyeongsangnam-do` | TEXT | Region of the IP address | | country | `KR` | TEXT | ISO 3166 country code of the IP address | | latitude | `35.34199` | FLOAT | Latitude value of the IP address | | longitude | `129.03358` | FLOAT | Longitude value of the IP address | | postal_code | `50593` | TEXT | Postal code or zip code of the IP address | | timezone | `Asia/Seoul` | TEXT | Local timezone of the IP address | ![A screen image showing the table provided by our IP Geolocation Standard Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/geolocation-standard-example.png) Samples - [Standard IP Geolocation Database Sample - CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation/ip_geolocation_sample.csv) - [Standard IP Geolocation Database Sample - JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation/ip_geolocation_sample.json) - [Standard IP Geolocation Database Sample - MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation/ip_geolocation_sample.mmdb) **`standard_location_mmcompat`** The `standard_location_mmcompat` database schema is a custom database that provides easier migration from alternative providers by offering the `geonames_id` field and other location data. Even though the migration process will not be plug and play from an alternative provider, we provide all the necessary information for users to account for only the schema. | Field Name | Example | Data Type | Descrption | | -------------- | ----------------- | --------- | ---------------------------------------------------- | | Network | `50.62.0.0/15` | TEXT | CIDR or IP network of the IP address block | | City | `Tempe` | TEXT | City of the IP address | | Continent | `NA` | TEXT | Continent name code in two-letter format | | Country | `US` | TEXT | ISO 3166 country code of the IP address | | Country_name | `United States` | TEXT | Name of the country of the IP address | | Geoname_id | `5317058` | TEXT | Geoname_id that corresponds to geonames.org database | | Lat | `33.41477` | FLOAT | Latitude value of the location | | Lng | `-111.90931` | FLOAT | Longitude value of the location | | Postal | `85285` | TEXT | Postal code or zip code of the IP address | | Region | `AZ` | TEXT | Region code in two-letter format in ISO 3166 | | Region_name | `Arizona` | TEXT | Region of the IP address | | Subregion | `013` | INTEGER | Subregion code | | Subregion_name | `Maricopa County` | TEXT | Subregion name | | Timezone | `America/Phoenix` | TEXT | Local timezone of the IP address location | Samples - [Compatible IP Geolocation Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main//IP%20Geolocation/ip_geolocation_standard_sample.mmdb) ## Links - [IP to Geolocation Database Download Page — IPinfo.io](/data/ip-geolocation) - [IPinfo IP Geolocation — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFI) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/IP%20Geolocation) ================================================================================ PAGE: Privacy Detection Database URL: https://ipinfo.io/developers/privacy-detection-database SLUG: privacy-detection-database DESCRIPTION: Detect VPNs, proxies, Tor exit nodes, and hosting providers for fraud prevention and security. ================================================================================ # IP Privacy Detection Database [Privacy Detection or Anonymous IP database](/data/proxy-vpn-detection) provides data on IP addresses that are associated with VPN, Tor, proxies, relays, and hosting services. [Watch video](https://www.youtube.com/embed/qHTaCHwSYRg) ## Database Schema The Privacy Detection database contains the following fields: | Field Name | Example | Data Type | Descrption | | ---------- | ------------------- | --------- | -------------------------------------------------------------------- | | network | `146.70.174.112/31` | TEXT | CIDR or single IP address of the IP address block | | hosting | `true` | BOOLEAN | Indicates a hosting/cloud service/data center IP address | | proxy | `false` | BOOLEAN | Indicates a open web proxy IP address | | tor | `false` | BOOLEAN | Indicates a TOR (The Onion Router) exit node IP address | | relay | `false` | BOOLEAN | Indicates location preserving anonymous relay service | | vpn | `true` | BOOLEAN | Indicates Virtual Private Network (VPN) service exit node IP address | | service | `ProtonVPN` | TEXT | Name of the anonymous IP service provider | ![A screen image showing the table provided by our Privacy Detection Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/privacy-detection-example.png) ## Sample Database [View spreadsheet](https://docs.google.com/spreadsheets/d/e/2PACX-1vT2_7oT9SW6xphJiYAU5pSH6dWLDVbn5w_JTKl4hu9bAXoyk1IjNNdTMj-X-A00qzkOMOwHqCb0SCMg/pubhtml?widget=true&gid=1146038007&headers=false&chrome=true&rm=demo;frameborder=0) - [Privacy Detection Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/Privacy%20Detection/ipinfo_privacy_sample.csv) - [Privacy Detection Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/Privacy%20Detection/ipinfo_privacy_sample.json) - [Privacy Detection Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/Privacy%20Detection/ipinfo_privacy_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/ipinfo_privacy.csv.gz?token=$TOKEN -o ipinfo_privacy.csv.gz curl -L https://ipinfo.io/data/ipinfo_privacy.mmdb?token=$TOKEN -o ipinfo_privacy.mmdb curl -L https://ipinfo.io/data/ipinfo_privacy.json.gz?token=$TOKEN -o ipinfo_privacy.json.gz curl -L https://ipinfo.io/data/ipinfo_privacy.parquet?token=$TOKEN -o ipinfo_privacy.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_privacy.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy.csv**](https://ipinfo.io/data/sample/ipinfo_privacy.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_privacy.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy.json**](https://ipinfo.io/data/sample/ipinfo_privacy.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_privacy.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy.mmdb**](https://ipinfo.io/data/sample/ipinfo_privacy.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_privacy.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_privacy.parquet**](https://ipinfo.io/data/sample/ipinfo_privacy.parquet) | ## Database File Metadata ## Alternative Database Schema **`standard_privacy`** The `standard_privacy` data download is structured based on IP ranges (`start_ip` and `end_ip`) and includes the [`join_key`](https://community.ipinfo.io/t/ipinfos-join-key-column-explained/5526) column. | Field Name | Example | Data Type | Description | | ---------- | ---------------- | --------- | -------------------------------------------------------------------- | | start_ip | `89.187.171.147` | TEXT | Starting IP address of an IP address range | | end_ip | `89.187.171.147` | TEXT | Ending IP address of an IP address range | | join_key | `89.187.0.0` | TEXT | Special variable to facilitate databas `join` operation | | hosting | `true` | BOOLEAN | Indicates a hosting/cloud service/data center IP address | | proxy | | BOOLEAN | Indicates a open web proxy IP address | | tor | | BOOLEAN | Indicates a TOR (The Onion Router) exit node IP address | | vpn | `true` | BOOLEAN | Indicates Virtual Private Network (VPN) service exit node IP address | | relay | | BOOLEAN | Indicates location preserving anonymous relay service | | service | `CyberGhost` | TEXT | Name of the anonymous IP service provider | ![A screen image showing the table provided by our Privacy Detection Standard Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/privacy-detection-standard-example.png) > The legacy privacy database represents boolean values using a truthy/falsy structure: `true` means true, and an empty string (`""`) means false. Samples - [Standard Privacy Detection Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/Privacy%20Detection/privacy_detection_sample.csv) - [Standard Privacy Detection Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/Privacy%20Detection/privacy_detection_sample.json) - [Standard Privacy Detection Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/Privacy%20Detection/privacy_detection_sample.mmdb) ## Links - [Privacy Detection Database Download Page — IPinfo.io](/data/proxy-vpn-detection) - [IPinfo IP to Privacy Detection — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFU) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/Privacy%20Detection) ================================================================================ PAGE: IP to Residential Proxy Database URL: https://ipinfo.io/developers/ip-to-residential-proxy SLUG: ip-to-residential-proxy DESCRIPTION: Track residential proxy IP addresses, associated services, the last seen date, and the percentage of days they were active. ================================================================================ # IP to Residential Proxy Database The IP to Residential Proxy dataset provides information on IP addresses associated with residential, mobile, or datacenter proxy networks, allowing developers to identify proxy IPs, understand their type, and use usage-based signals to build risk or filtering logic. The IP to Residential Proxy Database identifies residential proxy IP addresses from over 100 services, including residential connections, carrier/phone, and data center proxies, and tracks both IPv4 and IPv6 IPs, providing details on the associated proxy service, last seen date, and percentage of days active over a certain time window period—all in a single, comprehensive database. This detection can identify SIM farm-based, compromised device, and smartphone SDK-based proxy IP addresses and more. ## Database Schema The IP Residential Proxy database contains the following fields: | **Field Name** | **Example** | **Data Type** | **Description** | | ------------------- | ---------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ip` | 38.222.31.85 | TEXT | IPv4 or IPv6 address associated with a residential proxy. | | `service` | lightningproxies | TEXT | Name of the residential proxy service. Carrier/mobile services are suffixed with `_mobile` (e.g., `soax_mobile`) and datacenter IPs are suffixed with `_datacenter` (e.g. `brightdata_datacenter`) | | `last_seen` | 2024-09-07 | DATE | Last recorded date when the residential proxy IP was active, formatted as `YYYY-MM-DD` (ISO-8601). The timezone is UTC. | | `percent_days_seen` | 2 | INTEGER | Integer indicating the percentage of days the IP was active within a certain time window (30 days), reflecting its activity and frequency within a residential proxy pool. | ![A screen image showing the table provided by our IP to Residential Proxy Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/residential-proxy-example.png) ## Types of Proxies Detected We currently recognize three types of residential proxies: - Standard residential proxies: Residential proxy IP addresses - Mobile/Carrier/Phone-based residential proxy IP addresses - Datacenter-based residential proxy IP addresses ## Time Windows The Residential Proxy data is scoped to a **time window** — a rolling observation period that determines how far back an IP address's proxy activity is considered. The oldest `last_seen` date in the dataset will always fall within this period relative to today. This is not a fixed update cycle; the window moves continuously. - The **[Residential Proxy API](/developers/residential-proxy-api)** uses a **7-day** observation period. - The **[Residential Proxy Database download](/developers/ip-to-residential-proxy)** uses a **30-day** observation period. The `percent_days_seen` field reflects the percentage of days an IP was active within the observation period. For example, a `percent_days_seen` value of `50` on a 30-day dataset means the IP was seen as a proxy on approximately 15 of the last 30 days. ## Sample Database [View spreadsheet](https://docs.google.com/spreadsheets/d/e/2PACX-1vT2_7oT9SW6xphJiYAU5pSH6dWLDVbn5w_JTKl4hu9bAXoyk1IjNNdTMj-X-A00qzkOMOwHqCb0SCMg/pubhtml?widget=true&gid=2001453180&headers=false&chrome=true&rm=demo;frameborder=0) - [IP Residential Proxy Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20Residential%20Proxy/ip_residential_proxy_sample.csv) - [IP Residential Proxy Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20Residential%20Proxy/ip_residential_proxy_sample.json) - [IP Residential Proxy Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20Residential%20Proxy/ip_residential_proxy_sample.mmdb) ## Filename Reference ```bash curl -L https://ipinfo.io/data/resproxy_30d.csv.gz?token=$TOKEN -o resproxy_30d.csv.gz curl -L https://ipinfo.io/data/resproxy_30d.mmdb?token=$TOKEN -o resproxy_30d.mmdb curl -L https://ipinfo.io/data/resproxy_30d.json.gz?token=$TOKEN -o resproxy_30d.json.gz curl -L https://ipinfo.io/data/resproxy_30d.parquet?token=$TOKEN -o resproxy_30d.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| | CSV | [https://ipinfo.io/data/resproxy_30d.csv.gz?token=$TOKEN](https://ipinfo.io/data/resproxy_30d.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/resproxy_30d.csv](https://ipinfo.io/data/sample/resproxy_30d.csv) | | JSON | [https://ipinfo.io/data/resproxy_30d.json.gz?token=$TOKEN](https://ipinfo.io/data/resproxy_30d.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/resproxy_30d.json](https://ipinfo.io/data/sample/resproxy_30d.json) | | MMDB | [https://ipinfo.io/data/resproxy_30d.mmdb?token=$TOKEN](https://ipinfo.io/data/resproxy_30d.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/resproxy_30d.mmdb](https://ipinfo.io/data/sample/resproxy_30d.mmdb) | | Parquet | [https://ipinfo.io/data/resproxy_30d.parquet?token=$TOKEN](https://ipinfo.io/data/resproxy_30d.parquet?token=$TOKEN) | [https://ipinfo.io/data/sample/resproxy_30d.parquet](https://ipinfo.io/data/sample/resproxy_30d.parquet) | ## Database File Metadata ## Links - [IPinfo Residential Proxy — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ55W) - Available on Google Cloud Marketplace and GCP BigQuery: - [IPinfo: IP Intelligence Database](https://console.cloud.google.com/marketplace/product/ipinfo-public/ipinfo-ip-address-geolocation-and-intelligence-database) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/blob/main/IP%20Residential%20Proxy) ================================================================================ PAGE: IP to Device Count Database URL: https://ipinfo.io/developers/ip-to-device-count SLUG: ip-to-device-count DESCRIPTION: Track how many devices share an IP address with daily, weekly, and monthly observation windows to distinguish concurrent CGNAT sharing from sequential IP rotation. ================================================================================ # IP to Device Count Database The [IP to Device Count dataset](/data/device-count) provides network-level intelligence on how many devices share an IP address and whether that sharing is concurrent or rotating over time. This goes far beyond simple "[residential](/data/ip-asn)" or "[mobile](/data/ip-carrier)" labels. The IP to Device Count database reveals whether an IP is used by 1 device, 10, or 10,000+, and whether that sharing happens all at once (concurrent CGNAT) or one device at a time with ISP rotation (dynamic residential). The database covers currently (as of April 10, 2026) 7.7 million networks globally, with 1.3 million networks exhibiting daily device sharing patterns, and includes validated coverage for major carriers worldwide. > **Status:** Alpha (Early Access) ## Database Schema Your browser does not support the video tag. The IP to Device Count database contains the following fields: | **Field Name** | **Example** | **Data Type** | **Description** | | -------------------- | -------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `network` | 103.89.82.50/32 | TEXT | IP network range (CIDR notation) associated with the device count observation. | | `asn` | AS10214 | TEXT | Autonomous System Number identifying the network owner/operator. | | `shared` | daily | TEXT | Shortest time window where significant sharing (≥10 devices) is observed: `daily`, `weekly`, or `monthly`. Indicates whether sharing is concurrent or rotating. | | `devices_daily` | 10 | INTEGER | Observed unique devices per day (logarithmic bucket: 1, 10, 100, 1000, 10000, 100000). Represents order-of-magnitude device count. | | `devices_weekly` | 10 | INTEGER | Observed devices over 7 days (logarithmic bucket: 1, 10, 100, 1000, 10000, 100000). Used for campaign-duration measurement. | | `devices_monthly` | 100 | INTEGER | Observed devices over 30 days (logarithmic bucket: 1, 10, 100, 1000, 10000, 100000). Used for list validation and long-term attribution. | ## Logarithmic Device Count Buckets Device counts are classified into **6 logarithmic buckets** representing order-of-magnitude ranges. This approach is more statistically robust than false-precise exact counts: | **Devices** | **Category** | **Description** | **Example** | | ----------- | ---------------- | ------------------------------------------------------------------------ | ----------------------------------- | | 1 | Single device | Individual connection — typically one household device | Home broadband, personal hotspot | | 10 | Small shared | Small shared network — household, small office, or dynamic IP rotation | Family router, small business | | 100 | Medium shared | Medium shared network — business, apartment building, or MDU | Enterprise office, apartment complex| | 1,000 | Large shared | Large shared network — enterprise, university, or cellular CGNAT | University campus, carrier CGNAT | | 10,000 | Carrier-scale | Regional CGNAT pools, large carrier infrastructure | Spark NZ, NTT Docomo | | 100,000 | Hyper-scale | Massive concurrent sharing — the largest CGNAT pools globally | TPG Telecom (AU), Bell Canada | **Why logarithmic?** The difference between 8,500 and 9,200 devices sharing an IP is less meaningful than the difference between 10 and 100. Order-of-magnitude buckets capture the signal that matters. ## Time Windows The Device Count data measures device sharing across **three observation periods** to distinguish concurrent sharing from sequential rotation: | **Window** | **Interpretation** | **Primary Use Case** | | ---------- | ------------------------------------- | ------------------------------------------------------- | | **Daily** | Devices observed in a 24-hour period | Security blast radius, real-time blocking decisions | | **Weekly** | Devices observed over 7 days | Campaign-duration measurement, short-term targeting | | **Monthly**| Devices observed over 30 days | List validation, attribution, long-term patterns | ### How to Read Across Windows | **Pattern** | **Daily** | **Weekly** | **Monthly** | **Interpretation** | | ------------------------------- | --------- | ---------- | ----------- | ----------------------------------------------------------------------------------------------------------------------- | | Dynamic IP with rotation | 1 | 1 | 10 | Dynamic residential IP. One device at a time, but ISP rotates assignments over the month. Safe for short-window targeting. | | Concurrent CGNAT sharing | 100+ | 100+ | 100+ | Concurrently shared infrastructure (CGNAT, VPN, university). High blast radius for blocking. | | Growing rotation | 1 | 10 | 100 | ISP-managed dynamic pool with increasing rotation velocity. | The `shared` field indicates the shortest window where ≥10 devices are observed: - `daily` = concurrent sharing (high coverage radius) - `weekly` = moderate rotation - `monthly` = slow rotation (likely sequential) ## Filename Reference ```bash curl -L https://ipinfo.io/data/device-count.csv.gz?token=$TOKEN -o device_count.csv.gz curl -L https://ipinfo.io/data/device-count.mmdb?token=$TOKEN -o device_count.mmdb curl -L https://ipinfo.io/data/device-count.json.gz?token=$TOKEN -o device_count.json.gz curl -L https://ipinfo.io/data/device-count.parquet?token=$TOKEN -o device_count.parquet ``` | File Format | Database Download URI | |-------------|--------------------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**device-count.csv.gz**?token=$TOKEN](https://ipinfo.io/data/device-count.csv.gz?token=$TOKEN) | | **JSON** | [https://ipinfo.io/data/**device-count.json.gz**?token=$TOKEN](https://ipinfo.io/data/device-count.json.gz?token=$TOKEN) | | **MMDB** | [https://ipinfo.io/data/**device-count.mmdb**?token=$TOKEN](https://ipinfo.io/data/device-count.mmdb?token=$TOKEN) | | **Parquet** | [https://ipinfo.io/data/**device-count.parquet**?token=$TOKEN](https://ipinfo.io/data/device-count.parquet?token=$TOKEN) | ## Request Early Access Device Count is currently in alpha with limited availability. To request access: 1. Visit [https://ipinfo.io/data/device-count](/device-count#form) 2. Fill out the early access request form 3. Specify your primary use case and expected usage volume Priority is given to companies with active use cases in security, ad tech, data quality, or network operations who can commit to testing and feedback. ### Alpha Status Device Count is currently in **alpha release**: - Schema field names are exploratory and may change - Data refresh cadence is weekly (faster updates planned) - Coverage is global but may be incomplete in some regions - Early access is limited to selected customers ================================================================================ PAGE: IP to Company Database URL: https://ipinfo.io/developers/ip-to-company-database SLUG: ip-to-company-database DESCRIPTION: Map IP addresses to company names, domains, and business types for B2B intelligence and lead enrichment. ================================================================================ # IP to Company Database The [IP to Company](/data/ip-company) database provides firmographic data such as the name of the company, company domain, company type, company country, and AS level data. ## Database Schema The IP to Company database contains the following fields: | Field Name | Example | Data Type | Description | | ----------- | ----------------------- | --------- | ---------------------------------------------------------------------- | | `start_ip` | 107.136.106.168 | TEXT | Starting IP address of an IP address range | | `end_ip` | 107.136.106.175 | TEXT | Ending IP address of an IP address range | | `join_key` | 107.136.0.0 | TEXT | Specialized variable to facilitate join operation | | `name` | ZSPEC FLOW-180709174314 | TEXT | Name of the company | | `domain` | zspec.com | TEXT | Domain of the company | | `type` | business | TEXT | Type of business. E.g. Business, ISP, Hosting, Government or Education | | `asn` | AS7018 | TEXT | ASN associated with the company | | `as_name` | AT&T Services, Inc. | TEXT | Name of the ASN | | `as_domain` | att.com | TEXT | Domain name of the ASN | | `as_type` | isp | TEXT | ASN Type: ISP, Hosting, Business, government or Education | | `country` | US | TEXT | ISO 3166 country code | ![A screen GIF showing the table provided by our IP to Company Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/company/company-terminal-example.gif) ![A screen image showing the table provided by our IP to Company Database Download with keys as rows](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/company/company-rows-example.png) ## Sample Database - [IP to Company Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Company/ip_company_sample.csv) - [IP to Company Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Company/ip_company_sample.json) - [IP to Company Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Company/ip_company_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/standard_company.csv.gz?token=$TOKEN -o standard_company.csv.gz curl -L https://ipinfo.io/data/standard_company.mmdb?token=$TOKEN -o standard_company.mmdb curl -L https://ipinfo.io/data/standard_company.json.gz?token=$TOKEN -o standard_company.json.gz curl -L https://ipinfo.io/data/standard_company.parquet?token=$TOKEN -o standard_company.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|----------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**standard_company.csv.gz**?token=$TOKEN](https://ipinfo.io/data/standard_company.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**company.csv**](https://ipinfo.io/data/sample/company.csv) | | **JSON** | [https://ipinfo.io/data/**standard_company.json.gz**?token=$TOKEN](https://ipinfo.io/data/standard_company.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**company.json**](https://ipinfo.io/data/sample/company.json) | | **MMDB** | [https://ipinfo.io/data/**standard_company.mmdb**?token=$TOKEN](https://ipinfo.io/data/standard_company.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**company.mmdb**](https://ipinfo.io/data/sample/company.mmdb) | | **Parquet** | [https://ipinfo.io/data/**standard_company.parquet**?token=$TOKEN](https://ipinfo.io/data/standard_company.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**company.parquet**](https://ipinfo.io/data/sample/company.parquet) | ## Database File Metadata ## Links - [IP to Company Database Download Page — IPinfo.io](/data/ip-company) - [IPinfo IP to Company — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMEX) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/IP%20to%20Company) ================================================================================ PAGE: ASN Database URL: https://ipinfo.io/developers/asn-database SLUG: asn-database DESCRIPTION: Autonomous System Number (ASN) database with network ownership, organization details, and routing information. ================================================================================ # ASN Database The [ASN (Autonomous System Number) database](/data/ip-asn) provides AS-related data such as IP ranges within the AS, ASN, domain name of the AS, name of the AS, AS type (ISP, hosting, government, education, business), and country of the AS. ## Database Schema The ASN database contains the following fields: | Field Name | Example | Data Type | Description | | ---------- | ---------------- | --------- | ------------------------------------------------------------------------- | | network | `115.76.56.0/23` | TEXT | CIDR or single IP address of the IP address block | | asn | `AS7552` | TEXT | Autonomous System Number (ASN) | | domain | `viettel.com.vn` | TEXT | Organization domain name of the ASN | | name | `Viettel Group` | TEXT | Name of the ASN organization | | type | `isp` | TEXT | ASN Type: ISP, Hosting, Education, Government or Business | | country | `VN` | TEXT | ISO 3166 two letter country code of the ASN declared in the WHOIS records | ![A screen image showing the table provided by our ASN Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/asn-database-example.png) ## Sample Databases - [ASN Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/ASN%20Database/ipinfo_asn_sample.csv) - [ASN Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/ASN%20Database/ipinfo_asn_sample.json) - [ASN Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/ASN%20Database/ipinfo_asn_sample.mmdb) ## Filename references ```bash curl -L https://ipinfo.io/data/ipinfo_asn.csv.gz?token=$TOKEN -o ipinfo_asn.csv.gz curl -L https://ipinfo.io/data/ipinfo_asn.mmdb?token=$TOKEN -o ipinfo_asn.mmdb curl -L https://ipinfo.io/data/ipinfo_asn.json.gz?token=$TOKEN -o ipinfo_asn.json.gz curl -L https://ipinfo.io/data/ipinfo_asn.parquet?token=$TOKEN -o ipinfo_asn.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_asn.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_asn.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_asn.csv**](https://ipinfo.io/data/sample/ipinfo_asn.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_asn.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_asn.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_asn.json**](https://ipinfo.io/data/sample/ipinfo_asn.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_asn.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_asn.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_asn.mmdb**](https://ipinfo.io/data/sample/ipinfo_asn.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_asn.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_asn.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_asn.parquet**](https://ipinfo.io/data/sample/ipinfo_asn.parquet) | ## File Metadata *Last Updated: Oct 28, 2025 | Lines: 1,632,397* | Filename | Size | |--------------------|----------| | ipinfo_asn.csv.gz | 12.71 MB | | ipinfo_asn.json.gz | 14.17 MB | | ipinfo_asn.mmdb | 13.51 MB | | ipinfo_asn.parquet | 13.26 MB | ## Alternative Database Schema **`standard_asn`** The `standard_asn` data download is structured based on IP ranges (`start_ip` and `end_ip`) and includes the [`join_key`](https://community.ipinfo.io/t/ipinfos-join-key-column-explained/5526) column. | Field Name | Example | Data Type | Description | | ---------- | --------------------- | --------- | --------------------------------------------------------- | | start_ip | `125.113.0.0` | TEXT | Starting IP address of the ASN IP address block | | end_ip | `125.113.255.255` | TEXT | Ending IP address of the ASN IP address block | | join_key | `125.113.0.0` | TEXT | Special variable to facilitate database `join` operation | | asn | `AS4134` | TEXT | Autonomous System Number (ASN) | | domain | `chinatelecom.com.cn` | TEXT | Domain name of the AS | | name | `CHINANET-BACKBONE` | TEXT | Name of the ASN | | type | `isp` | TEXT | ASN Type: ISP, Hosting, Education, Government or Business | | country | `CN` | TEXT | ISO 3166 country code of the ASN from the WHOIS records | ![A screen GIF showing the table provided by our ASN Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/asn/asn-terminal-example.gif) ![A screen image showing the table provided by our ASN Database Download with keys as rows](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/asn/asn-rows-example.png) Samples - [Standard ASN Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/ASN%20Database/asn_sample.csv) - [Standard ASN Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/ASN%20Database/asn_sample.json) - [Standard ASN Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/ASN%20Database/asn_sample.mmdb) ## Links - [ASN Database Downloads Page — IPinfo.io](/data/ip-asn) - [IPinfo IP Address to ASN — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFM) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/ASN%20Database) ================================================================================ PAGE: IP to Mobile Carrier Database URL: https://ipinfo.io/developers/ip-to-mobile-carrier-database SLUG: ip-to-mobile-carrier-database DESCRIPTION: Identify mobile carrier networks and detect mobile device IPs for targeted mobile user experiences. ================================================================================ # IP to Mobile Carrier Database IPinfo’s [IP to Mobile Carrier Database](/data/ip-carrier) provides insights such as IP addresses of mobile devices and their respective carrier name, mobile country code (MCC) and mobile country name (MNC). ## Database Schema The IP to Mobile Carrier Database contains the following fields: | Field Name | Example | Data Type | Description | | ---------- | ---------------- | --------- | ------------------------------------------------- | | network | `90.50.223.0/24` | TEXT | CIDR or single IP address of the IP address block | | name | `Orange` | TEXT | Name of the mobile carrier organization | | country | `FR` | TEXT | ISO 3166 country code of the IP addresses | | mcc | `208` | INTEGER | Mobile Country Code (MCC) of the carrier | | mnc | `01` | INTEGER | Mobile Network Code (MNC) of the carrier | ![A screen image showing the table provided by our IP to Mobile Carrier Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/mobile-carrier-example.png) ## Sample Database - [IP Carrier Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Mobile%20Carrier/ipinfo_carrier_sample.csv) - [IP Carrier Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Mobile%20Carrier/ipinfo_carrier_sample.json) - [IP Carrier Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Mobile%20Carrier/ipinfo_carrier_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/ipinfo_carrier.csv.gz?token=$TOKEN -o ipinfo_carrier.csv.gz curl -L https://ipinfo.io/data/ipinfo_carrier.mmdb?token=$TOKEN -o ipinfo_carrier.mmdb curl -L https://ipinfo.io/data/ipinfo_carrier.json.gz?token=$TOKEN -o ipinfo_carrier.json.gz curl -L https://ipinfo.io/data/ipinfo_carrier.parquet?token=$TOKEN -o ipinfo_carrier.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_carrier.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_carrier.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_carrier.csv**](https://ipinfo.io/data/sample/ipinfo_carrier.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_carrier.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_carrier.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_carrier.json**](https://ipinfo.io/data/sample/ipinfo_carrier.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_carrier.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_carrier.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_carrier.mmdb**](https://ipinfo.io/data/sample/ipinfo_carrier.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_carrier.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_carrier.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_carrier.parquet**](https://ipinfo.io/data/sample/ipinfo_carrier.parquet) | ## Database File Metadata ## Alternative Database Schema **`standard_carrier`** The `standard_carrier` data download is structured based on IP ranges (`start_ip` and `end_ip`) and includes the [`join_key`](https://community.ipinfo.io/t/ipinfos-join-key-column-explained/5526) column. | Field Name | Example | Data Type | Description | | ---------- | ------------------------------------------ | --------- | -------------------------------------------------------- | | start_ip | `5.208.203.0` | TEXT | Starting IP address of an IP address range | | end_ip | `5.208.203.255` | TEXT | Ending IP address of an IP address range | | join_key | `5.208.0.0` | TEXT | Special variable to facilitate database `join` operation | | name | `Mobile Communication Company of Iran PLC` | TEXT | Name of the mobile carrier | | country | `IR` | TEXT | ISO 3166 country code of the IP addresses | | mcc | `432` | TEXT | Mobile Country Code (MCC) of the carrier | | mnc | `11` | TEXT | Mobile Network Code (MNC) of the carrier | ![A screen image showing the table provided by our IP to Mobile Carrier Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/stanard-mobile-carrier-example.png) Samples - [Standard Carrier Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Mobile%20Carrier/ip_carrier_sample.csv) - [Standard Carrier Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Mobile%20Carrier/ip_carrier_sample.json) - [Standard Carrier Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Mobile%20Carrier/ip_carrier_sample.mmdb) ## Links - [IP to Mobile Carrier Database Download Page — IPinfo.io](/data/ip-carrier) - [IPinfo IP address to Mobile Carrier — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMF6) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/IP%20to%20Mobile%20Carrier) ================================================================================ PAGE: Hosted Domains Database URL: https://ipinfo.io/developers/hosted-domains-database SLUG: hosted-domains-database DESCRIPTION: Complete list of domains hosted on each IP address for competitive intelligence and security research. ================================================================================ # Hosted Domains Database [Hosted Domains or Reverse IP database](/data/hosted-domains) shows the number and the list of domains hosted on an IP Address. The Hosted Domains database contains upto 1,000 domains per IP address entry. ## Database Schema The Hosted Domains database contains the following fields: | Field Name | Example | Data Type | Description | | ---------- | ------------------------------------------------------------------------------------- | --------- | ---------------------------------------------- | | `ip` | 198.35.26.98 | TEXT | IP address for reverse IP lookup | | `total` | 101 | INTEGER | Number of domains registered to the IP Address | | `domains` | wikipedia.com,wikimedia.biz,wikepedia.org,
wikimedia.community,wiki-pedia.org,... | TEXT | Name of the domain(s) under the IP address | ![A screen image showing the table provided by our Hosted Domains Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/hosted-domains-example.png) ## Sample Database - [Hosted Domains Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/Hosted%20Domains/hosted_domains_sample.csv) - [Hosted Domains Sample Database — JSON](https://raw.githubusercontent.com/ipinfo/sample-database/main/Hosted%20Domains/hosted_domains_sample.json) - [Hosted Domains Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/Hosted%20Domains/hosted_domains_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/standard_ip_hosted_domains.csv.gz?token=$TOKEN -o standard_ip_hosted_domains.csv.gz curl -L https://ipinfo.io/data/standard_ip_hosted_domains.mmdb?token=$TOKEN -o standard_ip_hosted_domains.mmdb curl -L https://ipinfo.io/data/standard_ip_hosted_domains.json.gz?token=$TOKEN -o standard_ip_hosted_domains.json.gz ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**standard_ip_hosted_domains.csv.gz**?token=$TOKEN](https://ipinfo.io/data/standard_ip_hosted_domains.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_ip_hosted_domains.csv**](https://ipinfo.io/data/sample/standard_ip_hosted_domains.csv) | | **JSON** | [https://ipinfo.io/data/**standard_ip_hosted_domains.json.gz**?token=$TOKEN](https://ipinfo.io/data/standard_ip_hosted_domains.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_ip_hosted_domains.json**](https://ipinfo.io/data/sample/standard_ip_hosted_domains.json) | | **MMDB** | [https://ipinfo.io/data/**standard_ip_hosted_domains.mmdb**?token=$TOKEN](https://ipinfo.io/data/standard_ip_hosted_domains.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_ip_hosted_domains.mmdb**](https://ipinfo.io/data/sample/standard_ip_hosted_domains.mmdb) | | **Parquet** | [https://ipinfo.io/data/**standard_ip_hosted_domains.parquet**?token=$TOKEN](https://ipinfo.io/data/standard_ip_hosted_domains.parquet?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_ip_hosted_domains.parquet**](https://ipinfo.io/data/sample/standard_ip_hosted_domains.parquet) | ## Database File Metadata ## Links - [Hosted Domains Database Download Page — IPinfo.io](/data/hosted-domains) - [IPinfo Hosted Domains — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMF2) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/Hosted%20Domains) ================================================================================ PAGE: IP Abuse Contact Database URL: https://ipinfo.io/developers/abuse-contact-database SLUG: abuse-contact-database DESCRIPTION: Abuse contact information for IP ranges to report malicious activity and security incidents. ================================================================================ # IP Abuse Contact Database The [Abuse Contact database](/data/ip-abuse-contact) provides abuse contact information of ISPs and hosting services for reporting malicious activities. ## Database Schema The Abuse Contact database contains the following fields: | Field Name | Example | Data Type | Description | | ---------- | ------------------------------------------------- | --------- | --------------------------------------------------------- | | `start_ip` | 119.93.20.248 | TEXT | Starting IP address of an IP address block | | `end_ip` | 119.93.20.255 | TEXT | Ending IP address of an IP address block | | `join_key` | 119.93.0.0 | TEXT | Special variable to make join operations incredibly fast. | | `name` | Nilo Agir | TEXT | Name of the abuse contact | | `email` | mailto:abuse@pldt.net | TEXT | Organizational email of the abuse contact | | `address` | Philippine Long Distance Telephone Company, 6/... | TEXT | Organizational address of the abuse contact | | `country` | PH | TEXT | ISO 3166 country code | | `phone` | +632-584-1045 | TEXT | Organizational phone number of the abuse contact | ![A screen image showing the table provided by our Hosted Domains Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/abuse-example.png) ## Sample Database - [Abuse Contact Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/Abuse%20Contact/abuse_contact_sample.csv) - [Abuse Contact Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/Abuse%20Contact/abuse_contact_sample.json) - [Abuse Contact Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/Abuse%20Contact/abuse_contact_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/standard_abuse.csv.gz?token=$TOKEN -o standard_abuse.csv.gz curl -L https://ipinfo.io/data/standard_abuse.mmdb?token=$TOKEN -o standard_abuse.mmdb curl -L https://ipinfo.io/data/standard_abuse.json.gz?token=$TOKEN -o standard_abuse.json.gz ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**standard_abuse.csv.gz**?token=$TOKEN](https://ipinfo.io/data/standard_abuse.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_abuse.csv**](https://ipinfo.io/data/sample/standard_abuse.csv) | | **JSON** | [https://ipinfo.io/data/**standard_abuse.json.gz**?token=$TOKEN](https://ipinfo.io/data/standard_abuse.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_abuse.json**](https://ipinfo.io/data/sample/standard_abuse.json) | | **MMDB** | [https://ipinfo.io/data/**standard_abuse.mmdb**?token=$TOKEN](https://ipinfo.io/data/standard_abuse.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**standard_abuse.mmdb**](https://ipinfo.io/data/sample/standard_abuse.mmdb) | | **Parquet** | [https://ipinfo.io/data/**standard_abuse.parquet**?token=$TOKEN](https://ipinfo.io/data/standard_abuse.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**standard_abuse.parquet**](https://ipinfo.io/data/sample/standard_abuse.parquet) | ## File Metadata *Last Updated: Oct 28, 2025 | Lines: 36,775,980* | Filename | Size | |------------------------|-----------| | standard_abuse.csv.gz | 363.86 MB | | standard_abuse.json.gz | 396.11 MB | | standard_abuse.mmdb | 717.39 MB | ## Use Cases - [Abuse Contact Database Download Page — IPinfo.io](/data/ip-abuse-contact) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/Abuse%20Contact) ================================================================================ PAGE: IP WHOIS Database URL: https://ipinfo.io/developers/ip-whois-database SLUG: ip-whois-database DESCRIPTION: Complete IP WHOIS records with registration details, network ownership, and contact information. ================================================================================ # IP WHOIS Comprehensive, contextual, and updated [IP WHOIS database](/data/whois) allows you to look up an IP address and domain ownership, point of contact, organization, networks etc. The different types of WHOIS database we offer are: - RWHOIS - RIR WHOIS - Additional Databases - WHOIS ASN (Autonomous System Numbers) - WHOIS MNT (Maintainer) - WHOIS NET (Network) - WHOIS ORG (Organization) - WHOIS POC (Point of Contact) ## RWHOIS Database Parsed and normalized data we have collected from different Referral Whois (RWHOIS) servers. We also provide additional fields to provide context to the data. The RWHOIS database contains the following fields: | Field Name | Example | Data Type | Description | | ----------- | ----------------------------------- | --------- | ------------------------------------------------------------ | | `range` | 50.28.18.195 | TEXT | IP Address range/netblock | | `id` | NETBLK-GRADOCEROPUB.50.28.18.195/32 | TEXT | Raw netblock identifier from WHOIS | | `name` | Grado Cero Publicidad S.A. de C.V. | TEXT | Name of netblock | | `descr` | GRADOCEROPUB-50.28.18.195 | TEXT | Description | | `host` | rwhois.liquidweb.com:4321 | TEXT | RWHOIS server hostname and port | | `email` | mailto:webmaster@gradocero.com | TEXT | Contact email information | | `abuse` | mailto:abuse@sourcedns.com | TEXT | Abuse email information | | `domain` | gradocero.com | TEXT | Domain associated with the netblock | | `country` | MX | TEXT | Stated country of the IP address/hostname in ISO 3166 format | | `city` | Naucalpan de Juarez | TEXT | City information | | `street` | Calle Andes #46 | TEXT | Street information | | `postal` | 53125 | TEXT | Postal Code information | | `updated` | 2021-01-26 00:00:00 | TEXT | Update date in the WHOIS registry | | `imported` | 2021-01-27 04:44:47.206483 | TEXT | Imported date in the WHOIS registry | | File Format | Database Download URI | Sample Dataset URI | |-------------|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**rwhois.csv.gz**?token=$TOKEN](https://ipinfo.io/data/rwhois.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**rwhois.csv**](https://ipinfo.io/data/sample/rwhois.csv) | | **JSON** | [https://ipinfo.io/data/**rwhois.json.gz**?token=$TOKEN](https://ipinfo.io/data/rwhois.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**rwhois.json**](https://ipinfo.io/data/sample/rwhois.json) | | **MMDB** | [https://ipinfo.io/data/**rwhois.mmdb**?token=$TOKEN](https://ipinfo.io/data/rwhois.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**rwhois.mmdb**](https://ipinfo.io/data/sample/rwhois.mmdb) | | **Parquet** | [https://ipinfo.io/data/**rwhois.parquet**?token=$TOKEN](https://ipinfo.io/data/rwhois.parquet?token=$TOKEN) | [https://ipinfo.io/data/sample/**rwhois.parquet**](https://ipinfo.io/data/sample/rwhois.parquet) | ## RIR WHOIS Database RIR WHOIS data is created by parsing IP WHOIS data from the Regional Internet Registries (RIR). Aside from normalizing and structuring the data from different RIR, we include additional contexts and insights. The RIR WHOIS Database can be found from here: | Field Name | Example | Data Type | Description | | -------------- | ------------------------------------------ | --------- | -------------------------------------------------------------------------------------------------------------------- | | `range` | 45.142.160.224-45.142.161.255 | TEXT | IP Address range/netblock | | `id` | PL-DOMYNET-NETWORK | TEXT | Raw netblock identifier from WHOIS | | `name` | DomyNet Sp. z o.o. | TEXT | Name of netblock | | `country` | PL | TEXT | ISO 3166 country code | | `status` | ASSIGNED PA | TEXT | Range assignment type (https://www.ripe.net/publications/docs/ripe-733) | | `tech` | PK9274-RIPE | TEXT | ID for technical contact of WHOIS record | | `maintainer` | MNT-PL-DOMYNET-1 | TEXT | ID for contact authorized to update WHOIS record for netblock | | `admin` | PK9274-RIPE | TEXT | ID for administrative contact of netblock | | `source` | ripe | TEXT | RIR associated with record (RIPE, ARIN, etc.) | | `whois_domain` | domynet.pl | TEXT | Domain name (from WHOIS entry) | | `updated` | 2020-01-09 | TEXT | Last updated date (taken from WHOIS entry) | | `org` | ORG-DSZO39-RIPE | TEXT | ID or name of organization responsible for netblock | | `rdns_domain` | domynet.pl | TEXT | Domain associated with IP range (only available if a majority of IPs within range share a common reverse DNS domain) | | `domain` | domynet.pl | TEXT | Domain associated with netblock (based on our data sets) | | `geoloc` | 52.2260524 20.9941955 | TEXT | Latitude/longitude coordinates indicating where users of network are located | | `org_address` | ul. Lindleya 16/301 02-013 Warszawa POLAND | TEXT | Address of the associated organization | | `asn` | AS208348 | TEXT | Autonomous system number for organization that routes traffic for IP (based on BGP routing data) | | `as_name` | DomyNet Sp. z o.o. | TEXT | Name of AS (based on our data sets and data processing) | | `as_domain` | domynet.pl | TEXT | Domain of AS (based on our data sets and data processing) | | `as_type` | isp | TEXT | ISP, business, or hosting (based on around 20 different features and our custom training set) | | File Format | Database Download URI | Sample Dataset URI | |-------------|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**rir.csv.gz**?token=$TOKEN](https://ipinfo.io/data/rir.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**rir.csv**](https://ipinfo.io/data/sample/rir.csv) | | **JSON** | [https://ipinfo.io/data/**rir.json.gz**?token=$TOKEN](https://ipinfo.io/data/rir.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**rir.json**](https://ipinfo.io/data/sample/rir.json) | | **MMDB** | [https://ipinfo.io/data/**rir.mmdb**?token=$TOKEN](https://ipinfo.io/data/rir.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**rir.mmdb**](https://ipinfo.io/data/sample/rir.mmdb) | | **Parquet** | [https://ipinfo.io/data/**rir.parquet**?token=$TOKEN](https://ipinfo.io/data/rir.parquet?token=$TOKEN) | [https://ipinfo.io/data/sample/**rir.parquet**](https://ipinfo.io/data/sample/rir.parquet) | Information and sample of other RIR databases data can be found [here](https://github.com/ipinfo/sample-database/tree/main/WHOIS). ## Database File Metadata *Last Updated: Oct 28, 2025* | File Format | Filename | Size | Lines | |-------------|------------------|-----------|------------| | **CSV** | `rir.csv.gz` | 353.65 MB | 11,316,654 | | **JSON** | `rir.json.gz` | 413.72 MB | 11,316,654 | | **CSV** | `rwhois.csv.gz` | 32.05 MB | 691,357 | | **JSON** | `rwhois.json.gz` | 38.18 MB | 691,357 | ## Sample Databases - [RWHOIS Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/WHOIS/rwhois_sample.csv) - [RIR WHOIS Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/WHOIS/whois_rir_sample.csv) - [RWHOIS Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/WHOIS/rwhois_sample.json) - [RIR WHOIS Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/WHOIS/whois_rir_sample.json) - [RWHOIS Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/WHOIS/rwhois_sample.mmdb) - [RIR WHOIS Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/WHOIS/whois_rir_sample.mmdb) ## Links - [WHOIS Database Download Page — IPinfo.io](/data/whois) - [IP WHOIS Summary Database — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFE) - [IP WHOIS Full Database — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFY) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/WHOIS) ================================================================================ PAGE: IP to Geolocation Database (Extended) URL: https://ipinfo.io/developers/ip-to-geolocation-extended SLUG: ip-to-geolocation-extended DESCRIPTION: IP to geolocation extended database offers comprehensive data such as city, region/state, country, geographic coordinates, and more. ================================================================================ # IP to Geolocation Extended Database IP to Geolocation Extended database offers comprehensive geolocation information such as city, region/state, country, postal code, timezone, and geographic coordinates (latitude & longitude). Additionally, it includes data accuracy measurement in the form of radius data. ## Database Schema IP Location extended database contains the following fields: | Field Name | Example | Data Type | Description | | ------------- | ------------------- | --------- | --------------------------------------------------------- | | `start_ip` | 171.71.0.0 | TEXT | Starting IP address of an IP address range | | `end_ip` | 171.71.127.255 | TEXT | Ending IP address of an IP address range | | `join_key` | 171.71.0.0 | TEXT | Special variable to facilitate join operation | | `city` | San Jose | TEXT | City of the location | | `region` | California | TEXT | Region of the location | | `country` | US | TEXT | ISO 3166 country code of the location | | `latitude` | 37.4087 | TEXT | Latitude value of the location | | `longitude` | -121.9406 | TEXT | Longitude value of the location | | `postal_code` | 95134 | TEXT | Postal code of the location | | `timezone` | America/Los_Angeles | TEXT | Local time zone | | `geoname_id` | 5392171 | INTEGER | `geonameId` from [geonames.org](https://www.geonames.org) | | `radius` | 5 | INTEGER | Accuracy radius in terms of kilometers | ![A screen image showing the table provided by our IP Geolocation Extended Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/geolocation-extended-example.png) ## Sample Databases - [IP Geolocation (Extended) Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation%20Extended/ip_geolocation_extended_sample.csv) - [IP Geolocation (Extended) Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation%20Extended/ip_geolocation_extended_sample.json) - [IP Geolocation (Extended) Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation%20Extended/ip_geolocation_extended_sample.mmdb) - [IP Geolocation (Extended) Sample Database - IPv4 — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation%20Extended/ip_geolocation_extended_ipv4_sample.csv) - [IP Geolocation (Extended) Sample Database - IPv4 — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation%20Extended/ip_geolocation_extended_ipv4_sample.json) - [IP Geolocation (Extended) Sample Database - IPv4 — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation%20Extended/ip_geolocation_extended_ipv4_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/location_extended_v2.csv.gz?token=$TOKEN -o location_extended_v2.csv.gz curl -L https://ipinfo.io/data/location_extended_v2.mmdb?token=$TOKEN -o location_extended_v2.mmdb curl -L https://ipinfo.io/data/location_extended_v2.json.gz?token=$TOKEN -o location_extended_v2.json.gz ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**location_extended_v2.csv.gz**?token=$TOKEN](https://ipinfo.io/data/location_extended_v2.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**location_extended_v2.csv**](https://ipinfo.io/data/sample/location_extended_v2.csv) | | **JSON** | [https://ipinfo.io/data/**location_extended_v2.json.gz**?token=$TOKEN](https://ipinfo.io/data/location_extended_v2.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**location_extended_v2.json**](https://ipinfo.io/data/sample/location_extended_v2.json) | | **MMDB** | [https://ipinfo.io/data/**location_extended_v2.mmdb**?token=$TOKEN](https://ipinfo.io/data/location_extended_v2.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**location_extended_v2.mmdb**](https://ipinfo.io/data/sample/location_extended_v2.mmdb) | | **Parquet** | [https://ipinfo.io/data/**location_extended_v2.parquet**?token=$TOKEN](https://ipinfo.io/data/location_extended_v2.parquet?token=$TOKEN) | [https://ipinfo.io/data/sample/**location_extended_v2.parquet**](https://ipinfo.io/data/sample/location_extended_v2.parquet) | ## Database File Metadata ## Links - Available on Snowflake Marketplace - [IPinfo Personalized IP Address Database](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMG3/) - [IPinfo All-in-One IP Address Database](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMCR/) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/blob/main/IP%20Geolocation%20Extended) ================================================================================ PAGE: Privacy Detection Extended Database URL: https://ipinfo.io/developers/privacy-detection-extended SLUG: privacy-detection-extended DESCRIPTION: Extended privacy detection with service names, detection methods, and detailed VPN/proxy metadata. ================================================================================ # IP Privacy Detection Extended Database Privacy Detection extended database reveals IP addresses linked to VPNs, Tor, proxies, relays, and hosting services. The database helps users to understand how we detect anonymous IP addresses so that they can use this information to build personalized cybersecurity policies. ## Database Schema The Privacy Detection extended database contains the following fields: | Field Name | Example | Data Type | Descrption | | --------------- | --------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | network | `45.129.35.234` | TEXT | CIDR/IP Range or single IP address block | | hosting | `true` | BOOLEAN | Indicates a hosting/cloud service/data center IP address | | proxy | `false` | BOOLEAN | Indicates a open web proxy IP address | | relay | `false` | BOOLEAN | Indicates location preserving anonymous relay service | | tor | `false` | BOOLEAN | Indicates a TOR (The Onion Router) exit node IP address | | vpn | `true` | BOOLEAN | Indicates Virtual Private Network (VPN) service exit node IP address | | service | `NordVPN` | TEXT | Name of the privacy service provider includes VPN, Proxy and Relay service providers names | | first_seen | `2024-10-31` | DATE | Date when the activity on an anonymous IP address was first observed: Date in YYYY-MM-DD format, ISO-8601. Within the 3-month lookback period. | | last_seen | `2025-01-03` | DATE | Date when the activity on an anonymous IP address was last/recently observed: Date in YYYY-MM-DD format, ISO-8601. | | confidence | `3` | INTEGER | The level (from 1 to 3) of confidence attributed to the best source associated with this range | | coverage | `1.0` | FLOAT | For inferred ranges (see `inferred` flag), represents the proportion of the range (in IP count) that we saw direct evidence of VPN activity on; the remaining percentage of the range (1 - coverage) is composed of IPs we did not directly observe. For IPs/ranges we've fully directly observed VPN evidence on, this value is 1.0. | | census | `false` | BOOLEAN | Ranges where we've observed VPN software/ports on; we run scans on ports and protocols commonly associated with VPN software. Ranges with the census flag are those where these scans obtained positive results | | census_ports | | INTEGER | The ports we've gotten positive results for when running our VPN detection census | | device_activity | `false` | BOOLEAN | Ranges on which we've observed device activity compatible with VPN usage (outside of known infrastructure area; simultaneous use around a large area; pingable and/or associated with hosting providers) | | inferred | `false` | BOOLEAN | Whether the range associated with the record is the result of direct observation or inference based on neighboring IPs | | vpn_config | `true` | BOOLEAN | Ranges where we confirmed VPN activity by directly running VPN software from almost 200 different providers and collecting exit IPs | | whois | `false` | BOOLEAN | Ranges where we've observed VPN software/ports on AND have a WHOIS association with either VPNs in general or specific VPN providers. e.g. if our ipsec scan returned a positive result for an IP and its WHOIS record indicates that it is owned by a VPN provider, this flag will be true. | ![A screen image showing the table provided by our Privacy Detection Extended Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/privacy-detection-extended-example.png) Confidence intervals defined: | Confidence Level | Description | | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 3 | Direct observation of commercial use (vpn_config) | | 2 | Direct observation of VPN software running on the range (census) + registrar information associated with VPNs or specific providers OR highly convincing device activity (large spread of devices on pingable networks that are not associated with carrier traffic and known to be associated with hosting providers) | | 1 | Direct observation of VPN software running on the range (census) without known association to specific providers or VPNs in general OR device data that is suspicious but not associated with hosting ranges | ## Sample Databases [View spreadsheet](https://docs.google.com/spreadsheets/d/e/2PACX-1vT2_7oT9SW6xphJiYAU5pSH6dWLDVbn5w_JTKl4hu9bAXoyk1IjNNdTMj-X-A00qzkOMOwHqCb0SCMg/pubhtml?widget=true&gid=1326414708&headers=false&chrome=true&rm=demo;frameborder=0) - [Privacy Detection Extended Database Sample — CSV](https://github.com/ipinfo/sample-database/blob/main/Privacy%20Detection%20Extended/ipinfo_privacy_extended_sample.csv) - [Privacy Detection Extended Database Sample — JSON](https://github.com/ipinfo/sample-database/blob/main/Privacy%20Detection%20Extended/ipinfo_privacy_extended_sample.json) - [Privacy Detection Extended Database Sample — MMDB](https://github.com/ipinfo/sample-database/blob/main/Privacy%20Detection%20Extended/ipinfo_privacy_extended_sample.mmdb) ## Filename References ```bash curl -L https://ipinfo.io/data/ipinfo_privacy_extended.csv.gz?token=$TOKEN -o ipinfo_privacy_extended.csv.gz curl -L https://ipinfo.io/data/ipinfo_privacy_extended.mmdb?token=$TOKEN -o ipinfo_privacy_extended.mmdb curl -L https://ipinfo.io/data/ipinfo_privacy_extended.json.gz?token=$TOKEN -o ipinfo_privacy_extended.json.gz curl -L https://ipinfo.io/data/ipinfo_privacy_extended.parquet?token=$TOKEN -o ipinfo_privacy_extended.parquet ``` | File Format | Database Download URI | Sample Dataset URI | |-------------|------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------| | **CSV** | [https://ipinfo.io/data/**ipinfo_privacy_extended.csv.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy_extended.csv.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy_extended.csv**](https://ipinfo.io/data/sample/ipinfo_privacy_extended.csv) | | **JSON** | [https://ipinfo.io/data/**ipinfo_privacy_extended.json.gz**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy_extended.json.gz?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy_extended.json**](https://ipinfo.io/data/sample/ipinfo_privacy_extended.json) | | **MMDB** | [https://ipinfo.io/data/**ipinfo_privacy_extended.mmdb**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy_extended.mmdb?token=$TOKEN) | [https://ipinfo.io/data/sample/**ipinfo_privacy_extended.mmdb**](https://ipinfo.io/data/sample/ipinfo_privacy_extended.mmdb) | | **Parquet** | [https://ipinfo.io/data/**ipinfo_privacy_extended.parquet**?token=$TOKEN](https://ipinfo.io/data/ipinfo_privacy_extended.parquet?token=$TOKEN) |[https://ipinfo.io/data/sample/**ipinfo_privacy_extended.parquet**](https://ipinfo.io/data/sample/ipinfo_privacy_extended.parquet) | ## Database File Metadata ## Links - Available on Snowflake Marketplace - [IPinfo Personalized IP Address Database](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMG3/) - [IPinfo All-in-One IP Address Database](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMCR/) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/Privacy%20Detection%20Extended) ================================================================================ PAGE: IP to ASN Database URL: https://ipinfo.io/developers/ip-to-asn-database SLUG: ip-to-asn-database DESCRIPTION: Map IP addresses to their Autonomous System Numbers (ASN) and organization information. Includes ASN, organization name, domain, and network type. ================================================================================ # IP to ASN Database **We recommend using our [IPinfo Lite Data Downloads](/developers/ipinfo-lite-database) as the database is currently unavailable to new users. Although updated regularly, this is our legacy data download.** The IP to ASN database provides AS level information from IP address range such as ASN, AS name and AS domain or official website. It is part of our [free IP data downloads offering](/products/free-ip-database). The database is updated daily, provides full accuracy and includes both IPv4 and IPv6 information in one database download. ## Database Schema The IP to ASN Database database contains the following fields: | Field Name | Example | Data Type | Description | | ------------ | ------------------ | --------- | ------------------------------------------------- | | **start_ip** | `1.0.0.0` | TEXT | Starting IP address of an IP address range | | **end_ip** | `1.0.0.255` | TEXT | Ending IP address of an IP address range | | **asn** | `AS13335` | TEXT | Autonomous System Number | | **name** | `Cloudflare, Inc.` | TEXT | Name of the AS (Autonomous System) organization | | **domain** | `cloudflare.com` | TEXT | Official domain or website of the AS organization | ## Sample Database - [IP to ASN Database Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20ASN/ip_asn_sample.csv) - [IP to ASN Database Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20ASN/ip_asn_sample.json) - [IP to ASN Database Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20ASN/ip_asn_sample.mmdb) ![A screen image showing the table provided by our IP to ASN free Database Download](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/asn-free-example.png) ## Links - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/IP%20to%20ASN) ================================================================================ PAGE: IP to Country Database URL: https://ipinfo.io/developers/ip-to-country-database SLUG: ip-to-country-database DESCRIPTION: Minimal database mapping IP addresses to country codes and names. Perfect for basic geolocation needs with minimal overhead. ================================================================================ # IP to Country Database **We recommend using our [IPinfo Lite Data Downloads](/developers/ipinfo-lite-database) as the database is currently unavailable to new users. Although updated regularly, this is our legacy data download.** The IP to Country database provides country and continent geolocation information of IP addresses. It is part of our [free IP data downloads offering](/products/free-ip-database). The database is updated daily, provides full accuracy and includes both IPv4 and IPv6 information in one database download. ## Database Schema The IP to Country database contains the following fields: | Field Name | Example | Data Type | Description | | ---------------- | --------------- | --------- | ------------------------------------------ | | `start_ip` | 217.220.0.0 | TEXT | Starting IP address of an IP address range | | `end_ip` | 217.223.255.255 | TEXT | Ending IP address of an IP address range | | `country` | IT | TEXT | ISO 3166 country code of the location | | `country_name` | Italy | TEXT | Name of the country | | `continent` | EU | TEXT | Continent code of the country | | `continent_name` | Europe | TEXT | Name of the continent | ## Sample Database - [IP to Country Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country/ip_country_sample.csv) - [IP to Country Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country/ip_country_sample.json) - [IP to Country Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country/ip_country_sample.mmdb) ![A screen image showing the table provided by our IP to Country Database Download with keys as rows](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/country-example.png) ## Links - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/IP%20to%20Country) ================================================================================ PAGE: IP to Country + ASN Database URL: https://ipinfo.io/developers/ip-to-country-asn-database SLUG: ip-to-country-asn-database DESCRIPTION: Lightweight database combining country-level geolocation with ASN and organization data for efficient IP address classification. ================================================================================ # IP to Country + ASN Database **We recommend using our [IPinfo Lite Data Downloads](/developers/ipinfo-lite-database) as the database is currently unavailable to new users. Although updated regularly, this is our legacy data download.** The IP to Country + ASN database is a joined single database that combines the data from our - [IP to Country](/developers/ip-to-country-database) and [IP to ASN database](/developers/ip-to-asn-database). The database join is done with respect to the IP address ranges and is optimized for IP address lookups. It is part of our [free IP data downloads offering](/products/free-ip-database). The database is updated daily, provides full accuracy and includes both IPv4 and IPv6 information in one database download. ## Database Schema The IP to Country + ASN database contains the following fields: | Field Name | Example | Data Type | Description | | ---------------- | ---------------------------- | --------- | ------------------------------------------------- | | `start_ip` | 1.0.16.0 | TEXT | Starting IP address of an IP address range | | `end_ip` | 1.0.31.255 | TEXT | Ending IP address of an IP address range | | `country` | JP | TEXT | ISO 3166 country code of the location | | `country_name` | Japan | TEXT | Name of the country | | `continent` | AS | TEXT | Continent code of the country | | `continent_name` | Asia | TEXT | Name of the continent | | `asn` | AS2519 | TEXT | Autonomous System Number | | `as_name` | ARTERIA Networks Corporation | TEXT | Name of the AS (Autonomous System) organization | | `as_domain` | arteria-net.com | TEXT | Official domain or website of the AS organization | ## Sample Database - [IP to Country + ASN Sample Database — CSV](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country%20ASN/ip_country_asn_sample.csv) - [IP to Country + ASN Sample Database — JSON](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country%20ASN/ip_country_asn_sample.json) - [IP to Country + ASN Sample Database — MMDB](https://github.com/ipinfo/sample-database/blob/main/IP%20to%20Country%20ASN/ip_country_asn_sample.mmdb) ![A screen image showing the table provided by our IP to Country + ASN Database Download with keys as rows](https://cdn.assets.ipinfo.io/static/images/docs/database-downloads/country-asn-example.png) ## Links - [IPinfo IP to Country + ASN — Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ4QY) - [IPinfo Sample Database Repo — GitHub](https://github.com/ipinfo/sample-database/tree/main/IP%20to%20Country%20ASN) ================================================================================ PAGE: Integrations Overview URL: https://ipinfo.io/developers/integrations SLUG: integrations DESCRIPTION: Integrate IPinfo data into your existing analytics stack. Support for Snowflake, BigQuery, Splunk, Microsoft Sentinel, and custom BYOL implementations. ================================================================================ # Integrations Overview IPinfo has partnered with data marketplaces, workflow automation platforms, cybersecurity applications, and IT administration systems. Our goal is to provide an integrated environment that enables users to get and up running with IP data. You can check out our full list of integrations from our [integrations page](/integrations). The current list of IPinfo Platform integrations includes: - [Snowflake Data Marketplace](/developers/snowflake) - [Google BigQuery / Google Cloud Data Marketplace](/developers/gcp-integration) - [Splunk](/developers/splunk) - [Microsoft Sentinel](/developers/microsoft-sentinel) - [Cribl](https://community.ipinfo.io/t/using-ipinfo-s-databases-in-cribl/5262) We provide help in building your own platform-specific IPinfo integration using a [Bring Your Own License integration](/developers/byol-integration). ## Platform Integrations - [Auth0](https://marketplace.auth0.com/integrations/ipinfo) - [Beam AI](https://beam.ai/integrations/ipinfoio) - [Crowdstrike SOAR Action](https://marketplace.crowdstrike.com/listings/ipinfo-io-soar-actions/) - [Dropzone AI](https://docs.dropzone.ai/integrations/data/ipinfo-io) - [Heroku](https://elements.heroku.com/addons/ipinfo) - [Integrately](https://integrately.com/integrations/ipinfo) - [Lindy](https://www.lindy.ai/integrations/ipinfo-io) - [n8n](https://n8n.io/integrations/ipinfo/) - [Palo Alto Cortex](https://cortex.marketplace.pan.dev/marketplace/details/ipinfo/) - [Pipedream](https://pipedream.com/apps/ipinfo-io) - [Relevance AI](https://relevanceai.com/integrations/ipinfo-io) - [Rube](https://rube.app/marketplace/ipinfo_io) - [Sumo Logic](https://www.sumologic.com/help/docs/platform-services/automation-service/app-central/integrations/ipinfo/) - [Zapier](https://zapier.com/apps/ipinfo/integrations) ================================================================================ PAGE: IPinfo on Snowflake Marketplace URL: https://ipinfo.io/developers/snowflake SLUG: snowflake DESCRIPTION: Access IPinfo data directly in Snowflake. Query IP geolocation, company, ASN, and privacy data alongside your existing analytics. ================================================================================ # IPinfo on Snowflake Marketplace IPinfo is the premier IP data provider in the **[Snowflake Marketplace](https://app.snowflake.com/marketplace/providers/GZSTZ3VDMAT/IPinfo%20Inc.)**. To make the most of our data in Snowflake, we recommend that you go through this documentation. ![Snowflake header image](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/snowflake-header.gif) ## IPinfo on the Snowflake Marketplace [Watch video](https://www.youtube.com/embed/jMP6frL5mZw) You can check out our IP databases from [our storefront](https://app.snowflake.com/marketplace/listings/IPinfo) as well. Each listing page contains a description of the product, available column/field names, use cases, sample queries, and other useful information to get you up and running. We currently have the following IP datasets available in the Snowflake Marketplace. | Product | Description | | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [IPinfo Lite](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ55S) | Open access, full-accuracy IP datasets that provide IP-to-country and ASN details. | | [IPinfo Core](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ56D) | City-level precision and network connection context (anonymous+, satellite, and carrier). | | [IPinfo Plus](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ56H) | Comprehensive IP intelligence, including location, anonymity/privacy, ASN, carrier, and stability. | | [IPinfo Residential Proxy](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ55W) | Detect residential and mobile proxy IPs with service and usage metrics. | | [IPinfo IP Geolocation](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFI) | Accurate IP location with detailed and granular precision. | | [IPinfo Company IP Address Data](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMEX) | Identify companies and organizations through IP addresses. | | [IPinfo Privacy Detection (VPN, TOR, Relay, Proxy etc.)](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFU) | Detect hosting, VPN, proxy, Relay and Tor IPs. | | [Comprehensive IP WHOIS Data](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFY) | Structured IP WHOIS data for ASN, Organization, Maintainer, Network & POC Records | | [IPinfo: IP Geolocation Training/Education Sample](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMEH) | Snowflake's "[The Hands-On Essentials Workshop Series](https://www.snowflake.com/en/resources/learn/snowflake-essentials-training/)" workshop practices data. | ## Database Operations Let's discuss some of the basic IPinfo IP database operations. For this guide, we expect that you are familiar with the Snowflake platform. However, if you need any assistance, [our data experts are happy to guide you](/contact). **IPinfo Basic UDFs (User-Defined Functions)** To ease the process of using our database products and enable our users to use the best-performing solutions, we have developed many handy UDFs (User Defined Functions). 🔗 [Snowflake Documentation on UDF](https://docs.snowflake.com/en/sql-reference/user-defined-functions.html). Our basic UDFs are scalar in nature and output a single value in `TEXT` or multiple values contained within an `ARRAY`. | User-Defined Functions (UDF) | Description | | | ---------------------------- | -------------------------------------------------------------------------------------------------------------- | --- | | **`RANGE_TO_CIDR`** | Converts `start_ip` and `end_ip` columns to their network range / CIDR equivalent. Data outputted as an array. | | **`RAND_IP`** | Returns an array of random IPv4 or IPv6 addresses. | | | **`IP_CONTINENT`** | Returns the continent name for a single IP address lookup. | | | **`COUNT_IP`** | Counts the IP addresses between the `start_ip` and `end_ip` values. | | Additionally, we provide a complimentary table called “COUNTRIES” that includes country codes, country names, and continent names. **Account and share status and metadata** For account and listing metadata information, you can use our included UDTFs: `STATUS` and `STATUS_DETAILS`. **`STATUS`** returns artifact/dataset and account-related information. The returned table contains the following information: - `ACCT`: Account ID. - `ORG`: Organization ID. - `REGION`: Cloud platform and region name. - `REFRESH_FREQUENCY`: The update frequency of the current dataset/artifact. - `LAST_ALTERED`: Last alter or update date and time. ```sql SELECT * FROM TABLE(IPINFO.PUBLIC.STATUS()); ``` ![Status table UDF](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/status_udtf.png) The `IPINFO` is the dataset name. **`STATUS_DETAILS`** returns the following information for all the resources included in an IPinfo Snowflake dataset: - `NAME`: Name of the resource - `TYPE`: Type of the resource - `REFRESH_FREQUENCY`: The refresh frequency of the resource - `LAST_ALTERED`: Last alter or update date and time. ```sql SELECT * FROM TABLE(IPINFO.PUBLIC.STATUS_DETAILS()); ``` ![Status Details table UDF](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/status_details_udtf.png) **Sample IP address table** With all of our listings, we include the `ip_sample` table, which contains 1,000 sample IP addresses, including 500 IPv4 addresses and 500 IPv6 addresses. You can use these IP addresses for query testing. ![Log data IP sample](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/ip_sample.png) **IPinfo Query Function** The IPinfo Query Functions are UDTFs or Table Functions that return tabular data when queried against a specific IP dataset using IP addresses. To enable faster and more efficient IP address lookups from our database, we have developed these UDTFs. These custom functions remove the guesswork from querying our database and ensure best practices. ![UDTF demo](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/UDTF_demo.png) The query functions are available in the `public` schema of the database listing. When you purchase our listing, you have the option to provide a name for the shared database. You can learn more about this in our [IPinfo community post](https://community.ipinfo.io/t/using-our-daily-updated-databases-on-snowflake/1100#differences-in-data-class-name-2). If you have purchased our [IP geolocation listing](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFI/) and named our shared database `ipinfo`, then your functions, views, and tables will be available in the `ipinfo.public` namespace. Here, `ipinfo` is the name of the shared database, and `public` is the schema. To access the `IP_LOCATION` UDTF, you would call `ipinfo.public.ip_location`. Similarly, you can access the `IP_GEOLOCATION` view by calling `ipinfo.public.ip_geolocation`. If you have access to the database product, you will also have access to the associated UDTFs. Each UDTF corresponds to its respective database. ## Views, UDTFs and Database Names Reference list for the database names, views/tables, and UDTFs. **Database Name**: The database name is assigned when you purchase or trial our database listing. We recommend changing the name upon purchasing the database, as the standard database names can be quite long. We are mentioning the standard database names here for reference purposes only. **View**: This is where our data lives. Please note that composite database listings may contain multiple views as they usually consist of multiple databases. **Query Function - UDTF**: A table function used to query our IP databases. **Composite listings**: Some of our listings contain multiple IP databases. They include multiple views and multiple UDTFs under one database. For example: [IPinfo Whois Full Data](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFY/) | Product | UDTF | VIEW / TABLE | | --- | --- | --- | | [IPinfo Lite](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ55S) | GET_IP_LITE | LITE | | [IPinfo Core](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ56D) | GET_IP_CORE | IP_CORE | | [IPinfo Plus](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ56H) | GET_IP_PLUS | IP_PLUS | | [IPinfo Residential Proxy](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ55W) | IP_PROXY_RESIDENTIAL | IP_PROXY_RESIDENTIAL | | [IPinfo IP Geolocation](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFI) | IP_LOCATION | IP_GEOLOCATION | | [IPinfo Company IP Address Data](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMEX) | IP_COMPANY | IP_COMPANY | | [IPinfo Privacy Detection (VPN, TOR, Relay, Proxy etc.)](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFU) | IP_PRIVACY | IP_PRIVACY | | [Comprehensive IP WHOIS Data](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFY) | | IP_WHOIS_NET IP_WHOIS_ASN IP_WHOIS_MNT IP_WHOIS_ORG IP_WHOIS_POC | Beyond the standard functions, we internally use a handful of helper functions to enhance our core UDTF experience. For example: `TO_INT`, `TO_IP`, `TO_JOIN_KEY`, `TO_IP6`, etc. These functions are not meant to be used in regular operations. ## Accessing Our Daily Updated Databases on Snowflake Marketplace Our standard database listings on Snowflake Marketplace are updated on a monthly basis. However, we offer a daily updated database as part of our offering. Learn more from our [IPinfo community post](https://community.ipinfo.io/t/using-our-daily-updated-databases-on-snowflake/1100). Our IPinfo Lite data on Snowflake is updated daily and provides full accuracy. ## Joining our database to your database using UDTFs Our User-Defined Table Functions (UDTFs) provide a highly efficient method for merging our database insights with your log or IP address column. We have presented a list of all the available UDTFs in the preceding section. For example, let's consider our logs database, which appears as follows: ![joining_database_sample_ip](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/joining_database_sample_ip.png) `IP_LOCATION` UDTF using the IP to Geolocation database: ```sql SELECT * FROM logs l JOIN TABLE (ipinfo.public.ip_location(l.ip)); ``` Result: ![joining_database_sample_ips_enriched_with_ip_location_udtf](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/joining_database_sample_ips_enriched_with_ip_location_udtf.png) UDTF code Template: ```sql SELECT * FROM JOIN TABLE(..(.)); ``` - ``: The input database contains IP addresses. It can be a table, view, database, or even a CTE. In the example, it is `logs`. - ``: Just an alias for the input database. In the example, we used `l`. - ``: The IPinfo database name of the share. It is usually the "Standard Listing Name" we discussed in the "Views, UDTFs, and Database Names" section. But you can also change it to anything you want when purchasing the listing. In the example, it is just `ipinfo`. - `ipinfo_schema`: Usually, the value is `public`. - `UDTF_name`: The UDTF you want to use to enrich your log or IP database. In the example, we want to add location information to our IP logs, so we used the `IP_LOCATION` UDTF. - ``: The column that contains the IP addresses in your input database. In the example, it is `ip`. Another example of a UDTF, `IP_HOSTED_DOMAINS` UDTF uses the [IP to Hosted Domains](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMF2/): ```sql WITH sample_ips (ip) AS ( SELECT * FROM ( VALUES ('8.8.8.8'), ('198.35.26.98') ) ) SELECT * FROM ( SELECT ip FROM sample_ips -- sample log database ) logs JOIN TABLE (ipinfo.public.ip_hosted_domains(logs.ip)); ``` ![sample_ips_enriched_with_hosted_domains_udtf](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/sample_ips_enriched_with_hosted_domains_udtf.png) Let's look at another UDTF, `IP_PRIVACY`, which comes with our [IP to Privacy Detection](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFU/) database. We will be using our logs table again. ```sql SELECT * FROM logs l JOIN TABLE(ipinfo.public.ip_privacy(l.ip)); ``` ![identifying_vpn_hosting_tor_proxy_ip_addresses_with_ip_privacy_udtf](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/identifying_vpn_hosting_tor_proxy_ip_addresses_with_ip_privacy_udtf.png) Please note that even though the logs table contains multiple IP addresses, we can only see a few rows here. That is because the code used performs an INNER JOIN. ## IPinfo Lite - IPinfo's Free IP database on Snowflake Marketplace With our open access [IPinfo Lite](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ55S)'s `GET_IP_LITE` you can get the country and asn information of IP addresses. ```sql SELECT * FROM logs l JOIN TABLE(GET_IP_LITE(l.ip)); ``` ![get_ip_lite_udtf](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/get_ip_lite_udtf.png) ## IPinfo Snowflake selected Queries (IP data query Cookbook) In this section, we will cover some general queries that can be applied to any database product we have. These queries can be quite useful in threat intelligence operations and IP address research. **Preview the database** Preview the database by selecting the first 10 rows. ```sql SELECT * FROM ipinfo.public.IP_RIR_WHOIS LIMIT 10; ``` We package each listing with samples of the database as well as samples of all our listings. Learn about it here: [Snowflake listings include our data samples with 50 Rows](https://community.ipinfo.io/t/snowflake-listings-include-our-data-samples-with-50-rows/2565) **Looking up the IP data of an individual IP address.** You can look up individual IP addresses using UDTFs as well. ``` -- input IP address: 8.8.8.8 SELECT * FROM TABLE(ipinfo.public.ip_location('8.8.8.8')); ``` ![lookup_individual_ip.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/lookup_individual_ip.png) **Enriching IP addresses from multiple IPinfo DBs** If you have purchased multiple database products from us or our All-in-one database and want to perform multiple UDTF operations, as well as join them into a comprehensive table, you should run an OUTER JOIN operation. ```sql SELECT l.ip, -- log IP address column carrier.name carrier, -- asn columns -- ... carrier.mnc mnc, privacy.vpn vpn, -- privacy columns -- ... privacy.service privacy_service, ip_geo.city city, -- ip geolocation columns -- ... ip_geo.timezone timezone FROM logs l LEFT JOIN ( SELECT * FROM logs l JOIN TABLE(ipinfo.public.ip_carrier(l.ip)) ) carrier ON l.ip = carrier.ip LEFT JOIN ( SELECT * FROM logs l JOIN TABLE(ipinfo.public.ip_privacy(l.ip)) ) privacy on l.ip = privacy.ip LEFT JOIN ( SELECT * FROM logs l JOIN TABLE(ipinfo.public.ip_location(l.ip)) ) ip_geo on l.ip = ip_geo.ip; ``` **Converting Start IP & End IP to their CIDR/Network Range equivalent** You can convert the Start IP (`start_ip`) & End IP (`end_ip`) to their CIDR or network range equivalent using `RANGE_TO_CIDR` UDF. Please note that this will result in an array where there will be one or more items. Example: ```sql SELECT ipinfo.public.range_to_cidr(start_ip, end_ip) as "cidr", * FROM ipinfo.public.ip_carrier LIMIT 10; ``` ![ip_range_to_cidr.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/ip_range_to_cidr.png) **Describe the database** Use the `DESCRIBE` or `DESC` ([Snowflake Documentation](https://docs.snowflake.com/en/sql-reference/sql/desc-table)) command to get the schema and other information of the table. ```sql DESCRIBE TABLE ipinfo.public.ip_rir_whois; ``` ![describe_database.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/describe_database.png) **Generating random IP addresses** For testing purposes, you might need to generate IP addresses. In that case, you can use the included, `RAND_IP` UDF. The `RAND_IP` UDF can generate any number of IPv4 or IPv6 addresses. The `RAND_IP` UDF takes two parameters: - **Number of IP addresses**: It could be any number of IP addresses. - **IP Address type**: For IPv4 it is "`4`", for IPv6 it is "`6`". ```sql -- SELECT IPINFO.PUBLIC.RAND_IP(, ) SELECT IPINFO.PUBLIC.RAND_IP(3,6); ``` ![randip_array.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/randip_array.png) As the random IPs are generated in an array, if you want to convert the array into rows use the following query: ```sql SELECT value as "ip" FROM TABLE(FLATTEN(IPINFO.PUBLIC.RAND_IP(3,6))); ``` ![randip_rows.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/randip_rows.png) Please note a couple of things: - When you are generating random IP addresses it might include some [bogon IP addresses](https://support.ipinfo.io/hc/en-us/articles/30792495147794-What-is-a-bogon-IP-address) and you will not find information regarding them when you run a UDTF command on them. - The vast majority of IPv6 addresses are unassigned, so there is no information associated with them. So, randomized IPv6 addresses cannot be effective for testing purposes. **IP to Geolocation: Nearest IP addresses** Using our [IP to location database](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFI/) and the `HAVERSINE` function provided by Snowflake ([documentation](https://docs.snowflake.com/en/sql-reference/functions/haversine.html)), we can retrieve information on the IP addresses closest to a given geographical coordinate. ```sql -- Pass the input lat, lng as the first two arguments -- to the Haversine function. (e.g. 51.1740, -1.8262) SELECT HAVERSINE(51.1740, -1.8262, lat, lng) as distance, start_ip, end_ip, city, region, country FROM ipinfo.public.ip_geolocation ORDER BY distance LIMIT 10; ``` ![haversine_query.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/haversine_query.png) **IP to Geolocation: Get Continent** To obtain only the continent information of a single IP address, you can utilize the `IP_CONTINENT` UDF. ```sql SELECT IPINFO.PUBLIC.IP_CONTINENT('8.8.8.8'); ``` ![ip_continent_udf.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/ip_continent_udf.png) However, please note that this UDF only takes an IP address and returns the name of the continent by utilizing the `IP_LOCATION` database and the `COUNTRIES` complementary database. If you are already using the `IP_LOCATION` UDTF or you have to look up multiple IP addresses, you can join the output table to the `COUNTRIES` complementary database. ```sql SELECT * FROM ( SELECT ip FROM logs -- sample log database ) logs JOIN TABLE(ipinfo.public.ip_location(logs.ip)) l LEFT JOIN ipinfo.public.countries c WHERE l.country=c.cc; ``` ![ip_location_continent.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/ip_location_continent.png) **IP to ASN: Number of ASNs per country** Get the number of ASNs in a country from the [free IP to Country ASN database](https://app.snowflake.com/marketplace/listing/GZSTZSHKQ4QY/) or the [ASN database](https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFM/). ```sql SELECT country_code, count(1) as ASNs FROM ipinfo.public.lite GROUP BY 1 ORDER BY 2 DESC LIMIT 10; ``` ![count_asn_country.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/count_lite_country.png) Similar queries can be used on all database products. **IPs That Might Be Static Residential Proxies (Seen >90% of the Time)** By using the Residential Proxy Detection database, you can discover IPs that may be static residential proxy IP addresses. ```sql SELECT ip, service, percent_days_seen FROM proxy_residential WHERE CAST(percent_days_seen AS INTEGER) > 90 ORDER BY percent_days_seen DESC; ``` ![ip_to_hosted_domains.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/static_residential_proxy.png) **Get IP ranges of an ASN / Organization** You can obtain the IP ranges in CIDR format of one or more ASN with the following query. ```sql -- Example asn: AS39927 -- Using the ASN database SELECT flat_data.value as IP_RANGE FROM ( SELECT ipinfo.public.range_to_cidr(start_ip, end_ip) as ip_range FROM ipinfo.public.ip_asn WHERE asn='AS39927' ) as_ips, TABLE(FLATTEN(as_ips.ip_range)) flat_data ``` ![asn_range.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/asn_range.png) Please note that for identifying organizations, the `domain` field essentially acts like a primary key, as multinational organizations operate with different names across different countries. **IPinfo Lite database / IP to Geolocation database: Generate IP ranges by location** You can retrieve all the ranges for one or more specific countries, regions/states, or cities with the following query. ```sql -- Example country: Nepal (NP) -- Using the IP to Country ASN database SELECT flat_data.value as IP_RANGE FROM ( SELECT ipinfo.public.range_to_cidr(start_ip, end_ip) as ip_range FROM ipinfo.public.lite WHERE country_code='NP' ) nepal_ips, TABLE(FLATTEN(nepal_ips.ip_range)) flat_data ``` ![country_range.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/country_range.png) ## IPinfo Community In our [IPinfo community](https://community.ipinfo.io/), we have created a [repository of all our Snowflake-related queries and technical documentation](https://community.ipinfo.io/docs?tags=snowflake). Through our community, you can learn and explore the technical features of our Snowflake listings as well as ask and participate in discussions about IP data and IPinfo. 🔗 [IPinfo Snowflake Community Documentation](https://community.ipinfo.io/docs?tags=snowflake) ![country_range.png](https://cdn.assets.ipinfo.io/static/images/docs/snowflake/ipinfo_community_snowflake_tag.png) ## Frequently Asked Questions (FAQ) **What is the update interval for the databases?** IPinfo provides data updates in three intervals - daily, weekly, and monthly. For the Snowflake listings: - [Standard self service datasets](https://app.snowflake.com/marketplace/listings/IPinfo) are updated monthly, except for the IPinfo Lite data. - Custom data shares provide flexibility for customers to select their desired refresh frequency from the options available on each dataset. **Are UDTFs available through manual ingestion or secondary data softwares like dbt?** IPinfo's UDTFs are part of the marketplace listings, but they are not available for manual data ingestion of IPinfo's data downloads to Snowflake. If Snowflake is being used through dbt or any intermediate software solution, the UDTFs might also not be available. In that case, the user must hard code the UDTF code. Instructions for hard coding UDTFs are available [here](https://community.ipinfo.io/t/using-our-ipinfo-s-data-on-snowflake-through-direct-upload-ingestion/3840). We highly recommend that users do not write their own custom query codes unless they have a solid grasp of IP lookup mechanisms. The UDTFs were developed with expert consultation between IPinfo's engineers and Snowflake. **Is IPv6 data available?** Yes. All IPinfo's IP data downloads include IPv4 and IPv6 data in a single database. **Can I enrich 'n' IP addresses?** If it is under a hundred million IP addresses, you should be good with UDTFs. IPv6 enrichment will be a bit slow, but it will still be performant. If you are approaching hundreds of millions or billions of unique IP addresses, reach out to us. We will discuss a solution with you. **Can I request custom data shares?** Yes, IPinfo has a few custom datasets that are only available upon request. Please reach out to us at snowflake@ipinfo.io, and we will set up a private share. ## Additional Support Resources from IPinfo and Snowflake To enable our customers to learn and effectively use our data, we regularly publish [articles and resources](https://ipinfo.io/blog/tag/snowflake/) that focus on using our data products on the Snowflake platform. - [Snowflake Marketplace is the simplest, most efficient way to use our data in Snowflake](https://community.ipinfo.io/t/snowflake-marketplace-is-the-simplest-most-efficient-way-to-use-our-data-in-snowflake/4840) - [Snowflake listings include our data samples with 50 Rows](https://community.ipinfo.io/t/snowflake-listings-include-our-data-samples-with-50-rows/2565) - [Why the IPinfo community should explore our data in Snowflake](https://community.ipinfo.io/t/why-the-ipinfo-community-should-explore-our-data-in-snowflake/4423) - [Introducing a simpler way to get IP Address Data in Snowflake](https://ipinfo.io/blog/ip-address-data-in-snowflake/) - [How customers use IPinfo's data in Snowflake](https://ipinfo.io/blog/ipinfo-data-in-snowflake-use-cases/) - [What makes IPinfo's Snowflake integration ideal for data engineers?](https://ipinfo.io/blog/ipinfo-snowflake-integration-for-data-engineers/) - [IPinfo Recognized as A Leader in Snowflake's Modern Marketing Data Stack](https://ipinfo.io/blog/snowflake-ipinfo-modern-marketing-data-stack/) - [Snowflake and IPinfo threat intelligence webinar](https://ipinfo.io/blog/snowflake-ipinfo-threat-intelligence-webinar/) - [6 ways users optimize IP data to improve use cases](https://ipinfo.io/blog/ways-users-improve-use-cases/) Also, please feel free to check our [documentation](/developers) for individual dataset documentation. Besides the technical documentation, we highly recommend users check out our [articles on IPinfo's Snowflake integration](https://ipinfo.io/blog/tag/snowflake/). If you have any queries regarding our Snowflake partnership, reach out to us at [snowflake@ipinfo.io](mailto:snowflake@ipinfo.io). Snowflake has published many articles and resources to enable IPinfo customers to effectively achieve their data goals. - [Marketplace Monetization -- Self service access to Premium datasets](https://medium.com/snowflake/new-in-snowflake-marketplace-monetization-315aa90b86c) - [[Video] DEMO: Python On Snowflake | Snowpark](https://www.youtube.com/watch?v=zuBnBpFtUjA) - [[Video] Snowflake Marketplace Demo | Try Before You Buy Experience](https://www.youtube.com/watch?v=Jap9Mu82bt4) Additionally, you should check out the Snowflake documentation: - [Snowflake Documentation](https://docs.snowflake.com/en/) - [Snowflake Marketplace Documentation](https://docs.snowflake.com/en/user-guide/data-marketplace.html) Usage Conditions IPinfo's data contained within the standard self-service listings in the Snowflake Marketplace is subject to an internal use license. It may solely be utilized within business operations, tools, applications, or services intended exclusively for internal staff members. **1. Limited License:** The data is licensed for internal use only. This means the data can only be used in business operations, tools, applications or services where the end users are internal members of your staff. For the avoidance of doubt, usage under this license strictly excludes any of the following scenarios (note that this is not an exhaustive list): - Reselling, repackaging or republishing the data - Sharing the data with any third party - Integrating the data into any customer (&/or partner) facing product or service, whether paid or free, including managed services solutions **2. Breach and Termination:** Any violation of these terms constitutes a breach and may result in the immediate termination of your access to the data at IPinfo's sole discretion. **3. Data Ownership:** IPinfo retains all ownership rights to the data. You are not granted any ownership rights or intellectual property rights by accessing or using the data. **4. Compliance:** You are responsible for ensuring that your use of the data complies with all applicable laws and regulations. **5. Modifications:** We reserve the right to modify these terms and conditions at any time. Your continued use of the data following any changes constitutes your acceptance of the revised terms. If you have any questions, feedback, guidance, or support queries, feel free to reach out to us: snowflake@ipinfo.io ================================================================================ PAGE: Splunk Integration URL: https://ipinfo.io/developers/splunk SLUG: splunk DESCRIPTION: Learn how to integrate IPinfo’s API and data downloads into your platform using the Bring Your Own License (BYOL) model, allowing each user to connect their own IPinfo account and access token securely. ================================================================================ # IPinfo Splunk App Installation & Configuration Download the IPinfo Splunk App from Splunkbase: https://splunkbase.splunk.com/app/4070 The IPinfo Splunk app integrates IPinfo's API and IP database products into the Splunk platform. This app adds the `ipinfo` command to Splunk, which utilizes IPinfo data through the API or IP database (MMDB) to look up IP information for specified IP addresses. > Splunk setup can vary widely and be customized across different installations and ecosystems. So, we recommend investing time into understanding how the platform works with our app. > > This documentation is only recommended to be used as a guideline for how to use our Splunk App on the Splunk Enterprise installation. We encourage reaching out to our team to understand the best usage policies for our Splunk app. ## Features - Enriches Splunk events with IPinfo data: geolocation, ASN, privacy, company, abuse, domains, carrier, residential proxy, and more. - Supports both REST API and local MMDB lookups. - Compatible with standalone, distributed, and search head cluster deployments. - Automated and manual MMDB updates. - Proxy and advanced privacy support. - Custom search commands and REST endpoints. - Extensive configuration and logging. ## Supported OS and Versions The current supported Splunk versions are 9.x and 10.x, as well as Splunk Cloud. We support all Splunk supported operating systems: Windows, Linux, and Mac. ## Installation ## Installation from Splunkbase ![IPinfo Splunkbase App Page](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_website_page.png) 1. Visit the IPinfo Splunk App page at Splunkbase: https://splunkbase.splunk.com/app/4070 2. Download the app. The download format will be `.tgz`. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_download.png) 3. In Splunk (Enterprise), open the "Apps" dropdown and click "Manage Apps". From there, click "Install App from File". In the "Install App From File" modal, browse and select the IPinfo App (usually named: `ipinfo-app-for-splunk-.tgz`) and click "Upload". ![IPinfo Splunk app installation](https://website-cdn.assets.ipinfo.io/images/developers/splunk_install_app.png) 4. Then you will be prompted to set up the IPinfo App. ### Installation via Single Standalone Machine (CLI) Single standalone Splunk Enterprise Installation on Windows/\*NIX. 1. Unzip `ipinfo_app.spl` (file available upon request) 2. Copy the unzipped directory `ipinfo_app` to `$SPLUNK_HOME/etc/apps/` 3. Open the CLI and restart Splunk using the following command: ``` ./splunk restart ``` ### Installation on Distributed Machines **Single Indexer, Single Search Head, Single Forwarder (Heavy or Universal), and Deployment Server** 1. Unzip `ipinfo_app.spl` 2. Copy the unzipped directory `ipinfo_app` to the deployment server in `$SPLUNK_HOME/etc/deployment-apps/` 3. Add the following to `serverclass.conf` ``` [serverClass::app:] stateOnClient=enabled restartSplunkd=true ``` 4. Open the CLI and deploy the apps using the following command: ``` ./splunk reload deploy-server ``` **Multiple non-clustered Indexers, Multiple non-clustered Search Heads, Forwarder (Heavy or Universal), and Deployment Server** 1. Unzip `ipinfo_app.spl` 2. Copy the unzipped directory `ipinfo_app` to the deployment server in `$SPLUNK_HOME/etc/deployment-apps/` 3. Add the following to `serverclass.conf` ``` [serverClass::app:] stateOnClient=enabled restartSplunkd=true ``` 4. Open the CLI and deploy the apps using the following command: ``` ./splunk reload deploy-server ``` **Single-Site Clustered Indexer, Clustered Search Heads, and Forwarder (Heavy or Universal)** 1. Unzip `ipinfo_app.spl` 2. Copy `ipinfo_app` to the Deployer server in `$SPLUNK_HOME/etc/shcluster/apps/` 3. Open the CLI on the Deployer and deploy the app on the Search Head Cluster using the following command: ``` ./splunk apply shcluster-bundle -target : -auth : ``` Post-install configuration: 1. After installation and restart, log in to Splunk Web and go to 'Manage'. 2. It will list all the installed applications and their configuration options. 3. Look for 'IPINFO' and click on the 'Set-Up' link to configure the add-on. 4. Make sure to restart the Splunk instance after setting up the app. In the case of a Search Head Cluster, each search head needs to be restarted or a rolling restart must be initiated for all changes to take effect. ### Installation from the Web Interface (Manual) 1. On the Splunk Home Page, click "Manage". 2. On the Manage Apps page, click "Install app from file". 3. Select the path for the IPinfo Splunk app `.spl` file and click "Upload". 4. Restart Splunk after installation. ## Splunk Integration: IP Database Downloads > Please note that currently the app may use some of our legacy schema variants of the IP Database Downloads. If you want to use our new (*schema) IP database downloads or custom IP database download, please let us know. 1. To use our IP Database Downloads, make sure to check the "Database (MMDB)" field. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step1.png) 2. After that, select the databases you want to access. The "Country ASN MMDB" is available to all users for free. The rest of the databases require a paid subscription. Please note that you can also choose the update cadence. The following databases are available. Please note that some of these IP databases use the legacy schema, but the underlying data is identical to our new database. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step2.png) ### Lookup Table Reference | Database Name | Internal Name | File Name | |------------------------------------|-----------------------|-----------------------------------------| | IPinfo Lite | ipinfo_lite | `ipinfo_lite.mmdb` | | IPinfo Core | ipinfo_core | `ipinfo_core.mmdb` | | IPinfo Plus | ipinfo_plus | `ipinfo_plus.mmdb` | | IP to Location | iplocation | `standard_location.mmdb` | | IP to Location Extended | iplocation_ext | `location_extended_v2.mmdb` | | IP to Location Extended (Labelled) | iplocation_ext_labels | `location_extended_v2_conf_labels.mmdb` | | IP to Privacy Detection | privacy | `standard_privacy.mmdb` | | IP to Privacy Detection Extended | privacy_extended | `ipinfo_privacy_extended.mmdb` | | IP to Privacy Extended (Legacy) | privacy_ext | `privacy_extended.mmdb` | | ASN Database | asn | `asn.mmdb` | | IP to Company | company | `standard_company.mmdb` | | IP to Carrier | carrier | `carrier.mmdb` | | Hosted Domains | domains | `standard_ip_hosted_domains.mmdb` | | Abuse Contact | abuse | `standard_abuse.mmdb` | | IP to Country ASN Database (Free) | country_asn | `free_country_asn.mmdb` | | IP to Residential Proxy (30 Day) | resproxy_30d | `resproxy_30d.mmdb` | | IP to Residential Proxy (7 Day) | resproxy_7d | `resproxy_7d.mmdb` | All the IP databases can be downloaded on a daily, weekly, or monthly schedule. ### Field Reference For reference, here are all available fields organized by data type: | Data Type | Fields Included | |--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Lite Bundle | ip, asn, as_name, as_domain, country_code, country, continent_code, continent | | Core Bundle | ip, city, region, region_code, country, country_code, continent, continent_code, latitude, longitude, timezone, postal_code, asn, as_name, as_domain, as_type, is_anonymous, is_anycast, is_hosting, is_mobile, is_satellite | | Plus Bundle | ip, city, region, region_code, country, country_code, continent, continent_code, latitude, longitude, timezone, postal_code, dma_code, geoname_id, radius, geo_changed, asn, as_name, as_domain, as_type, as_changed, carrier_name, mcc, mnc, is_anonymous, is_anycast, is_hosting, is_mobile, is_satellite, is_proxy, is_relay, is_tor, is_vpn, privacy_name | | Location | ip, city, country, lat, lon, postal, region, region_code, timezone, geoname_id | | Location Extended | ip, city, country, country_name, lat, lon, postal, radius, region, region_code, timezone, geoname_id | | Location Extended Labels | ip, city, city_confidence, country, country_confidence, country_name, lat, lon, postal, radius, region, region_confidence, region_code, timezone, geoname_id | | Location Aggregated | ip, city, country, lat, lon, postal, region, region_code, timezone, geoname_id | | ASN | asn_asn, asn_name, asn_domain, asn_route, asn_type | | Company | company_name, company_domain, company_type | | Carrier | carrier_name, carrier_mcc, carrier_mnc, carrier_cc, carrier_network | | Privacy | vpn, proxy, tor, hosting, relay, service | | Privacy Extended (Legacy) | anycast, census, census_port, device_activity, hosting, network, proxy, relay, tor, vpn, vpn_config, vpn_name, whois | | Privacy Extended | vpn, proxy, tor, relay, hosting, service, confidence, coverage, census, census_ports, device_activity, inferred, vpn_config, whois, first_seen, last_seen | | Domains | total_domains, domains | | Abuse | abuse_address, abuse_country, abuse_name, abuse_email, abuse_network, abuse_phone | | Country ASN | country_asn_domain, country_asn_name, country_asn_asn, country_continent, country_continent_name, country_country, country_country_name | | Residential Proxy | resproxy_last_seen, resproxy_percent_days_seen, resproxy_service | Now you have selected the IP databases that you will work with on Splunk. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step3.png) 3. After completing the setup, initiate the database with a forced refresh. After the forced refresh, the database will be updated automatically on the update cadence you have selected. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step4.png) You can check the overview page to see if your downloads have been completed. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step5.png) > Note that we generally recommend setting up the Splunk app using the IP database downloads, as with this configuration you can have access to both the database downloads and API service. However, if you set up the app with the API configuration, you only have access to the API data. > Note: MMDB is downloaded in `/lookups` section of app directory (Full Path: `$SPLUNK_HOME/etc/apps/ipinfo_app/lookups/`). And does not overwrite splunk’s default MMDB. ## Splunk Integration: API Service > Please note that the app currently does not support the updated API system (`api.ipinfo.io`). The app relies on the legacy API (`ipinfo.io`). If you want to use our updated API system (Lite, Core, Plus, etc.) in Splunk, let the IPinfo team know. To use our API service, make sure to check the "API" field. ![IPinfo Splunkbase App API Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_api_step1.png) You can set up the proxy settings if you want as well. > Please note that in the search operation, you can use the API service even when the app is set for IP database downloads by using the `restapi` parameter set to `true`. However, you can only use the IP database downloads for lookups when the app is not set up for the API. It is recommended that you set the app for database downloads only and use the API service through the `restapi` parameter set to `true`. ## Splunk Integration: App Overview The IPinfo Splunk App includes functionality and information across several tabs. They are described below. **Overview** High-level overview of the IPinfo Splunk App. Contains usage metrics across the API service, IP database, and the MMDB status section, which shows which MMDBs are available to be used along with timestamp and size metadata information. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_information1.png) **IPinfo** The single IP lookup interface section can be used to look up IP addresses against the API or IP database downloads. The location information is utilized to present map details. Also, you have the option to export the IP data enrichment as a PDF or print it. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step6.png) **Search** The search functionality allows you to use the Splunk Search Processing Language (SPL) syntax to enrich IP addresses using the `ipinfo` command. A detailed overview of this section is provided in the Usage section. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step7.png) **Log Status** Shows operational activity. This could be related to file downloads, errors, and other log information. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_information.png) **Refresh** This section is used for hard forced refresh of IP database downloads ahead of the regularly scheduled update time. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_information2.png) **Documentation** The documentation section redirects the user to the IPinfo Splunk full documentation guide. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_information3.png) ## Splunk Integration: Usage After the setup is complete, you can begin looking up some IP addresses. Go to the "IPinfo" tab and look up an IP address. You will receive the information available from the IP databases you have set up. ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step6.png) The location information comes from your API subscription (if you have set up the API) or the `standard_location.mmdb` file (if you have set up the database download), and the other information comes from the other databases you have set up or the API data you have access to. For example, on the API setup, this is what the overview page looks like if you are on the IPinfo Business plan that gives you access to location, ASN, company, carrier, domains, privacy, and abuse data. On the IP database setup, this is what the overview page looks like if you have access to the IP to location, IP to Country ASN, and IP to Privacy Database. Note that the other database sections like company, carrier, etc. have `N/A` as their values as we have not set up those databases. Aside from singular IP lookups from the IPinfo tab, you can use the full search functionality available in Splunk. You can perform log enrichment and more, as well as real-time IP enrichment with the available database. The Splunk app uses binary MMDB files, so lookups are extremely fast. And since you are using an offline database, there are no request limits or usage limits. > The search tab fully supports Splunk Search Processing Language (SPL) syntax. You can use it to perform IP address extraction, filtering, IP metadata analysis, aggregation, etc. Instructions related to SPL have been skipped in this documentation. ### IPinfo Command Parameters The `ipinfo` command accepts the following parameters. All boolean parameters default to `false` unless specified: | Option | Type | Default | Description | |--------------------|----------|---------|--------------------------------------------------| | prefix | bool/list | false | Prefix output fields with input column name. If set to `true`, fields are prefixed with the input column name. If a list is provided, it must match the number of IP inputs (e.g., for `ipinfo IP1 IP2`, use `prefix=first_,second_` to prefix results for each IP respectively). | | restapi | bool | false | Force REST API lookup (even when MMDB is configured) | | privacy | bool | false | Include privacy fields | | asn | bool | false | Include ASN fields | | company | bool | false | Include company fields | | abuse | bool | false | Include abuse fields | | domains | bool | false | Include domains fields | | carrier | bool | false | Include carrier fields | | country_asn | bool | false | Include country ASN fields (MMDB only) | | resproxy | bool | false | Include residential proxy fields | | alltypes | bool | false | Include all field types available | | resproxy_lookback | 7/30 | 30 | Lookback window for resproxy MMDB (7, or 30 days) | **Notes:** - If you do not specify any data parameter, the default response will be IP to Location data. - `country_asn` is only available in IP database download setup. - `restapi=true` uses the API endpoint with your database download access token. - `alltypes=true` returns all information available across all database downloads or API accesses. > You can add two or more flags in a single search query. To keep things simple, we can perform dummy lookups using random IP addresses (`random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, IP='IP1'.".".'IP2'.".".'IP3'.".".'IP4'`). In real-world applications, you will pass your IP addresses from web traffic logs here. Please remember that location information is our default response. Simply use the 'ipinfo' command to retrieve location information for the IP addresses being looked up. **`ipinfo `**: Single IP address lookup. ```bash | makeresults | eval IP="1.0.178.0" | ipinfo IP ``` ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step10.png) **`ipinfo `**: Multiple rows (2000) of singular IP address lookup. ```bash | makeresults count=2000 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, IP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time IP | ipinfo IP ``` ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step7.png) **`ipinfo `**: Multiple rows (100) of multiple (`SRCIP`, `DESTIP`) IP address lookup. ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, DESTIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP DESTIP | ipinfo SRCIP DESTIP ``` ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step8.png) **`ipinfo prefix=true `**: The `prefix=true` can be thought of as an input column name addition. When you add `prefix=true` before each column, your input parameter column name will be added. If you are looking up singular IP addresses, you will get `city`, `region`, etc., and with `prefix=true` and your column name being `SRCIP`, it will become `SRCIP_city`, `SRCIP_region`, etc. Note that if you are looking up multiple columns of IP addresses (`ipinfo SRCIP DESTIP`), the prefix is automatically set to `true`. ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo prefix=true SRCIP ``` ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step9.png) ### Alternative Search Commands In addition to the main `ipinfo` command with parameters, the app also provides dedicated search commands for specific use cases: - **`ipinfolite`** - Look up IP addresses using the Lite database/API - **`ipinfocore`** - Look up IP addresses using the Core database/API - **`ipinfoplus`** - Look up IP addresses using the Plus database/API - **`ipinforesproxy`** - Look up residential proxy data via MMDB or REST API These commands can be used as alternatives to the `ipinfo` command with parameters. For example: ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfocore SRCIP ``` ### Using Parameters with Main ipinfo Command For most use cases, we recommend using the main `ipinfo` command with parameters. The following example looks up IP to Company data from the API service: ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo SRCIP company=true ``` ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step11.png) You can even combine multiple different IP metadata parameters. For example, here we are looking up both ASN information and IP to Abuse Contact information simultaneously (`asn=true abuse=true`) from the API service: ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo SRCIP asn=true abuse=true ``` **`ipinfo alltypes=true`**: Returns all the information that your access token has access to. If you have set up the API, it will return all the information you have access to. ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo SRCIP alltypes=true ``` ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step13.gif) If you have set up the IP database downloads, it will use the available database downloads. In this example, the location, privacy, and country databases are configured. ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo SRCIP alltypes=true ``` ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_information13.gif) **`ipinfo restapi=true`**: When you have set up the IP database downloads you can still get the API response by setting `restapi=true`. This will use the access token you have used to download the IP address database. ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo SRCIP restapi=true ``` By setting `restapi=true`, your search operation will only look up the IP address using the API. It will not use the database downloads for the lookup, not even for the location lookup. For example, setting `country_asn=true` will not work when `restapi=true`. However, if you do not have access to a certain database but you have access to certain IP metadata through the API, you can look them up. For example, in this setup, I do not have access to download the IP to Company database, but I have access to the IP to Company API service. This means by setting `restapi=true` and `company=true`, we can get the IP to Company data from the API. ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo SRCIP restapi=true company=true ``` ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step14.png) Even though you have set the app for IP database downloads, by using `restapi=true`, you can also get all the data from the API service using the `alltypes=true` function parameter. ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo SRCIP restapi=true alltypes=true ``` ![IPinfo Splunkbase App Download](https://website-cdn.assets.ipinfo.io/images/developers/splunk_app_db_step15.gif) **`ipinfo resproxy=true`**: Look up residential proxy detection data for IP addresses. ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo SRCIP resproxy=true ``` This will return fields like `resproxy_last_seen`, `resproxy_percent_days_seen`, and `resproxy_service` for each IP address. **`ipinfo resproxy=true resproxy_lookback=7`**: Use a specific lookback window (7 or 30 days) for residential proxy data. If you are using the default resproxy database, there is no need to set the `resproxy_lookback` parameter. ```bash | makeresults count=100 | eval IP1=random()%192, IP2=random()%210, IP3=random()%230, IP4=random()%192, SRCIP='IP1'.".".'IP2'.".".'IP3'.".".'IP4' | table _time SRCIP | ipinfo SRCIP resproxy=true resproxy_lookback=7 ``` ### Replication of Database The IPinfo Splunk App uses MMDB files to perform IP address lookups. In distributed Splunk environments—such as **Search Head Clusters (SHCs)** and **Indexer Clusters**—you must decide how and where these MMDB files are downloaded and replicated. The following settings control how the files are distributed and how lookups are executed across the cluster: - Replicate on search heads — determines how MMDB files are shared within a Search Head Cluster. - Replicate database to indexers — determines whether MMDB files should be sent to indexers so they can perform IPinfo lookups during search streaming, improving search performance. These options affect download behavior, cluster bandwidth, search speed, and bundle size. **Replicate on Search Heads** This setting decides how MMDB files are shared among search heads in a Search Head Cluster. - Internally: Use this option when you want only one Search Head to download the MMDB files from IPinfo.io. Splunk will then replicate these files to all other search heads in the cluster. - Reduces the number of external downloads - Can be slower overall because the primary SH must copy the MMDB to every peer - Externally: Use this option when you want each Search Head to download its own MMDB files directly from IPinfo.io. - Faster because no inter-SH replication happens - Uses more outbound bandwidth because each SH downloads the file independently **Replicate Database to Indexers** This setting determines whether MMDB files are included in the knowledge bundle that gets replicated to indexers. - When set to “Yes” - The MMDB files are distributed to indexers in the cluster - Enables a modified lookup mode so IPinfo lookups run in streaming mode, which can significantly improve search performance - Increases the size of the knowledge bundle that search heads push to indexers Enable this if: - You are running the IPinfo app on a Search Head Cluster, and - You have an Indexer Cluster, and - You want indexers to perform lookups as part of distributed search (for speed) **Replication Issues** Large MMDB files can cause replication problems in distributed Splunk environments. When either of the following settings is enabled: - Replicate on search heads = Internally - Replicate database to indexers = Yes The MMDB files must be included in the knowledge bundle that Splunk replicates across the cluster. This can become an issue when using large MMDB packages—such as the Plus Bundle (approximately 4.45 GB)—because the bundle may exceed Splunk’s default size limits. Symptoms - Bundle replication failures - Search head cluster members falling out of sync - Indexers rejecting knowledge bundle pushes You can address replication failures in one of two ways: - Increase the `maxBundleSize` setting: Splunk limits knowledge bundle size to 2 GB by default. You can raise this limit by modifying the `maxBundleSize` parameter in the `replicationSettings` stanza. (Refer to the [official Splunk documentation](https://help.splunk.com/en/data-management/splunk-enterprise-admin-manual/9.4/configuration-file-reference/9.4.5-configuration-file-reference/distsearch.conf) for the exact stanza and configuration path.) - Switch "Replicate on search heads" to "Externally": This avoids adding the MMDB files to the replication bundle because each search head will download the database directly from IPinfo.io, bypassing the need for SH-to-SH replication. ## Common Issues and Solutions ### Network and Firewall Requirements The IPinfo Splunk App requires outbound HTTPS (`TCP/443`) access from the Splunk server to the following hosts: - `ipinfo.io` — Endpoint that authorizes the download request and issues a redirect - `api.ipinfo.io` — API endpoint used for REST API lookups - `dl.ipinfo.io` — CDN host that serves MMDB files for Splunk integration downloads today - `storage.googleapis.com` — origin backing `dl.ipinfo.io`; some firewalls, TLS-inspecting proxies, and deep packet inspection appliances need this allowed in addition to `dl.ipinfo.io` - `dl.assets.ipinfo.io` — Cloudflare R2 CDN used for IPinfo database downloads generally; the Splunk integration is currently routed to `dl.ipinfo.io` instead, but allowlisting this host ensures downloads continue to work if the routing changes The MMDB download flow involves two hops: the app first hits `ipinfo.io/data/`, which returns an HTTP `302` redirect to a short-lived signed URL on a CDN host. The app then follows the redirect and downloads the file from the CDN. Both hops must succeed — a firewall that allows `ipinfo.io` but blocks the CDN host will cause downloads to fail with `Connection reset by peer`, `SSL: CERTIFICATE_VERIFY_FAILED`, or silent timeouts. Allowlist all five hosts even if you are using the MMDB-only setup without REST API lookups — outbound access is still required for the initial database download and scheduled updates. If your organization uses an SSL-intercepting proxy or TLS inspection, you may need to configure the app's `ca_cert_path` setting with your organization's CA certificate to avoid SSL verification errors. Verify that your proxy settings are correct if using the app's built-in proxy support. See the Proxy Settings and SSL/TLS Settings sections in the Configuration Reference for details. Check the Log Status dashboard for specific SSL or connection error messages. For a deeper walkthrough of the redirect flow, signed URL behavior, and client requirements, see [How IPinfo Delivers Database Downloads](https://community.ipinfo.io/t/how-ipinfo-delivers-database-downloads/7270) on our community. ### Permission Errors on API Lookups or Manual Refresh The IPinfo Splunk App stores the API token and proxy password in Splunk's credential store (`storage/passwords`). By default, only users with the `admin_all_objects` capability can access these credentials. For non-admin users to perform operations that require the API token (such as REST API lookups, manual MMDB refresh, or any command with `restapi=true`), a Splunk admin must grant the `list_storage_passwords` capability to the appropriate role. - Local MMDB queries and automatic scheduled MMDB downloads are not affected - The `list_storage_passwords` capability grants access to credentials across Splunk by default. Admins can restrict this using Splunk's RBAC controls in `metadata/local.meta` to limit access to only the IPinfo app's credentials. See Splunk's [secret storage access control documentation](https://dev.splunk.com/enterprise/docs/developapps/manageknowledge/secretstorage/secretstoragerbac/) for details ### MMDB Files Not Found - Check the Log Status dashboard for download errors - Use the Manual Refresh dashboard to force a refresh - Verify your API token has permissions to download that MMDB file - Ensure the scheduled searches are enabled ### API Token Issues - Ensure the token is correctly set in the app configuration - Verify the token has access to the required data products - Check that the token hasn't expired or been revoked - Review the Log Status dashboard for authentication errors ### Version Compatibility - Ensure Splunk version is 9.x or 10.x - Check that all search heads in a cluster are running the same app version **SSL Certificate Verification Errors** - The most common cause is a corporate firewall or SSL-intercepting proxy that replaces certificates with its own. Configure the app's `ca_cert_path` setting with your organization's root CA certificate - MMDB downloads go through `dl.ipinfo.io`, which is backed by `storage.googleapis.com`. Ensure both hosts are allowlisted in your firewall alongside `ipinfo.io` - If you see `CERTIFICATE_VERIFY_FAILED: self signed certificate in certificate chain`, this typically indicates TLS inspection is active on your network - To diagnose, run the following from the Splunk host and check which hops fail: - ``` openssl s_client -connect ipinfo.io:443 -servername ipinfo.io openssl s_client -connect dl.ipinfo.io:443 -servername dl.ipinfo.io openssl s_client -connect storage.googleapis.com:443 -servername storage.googleapis.com ``` **MMDB Downloads Failing with HTTP 401** - The app downloads MMDBs through `ipinfo.io/data/*`, which returns a 302 redirect to a pre-signed URL on `dl.ipinfo.io` (backed by `storage.googleapis.com`). If your environment forwards the `Authorization` header to the redirect destination, the download will fail with a 401 because the CDN validates the `Authorization` header before checking the signed URL parameters - This has been resolved in app version 9.1.0 and later. Ensure you are running the latest version of the app from Splunkbase ### Splunk Enterprise Security Compatibility - Splunk Enterprise Security enforces SSL on internal REST endpoints. If MMDB downloads fail in an ES environment but work on a standalone instance, ensure you are running app version 9.2.0 or later, which uses the Splunk Python SDK for internal REST calls - Check the Log Status dashboard and `$SPLUNK_HOME/var/log/splunk/ipinfo/` for specific error details ### Large MMDB File Size on Splunk Cloud - Splunk Cloud has a 3 GB knowledge bundle size limit and an approximate 5 GB lookup file size limit - Large MMDB files such as the Plus Bundle (~4.45 GB) or Residential Proxy MMDB may exceed the bundle replication limit - The IPinfo app downloads MMDB files locally on the node performing the download at: **`$SPLUNK_HOME/etc/apps/ipinfo_app/lookups/.mmdb`** - Set "Replicate on search heads" to "Externally" so each search head downloads directly from IPinfo, bypassing the bundle size constraint - On Splunk Enterprise, you can alternatively increase the `maxBundleSize` setting. ### Proxy Connection Issues - Verify proxy host, port, and credentials are correct - Check that proxy type (HTTP/SOCKS) matches your proxy server - Test connectivity from the Splunk server directly: `curl -x http://: https://ipinfo.io/data/free_country_asn.mmdb -I` - Review logs for specific proxy error messages ### Configuration Errors on Windows - On some Windows machines, the `ip_info_setup.conf` file may be saved with a UTF-8 BOM (Byte Order Mark), causing a `MissingSectionHeaderError` in the logs - To fix this, open the file at `$SPLUNK_HOME\etc\apps\ipinfo_app\local\ip_info_setup.conf` in a text editor and convert it to "UTF-8 without BOM" ## Configuration Reference For advanced users, here are the key configuration parameters available in the IPinfo Splunk App. These can be configured through the app setup UI or by editing `ip_info_setup.conf`: ### General Settings | Parameter | Default | Description | |-------------------------|--------------|----------------------------------------------| | method | RESTAPI | Lookup method: RESTAPI or MMDB | | token | (empty) | IPinfo API token | ### Proxy Settings | Parameter | Default | Description | |-------------------------|--------------|----------------------------------------------| | proxy_enable | No | Enable proxy (Yes/No) | | proxy_type | HTTP | Proxy type (HTTP/SOCKS) | | proxy_host | (empty) | Proxy host | | proxy_port | (empty) | Proxy port | | proxy_username | (empty) | Proxy username | | proxy_password | (empty) | Proxy password (stored securely) | ### SSL/TLS Settings |-------------------------|--------------|----------------------------------------------| | ca_cert_path | (empty) | Custom CA certificate path for SSL verification | ### MMDB Settings Each database has corresponding enable/interval settings: | Parameter Pattern | Example | Description | |-------------------------|--------------|----------------------------------------------| | `_mmdb_enable` | lite_mmdb_enable = false | Enable specific MMDB download | | `_mmdb_interval` | lite_mmdb_interval = Daily | Update interval (Daily/Weekly/Monthly) | ### Cluster Replication Settings | Parameter | Default | Description | |-------------------------|--------------|----------------------------------------------| | replicate_lookup | No | Replicate lookups in distributed environment | | shc_replication | Externally | Search Head Cluster replication mode (Internally/Externally) | **Note:** Configuration changes may require a Splunk restart or app reload to take effect. In Search Head Clusters, ensure all members have consistent configuration. ### Saved Searches (MMDB Auto-Updates) The app creates saved searches for automatic MMDB updates. These are disabled by default and can be enabled from the app setup: | Name | Search Command Example | |-----------------------------------|------------------------------------------------| | MMDB lite Update | `\| mmdbdownload MMDB="ipinfo_lite"` | | MMDB core Update | `\| mmdbdownload MMDB="ipinfo_core"` | | MMDB plus Update | `\| mmdbdownload MMDB="ipinfo_plus"` | | MMDB iplocation Update | `\| mmdbdownload MMDB="iplocation"` | | MMDB iplocation_ext Update | `\| mmdbdownload MMDB="iplocation_ext"` | | MMDB iplocation_ext_labels Update | `\| mmdbdownload MMDB="iplocation_ext_labels"` | | MMDB asn Update | `\| mmdbdownload MMDB="asn"` | | MMDB privacy Update | `\| mmdbdownload MMDB="privacy"` | | MMDB privacy_ext Update | `\| mmdbdownload MMDB="privacy_ext"` | | MMDB privacy_extended Update | `\| mmdbdownload MMDB="privacy_extended"` | | MMDB company Update | `\| mmdbdownload MMDB="company"` | | MMDB carrier Update | `\| mmdbdownload MMDB="carrier"` | | MMDB domains Update | `\| mmdbdownload MMDB="domains"` | | MMDB abuse Update | `\| mmdbdownload MMDB="abuse"` | | MMDB country_asn Update | `\| mmdbdownload MMDB="country_asn"` | | MMDB resproxy_7d Update | `\| mmdbdownload MMDB="resproxy_7d"` | | MMDB resproxy_30d Update | `\| mmdbdownload MMDB="resproxy_30d"` | The default schedule is Daily (1:01 AM) and can be customized to Daily, Weekly, or Monthly based on your requirements. --- We welcome your feedback, and if you have any feature requests or need support using the IPinfo Splunk app, please create a post in our [IPinfo Community](https://community.ipinfo.io/) or contact support@ipinfo.io. ================================================================================ PAGE: IPinfo on Google Cloud Platform - BigQuery URL: https://ipinfo.io/developers/gcp-integration SLUG: gcp-integration DESCRIPTION: Integrate IPinfo databases with Google BigQuery for large-scale IP data analysis and enrichment. ================================================================================ # IPinfo on Google Cloud Platform This document explores how to use our IP database within the Google Cloud Platform (GCP)'s data warehouse platform, BigQuery, delivered through Google Marketplace. ![GCP Analytics Hub to BQ](https://cdn.assets.ipinfo.io/static/images/docs/gcp/gcp_marketplace_to_bq.png) ## IPinfo Datasets available on Google Cloud Platform The GCP integration allows our users to access the following features: - **Automatic loading into BigQuery**: No need for custom scripts; data is automatically loaded into BigQuery. - **Built-in metadata**: Tracks updates and ensures data freshness. - **Efficient query functions**: Ready-to-use, highly optimized query functions with clear documentation. - **Centralized data**: Simplifies IP data enrichment across other datasets and logs in BigQuery. > Just like our [Cloud Data Push](/developers/database-download#cloud-data-delivery) and [Snowflake datasets](/developers/snowflake), we keep your GCP IP datasets in your BigQuery environment up to date with regular updates — you don’t need to do anything after the initial subscription. The data you query on your BQ environment is the latest data we have! ## Available Datasets We offer our [IPinfo Lite database](https://console.cloud.google.com/bigquery/analytics-hub/exchanges/projects/ipinfo-public/locations/us/dataExchanges/ipinfo_lite_us_196bb97f14c/listings/ipinfo_lite_196bbbe9d39?inv=1&invt=Ab1mYA) through the Google Cloud Analytics Hub platform, but for our premium databases like [IPinto Core](https://console.cloud.google.com/marketplace/product/ipinfo-public/cloud-marketplace-2ed5feaf-4295-4205-bb6a-e33513e13f0e.cloudpartnerservices.goog?hl=en&inv=1&invt=Ab1mSQ), [IPinfo Plus](https://console.cloud.google.com/marketplace/product/ipinfo-public/cloud-marketplace-7b9427b4-5c01-4cee-b100-825f7a382bf7.cloudpartnerservices.goog?hl=en&inv=1&invt=Ab1mSQ), and [any custom IP databases](https://console.cloud.google.com/marketplace/product/ipinfo-public/ipinfo-ip-address-geolocation-and-intelligence-database?hl=en&inv=1&invt=Ab1mSQ), we offer them through the [Google Cloud Marketplace](https://console.cloud.google.com/marketplace/browse?hl=en&inv=1&invt=Ab1mSQ&q=IPinfo). Getting started only takes a click of a button. | IP Database | Region | Access | Features | | --- | --- | --- | --- | | **IPinfo Lite** | [US / Default](https://console.cloud.google.com/bigquery/analytics-hub/exchanges/projects/ipinfo-public/locations/us/dataExchanges/ipinfo_lite_us_196bb97f14c/listings/ipinfo_lite_196bbbe9d39) | Self Serve – Free | Accurate country and ASN info for free—no fees, no credit card, and unlimited usage. | | EU Keep your IPinfo token secure. You will enter it as a parameter during connector deployment. Do not share it in logs or source control. ### Required Parameters You will need the following values during deployment: | Parameter | Where to Find It | Description | |---------------|----------------------------------------------------------------------|-------------------------------------------------------| | RESOURCE_ID | Azure Portal > Log Analytics Workspace > Properties | Full resource ID of your Log Analytics Workspace | | TENANT_ID | Azure Portal > Microsoft Entra ID > Overview | Your Azure AD / Entra ID tenant ID | | CLIENT_ID | Azure Portal > App Registrations > Your App > Overview | Application (client) ID of your registered app | | CLIENT_SECRET | Azure Portal > App Registrations > Your App > Certificates & Secrets | Client secret value (copy immediately after creation) | | IPINFO_TOKEN | IPinfo Dashboard > Token | Your IPinfo token | ### Register an App in Microsoft Entra ID An App Registration is required so that the Azure Function can authenticate and write data to your workspace. 1. In the Azure Portal, go to Microsoft Entra ID > App registrations > New registration. 2. Enter a name (e.g., IPinfo-Sentinel-Connector) and select Single tenant. 3. Click Register. Copy the Application (client) ID and Directory (tenant) ID. 4. Go to Certificates & secrets > New client secret. Set an expiry and click Add. 5. Copy the secret Value immediately (it will not be shown again). 6. Go to Subscriptions and select your subscription > Access control (IAM) > Add role assignment. 7. Assign the Log Analytics Contributor, Monitoring Contributor, and Monitoring Metrics Publisher roles. > Each of the 3 roles is required for the Azure Function to write data via the Azure Monitor Ingestion API. Without these roles, data ingestion will fail with a 403 Forbidden error. ## Creating a Log Analytics Workspace A Log Analytics Workspace (LAW) is the central data store that Microsoft Sentinel uses. If you already have a workspace with Sentinel enabled, you can skip to [Onboarding the Workspace to Microsoft Sentinel](#onboarding-the-workspace-to-microsoft-sentinel). ### Steps to Create a Workspace 1. Sign in to the Azure Portal (https://portal.azure.com). 2. In the search bar at the top, type Log Analytics workspaces and select it. 3. Click + Create. 4. Select your Subscription and Resource Group (or create a new one). 5. Enter a Name for the workspace (e.g., ipinfo-sentinel-law). 6. Select a Region close to your operations for optimal performance. 7. Leave the Pricing tier as the default (Pay-As-You-Go) unless you have a commitment tier. 8. Click Review + Create, then click Create. > Choose the same region for all resources (workspace, Function App, etc.) to minimize latency and cross-region data transfer costs. ### Note the Workspace Resource ID After the workspace is created, you need its Resource ID for connector deployment: 1. Open the workspace in the Azure Portal. 2. Go to Settings > Properties. 3. Copy the Resource ID. It will look like: `/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.OperationalInsights/workspaces/{ws-name}` ## Onboarding the Workspace to Microsoft Sentinel Microsoft Sentinel must be enabled on your Log Analytics Workspace before connectors can ingest data. ### Enable Microsoft Sentinel 1. In the Azure Portal, search for Microsoft Sentinel and select it. 2. Click + Create (or + Add if you see existing workspaces). 3. Select the Log Analytics Workspace you created in [Creating a Log Analytics Workspace](#creating-a-log-analytics-workspace). 4. Click Add. Sentinel will be enabled on the workspace. This process takes a few moments. Once complete, you will see the Sentinel Overview dashboard for your workspace. > Enabling Sentinel is free; you only pay for data ingestion and retention. The IPinfo connectors ingest data into custom tables, which are billed at Log Analytics ingestion rates. ## Installing the IPinfo Solution from Content Hub The IPinfo solution packages all data connectors, workbooks, and analytics rules into a single deployable solution available in Microsoft Sentinel Content Hub. ### Find and Install the Solution 1. In Microsoft Sentinel, go to Content Hub (under Content management in the left menu). 2. In the search bar, type IPinfo. 3. Locate the IPinfo solution and click on it to open the details pane. 4. Click Install. 5. Select your Subscription, Resource Group, and Workspace. 6. Review the terms and click Create / Install. The installation deploys the connector definitions and any associated content (workbooks, hunting queries, etc.) into your Sentinel workspace. After installation, the data connectors will appear under the Data connectors page. > Installing the solution only registers the connectors in Sentinel. You still need to deploy each connector ([Deploying the Data Connectors](#deploying-the-data-connectors)) for data to start flowing. ## Deploying the Data Connectors Each IPinfo connector runs as an Azure Function App. Deployment is done through the connector page in Sentinel using an ARM template. ### Deploy a Connector 1. In Microsoft Sentinel, go to Data connectors (under Configuration). 2. Find the IPinfo connector you want to deploy (e.g., IPinfo ASN) and click the Open connector page. 3. On the connector page, scroll to the Configuration section. 4. Click the Deploy to Azure button. This opens the ARM template deployment in a new tab. 5. Fill in the required parameters: | Parameter | Value | |---------------|--------------------------------------------------------| | RESOURCE_ID | The full Resource ID of your Log Analytics Workspace | | Function Name | The name of the Azure Function App | | TENANT_ID | Your Microsoft Entra ID Tenant ID | | CLIENT_ID | The Application (client) ID from your App Registration | | CLIENT_SECRET | The client secret value from your App Registration | | IPINFO_TOKEN | Your IPinfo token | 6. Click Review + Create, then Create to start the deployment. 7. Wait for the deployment to complete (typically 2 to 5 minutes). ### What Gets Deployed Each connector deployment creates the following Azure resources: - Azure Function App (Elastic Premium EP2 plan) running Python 3.11 - Storage Account for Function App state - Data Collection Rule (DCR) for ingesting data into the custom table - Data Collection Endpoint (DCE) for the Azure Monitor Ingestion API - Application Insights for monitoring ### Repeat for Additional Connectors Repeat the steps above for each IPinfo connector you want to deploy. Each connector is independent and can be deployed, updated, or removed individually. > Each Function App incurs compute costs. During initial testing, deploy and test one connector at a time to minimize costs. You can disable or delete Function Apps you are not actively using. ## Verifying Deployment & Function App Logs After deployment, verify that the Azure Function is running correctly and processing data. ### Check the Function App Status 1. In the Azure Portal, navigate to Function Apps. 2. Find the Function App created by the connector deployment (it will be named based on the connector, e.g., ipinfo-asn-func-app). 3. On the Overview page, verify the Status shows `Running`. 4. Check the Functions section in the left menu. You should see the timer-triggered function listed. ### Trigger a Manual Execution Rather than waiting for the next scheduled run, trigger the function immediately: 1. In the Function App, go to Functions in the left menu. 2. Click on the timer-triggered function. 3. Click Code + Test → Test/Run → Run. ### View Function Execution Logs There are two ways to view logs from the Function App. #### Method 1: Log Stream (Real-time) 1. Open your Function App in the Azure Portal. 2. In the left menu, go to Monitoring > Log stream. 3. Select App Insights Logs or Filesystem Logs from the dropdown. 4. You will see real-time log output from the function, including execution status, data download progress, and ingestion results. #### Method 2: Application Insights For historical logs and deeper analysis: 1. Open the Application Insights resource linked to your Function App. 2. Go to Monitoring > Logs. 3. Run the following Kusto query to see recent function executions: KQL Query: Function App Traces ```kql traces | where timestamp > ago(24h) | where operation_Name contains "ipinfo" | order by timestamp desc | take 50 ``` ### Common Log Messages | Log Message | Meaning | |---------------------------------|-----------------------------------------------------------------------| | Function started | The timer trigger fired and the function began execution | | Downloading dataset... | The function is downloading the IPinfo dataset | | Ingesting data to workspace... | Data is being sent to your workspace via the DCR | | Function completed successfully | All data was ingested without errors | | HTTP 403 Forbidden | The App Registration is missing the Monitoring Metrics Publisher role | | HTTP 401 Unauthorized | Invalid or expired CLIENT_SECRET or IPINFO_TOKEN | ## Viewing Ingested Data in Log Analytics Once the connector has run successfully, data will appear in custom tables in your Log Analytics Workspace. ### Navigate to Logs 1. In the Azure Portal, open your Log Analytics Workspace. 2. In the left menu, click Logs (under General). 3. The query editor will open. You can run KQL (Kusto Query Language) queries here. ### Find IPinfo Tables IPinfo data is stored in custom tables. You can find them in the Tables section on the left side of the Logs editor, under the Custom Logs category. The tables follow the naming convention shown below: All tables include `TimeGenerated` (datetime) and `TenantId` (guid) columns added automatically by Log Analytics. | Connector | Table Name | Fields | |-----------|-----------|--------| | IPinfo Core | `Ipinfo_CORE_CL` | ip_range, city, region, region_code, country, country_code, continent, continent_code, latitude, longitude, timezone, postal_code, asn, as_name, as_domain, as_type, is_anonymous, is_anycast, is_hosting, is_mobile, is_satellite | | IPinfo Plus | `Ipinfo_PLUS_CL` | ip_range, city, region, region_code, country, country_code, continent, continent_code, latitude, longitude, timezone, postal_code, geoname_id, radius, asn, as_name, as_domain, as_type, as_changed, geo_changed, is_anonymous, is_anycast, is_hosting, is_mobile, is_satellite, is_proxy, is_relay, is_tor, is_vpn | | IPinfo ASN | `Ipinfo_ASN_CL` | asn, name, domain, route, asn_type, ip_range | | IPinfo Abuse | `Ipinfo_Abuse_CL` | name, email, address, country, phone, network, ip_range | | IPinfo Company | `Ipinfo_Company_CL` | as_domain, as_name, as_type, asn, country, company_domain, company_name, company_type, ip_range | | IPinfo Country ASN | `Ipinfo_Country_CL` | as_domain, as_name, asn, continent, continent_name, country, country_name, ip_range | | IPinfo Domain | `Ipinfo_Domain_CL` | domains, total, ip_range | | IPinfo Privacy | `Ipinfo_Privacy_CL` | hosting, proxy, relay, service, tor, vpn, ip_range | | IPinfo Privacy Extended | `Ipinfo_Privacy_extended_CL` | anycast, census, census_port, device_activity, hosting, network, proxy, relay, tor, vpn, vpn_config, vpn_name, whois, ip_range | | IPinfo Carrier | `Ipinfo_Carrier_CL` | carrier, mcc, mnc, cc, network, ip_range | | IPinfo IP Location | `Ipinfo_Location_CL` | city, country, geoname_id, lat, lng, postal_code, region, region_code, timezone, ip_range | | IPinfo IP Location Extended | `Ipinfo_Location_extended_CL` | city, country, country_name, latitude, longitude, postal_code, radius, region_name, region, timezone, geoname_id, ip_range | | IPinfo ResProxy | `Ipinfo_RESIDENTIAL_PROXY_CL` | ip, service, last_seen, percent_days_seen | | IPinfo RIRWHOIS | `Ipinfo_RIRWHOIS_CL` | ip_range, whois_id, name, country, status, tech, maintainer, admin, source, whois_domain, updated, org, rdns_domain, domain, geoloc, org_address, asn, as_name, as_domain, as_type | | IPinfo RWHOIS | `Ipinfo_RWHOIS_CL` | ip_range, whois_id, name, whois_desc, host, country, email, abuse, domain, city, street, postal, updated, imported | | IPinfo WHOIS ASN | `Ipinfo_WHOIS_ASN_CL` | whois_id, name, country, org_id, created, updated, source | | IPinfo WHOIS MNT | `Ipinfo_WHOIS_MNT_CL` | whois_id, name, admin_id, tech_id, org_id, created, updated, source | | IPinfo WHOIS NET | `Ipinfo_WHOIS_NET_CL` | ip_range, whois_id, name, country, domain, org_id, status, tech_id, mnt_id, admin_id, abuse_id, created, updated, source | | IPinfo WHOIS ORG | `Ipinfo_WHOIS_ORG_CL` | whois_id, name, address, street, city, state, postalcode, country, admin_id, tech_id, abuse_id, mnt_id, email, domain, created, updated, source | | IPinfo WHOIS POC | `Ipinfo_WHOIS_POC_CL` | whois_id, name, mobilephone, officephone, fax, address, country, email, abuse_email, created, updated, source | ### Quick Validation Query To verify data is present, run the following query for any connector (replacing the table name as appropriate): KQL Query: Verify Data Ingestion ```kql Ipinfo_ASN_CL | take 10 ``` If rows are returned, data ingestion is working. If no results appear, check the Function App logs ([Verifying Deployment & Function App Logs](#verifying-deployment--function-app-logs)) for errors. ## Configuration All parameters are stored as Application Settings in the Function App. To modify after deployment: Function App → Settings → Configuration → edit value → Save → Restart. ### Optional Parameters | Variable | Type | Default | Description | |----------|------|---------|-------------| | `RETENTION_IN_DAYS` | Integer | `10` | Hot storage retention (days). Fast queries, higher cost. | | `TOTAL_RETENTION_IN_DAYS` | Integer | `30` | Total retention including archive. Older data moves to lower-cost archive. | | `SCHEDULE` | Cron | `0 30 9 * * *` | Execution schedule in UTC. IPinfo datasets update daily — more frequent runs provide no new data. | ## Basic KQL Queries This section provides sample Kusto Query Language (KQL) queries to help you explore and analyze the ingested IPinfo data. **Row Count per Table** Check how many records have been ingested in each table: ```kql Ipinfo_ASN_CL | summarize Count = count() ``` ```kql Ipinfo_Abuse_CL | summarize Count = count() ``` ```kql Ipinfo_Country_CL | summarize Count = count() ``` **Recent Ingestion Activity** View the most recently ingested records to confirm fresh data: ```kql Ipinfo_ASN_CL | order by TimeGenerated desc | take 20 ``` **Lookup by IP Range or ASN** Search for a specific IP range or ASN in the ASN table: ```kql Ipinfo_ASN_CL | where asn == "AS13335" | project asn, name, domain, type, TimeGenerated ``` **Top ASN Types** Summarize records by ASN type to understand the distribution of ISP, hosting, business, and education networks: ```kql Ipinfo_ASN_CL | summarize Count = count() by type | order by Count desc ``` **Abuse Contact Lookup** Find the abuse contact for a specific IP range: ```kql Ipinfo_Abuse_CL | where ip_range has "8.8.8" | project ip_range, name, email, country ``` **Country Distribution** Analyze the distribution of IP ranges by country: ```kql Ipinfo_Country_CL | summarize Count = count() by country | order by Count desc | take 20 ``` **Privacy/VPN Detection** Identify IP ranges flagged as VPN, proxy, Tor, or hosting providers: ```kql Ipinfo_Privacy_CL | where is_vpn == true or is_proxy == true or is_tor == true | summarize Count = count() by is_vpn, is_proxy, is_tor, is_hosting | order by Count desc ``` **Cross-Table Join Example** Enrich ASN data with abuse contact information: ```kql Ipinfo_ASN_CL | join kind=inner (Ipinfo_Abuse_CL) on $left.ip_range == $right.ip_range | project ip_range, asn, name, abuse_email = email, country | take 20 ``` **Ingestion Trend Over Time** Chart the volume of ingested records over the last 7 days: ```kql Ipinfo_ASN_CL | where TimeGenerated > ago(7d) | summarize Count = count() by bin(TimeGenerated, 1d) | render timechart ``` **Longitude Filter** Analyze IP ranges located in the western hemisphere: ```kql Ipinfo_Location_extended_CL | where toreal(longitude) Access control (IAM). 2. Verify that your App Registration has Log Analytics Contributor, Monitoring Contributor and Monitoring Metrics Publisher roles. 3. If the role was just assigned, wait a few minutes for propagation and trigger the function again. ### HTTP 401 Unauthorized Error This indicates an authentication failure. 1. Verify the `CLIENT_SECRET` has not expired in the App Registration. 2. Confirm the `TENANT_ID` and `CLIENT_ID` are correct. 3. Verify the `IPINFO_TOKEN` is valid by testing it at https://ipinfo.io/me?token=YOUR_TOKEN. ### Function Timeout Some connectors process large datasets and may take several hours to complete. The connectors run on an Elastic Premium (EP2) plan which supports long-running executions. If a function appears to time out: 1. Check Application Insights for any memory or execution errors. 2. Verify the Function App plan is `EP2` (not `Consumption/Y1`, which has a 10-minute limit). 3. Review the Function App configuration to ensure the `functionTimeout` setting is not set to a low value. ### Duplicate or Missing Data If data appears duplicated or incomplete: 1. Check whether the function was triggered multiple times (review Application Insights for overlapping executions). 2. Verify the timer trigger schedule in the function configuration. 3. For missing data, review the function logs to confirm the dataset download completed successfully. ### Deployment Failure If the ARM template deployment fails: 1. Review the deployment error details in the Azure Portal under the resource group > Deployments. 2. Ensure all required parameters were provided and correctly formatted. 3. Verify the `RESOURCE_ID` follows the correct format: `/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.OperationalInsights/workspaces/{name}` 4. Ensure you have Contributor permissions on the target resource group. ### Client Secret Expired Secrets have a limited lifespan (6 months, 1 year, or 2 years). When expired, the function silently fails. Symptoms: HTTP 401 errors after weeks/months of normal operation. Fix: 1. Entra ID → App registrations → your app → Certificates & secrets → create a new secret. 2. Function App → Configuration → update `CLIENT_SECRET` → Save → restart. Prevention: Set a calendar reminder before expiry. ### Resource Provider Not Registered Symptoms: Deployment fails with `MissingSubscriptionRegistration` or `"not registered to use namespace 'Microsoft.Insights"`. Fix: Go to Subscriptions → your subscription → Resource providers → register `Microsoft.Insights`, `Microsoft.Web`, and `Microsoft.OperationalInsights`. ### Storage Account Firewall Issues Symptoms: Function App shows `Error` status or fails to start. Fix: Navigate to the Storage Account → Networking → set Public network access to Enabled from all networks, or add the Function App's outbound IPs. ### Redeployment Conflicts Symptoms: Deployment fails with `"Resource already exists"`. Fix: Delete the previous Function App, DCR, DCE, and Storage Account from the resource group before redeploying, or use a different Function App name. ### Monitoring Database Downloads To verify that your connector is regularly downloading and ingesting fresh data, use either of these methods: **Method 1: Data Freshness Query** In your Log Analytics Workspace, run the following KQL query (replace the table name with your connector's table): ```kql Ipinfo_ASN_CL | summarize LastIngestion = max(TimeGenerated) ``` If the timestamp is recent (within the last 24 hours for a daily schedule), downloads and ingestion are working normally. If the timestamp is stale, check the Function App logs for errors. **Method 2: Application Insights** Open the Application Insights resource linked to your Function App and run: ```kql traces | where timestamp > ago(7d) | where message has "downloaded successfully" or message has "Failed to download" | project timestamp, message | order by timestamp desc ``` Successful runs will show messages confirming the file was downloaded. Failed downloads will show error messages, often indicating an invalid or expired IPinfo token. If no download messages appear at all, the Function App may not be running — verify its Status is `Running` in the Azure Portal. ### Change Database Download Schedule Each connector comes pre-configured with a default schedule that runs daily at 9:30 AM UTC. No manual schedule setup is required. IPinfo datasets are updated once per day. Running the connector more frequently than daily provides no new data and only increases compute costs. But if you want to change the cron schedule: 1. In the Azure Portal, navigate to your Function App. 2. Go to Settings > Configuration. 3. Find the `SCHEDULE` application setting. The value is a cron expression in `NCRONTAB` format (six fields). 4. Edit the value, click Save, then restart the Function App. | Schedule | Cron Expression | |----------|----------------| | Daily at 9:30 AM UTC (default) | `0 30 9 * * *` | | Daily at midnight UTC | `0 0 0 * * *` | | Weekly on Monday at 6 AM | `0 0 6 * * 1` | ### Key Azure Portal Paths | Action | Portal Path | |--------------------------------|----------------------------------------------------------------| | Create Log Analytics Workspace | Azure Portal > Log Analytics workspaces > + Create | | Enable Sentinel | Azure Portal > Microsoft Sentinel > + Create | | Install Solution | Sentinel > Content Hub > Search "IPinfo" > Install | | Deploy Connector | Sentinel > Data connectors > IPinfo [type] > Deploy to Azure | | View Function Logs | Azure Portal > Function Apps > [App] > Monitoring > Log stream | | Query Data | Log Analytics Workspace > Logs | | App Registration | Azure Portal > Microsoft Entra ID > App registrations | | Role Assignment | Subscriptions > Access control (IAM) > Add role assignment | --- We welcome your feedback, and if you have any feature requests or need support using the IPinfo Microsoft Sentinel integration, please create a post in our [IPinfo Community](https://community.ipinfo.io/) or contact support@ipinfo.io. ================================================================================ PAGE: Bring Your Own License (BYOL) - IPinfo Integration URL: https://ipinfo.io/developers/byol-integration SLUG: byol-integration DESCRIPTION: Learn how to integrate IPinfo’s API and data downloads into your platform using the Bring Your Own License (BYOL) model, allowing each user to connect their own IPinfo account and access token securely. ================================================================================ # IPinfo Integration Guide: Bring Your Own License (BYOL) IPinfo provides access to its data services in four ways: - [IPinfo API service](/developers/ipinfo-api) - [IPinfo Data Downloads (DBDL)](/developers/database-types) - [IPinfo Partner Platforms](/developers/integrations) - [IPinfo Cloud Data Push](/developers/database-download#cloud-data-delivery) When it comes to the API service and data downloads, access is controlled by an IPinfo Access Token (a 14-character alphanumeric token). - Free accounts get access to [IPinfo Lite API](/developers/lite-api) + [IPinfo Lite database](/developers/ipinfo-lite-database). - Paid accounts get access to the specific APIs or databases they’re subscribed to. The idea behind **Bring Your Own License (BYOL)** is simple: - If a platform wants to support IPinfo services, its users can sign up for IPinfo and provide their own access token. - The integration platform acts as an intermediate layer, making API requests or database downloads on behalf of the user using their token. - The platform itself never manages global IPinfo tokens each user brings their own. > Recommended reading: [Data Downloads vs API, or Both?](/blog/data-downloads-vs-api) ## BYOL Integration: IPinfo API Service ### API Endpoints - Current: `https://api.ipinfo.io` - Legacy: `https://ipinfo.io` (still supported indefinitely; but not recommended) Both support HTTPS and can be hardcoded in your integration. ### Key resources: - [API Documentation](/developers) - [API Products](/developers/ipinfo-api) - [Data Types](/developers/data-types) - [Other APIs](/developers) - [Bulk/Batch API](/developers/batch-enrichment-api) - [API Code Snippets](/developers/code-snippets) - [OpenAPI spec](/developers/openapi.yaml) ### Best Practices for API Integration - Start with [IPinfo Lite API](/developers/ipinfo-api) to validate your integration. - You can even integrate the Lite API directly into the platform, as the IPinfo Lite API has a commercial/redistribution-friendly license. - You can create a project specific access token to support IPinfo Lite API access across all users. - Use official IPinfo SDKs/libraries for built-in caching, async requests, and bulk lookups. - Implement asynchronous requests and use bulk endpoints for enrichment. - Cache responses to avoid duplicate lookups and reduce quota usage. - Handle errors and rate limits gracefully: - `429` → rate limited (retry with backoff) - `403` → invalid token - Timeouts/retries as per your SLA - Keep integration dynamic since responses depend on the customer’s subscription tier. Examples: - [RethinkDNS](https://community.ipinfo.io/t/rethink-dns-just-adopted-ipinfo-lite/6990) - [Google Chronicle](https://docs.cloud.google.com/chronicle/docs/soar/marketplace-integrations/ipinfo) ## BYOL Integration: IPinfo Data Downloads Supported Formats for data downloads: - MMDB (recommended for lookups) - Parquet (recommended for analytics) - CSV and JSON (compressed, uncompress before ingestion) References: - [Choosing a format](https://ipinfo.io/blog/ipinfo-database-formats) - [Database Filename Reference](/developers/database-filename-reference) - [Database Download Docs](/developers/database-download) Best Practices for Data Downloads - Start with [IPinfo Lite IP database](/developers/ipinfo-lite-database). - You can integrate the Lite Data Downloads directly into the platform, as the IPinfo Lite Data Downloads has a commercial/redistribution-friendly license. - You can create a project specific access token to support IPinfo Lite Data Downloads access across all users. - Use stable download URLs from the [filename reference](/developers/database-filename-reference). - Develop against [sample datasets](https://github.com/ipinfo/sample-database) before using production data. - Validate dataset integrity with the [checksums endpoint](/developers/database-download#database-operations): - Automate download, verification, and refresh. - Prioritize MMDB file format for optimal IP lookup performance. - Be mindful of update cadence (daily, weekly, biweekly, monthly). Example: - [Opnsense](https://docs.opnsense.org/manual/how-tos/ipinfo_geo_ip.html) - [Akvorado](https://demo.akvorado.net/) - [Nzyme](https://www.nzyme.org/) ## BYOL Integration: Production Readiness Moving from prototype to production? Follow these steps: - Staging Rollout: Deploy to a non-production environment and replay representative traffic. - Validation Checklist - Schema alignment - Authentication flow works with BYOL tokens - Rate limits respected; backoff logic in place - Caching strategy documented - Errors handled (timeouts, retries, rate limits) - Monitoring - Request counts, latency, and error codes - Cache hit/miss ratio - Alerts for quota breaches and failures - Security Review - Access controls for stored datasets - Data retention policies ### Go-Live Checklist - Correct datasets + refresh cadence configured - Authentication tested with BYOL credentials - Throughput within limits; graceful retry/backoff implemented - Dashboards/alerts created for usage and errors - Runbook in place for incidents (contacts, rollback steps) - Contract/licensing terms reflected in deployment notes ## Where to get help - **Support**: For technical assistance, please contact support@ipinfo.io and include your environment, integration method, and a brief description of the error/goal to speed up troubleshooting. - **Partner contact**: Your IPinfo partner manager for commercial or scope questions. - **Feedback on these docs**: We welcome feedback to improve our docs. Please send suggestions to alliances@ipinfo.io Staying up to date - Release notes & dataset changes: Subscribe to IPinfo product newsletter to track schema updates, new fields, and deprecations. - Roadmap & feature requests: Share requests and priorities via your partner manager. ================================================================================ PAGE: Code Snippets URL: https://ipinfo.io/developers/code-snippets SLUG: code-snippets DESCRIPTION: IPinfo Code Snippets - API, Libraries, Data Platforms, and Integrations ================================================================================ # Code Snippets The Code Snippets page provides practical examples and commands for leveraging IPinfo's data, services, and libraries. ## General Code Snippets **Extract only IPv4 addresses using the [IPinfo CLI](https://github.com/ipinfo/cli) from any text** `-o` stands for only and `-4` is for IPv4. ```bash cat ./access_logs | ipinfo grepip -o -4 ``` **Create an [IPinfo summary report](/tools/summarize-ips) from IP addresseses** The command will return a link where your summary report will be available. ```bash cat iplist.txt | curl -XPOST --data-binary @- "ipinfo.io/tools/summarize-ips?cli=1" ``` **Create an [IPinfo map](/tools/map) from IP addresseses** The command will provide a link for your IPinfo map. ```bash cat iplist.txt | curl -XPOST --data-binary @- "https://ipinfo.io/tools/map?cli=1" ``` **Get a list of IPv4 prefixes owned by an [ASN](/developers/asn) using JQ** ```bash curl "ipinfo.io/AS7922/json?token=$TOKEN" | jq -r '.prefixes[].netblock' ``` ## Lite API Snippets The IPinfo Lite API service provides information on the country and ASN of IP addresses. The IPinfo Lite API endpoint uses the `/lite/` API endpoint. **Using the IPinfo Lite API service, get your/user/visitor IP address information:** ```bash https://api.ipinfo.io/lite/me?token=$TOKEN ``` *Response:* ```json { "ip": "82.163.118.147", "asn": "AS57276", "as_name": "Vorboss Limited", "as_domain": "optimity.co.uk", "country_code": "GB", "country": "United Kingdom", "continent_code": "EU", "continent": "Europe" } ``` **Using the IPinfo Lite API service, get input IP address (IPv4) information:** ```bash https://api.ipinfo.io/lite/3.153.114.80?token=$TOKEN ``` *Response:* ```json { "ip": "3.153.114.80", "asn": "AS16509", "as_name": "Amazon.com, Inc.", "as_domain": "amazon.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Using the IPinfo Lite API service, get input IP address (IPv6) information:** ```bash https://api.ipinfo.io/lite/2001:1900:2100:280e::f0?token=$TOKEN ``` *Response:* ```json { "ip": "2001:1900:2100:280e::f0", "asn": "AS3356", "as_name": "Level 3 Parent, LLC", "as_domain": "lumen.com", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Using the IPinfo Lite API service, identify bogon IP address:** ```bash https://api.ipinfo.io/lite/235.167.17.62?token=$TOKEN ``` *Response:* ```json { "ip": "235.167.17.62", "bogon": true } ``` **Using the IPinfo Lite API service to get information an unannounced/non-routed IP address:** ```bash https://api.ipinfo.io/lite/64.201.151.1?token=$TOKEN ``` *Response:* ```json { "ip": "64.201.151.1", "country_code": "US", "country": "United States", "continent_code": "NA", "continent": "North America" } ``` **Using the IPinfo Lite API service, get your/user/visitor public IP address information:** ```bash https://api.ipinfo.io/lite/me/ip?token=$TOKEN ``` *Response*: ```text 82.163.118.147 ``` **Using the IPinfo Lite API service, get your/user/visitor IP address ASN information:** ```bash https://api.ipinfo.io/lite/me/asn?token=$TOKEN ``` *Response*: ```text AS57276 ``` **Using the IPinfo Lite API service, get your/user/visitor IP address ASN Organization Name information:** ```bash https://api.ipinfo.io/lite/me/as_name?token=$TOKEN ``` *Response*: ```text Vorboss Limited ``` **Using the IPinfo Lite API service, get your/user/visitor IP address ASN Organization Domain Name information:** ```bash https://api.ipinfo.io/lite/me/as_domain?token=$TOKEN ``` *Response*: ```text optimity.co.uk ``` **Using the IPinfo Lite API service, get your/user/visitor IP address 2 Letter Country Code information:** ```bash https://api.ipinfo.io/lite/me/country_code?token=$TOKEN ``` *Response*: ```text GB ``` **Using the IPinfo Lite API service, get your/user/visitor IP address country name:** ```bash https://api.ipinfo.io/lite/me/country?token=$TOKEN ``` *Response*: ```text United Kingdom ``` **Using the IPinfo Lite API service, get your/user/visitor IP address continent code information:** ```bash https://api.ipinfo.io/lite/me/continent_code?token=$TOKEN ``` *Response*: ```text EU ``` **Using the IPinfo Lite API service, get your/user/visitor IP address continent name information:** ```bash https://api.ipinfo.io/lite/me/continent?token=$TOKEN ``` *Response*: ```text Europe ``` **Using the IPinfo Lite API service, you can access the API from an IPv6 connection explicitly:** ```bash https://v6.api.ipinfo.io/lite/2001:4930:98::1?token=$TOKEN https://v6.api.ipinfo.io/lite/82.163.118.147?token=$TOKEN https://v6.api.ipinfo.io/lite/me?token=$TOKEN ``` **Using the IPinfo Lite API service, you can access the API from an IPv4 connection explicitl:** ```bash https://v4.api.ipinfo.io/lite/2001:4930:98::1?token=$TOKEN https://v4.api.ipinfo.io/lite/82.163.118.147?token=$TOKEN https://v4.api.ipinfo.io/lite/me?token=$TOKEN ``` ## Core API Snippets The IPinfo Core API endpoint uses the `/lookup/` API endpoint. **Using the IPinfo Core API service, get your/user/visitor IP address information:** ```bash https://api.ipinfo.io/lookup/me?token=$TOKEN ``` *Response:* ```json { "ip": "23.233.46.1", "hostname": "23-233-46-1.cpe.pppoe.ca", "geo": { "city": "Mississauga", "region": "Ontario", "region_code": "ON", "country": "Canada", "country_code": "CA", "continent": "North America", "continent_code": "NA", "latitude": 43.5789, "longitude": -79.6583, "timezone": "America/Toronto", "postal_code": "L5C" }, "as": { "asn": "AS5645", "name": "TekSavvy Solutions, Inc.", "domain": "teksavvy.com", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Core API service, get input IP address (IPv4) information:** ```bash https://api.ipinfo.io/lookup/106.54.79.181?token=$TOKEN ``` *Response:* ```json { "ip": "106.54.79.181", "geo": { "city": "Shanghai", "region": "Shanghai", "region_code": "SH", "country": "China", "country_code": "CN", "continent": "Asia", "continent_code": "AS", "latitude": 31.22222, "longitude": 121.45806, "timezone": "Asia/Shanghai", "postal_code": "200000" }, "as": { "asn": "AS45090", "name": "Shenzhen Tencent Computer Systems Company Limited", "domain": "tencent.com", "type": "hosting" }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Core API service, get input IP address (IPv6) information:** ```bash https://api.ipinfo.io/lookup/2001:1900:2100:280e::f0?token=$TOKEN ``` *Response:* ```json { "ip": "2001:1900:2100:280e::f0", "geo": { "city": "San Francisco", "region": "California", "region_code": "CA", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 37.77493, "longitude": -122.41942, "timezone": "America/Los_Angeles", "postal_code": "94102" }, "as": { "asn": "AS3356", "name": "Level 3 Parent, LLC", "domain": "lumen.com", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Core API service, when the ip address does not have a region or region code:** ```bash https://api.ipinfo.io/lookup/42.200.144.116?token=$TOKEN ``` *Response:* ```json { "ip": "42.200.144.116", "hostname": "42-200-144-116.static.imsbiz.com", "geo": { "city": "Hong Kong", "country": "Hong Kong", "country_code": "HK", "continent": "Asia", "continent_code": "AS", "latitude": 22.27832, "longitude": 114.17469, "timezone": "Asia/Hong_Kong", "postal_code": "999077" }, "as": { "asn": "AS4760", "name": "HKT Limited", "domain": "netvigator.com", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Core API service, when the ip address does not have a postal or zip code:** ```bash https://api.ipinfo.io/lookup/217.165.3.147?token=$TOKEN ``` *Response:* ```json { "ip": "217.165.3.147", "hostname": "bba-217-165-3-147.alshamil.net.ae", "geo": { "city": "Musaffah", "region": "Abu Dhabi", "region_code": "AZ", "country": "United Arab Emirates", "country_code": "AE", "continent": "Asia", "continent_code": "AS", "latitude": 24.35893, "longitude": 54.48267, "timezone": "Asia/Dubai" }, "as": { "asn": "AS5384", "name": "Emirates Internet", "domain": "emirates.net.ae", "type": "isp" }, "is_anonymous": true, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Core API service, to get information of an unannounced/non-routed IP address:** ```bash https://api.ipinfo.io/lookup/67.59.233.209?token=$TOKEN ``` *Response:* ```json { "ip": "67.59.233.209", "hostname": "cbr104-te5-1-0.cmts.nrwlct.cv.net", "geo": { "city": "Norwalk", "region": "Connecticut", "region_code": "CT", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 41.1176, "longitude": -73.4079, "timezone": "America/New_York", "postal_code": "06851" }, "as": {}, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Core API service to get information of an anonymous IP address (VPN, proxy, relay or TOR):** ```bash https://api.ipinfo.io/lookup/122.27.50.39?token=$TOKEN ``` *Response:* ```json { "ip": "122.27.50.39", "hostname": "p2049039-ipxg00g01niho.hiroshima.ocn.ne.jp", "geo": { "city": "Hiroshima", "region": "Hiroshima", "region_code": "34", "country": "Japan", "country_code": "JP", "continent": "Asia", "continent_code": "AS", "latitude": 34.4, "longitude": 132.45, "timezone": "Asia/Tokyo", "postal_code": "730-0011" }, "as": { "asn": "AS4713", "name": "NTT Communications Corporation", "domain": "ntt.com", "type": "isp" }, "is_anonymous": true, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Core API service to get information of an anycast IP address:** ```bash https://api.ipinfo.io/lookup/146.75.15.224?token=$TOKEN ``` *Response:* ```json { "ip": "146.75.15.224", "geo": { "city": "Christchurch", "region": "Canterbury", "region_code": "CAN", "country": "New Zealand", "country_code": "NZ", "continent": "Oceania", "continent_code": "OC", "latitude": -43.53333, "longitude": 172.63333, "timezone": "Pacific/Auckland", "postal_code": "8011" }, "as": { "asn": "AS54113", "name": "Fastly, Inc.", "domain": "fastly.com", "type": "hosting" }, "is_anonymous": true, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Core API service to get information of a hosting or data center type IP address:** ```bash https://api.ipinfo.io/lookup/107.182.226.232?token=$TOKEN ``` *Response:* ```json { "ip": "107.182.226.232", "geo": { "city": "New York City", "region": "New York", "region_code": "NY", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 40.71427, "longitude": -74.00597, "timezone": "America/New_York", "postal_code": "10001" }, "as": { "asn": "AS13213", "name": "UK-2 Limited", "domain": "ingenuitycloudservices.com", "type": "hosting" }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Core API service to get information of a mobile or carrier type IP address:** ```bash https://api.ipinfo.io/lookup/206.47.33.149?token=$TOKEN ``` *Response:* ```json { "ip": "206.47.33.149", "geo": { "city": "Toronto", "region": "Ontario", "region_code": "ON", "country": "Canada", "country_code": "CA", "continent": "North America", "continent_code": "NA", "latitude": 43.6561, "longitude": -79.3406, "timezone": "America/Toronto", "postal_code": "M4M" }, "as": { "asn": "AS577", "name": "Bell Canada", "domain": "bell.ca", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": true, "is_satellite": false } ``` **Using the IPinfo Core API service to get information of a satellite type IP address:** ```bash https://api.ipinfo.io/lookup/65.181.4.152?token=$TOKEN ``` *Response:* ```json { "ip": "65.181.4.152", "hostname": "customer.tkyojpn1.pop.starlinkisp.net", "geo": { "city": "Tokyo", "region": "Tokyo", "region_code": "13", "country": "Japan", "country_code": "JP", "continent": "Asia", "continent_code": "AS", "latitude": 35.6895, "longitude": 139.69171, "timezone": "Asia/Tokyo", "postal_code": "101-8656" }, "as": { "asn": "AS14593", "name": "Space Exploration Technologies Corporation", "domain": "spacex.com", "type": "isp" }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": true } ``` **Using the IPinfo Core API service, get your/user/visitor IP address location information:** ```bash https://api.ipinfo.io/lookup/me/geo?token=$TOKEN ``` *Response:* ```json { "city": "Mississauga", "region": "Ontario", "region_code": "ON", "country": "Canada", "country_code": "CA", "continent": "North America", "continent_code": "NA", "latitude": 43.5789, "longitude": -79.6583, "timezone": "America/Toronto", "postal_code": "L5C" } ``` **Using the IPinfo Core API service, get your/user/visitor IP address city information:** ```bash https://api.ipinfo.io/lookup/me/geo/city?token=$TOKEN ``` *Response*: ```text Mississauga ``` **Using the IPinfo Core API service, get your/user/visitor IP address region or state information:** ```bash https://api.ipinfo.io/lookup/me/geo/region?token=$TOKEN ``` *Response*: ```text Ontario ``` **Using the IPinfo Core API service, get your/user/visitor IP address region code information:** ```bash https://api.ipinfo.io/lookup/me/geo/region_code?token=$TOKEN ``` *Response*: ```text ON ``` **Using the IPinfo Core API service, get your/user/visitor IP address country name:** ```bash https://api.ipinfo.io/lookup/me/geo/country?token=$TOKEN ``` *Response*: ```text Canada ``` **Using the IPinfo Core API service, get your/user/visitor IP address two letter country code:** ```bash https://api.ipinfo.io/lookup/me/geo/country_code?token=$TOKEN ``` *Response*: ```text CA ``` **Using the IPinfo Core API service, get your/user/visitor IP address continent name:** ```bash https://api.ipinfo.io/lookup/me/geo/continent?token=$TOKEN ``` *Response*: ```text North America ``` **Using the IPinfo Core API service, get your/user/visitor IP address two leter continent code:** ```bash https://api.ipinfo.io/lookup/me/geo/continent_code?token=$TOKEN ``` *Response*: ```text NA ``` **Using the IPinfo Core API service, get your/user/visitor IP address latitude value of the geographic coordinate:** ```bash https://api.ipinfo.io/lookup/me/geo/latitude?token=$TOKEN ``` *Response*: ```text 43.5789 ``` **Using the IPinfo Core API service, get your/user/visitor IP address longitude value of the geographic coordinate:** ```bash https://api.ipinfo.io/lookup/me/geo/longitude?token=$TOKEN ``` *Response*: ```text -79.6583 ``` **Using the IPinfo Core API service, get your/user/visitor IP address timezone information:** ```bash https://api.ipinfo.io/lookup/me/geo/timezone?token=$TOKEN ``` *Response*: ```text America/Toronto ``` **Using the IPinfo Core API service, get your/user/visitor IP address postal or zip code:** ```bash https://api.ipinfo.io/lookup/me/geo/postal_code?token=$TOKEN ``` *Response*: ```text L5C ``` **Using the IPinfo Core API service, get your/user/visitor IP address ASN information:** ```bash https://api.ipinfo.io/lookup/me/as?token=$TOKEN ``` *Response:* ```json { "asn": "AS5645", "name": "TekSavvy Solutions, Inc.", "domain": "teksavvy.com", "type": "isp" } ``` **Using the IPinfo Core API service, get your/user/visitor IP address ASN value:** ```bash https://api.ipinfo.io/lookup/me/as/asn?token=$TOKEN ``` *Response*: ```text AS5645 ``` **Using the IPinfo Core API service, get your/user/visitor IP address ASN organization name:** ```bash https://api.ipinfo.io/lookup/me/as/name?token=$TOKEN ``` *Response*: ```text TekSavvy Solutions, Inc. ``` **Using the IPinfo Core API service, get your/user/visitor IP address AS organization official domain:** ```bash https://api.ipinfo.io/lookup/me/as/domain?token=$TOKEN ``` *Response*: ```text teksavvy.com ``` **Using the IPinfo Core API service, get your/user/visitor IP address AS organization type (`government`, `education`, `business`, `isp` and `hosting`):** ```bash https://api.ipinfo.io/lookup/me/as/type?token=$TOKEN ``` *Response*: ```text isp ``` **Using the IPinfo Core API service, get your/user/visitor IP address anonymous status:** ```bash https://api.ipinfo.io/lookup/me/is_anonymous?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Core API service, get your/user/visitor IP address anycast status:** ```bash https://api.ipinfo.io/lookup/me/is_anycast?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Core API service, get your/user/visitor IP address hosting IP status:** ```bash https://api.ipinfo.io/lookup/me/is_hosting?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Core API service, get your/user/visitor IP address mobile / carrier IP status:** ```bash https://api.ipinfo.io/lookup/me/is_mobile?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Core API service, get your/user/visitor IP address satellite IP status:** ```bash https://api.ipinfo.io/lookup/me/is_satellite?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Core API service, you can access the API from an IPv6 connection explicitly:** ```bash https://v6.api.ipinfo.io/lookup/2001:4930:98::1?token=$TOKEN https://v6.api.ipinfo.io/lookup/82.163.118.147?token=$TOKEN https://v6.api.ipinfo.io/lookup/me?token=$TOKEN ``` **Using the IPinfo Core API service, you can access the API from an IPv4 connection explicitly:** ```bash https://v4.api.ipinfo.io/lookup/2001:4930:98::1?token=$TOKEN https://v4.api.ipinfo.io/lookup/82.163.118.147?token=$TOKEN https://v4.api.ipinfo.io/lookup/me?token=$TOKEN ``` ## Plus API Snippets The IPinfo Plus API endpoint uses the `/lookup/` API endpoint. **Using the IPinfo Plus API service, get your/user/visitor IP address information:** ```bash https://api.ipinfo.io/lookup/me?token=$TOKEN ``` *Response:* ```json { "ip": "178.197.6.67", "geo": { "city": "Zürich", "region": "Zurich", "region_code": "ZH", "country": "Switzerland", "country_code": "CH", "continent": "Europe", "continent_code": "EU", "latitude": 47.3789, "longitude": 8.5204, "timezone": "Europe/Zurich", "postal_code": "8004", "geoname_id": "2657896", "radius": 200, "last_changed": "2024-03-24" }, "as": { "asn": "AS3303", "name": "Swisscom (Switzerland) Ltd", "domain": "swisscom.ch", "type": "isp", "last_changed": "2025-09-28" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Plus API service, get input IP address (IPv4) information:** ```bash https://api.ipinfo.io/lookup/88.246.188.185?token=$TOKEN ``` *Response:* ```json { "ip": "88.246.188.185", "hostname": "88.246.188.185.static.ttnet.com.tr", "geo": { "city": "Ankara", "region": "Ankara", "region_code": "06", "country": "Turkey", "country_code": "TR", "continent": "Asia", "continent_code": "AS", "latitude": 39.91987, "longitude": 32.85427, "timezone": "Europe/Istanbul", "postal_code": "06420", "geoname_id": "323786", "radius": 50, "last_changed": "2025-08-03" }, "as": { "asn": "AS47331", "name": "TTNet A.S.", "domain": "ttnet.com.tr", "type": "isp", "last_changed": "2025-09-28" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Plus API service, get input IP address (IPv6) information:** ```bash https://api.ipinfo.io/lookup/2c0f:4280:6040:1dbe:89e4:b86e:9e0a:cbb0?token=$TOKEN ``` *Response:* ```json { "ip": "2c0f:4280:6040:1dbe:89e4:b86e:9e0a:cbb0", "geo": { "city": "Tunis", "region": "Tunis Governorate", "region_code": "11", "country": "Tunisia", "country_code": "TN", "continent": "Africa", "continent_code": "AF", "latitude": 36.81897, "longitude": 10.16579, "timezone": "Africa/Tunis", "geoname_id": "2464470", "radius": 20, "last_changed": "2025-09-21" }, "as": { "asn": "AS37705", "name": "TOPNET", "domain": "topnet.tn", "type": "isp", "last_changed": "2025-09-28" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Plus API service for IP address without a region or region code:** ```bash https://api.ipinfo.io/lookup/42.200.144.116?token=$TOKEN ``` *Response:* ```json { "ip": "42.200.144.116", "hostname": "42-200-144-116.static.imsbiz.com", "geo": { "city": "Hong Kong", "country": "Hong Kong", "country_code": "HK", "continent": "Asia", "continent_code": "AS", "latitude": 22.27832, "longitude": 114.17469, "timezone": "Asia/Hong_Kong", "postal_code": "999077", "geoname_id": "1819729", "radius": 20, "last_changed": "2025-09-21" }, "as": { "asn": "AS4760", "name": "HKT Limited", "domain": "netvigator.com", "type": "isp" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Plus API service, when the IP address does not have a postal or zip code:** ```bash https://api.ipinfo.io/lookup/217.165.3.147?token=$TOKEN ``` *Response:* ```json { "ip": "217.165.3.147", "hostname": "bba-217-165-3-147.alshamil.net.ae", "geo": { "city": "Musaffah", "region": "Abu Dhabi", "region_code": "AZ", "country": "United Arab Emirates", "country_code": "AE", "continent": "Asia", "continent_code": "AS", "latitude": 24.35893, "longitude": 54.48267, "timezone": "Asia/Dubai", "geoname_id": "12042053", "radius": 10 }, "as": { "asn": "AS5384", "name": "Emirates Internet", "domain": "emirates.net.ae", "type": "isp", "last_changed": "2025-09-28" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": true }, "is_anonymous": true, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Plus API service to get information of an unannounced/non-routed IP address:** ```bash https://api.ipinfo.io/lookup/67.59.233.209?token=$TOKEN ``` *Response:* ```json { "ip": "67.59.233.209", "hostname": "cbr104-te5-1-0.cmts.nrwlct.cv.net", "geo": { "city": "Norwalk", "region": "Connecticut", "region_code": "CT", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 41.1176, "longitude": -73.4079, "timezone": "America/New_York", "postal_code": "06851", "dma_code": "501", "geoname_id": "4839822", "radius": 50 }, "as": {}, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Plus API service to get information of an anonymous IP address (VPN, proxy, relay or TOR):** ```bash https://api.ipinfo.io/lookup/162.120.206.244?token=$TOKEN ``` *Response:* ```json { "ip": "162.120.206.244", "geo": { "city": "Saint-Avold", "region": "Grand Est", "region_code": "GES", "country": "France", "country_code": "FR", "continent": "Europe", "continent_code": "EU", "latitude": 49.10465, "longitude": 6.70402, "timezone": "Europe/Paris", "postal_code": "57500", "dma_code": "57", "geoname_id": "2981492", "radius": 10 }, "as": { "asn": "AS15169", "name": "Google LLC", "domain": "google.com", "type": "hosting", "last_changed": "2025-09-28" }, "mobile": {}, "anonymous": { "name": "Google One VPN", "is_proxy": false, "is_relay": true, "is_tor": false, "is_vpn": false }, "is_anonymous": true, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Plus API service, information of an anycast IP address:** ```bash https://api.ipinfo.io/lookup/146.75.15.224?token=$TOKEN ``` *Response:* ```json { "ip": "146.75.15.224", "geo": { "city": "Christchurch", "region": "Canterbury", "region_code": "CAN", "country": "New Zealand", "country_code": "NZ", "continent": "Oceania", "continent_code": "OC", "latitude": -43.53333, "longitude": 172.63333, "timezone": "Pacific/Auckland", "postal_code": "8011", "geoname_id": "2192362", "radius": 10, "last_changed": "2024-04-14" }, "as": { "asn": "AS54113", "name": "Fastly, Inc.", "domain": "fastly.com", "type": "hosting", "last_changed": "2025-09-28" }, "mobile": {}, "anonymous": { "name": "Fastly", "is_proxy": false, "is_relay": true, "is_tor": false, "is_vpn": false }, "is_anonymous": true, "is_anycast": true, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Plus API service, information of a hosting or data center type IP address:** ```bash https://api.ipinfo.io/lookup/107.182.226.232?token=$TOKEN ``` *Response:* ```json { "ip": "107.182.226.232", "geo": { "city": "New York City", "region": "New York", "region_code": "NY", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "latitude": 40.71427, "longitude": -74.00597, "timezone": "America/New_York", "postal_code": "10001", "dma_code": "501", "geoname_id": "5128581", "radius": 10, "last_changed": "2024-05-19" }, "as": { "asn": "AS13213", "name": "UK-2 Limited", "domain": "ingenuitycloudservices.com", "type": "hosting", "last_changed": "2025-09-28" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": true, "is_mobile": false, "is_satellite": false } ``` **Using the IPinfo Plus API service, information of mobile or carrier type IP address:** ```bash https://api.ipinfo.io/lookup/206.47.33.149?token=$TOKEN ``` *Response:* ```json { "ip": "206.47.33.149", "geo": { "city": "Toronto", "region": "Ontario", "region_code": "ON", "country": "Canada", "country_code": "CA", "continent": "North America", "continent_code": "NA", "latitude": 43.6561, "longitude": -79.3406, "timezone": "America/Toronto", "postal_code": "M4M", "geoname_id": "6167865", "radius": 50, "last_changed": "2025-09-21" }, "as": { "asn": "AS577", "name": "Bell Canada", "domain": "bell.ca", "type": "isp" }, "mobile": { "name": "Bell Mobility", "mcc": "302", "mnc": "610" }, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": true, "is_satellite": false } ``` **Using the IPinfo Plus API service, information of satellite type IP address:** ```bash https://api.ipinfo.io/lookup/65.181.4.152?token=$TOKEN ``` *Response:* ```json { "ip": "65.181.4.152", "hostname": "customer.tkyojpn1.pop.starlinkisp.net", "geo": { "city": "Tokyo", "region": "Tokyo", "region_code": "13", "country": "Japan", "country_code": "JP", "continent": "Asia", "continent_code": "AS", "latitude": 35.6895, "longitude": 139.69171, "timezone": "Asia/Tokyo", "postal_code": "101-8656", "geoname_id": "1850147", "radius": 10, "last_changed": "2022-10-09" }, "as": { "asn": "AS14593", "name": "Space Exploration Technologies Corporation", "domain": "spacex.com", "type": "isp" }, "mobile": {}, "anonymous": { "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": false }, "is_anonymous": false, "is_anycast": false, "is_hosting": false, "is_mobile": false, "is_satellite": true } ``` **Using the IPinfo Plus API service, get your/user/visitor IP address location information:** ```bash https://api.ipinfo.io/lookup/me/geo?token=$TOKEN ``` *Response:* ```json { "city": "Rome", "region": "Lazio", "region_code": "62", "country": "Italy", "country_code": "IT", "continent": "Europe", "continent_code": "EU", "latitude": 41.89193, "longitude": 12.51133, "timezone": "Europe/Rome", "postal_code": "00118", "geoname_id": "3169070", "radius": 1000, "last_changed": "2025-07-13" } ``` **Using the IPinfo Plus API service, get your/user/visitor IP address city information:** ```bash https://api.ipinfo.io/lookup/me/geo/city?token=$TOKEN ``` *Response*: ```text Rome ``` **Using the IPinfo Plus API service, get your/user/visitor IP address region or state information:** ```bash https://api.ipinfo.io/lookup/me/geo/region?token=$TOKEN ``` *Response*: ```text Lazio ``` **Using the IPinfo Plus API service, get your/user/visitor IP address region code information:** ```bash https://api.ipinfo.io/lookup/me/geo/region_code?token=$TOKEN ``` *Response*: ```text 62 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address country name:** ```bash https://api.ipinfo.io/lookup/me/geo/country?token=$TOKEN ``` *Response*: ```text Italy ``` **Using the IPinfo Plus API service, get your/user/visitor IP address two letter country code:** ```bash https://api.ipinfo.io/lookup/me/geo/country_code?token=$TOKEN ``` *Response*: ```text IT ``` **Using the IPinfo Plus API service, get your/user/visitor IP address continent name:** ```bash https://api.ipinfo.io/lookup/me/geo/continent?token=$TOKEN ``` *Response*: ```text Europe ``` **Using the IPinfo Plus API service, get your/user/visitor IP address two leter continent code:** ```bash https://api.ipinfo.io/lookup/me/geo/continent_code?token=$TOKEN ``` *Response*: ```text EU ``` **Using the IPinfo Plus API service, get your/user/visitor IP address latitude value of the geographic coordinate:** ```bash https://api.ipinfo.io/lookup/me/geo/latitude?token=$TOKEN ``` *Response*: ```text 41.89193 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address longitude value of the geographic coordinate:** ```bash https://api.ipinfo.io/lookup/me/geo/longitude?token=$TOKEN ``` *Response*: ```text 12.51133 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address timezone information:** ```bash https://api.ipinfo.io/lookup/me/geo/timezone?token=$TOKEN ``` *Response*: ```text Europe/Rome ``` **Using the IPinfo Plus API service, get your/user/visitor IP address postal or zip code:** ```bash https://api.ipinfo.io/lookup/me/geo/postal_code?token=$TOKEN ``` *Response*: ```text 00118 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address DMA code:** ```bash https://api.ipinfo.io/lookup/me/geo/dma_code?token=$TOKEN ``` *Response*: ```text 534 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address geoname.org ID:** ```bash https://api.ipinfo.io/lookup/me/geo/geoname_id?token=$TOKEN ``` *Response*: ```text 3169070 ``` **Using the IPinfo Plus API service, get the accuracy radius in Kilometer for the geographic coordinates the user's or visitor's IP address:** ```bash https://api.ipinfo.io/lookup/me/geo/radius?token=$TOKEN ``` *Response*: ```text 1000 ``` **Using the IPinfo Plus API service, get the last date when the visitor's IP address geolocation information changed:** ```bash https://api.ipinfo.io/lookup/me/geo/last_changed?token=$TOKEN ``` *Response*: ```text 2025-07-13 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address ASN information:** ```bash https://api.ipinfo.io/lookup/me/as?token=$TOKEN ``` *Response:* ```json { "asn": "AS3269", "name": "Telecom Italia S.p.A.", "domain": "telecomitalia.com", "type": "isp", "last_changed": "2025-09-28" } ``` **Using the IPinfo Plus API service, get your/user/visitor IP address ASN value:** ```bash https://api.ipinfo.io/lookup/me/as/asn?token=$TOKEN ``` *Response*: ```text AS3269 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address ASN organization name:** ```bash https://api.ipinfo.io/lookup/me/as/name?token=$TOKEN ``` *Response*: ```text Telecom Italia S.p.A. ``` **Using the IPinfo Plus API service, get your/user/visitor IP address AS organization official domain:** ```bash https://api.ipinfo.io/lookup/me/as/domain?token=$TOKEN ``` *Response*: ```text telecomitalia.com ``` **Using the IPinfo Plus API service, get your/user/visitor IP address AS organization type (`government`, `education`, `business`, `isp` and `hosting`):** ```bash https://api.ipinfo.io/lookup/me/as/type?token=$TOKEN ``` *Response*: ```text isp ``` **Using the IPinfo Plus API service, get your/user/visitor IP address ASN information last change date:** ```bash https://api.ipinfo.io/lookup/me/as/last_changed/type?token=$TOKEN ``` *Response*: ```text 2025-09-28 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address anonymous status:** ```bash https://api.ipinfo.io/lookup/me/is_anonymous?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Plus API service, get your/user/visitor IP address anycast status:** ```bash https://api.ipinfo.io/lookup/me/is_anycast?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Plus API service, get your/user/visitor IP address hosting IP status:** ```bash https://api.ipinfo.io/lookup/me/is_hosting?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Plus API service, get your/user/visitor IP address mobile / carrier IP status:** ```bash https://api.ipinfo.io/lookup/me/is_mobile?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Plus API service, get your/user/visitor IP address satellite IP status:** ```bash https://api.ipinfo.io/lookup/me/is_satellite?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Plus API service, get your/user/visitor IP address mobile/carrier information:** ```bash https://api.ipinfo.io/lookup/me/mobile?token=$TOKEN ``` *Response*: ```json { "name": "TIM", "mcc": "222", "mnc": "01" } ``` **Using the IPinfo Plus API service, get your/user/visitor IP address mobile/carrier name:** ```bash https://api.ipinfo.io/lookup/me/mobile/name?token=$TOKEN ``` *Response*: ```text TIM ``` **Using the IPinfo Plus API service, get your/user/visitor IP address Mobile Carrier Code (MCC):** ```bash https://api.ipinfo.io/lookup/me/mobile/mcc?token=$TOKEN ``` *Response*: ```text 222 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address Mobile Network Code (MNC):** ```bash https://api.ipinfo.io/lookup/me/mobile/mnc?token=$TOKEN ``` *Response*: ```text 01 ``` **Using the IPinfo Plus API service, get your/user/visitor IP address anonymity/privacy information:** ```bash https://api.ipinfo.io/lookup/me/anonymous?token=$TOKEN ``` *Response*: ```json { "name": "ExpressVPN", "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": true } ``` **Using the IPinfo Plus API service, get your/user/visitor IP address proxy status:** ```bash https://api.ipinfo.io/lookup/me/anonymous/is_proxy?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Plus API service, get your/user/visitor IP address relay status:** ```bash https://api.ipinfo.io/lookup/me/anonymous/is_relay?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Plus API service, get your/user/visitor IP address TOR status:** ```bash https://api.ipinfo.io/lookup/me/anonymous/is_tor?token=$TOKEN ``` *Response*: ```text false ``` **Using the IPinfo Plus API service, get your/user/visitor IP address VPN status:** ```bash https://api.ipinfo.io/lookup/me/anonymous/is_vpn?token=$TOKEN ``` *Response*: ```text true ``` **Using the IPinfo Plus API service, get your/user/visitor IP address privacy service name:** ```bash https://api.ipinfo.io/lookup/me/anonymous/name?token=$TOKEN ``` *Response*: ```text ExpressVPN ``` **Using the IPinfo Plus API service, you can access the API from an IPv6 connection explicitly:** ```bash https://v6.api.ipinfo.io/lookup/2001:4930:98::1?token=$TOKEN https://v6.api.ipinfo.io/lookup/82.163.118.147?token=$TOKEN https://v6.api.ipinfo.io/lookup/me?token=$TOKEN ``` **Using the IPinfo Plus API service, you can access the API from an IPv4 connection explicitly:** ```bash https://v4.api.ipinfo.io/lookup/2001:4930:98::1?token=$TOKEN https://v4.api.ipinfo.io/lookup/82.163.118.147?token=$TOKEN https://v4.api.ipinfo.io/lookup/me?token=$TOKEN ``` ================================================================================ PAGE: IPinfo OpenAPI Spec & LLM Resources URL: https://ipinfo.io/developers/openapi-spec-llm SLUG: openapi-spec-llm DESCRIPTION: Official IPinfo OpenAPI specification (Swagger). LLM-optimized documentation for IPinfo APIs and databases. Access structured documentation designed for AI assistants and language models. ================================================================================ # IPinfo OpenAPI Specification & LLM resources ## OpenAPI Spec This page provides the [official IPinfo OpenAPI (Swagger)](/developers/openapi.yaml) specification, commonly searched for under terms such as: IPinfo Swagger, IPinfo API YAML, openapi.yaml, swagger.yaml, or Swagger/OpenAPI spec. This specification is intended for integration demos, client generation, and any tooling that consumes standard OpenAPI/Swagger definitions. You can access the raw OpenAPI YAML file here: [/developers/openapi.yaml](/developers/openapi.yaml) ## LLM Resources IPinfo provides LLM-optimized documentation in two formats for AI assistants and language models. ### llms.txt A clean table of contents linking to all documentation pages. Ideal for quick navigation and token-efficient parsing: [/developers/llms.txt](/developers/llms.txt) ### llms-full.txt Complete developer documentation in a single aggregated file. All pages combined with HTML-to-markdown conversion applied: [/developers/llms-full.txt](/developers/llms-full.txt) ## Ask AI - [Open IPinfo Docs in ChatGPT](https://chatgpt.com/?q=Read%20the%20IPinfo%20Docs%20from%20here%2C%20and%20answer%20questions%3A%20https%3A%2F%2Fipinfo.io%2Fdevelopers%2Fllms-full.txt) - [Open IPinfo Docs in Claude](https://claude.ai/new?q=Read%20the%20IPinfo%20Docs%20from%20here%2C%20and%20answer%20questions%3A%20https%3A%2F%2Fipinfo.io%2Fdevelopers%2Fllms-full.txt) - [Open IPinfo Docs in Perplexity](https://chatgpt.com/?q=Read%20the%20IPinfo%20Docs%20from%20here%2C%20and%20answer%20questions%3A%20https%3A%2F%2Fipinfo.io%2Fdevelopers%2Fllms-full.txt) ================================================================================ PAGE: IPinfo MCP Server URL: https://ipinfo.io/developers/mcp-server SLUG: mcp-server DESCRIPTION: Connect AI assistants and developer tools to IPinfo through the official MCP server for IP address intelligence, geolocation, ASN, privacy, residential proxy, and quota lookups. ================================================================================ # IPinfo MCP Server The IPinfo MCP Server gives AI assistants and MCP-compatible developer tools direct access to IP address intelligence from IPinfo. You can connect clients such as Claude Desktop, VS Code, Cursor, LM Studio, Gemini CLI, Claude Code, and Codex CLI to query geolocation, ASN, privacy, residential proxy, and quota data. Point your MCP client to this URL: ```text https://mcp.ipinfo.io/ ``` ## Quick Install Visit [https://mcp.ipinfo.io/](https://mcp.ipinfo.io/) in a browser. Paste your IPinfo token into the token field and the page will generate ready-to-copy configurations for every supported client. For Claude Desktop, VS Code, Cursor, and LM Studio, one-click install buttons are also available on the landing page. If you prefer manual setup, use the configurations in the next section. ## Authentication The MCP server reads the IPinfo API token from the `Authorization: Bearer ` header on each request. No server-side account or login is required, the token alone authenticates requests and determines which tools and fields are available based on your plan. Get a free token at [ipinfo.io/signup](/signup). ## Client Setup Paste your IPinfo token into the examples below to configure the server in your MCP client. ### Code-Focused MCP Clients **Visual Studio Code** Install the server in VS Code or add it manually to `.vscode/mcp.json`. Full Instructions: https://community.ipinfo.io/t/using-the-official-ipinfo-mcp-server-in-vs-code/7255 > Requires VS Code 1.99+ ```json { "servers": { "ipinfo": { "type": "http", "url": "https://mcp.ipinfo.io/", "headers": { "Authorization": "Bearer " } } } } ``` **Cursor** Add the server in Cursor or configure it manually in `~/.cursor/mcp.json` or `.cursor/mcp.json` in your project. ```json { "mcpServers": { "ipinfo": { "url": "https://mcp.ipinfo.io/", "headers": { "Authorization": "Bearer " } } } } ``` Restart Cursor or reload the MCP configuration after saving. **Gemini CLI** Add the server to `~/.gemini/settings.json`. ```json { "mcpServers": { "ipinfo": { "httpUrl": "https://mcp.ipinfo.io/", "headers": { "Authorization": "Bearer " } } } } ``` Create the file if it does not already exist. **Claude Code** Run the following command in your terminal: ```bash claude mcp add --transport http ipinfo https://mcp.ipinfo.io/ \ --header "Authorization: Bearer " ``` Use `--scope project` to add it only to the current project, or omit it for the global configuration. **Codex CLI** Add the server to `~/.codex/config.toml`. ```toml [mcp_servers.ipinfo] transport = "http" url = "https://mcp.ipinfo.io/" [mcp_servers.ipinfo.headers] Authorization = "Bearer " ``` Create the file if it does not already exist. ### General MCP Clients **Claude Desktop** Use MCPB (a helper app for adding remote MCP servers) or add the server manually to `claude_desktop_config.json`. - macOS: `~/Library/Application Support/Claude/` - Windows: `%APPDATA%\Claude\` - Linux: `~/.config/Claude/` Full Instructions: https://community.ipinfo.io/t/using-the-official-ipinfo-mcp-server-in-claude-desktop/7261 ```json { "mcpServers": { "ipinfo": { "command": "npx", "args": [ "mcp-remote", "https://mcp.ipinfo.io/", "--header", "Authorization: Bearer " ] } } } ``` Restart Claude Desktop after saving. **LM Studio** Add the server in LM Studio from `Developer -> MCP Servers -> Add Server`. > Requires LM Studio 0.3.6+ ```json { "url": "https://mcp.ipinfo.io/", "headers": { "Authorization": "Bearer " } } ``` ## Tools ### Available Tools The MCP server exposes the following IPinfo tools. #### `ipinfo_lookup` Geolocation, network, and metadata for IP addresses. Set `detailed=true` for city-level geolocation, privacy flags, and richer ASN data. The `detailed=true` mode requires a paid token. #### `ipinfo_geolocate` Geographic location data for one or more IP addresses. The free tier returns country and continent, while `detailed=true` adds city, region, coordinates, timezone, and postal code. #### `ipinfo_asn` Autonomous system and network ownership information, including ASN, organization name, and domain. Set `detailed=true` for network type such as ISP, hosting, business, or education, and `last_changed` metadata. #### `ipinfo_check_privacy` Checks whether IP addresses use VPN, proxy, relay, or Tor. Also includes flags for anycast, hosting, mobile, and satellite networks. With a Plus-tier token, the `anonymous.name` field returns the VPN provider name when available. #### `ipinfo_check_residential_proxy` Detects residential proxy usage and returns the proxy service name, last seen date, and observation frequency. #### `ipinfo_quota` Returns API usage and remaining quota, including daily and monthly counts, plan limits, and remaining requests. ### Tool Selection Quick Guide Use this mapping to choose the right tool for the user intent. | User Intent | Recommended Tool | Notes | | --- | --- | --- | | Full IP profile (geo + network + privacy flags) | `ipinfo_lookup` | Use `detailed=true` for city-level + richer fields (paid feature) | | Country/continent only | `ipinfo_geolocate` | Default mode is lightweight | | City/region/coordinates/timezone | `ipinfo_geolocate` | Requires `detailed=true` (paid feature) | | ASN and owner/network details | `ipinfo_asn` | Use `detailed=true` for network type (paid feature) | | VPN/proxy/Tor/anonymity checks | `ipinfo_check_privacy` | Paid feature | | Residential proxy checks | `ipinfo_check_residential_proxy` | Paid feature/add-on | | Usage and quota | `ipinfo_quota` | No pagination | ## Usage Guidance ### Response Format Every paginated tool returns a consistent response shape with four sections: `_pagination`, `_meta`, `results`, and optionally `validation_errors`. Example response from `ipinfo_lookup`: ```json { "_pagination": { "total_results": 2, "page": 1, "page_size": 25, "total_pages": 1, "has_next": false, "has_previous": false }, "_meta": { "api_calls_made": 1, "from_cache": 0 }, "results": { "8.8.8.8": { "ip": "8.8.8.8", "country": "United States", "country_code": "US", "continent": "North America", "continent_code": "NA", "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com" }, "1.1.1.1": { "ip": "1.1.1.1", "country": "Australia", "country_code": "AU", "continent": "Oceania", "continent_code": "OC", "asn": "AS13335", "as_name": "Cloudflare Inc.", "as_domain": "cloudflare.com" } }, "validation_errors": { "192.168.1.1": "'192.168.1.1' is a private IP address. Only public IP addresses can be looked up." } } ``` Successful results are keyed by IP in the `results` object. Invalid inputs appear in `validation_errors` instead of causing the whole request to fail. On error, a tool returns a different shape: ```json { "error": true, "code": "ACCESS_DENIED", "message": "You don't have access to this feature.", "suggestion": "Tell the user they can get access by upgrading at /pricing" } ``` ### Caching and Quota The server maintains an in-memory cache for the lifetime of the MCP session. Repeat lookups of the same IP are served from cache and do not consume API quota. The cache is scoped by tool mode (lite, detailed, residential proxy) so a detailed lookup will not be served from a lite cache entry. Each response includes a `_meta` object reporting `api_calls_made` (how many times the IPinfo API was called during this tool invocation) and `from_cache` (how many results were served from the session cache). Clients do not need to deduplicate input lists, the cache handles that automatically. ### Prompting Best Practices - Include the exact tool name in the prompt. - Specify required output fields explicitly. - If city-level output is needed, require `detailed=true`. - When applicable, require `validation_errors` to be returned. - For large inputs on paginated tools, require pagination completion (`page_size for these IPs: [IPs]. Return fields: [field list]. When applicable, also return validation_errors and pagination metadata. If error=true, map code to recovery action. ``` ### Prompt Scenario Table Use this quick-reference table to improve prompt quality when working with AI assistants and the IPinfo MCP tools. | Wrong Prompt | Likely Result | Advice | Correct Prompt | | --- | --- | --- | --- | | Tell me about this IP: 8.8.8.8 | Ambiguous request. The assistant may return only one data dimension such as location or ASN. | Specify the exact tool and fields you need. | Use `ipinfo_lookup` with `detailed=true` for 8.8.8.8. Return geolocation, ASN, privacy flags, and `validation_errors`. | | Is this IP suspicious? | Subjective output without consistent checks. | Replace vague wording with measurable privacy indicators. | Use `ipinfo_check_privacy` for 1.1.1.1 and return `is_anonymous`, `anonymous.is_vpn`, `anonymous.is_proxy`, `anonymous.is_tor`, and `is_hosting`. | | Who owns this IP and is it a VPN? | The assistant may call only one tool and miss part of the answer. | Split mixed intent into tool-specific steps. | Step 1: call `ipinfo_asn` for 52.95.110.1 and return ASN/name/domain. Step 2: call `ipinfo_check_privacy` for the same IP and return VPN/proxy/Tor flags. | | Get city for these IPs | The assistant may call geolocation in default mode and only return country/continent. | Force detailed mode for city-level output. | Use `ipinfo_geolocate` with `detailed=true` for [IPs]. Return city, region, country, latitude, longitude, and timezone. | | Check these 2,300 IPs | One call may only process a slice and appear incomplete. | Explicitly require pagination completion. | Process 2,300 IPs with `page_size=1000`, iterate all pages, and aggregate all `results` and `validation_errors`. | | Find proxy IPs | The assistant may use residential proxy only and miss VPN/Tor/proxy indicators. | Clarify whether you need general privacy detection or only residential proxy checks. | Use `ipinfo_check_privacy` for VPN/proxy/Tor detection. Use `ipinfo_check_residential_proxy` only for residential proxy classification. | | The tool returned nothing | Empty `results` may be misread as a hard failure. | Validate pagination, input validity, and error object first. | If `results` is empty, first check `_pagination`, then `validation_errors`, then top-level `error` to explain the cause. | | Use the best tool | Tool choice may vary and be incorrect for your intent. | For critical workflows, always pin the tool name. | Use exactly `ipinfo_check_privacy` for these IPs and do not substitute another tool. Include `validation_errors` in the output. | | Why did this fail? | No clear recovery action is provided. | Translate error codes into user actions. | If `error=true`, map `code` to action: `NO_TOKEN` -> configure token, `ACCESS_DENIED` -> upgrade plan, `RATE_LIMITED` -> retry with backoff. | | Enrich these 2,000 IPs | The assistant may repeatedly report only the first 25 IPs and claim completion. | Force full pagination traversal and require per-page accounting. | Process all IPs with `page_size=1000` and iterate `page=1.._pagination.total_pages`. Return `processed_count`, `remaining_count`, and unique IP count to prove full coverage. | | Re-run enrichment with latest data | The assistant may reuse its native memory/cache and avoid making fresh tool calls. | Explicitly instruct no memory reuse and require evidence of new calls. | Do not use prior outputs or chat memory. Call the MCP tool again for all IPs and return current `_meta` (`api_calls_made`, `from_cache`) and timestamped run summary. | | Get full details for these IPs | The assistant may keep using lite-style results and omit detailed fields. | Require detailed mode and reject incomplete field sets. | Use `ipinfo_lookup` with `detailed=true`. Response is invalid unless it includes city-level geo and privacy/network flags where available. | | Write results to output file | The assistant may summarize in chat but skip overwriting the target file. | Make file write requirements explicit and verifiable. | Overwrite `` with the new complete results (do not append). Confirm by reporting file path, final record count, and that previous content was replaced. | ### Response Handling Rules When interpreting any tool response, use this order: 1. Check top-level `error` first. 2. Check `_pagination` to confirm result coverage. 3. Read `results` for successful IPs. 4. Read `validation_errors` for rejected IPs. This prevents common misreads where empty `results` are treated as API failures. ### Validation and Pagination Behavior - Input supports mixed-quality IP lists. - Valid public IPs are processed. - Invalid/private/loopback/reserved/multicast/bogon IPs appear in `validation_errors`. - A single response can contain both successful `results` and `validation_errors`. - `page_size` defaults to 25 and is capped at 1000. - The underlying batch endpoint processes up to 1000 IPs per API call. - Requesting a page beyond available data returns empty `results` (not a hard error). ### Error Codes and Recovery Actions Top-level errors (when the whole request fails) use the following codes. For per-IP validation issues such as private or malformed addresses, inspect the `validation_errors` field in the response instead. | Error Code | Meaning | Recommended Action | | --- | --- | --- | | `NO_TOKEN` | Token is missing | Configure bearer token in MCP client settings | | `ACCESS_DENIED` | Token lacks required plan/feature | Upgrade plan or use supported tool/mode | | `RATE_LIMITED` | Request rate exceeded | Retry with backoff or use a higher tier | | `API_ERROR` | Upstream API error | Retry; escalate if persistent | ## Notes - The MCP server is powered by the IPinfo API. - All examples above use bearer token authentication through the `Authorization` header. - Support for manual setup details can vary slightly by client version. ================================================================================ PAGE: IPinfo CLI URL: https://ipinfo.io/developers/cli SLUG: cli DESCRIPTION: Install and use the official IPinfo CLI for IP lookups, bulk enrichment, ASN intelligence, summaries, mapping, IP utilities, and workflow automation. ================================================================================ # IPinfo CLI The IPinfo CLI is the official command-line toolkit for querying and processing IP intelligence data from IPinfo. It supports: - Single IP and ASN lookups - Bulk enrichment from files, CIDRs, ranges, and stdin - Summaries and map visualizations - Quota and account workflows - A suite of standalone IP processing binaries ## Install Choose one of the common installation methods: ```bash # macOS brew install ipinfo-cli # Ubuntu PPA echo "deb [trusted=yes] https://ppa.ipinfo.net/ /" | sudo tee "/etc/apt/sources.list.d/ipinfo.ppa.list" sudo apt update sudo apt install ipinfo # Docker docker run --rm -it ipinfo/ipinfo:3.3.1 ``` For full platform coverage and package variants, see the [CLI repository README](https://github.com/ipinfo/cli). ## Quick Start ### 1. Authenticate ```bash ipinfo init ``` Notes: - A token is required for bulk lookup and some advanced APIs. - Without a token, data is limited and some commands are blocked. ### 2. Look up one IP ```bash ipinfo 8.8.8.8 ``` ### 3. Bulk enrich from a file ```bash cat ips.txt | ipinfo bulk -j > enriched.json ``` ### 4. Inspect request quota ```bash ipinfo quota ``` ## Command Routing Behavior The CLI auto-detects certain inputs before checking explicit subcommands: 1. IP string: routes to IP lookup 2. ASN string: routes to ASN lookup 3. Domain-like string: routes to domain lookup 4. Otherwise: explicit command handling Practical implication: - Use explicit subcommands in production scripts to avoid ambiguity. - Prefer `ipinfo bulk ...` over relying on implicit stdin mode when reliability matters. ## Command Reference This section lists the commands exposed by the CLI and the options that matter for real usage. ### Common Flags Many lookup-style commands share these options: - `--token`, `-t`: use a token for this command only - `--nocache`: bypass the local BoltDB cache - `--help`, `-h`: show help - `--nocolor`: disable color output where applicable - `--field`, `-f`: limit output to selected fields on lookup commands - `--json`, `-j`: JSON output - `--csv`, `-c`: CSV output where supported - `--yaml`, `-y`: YAML output where supported - `--pretty`, `-p`: human-readable pretty output where supported ### Lookup Commands | Command | Description | Key Options | | --- | --- | --- | | `ipinfo ` | Look up a single IP address. | `--token`, `--nocache`, `--field`, `--pretty`, `--json`, `--csv`, `--yaml`, `--nocolor`, `--help` | | `ipinfo myip` | Look up the current public IP address. | All single-IP lookup flags plus `--ipv6`, `-6` | | `ipinfo ` | Resolve a domain and look up the first returned IP. | Same options as single-IP lookup | | `ipinfo AS123` | Look up a single ASN. | `--token`, `--nocache`, `--field`, `--json`, `--yaml`, `--nocolor`, `--help` | | `ipinfo bulk ` | Bulk-enrich IPs from args, ranges, CIDRs, files, or stdin. | `--token`, `--nocache`, `--field`, `--json`, `--csv`, `--yaml`, `--nocolor`, `--help` | | `ipinfo asn bulk ` | Bulk-enrich ASNs from args, files, or stdin. | `--token`, `--nocache`, `--field`, `--json`, `--yaml`, `--help` | ### Analytics and Visualization Commands | Command | Description | Key Options | | --- | --- | --- | | `ipinfo summarize ` | Summarize countries, orgs, privacy traits, routes, and ASNs across a set of IPs. | `--token`, `--pretty`, `--json`, `--yaml`, `--nocolor`, `--help` | | `ipinfo map ` | Generate a report URL for mapped IP locations and optionally open it in the browser. | `--no-browser`, `--help` | | `ipinfo quota` | Show account usage and request limits. | `--detailed`, `-d`, `--help` | ### Account and Environment Commands | Command | Description | Key Options | | --- | --- | --- | | `ipinfo init [token]` | Log in interactively or save a token directly. | `--token`, `-t`, `--no-check`, `--help` | | `ipinfo logout` | Remove the saved token from config. | `--help` | | `ipinfo config =...` | Update local config values. | `--help` | | `ipinfo cache clear` | Clear the local cache database. | `--help` | | `ipinfo completion install` | Install shell completions automatically. | `--help` | | `ipinfo completion bash` | Print the Bash completion script. | `--help` | | `ipinfo completion zsh` | Print the Zsh completion script. | `--help` | | `ipinfo completion fish` | Print the Fish completion script. | `--help` | | `ipinfo version` | Print the CLI version. | No additional options | ### Download Command | Command | Description | Key Options | | --- | --- | --- | | `ipinfo download [output]` | Download free IPinfo databases and verify the SHA256 checksum. Supported databases: `asn`, `country`, `country-asn`. | `--token`, `-t`, `--format`, `-f` (`mmdb`, `csv`, `json`), `--compress`, `-c`, `--help` | ### Text and Range Utility Commands These commands are available through the main `ipinfo` binary and are also shipped as standalone binaries. | Command | Description | Options | | --- | --- | --- | | `ipinfo grepip` | Extract IPs, CIDRs, or ranges from text or files. | `--only-matching`, `-o`, `--include-cidrs`, `--include-ranges`, `--cidrs-only`, `--ranges-only`, `--no-filename`, `--no-recurse`, `--ipv4`, `-4`, `--ipv6`, `-6`, `--exclude-reserved`, `-x`, `--nocolor`, `--help` | | `ipinfo grepdomain` | Extract domains from text or files. | `--only-matching`, `-o`, `--no-filename`, `--no-recurse`, `--no-punycode`, `-n`, `--nocolor`, `--help` | | `ipinfo matchip` | Find overlaps between one or more IP expressions and one or more sources. | `--expression`, `-e` (repeatable), `--help` | | `ipinfo prips` | Expand CIDRs or ranges into individual IPs. | `--help` | | `ipinfo cidr2ip` | Convert CIDRs to individual IPs. | `--help` | | `ipinfo cidr2range` | Convert CIDRs to start-end IP ranges. | `--help` | | `ipinfo range2cidr` | Convert ranges to one or more CIDRs. | `--help` | | `ipinfo range2ip` | Convert ranges to individual IPs. | `--help` | | `ipinfo splitcidr ` | Split a larger CIDR into smaller CIDRs. | `--help` | | `ipinfo randip` | Generate random IP addresses. | `--num`, `-n`, `--ipv4`, `-4`, `--ipv6`, `-6`, `--start`, `-s`, `--end`, `-e`, `--exclude-reserved`, `-x`, `--unique`, `-u`, `--help` | ### `tool` Subcommands The `tool` group contains IP arithmetic, inspection, and normalization helpers. | Subcommand | Description | Options | | --- | --- | --- | | `ipinfo tool aggregate` | Aggregate IPs, ranges, and CIDRs efficiently. | `--quiet`, `-q`, `--help` | | `ipinfo tool next` | Print the next IP for each input IP. | `--quiet`, `-q`, `--help` | | `ipinfo tool prev` | Print the previous IP for each input IP. | `--quiet`, `-q`, `--help` | | `ipinfo tool lower` | Print the lower/start IP for each CIDR, range, or IP. | `--quiet`, `-q`, `--help` | | `ipinfo tool upper` | Print the upper/end IP for each CIDR, range, or IP. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_v4` | Report whether each input is IPv4. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_v6` | Report whether each input is IPv6. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_valid` | Report whether an IP is valid. | `--help` | | `ipinfo tool is_one_ip` | Check whether a CIDR or range represents exactly one IP. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_v4in6` | Check whether an IP is IPv4-mapped IPv6. | `--help` | | `ipinfo tool is_loopback` | Check whether an IP is loopback. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_multicast` | Check whether an IP is multicast. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_unspecified` | Check whether an IP is unspecified. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_global_unicast` | Check whether an IP is global unicast. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_link_local_unicast` | Check whether an IP is link-local unicast. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_link_local_multicast` | Check whether an IP is link-local multicast. | `--quiet`, `-q`, `--help` | | `ipinfo tool is_interface_local_multicast` | Check whether an IP is interface-local multicast. | `--quiet`, `-q`, `--help` | | `ipinfo tool ip2n` | Convert an IPv4 or IPv6 address to decimal. | `--help` | | `ipinfo tool n2ip` | Evaluate a number expression and convert to IPv4 or IPv6. | `--help` | | `ipinfo tool n2ip6` | Evaluate a number expression and convert to IPv6. | `--help` | | `ipinfo tool unmap` | Remove any IPv4-mapped IPv6 wrapper from an IP. | `--help` | #### `tool prefix` Subcommands | Subcommand | Description | Options | | --- | --- | --- | | `ipinfo tool prefix addr ` | Return the base IP address of a prefix. | `--help` | | `ipinfo tool prefix bits ` | Return the prefix length, or `-1` if invalid. | `--help` | | `ipinfo tool prefix masked ` | Return the canonical masked form of a prefix. | `--help` | | `ipinfo tool prefix is_valid ` | Report whether a prefix is valid. | `--help` | ### `mmdb` Subcommands | Subcommand | Description | Options | | --- | --- | --- | | `ipinfo mmdb read ` | Read MMDB data for IPs, ranges, CIDRs, files, or stdin. | `--format`, `-f` (`json`, `json-compact`, `json-pretty`, `tsv`, `csv`), `--nocolor`, `--help` | | `ipinfo mmdb import [input] [output]` | Import CSV, TSV, or JSON data into an MMDB file. | `--in`, `-i`, `--out`, `-o`, `--csv`, `-c`, `--tsv`, `-t`, `--json`, `-j`, `--fields`, `-f`, `--fields-from-header`, `--range-multicol`, `--joinkey-col`, `--no-fields`, `--no-network`, `--ip`, `--size`, `-s`, `--merge`, `-m`, `--ignore-empty-values`, `--disallow-reserved`, `--alias-6to4`, `--disable-metadata-pointers`, `--help` | | `ipinfo mmdb export [out]` | Export an MMDB file to CSV, TSV, or JSON. | `--out`, `-o`, `--format`, `-f`, `--no-header`, `--help` | | `ipinfo mmdb diff ` | Show subnet and/or record differences between two MMDB files. | `--subnets`, `-s`, `--records`, `-r`, `--help` | | `ipinfo mmdb metadata ` | Print MMDB metadata. | `--format`, `-f` (`pretty`, `json`), `--nocolor`, `--help` | | `ipinfo mmdb verify ` | Verify that an MMDB file is valid and not corrupted. | `--help` | ## Input Sources and Output Modes ### Input Sources Most multi-item commands support these input forms: - Direct arguments: `ipinfo bulk 8.8.8.8 1.1.1.1` - CIDRs: `ipinfo bulk 8.8.8.0/24` - Ranges: `ipinfo bulk 8.8.8.0-8.8.8.255` - File paths: `ipinfo bulk ips.txt` - stdin: `cat ips.txt | ipinfo bulk` ### Output Formats - Pretty: human-readable (default for single IP command) - JSON: structured output - CSV: tabular output - YAML: YAML output Common flags: - `-j` or `--json` - `-c` or `--csv` - `-y` or `--yaml` - `-f` or `--field` to return only specific fields Example: ```bash ipinfo 8.8.8.8 -f hostname,asn.name -j ``` ## Caching Behavior The CLI uses a local database for caching by default. - Cache file is stored under the user config directory (`~/.config/ipinfo` on Linux/macOS). - Cache can speed repeated lookups. - Old cache can appear stale if you expect fresh results. Controls: - Disable per call: `--nocache` - Clear cache: `ipinfo cache clear` - Toggle cache globally: `ipinfo config cache=enable` or `ipinfo config cache=disable` ## Reliability Rules for Batch Enrichment Use these rules for stable automation: 1. Always use explicit command and format flags in scripts. 2. Always write results to a file explicitly (`> output.json`). 3. Always verify output record count after completion. 4. If freshness matters, use `--nocache` or clear cache first. 5. Use field filtering only when your downstream expects partial records. Suggested pattern: ```bash cat ips.txt \ | ipinfo bulk --nocache -j \ > enriched.json jq 'length' enriched.json ``` ## Common Failure Modes and Fixes | Symptom | Likely Cause | Fix | | --- | --- | --- | | `bulk lookups require a token` | Not authenticated | Run `ipinfo init` or pass `--token` | | Empty or short bulk output | Invalid/private inputs, or wrong source passed | Validate input list and source path, then retry | | Output seems stale | Local cache serving old values | Use `--nocache` or `ipinfo cache clear` | | Wrong format in output file | Missing explicit format flag | Add `-j`, `-c`, or `-y` explicitly | | Command appears to hang | Waiting on stdin | Use explicit file argument or provide piped input | | Old output remains in file | File not overwritten in command flow | Use `>` to overwrite target file and verify with line count | ## Notes - The CLI respects `NO_COLOR` or `--nocolor` for non-colored output. - Auto-completion is available via `ipinfo completion install`. - Standalone binaries follow the same distribution channels as the main CLI. ================================================================================ PAGE: Website Search URL: https://ipinfo.io/developers/website-search SLUG: website-search DESCRIPTION: Find API docs, guides, tools, and product pages quickly with IPinfo Website Search. ================================================================================ # Website Search Website Search helps you find relevant pages and use the ProbeNet Live with CLI-like commands. ## What You Can Do Your browser does not support the video tag. ### Go to a country page Search by country name or country code to go straight to a country page. Examples: - `Germany` - `UK` - `Spain` - `US` - `GB` ### Get your IP information To open your IP information page, search for one of the following: - `me` - `my ip` - `whats my ip` ### Use CLI-style commands The search bar also supports command-style queries. #### ProbeNet Live: Ping - Ping your IP address: `ping me` - Ping a specific IP address: `ping 1.1.1.1` #### ProbeNet Live: Trace - Trace your IP: `trace me` - Trace a specific IP: `trace 8.8.8.8` #### Star and unstar IPs - Star an IP: `star 134.58.154.35` - Unstar an IP: `unstar 134.58.154.35` ## Keyboard Shortcuts Use these keyboard shortcuts in Website Search: | Shortcut | Action | | --- | --- | | `/` | Start search | | `G` then `I` | Go to My IP page | | `G` then `A` | Go to My ASN page | ================================================================================ PAGE: API Libraries URL: https://ipinfo.io/developers/libraries SLUG: libraries DESCRIPTION: Official IPinfo libraries for popular programming languages including Python, Node.js, Java, Ruby, PHP, Go, and more. ================================================================================ # Official API Supported Libraries ## For programming languages We maintain a number of official client libraries for popular programming languages. Using one of our libraries is the easiest way to get setup with our API. They also add some additional functionality, such as including the full country name, and built in support for caching. | Language | Source code | Package | | -------- | ------------------------------------------------- | ------------------------------------------------------------------------ | | PHP | [ipinfo/php](https://github.com/ipinfo/php) | [Packagist](https://packagist.org/packages/ipinfo/ipinfo) | | Python | [ipinfo/python](https://github.com/ipinfo/python) | [PyPi](https://pypi.org/project/ipinfo/) | | Perl | [ipinfo/perl](https://github.com/ipinfo/perl) | [CPAN](https://metacpan.org/pod/Geo::IPinfo) | | Java | [ipinfo/java](https://github.com/ipinfo/java) | [Maven Central](https://mvnrepository.com/artifact/io.ipinfo/ipinfo-api) | | C# | [ipinfo/csharp](https://github.com/ipinfo/csharp) | [Nuget](https://www.nuget.org/packages/IpInfo/) | | Ruby | [ipinfo/ruby](https://github.com/ipinfo/ruby) | [Ruby Gems](https://rubygems.org/gems/IPinfo) | | Go | [ipinfo/go](https://github.com/ipinfo/go) | [GitHub](https://github.com/ipinfo/go) | | Rust | [ipinfo/rust](https://github.com/ipinfo/rust) | [crates.io](https://crates.io/crates/ipinfo) | | NodeJS | [ipinfo/node](https://github.com/ipinfo/node) | [NPM package](https://www.npmjs.com/package/node-ipinfo) | | Erlang | [ipinfo/erlang](https://github.com/ipinfo/erlang) | [hex.pm](https://hex.pm/packages/ipinfo) | | Swift | [ipinfo/swift](https://github.com/ipinfo/swift) | [GitHub](https://github.com/ipinfo/swift) | ## For frameworks We also maintain some official libraries for popular web frameworks. These offer framework specific middleware so that with just a few lines of code you can get IPinfo data for every visitor to your site. They also include functionality like user agent filtering, so you can reduce your request volumes by not looking up details for bots and spiders. | Framework | Source code | Package | | --------- | -------------------------------------------------------- | --------------------------------------------------------------------------- | | Express | [ipinfo/express](https://github.com/ipinfo/node-express) | [NPM package](https://www.npmjs.com/package/ipinfo-express) | | Django | [ipinfo/django](https://github.com/ipinfo/django) | [PyPi](https://pypi.org/project/ipinfo-django/) | | Laravel | [ipinfo/laravel](https://github.com/ipinfo/laravel) | [Packagist](https://packagist.org/packages/ipinfo/ipinfolaravel) | | Rails | [ipinfo/rails](https://github.com/ipinfo/rails) | [Ruby Gems](https://rubygems.org/gems/ipinfo-rails) | | Spring | [ipinfo/spring](https://github.com/ipinfo/spring) | [Maven Central](https://mvnrepository.com/artifact/io.ipinfo/ipinfo-spring) | ## Command Line Interface (CLI) If you prefer to use our APIs from the command line, we have you covered: try out our [IPinfo CLI](https://github.com/ipinfo/cli). The CLI allows you to look up IP details in bulk or one-by-one, summarize the details of up to 1000 IPs at a time, open a map of IP locations for any set of IPs, filter IPv4 & IPv6 addresses from any input, print out IP lists for any CIDR or IP range, and much more. See [installation instructions](https://github.com/ipinfo/cli#installation) for details on how to get setup. ## Third party libraries There are a large number of unofficial IPinfo libraries written by third parties. While these are not maintained by us and haven't been tested by us they can be a great way to get started quickly with IPinfo if you're using a language or framework that we don't have an official library for. [Search GitHub for IPinfo libraries](https://github.com/search?q=ipinfo.io). ================================================================================ PAGE: Guides & Tutorials URL: https://ipinfo.io/developers/guides SLUG: guides DESCRIPTION: Step-by-step tutorials and guides to help you integrate and use IPinfo's products and APIs effectively. ================================================================================ # Guides & Tutorials Explore our collection of practical guides and tutorials to help you get the most out of IPinfo's products and APIs. ## Blog & FAQs Visit our [How-To Guides](/blog/tag/how-to) section for step-by-step tutorial. You can also check out our [FAQ Section](https://support.ipinfo.io/hc/en-us/) section. ## Community Posts The [IPinfo Community](https://community.ipinfo.io/) hosts a ton of resources on how to use IPinfo's service, our data-related insights and overall data, cybersecurity and IP intelligence related community posts and microblogs. ### 2026 - [Understanding Different Approaches to IP Geolocation Accuracy](https://community.ipinfo.io/t/understanding-different-approaches-to-ip-geolocation-accuracy/7227/1) - [IP Geolocation and Geofeeds: Why Verification Matters](https://community.ipinfo.io/t/ip-geolocation-and-geofeeds-why-verification-matters/7216/1) - [How IP Geolocation Actually Works: Key Insights from IPinfo’s Head of Research](https://community.ipinfo.io/t/how-ip-geolocation-actually-works-key-insights-from-ipinfos-head-of-research/7212/1) - [The Infrastructure Behind Active Measurement](https://community.ipinfo.io/c/general/4) - [Trust-Based vs. Evidence-Based Geolocation](https://community.ipinfo.io/t/trust-based-vs-evidence-based-geolocation/7208/1) - [How we ensure data integrity for IP database downloads](https://community.ipinfo.io/t/how-we-ensure-data-integrity-for-ip-database-downloads/7207/1) - [Using LMDB for Residential Proxy Databases](https://community.ipinfo.io/t/using-lmdb-for-residential-proxy-databases/7202/1) - [MMDB Performance and LMDB for QPS for the Resproxy Database](https://community.ipinfo.io/t/mmdb-performance-and-lmdb-for-qps-for-the-resproxy-database/7180/1) - [Anycast location hints are live in IP pages](https://community.ipinfo.io/c/general/4) - [RPKI validation status on IP, Range and ASN lookup pages](https://community.ipinfo.io/t/announcement-rpki-validation-status-on-ip-range-and-asn-lookup-pages/7197/1) - [Why Some IP Addresses Don’t Have ASN Data (blank/missing ASN)](https://community.ipinfo.io/t/why-some-ip-addresses-dont-have-asn-data-blank-missing-asn/7195/1) - [Where do we geolocate an unassigned IP address?](https://community.ipinfo.io/t/where-do-we-geolocate-an-unassigned-ip-address/7192/1) ### 2025 - [IP addresses that visit non-existing URL paths: A Look into Tags and Our Privacy Data](https://community.ipinfo.io/t/ip-addresses-that-visit-non-existing-url-paths-a-look-into-tags-and-our-privacy-data/7196/1) - [Why Some IP Addresses Don’t Have ASN Data](https://community.ipinfo.io/t/why-some-ip-addresses-dont-have-asn-data/7195/1) - [Where do we geolocate an unassigned IP address?](https://community.ipinfo.io/t/where-do-we-geolocate-an-unassigned-ip-address/7192/1) - [Ipinfo.io/me tells you about the API access you have and your limits](https://community.ipinfo.io/t/ipinfo-io-me-tells-you-about-the-api-access-you-have-and-your-limits/7183/1) - [IP geolocation is not that hard. Accuracy and granularity is](https://community.ipinfo.io/t/ip-geolocation-is-not-that-hard-accuracy-and-granularity-is/7181/1) - [MMDB Performance and LMDB for QPS for the Resproxy Database](https://community.ipinfo.io/t/mmdb-performance-and-lmdb-for-qps-for-the-resproxy-database/7180/1) - [What to do if we flag your IP address as a residential proxy?](https://community.ipinfo.io/t/what-to-do-if-we-flag-your-ip-address-as-a-residential-proxy/7179/1) - [The updated API systems requires two mandatory parameters: \`context\` and \`parameter\` for the IP](https://community.ipinfo.io/t/the-updated-api-systems-requires-two-mandatory-parameters-context-and-parameter-for-the-ip/7169/1) - [IPinfo API Response Patterns](https://community.ipinfo.io/t/ipinfo-api-response-patterns/7125/1) - [Understanding IP Range Details: BGP vs WHOIS](https://community.ipinfo.io/t/understanding-ip-range-details-bgp-vs-whois/7113/1) - [How Many IPs Are Really Pingable?](https://community.ipinfo.io/t/how-many-ips-are-really-pingable/7043/1) - [IPinfo Lite: The ultimate IP to country API service](https://community.ipinfo.io/t/ipinfo-lite-the-ultimate-ip-to-country-api-service/6878/1) - [How our users verify the accuracy of IP geolocation using multi-location ping services](https://community.ipinfo.io/t/how-our-users-verify-the-accuracy-of-ip-geolocation-using-multi-location-ping-services/7013/1) - [Two Easy Ways to Get IPinfo Data](https://community.ipinfo.io/t/two-easy-ways-to-get-ipinfo-data/7012/1) - [Understanding Range Aggregation in IPinfo’s IP Databases](https://community.ipinfo.io/t/understanding-range-aggregation-in-ipinfos-ip-databases/6528/1) - [When One IP Range Becomes Many: Why Adding Location Splits Your CIDRs](https://community.ipinfo.io/t/when-one-ip-range-becomes-many-why-adding-location-splits-your-cidrs/6998/1) - [Detecting Impossible Travel with IPinfo’s Core service](https://community.ipinfo.io/t/detecting-impossible-travel-with-ipinfo-s-core-service/6938/1) - [Clarifying API Plans vs Downloadable Databases](https://community.ipinfo.io/t/clarifying-api-plans-vs-downloadable-databases/6931/1) - [Overview of IPinfo API endpoints](https://community.ipinfo.io/t/overview-of-ipinfo-api-endpoints/6910/1) - [Using IPinfo’s data in Spark (Using Pyspark)](https://community.ipinfo.io/t/using-ipinfos-data-in-spark-using-pyspark/6911/1) - [How our API works on IPv4 and IPv6 connection](https://community.ipinfo.io/t/how-our-api-works-on-ipv4-and-ipv6-connection/6909/1) - [An IPinfo perspective on real-time AI crawlers](https://community.ipinfo.io/t/an-ipinfo-perspective-on-real-time-ai-crawlers/6900/1) - [It takes less than 40 seconds to start using our data in BigQuery](https://community.ipinfo.io/t/it-takes-less-than-40-seconds-to-start-using-our-data-in-bigquery/6847/1) - [How IPinfo Validates Real Server Locations for VPNs](https://community.ipinfo.io/t/how-ipinfo-validates-real-server-locations-for-vpns/6892/1) - [Why is this Orange.com IP range in North Korea?](https://community.ipinfo.io/t/why-is-this-orange-com-ip-range-in-north-korea/6883/1) - [The North Korean gamers on Steam Map](https://community.ipinfo.io/t/the-north-korean-gamers-on-steam-map/6857/1) - [Expanding IP Range Data: Beyond BGP Announcements](https://community.ipinfo.io/t/expanding-ip-range-data-beyond-bgp-announcements/6844/1) - [IPinfo.io/my redirects to your IP address information](https://community.ipinfo.io/t/ipinfo-io-my-redirects-to-your-ip-address-information/6843/1) - [IPinfo is the IP geolocation data provider of Cloudflare](https://community.ipinfo.io/t/ipinfo-is-the-ip-geolocation-data-provider-of-cloudflare/6841/3) - [IPinfo Cloud Data Push for Google Cloud Storage (Google Cloud Platform / GCP)](https://community.ipinfo.io/t/ipinfo-cloud-data-push-for-google-cloud-storage-google-cloud-platform-gcp/6773/1) - [\[IPinfo Lite\] How to generate find IP addresses for smaller ASNs](https://community.ipinfo.io/t/ipinfo-lite-how-to-generate-find-ip-addresses-for-smaller-asns/6767/1) - [IPinfo Data Push Now Supports Azure Blob Storage](https://community.ipinfo.io/t/ipinfo-data-push-now-supports-azure-blob-storage/6772/1) - [IPinfo’s Core API service makes accessing privacy data more affordable!](https://community.ipinfo.io/t/ipinfos-core-api-service-makes-accessing-privacy-data-more-affordable/6769/1) - [WHOIS data context](https://community.ipinfo.io/t/whois-data-context/6736/1) - [What is an inactive ASN?](https://community.ipinfo.io/t/what-is-an-inactive-asn/6706/1) - [Monitor network traffic with ClickHouse, GoFlow2 and IPinfo](https://community.ipinfo.io/t/monitor-network-traffic-with-clickhouse-goflow2-and-ipinfo/6675/2) - [Exploring our IPinfo IP to Residential proxy data](https://community.ipinfo.io/t/exploring-our-ipinfo-ip-to-residential-proxy-data/6651/1) - [Snowflake listings include our data samples with 50 Rows](https://community.ipinfo.io/t/snowflake-listings-include-our-data-samples-with-50-rows/2565/1) ### 2024 - [\[Announcement\] We are adding rate limits to data downloads](https://community.ipinfo.io/t/announcement-we-are-adding-rate-limits-to-data-downloads/358/1) - [IPinfo location Names: Endonyms vs. Exonyms and Unicode vs. Romanization](https://community.ipinfo.io/t/ipinfo-location-names-endonyms-vs-exonyms-and-unicode-vs-romanization/6557/1) - [IP to Hosted domains overview](https://community.ipinfo.io/t/ip-to-hosted-domains-overview/6539/1) - [How to IP summarize an ASN using our free ASN database and IPinfo CLI](https://community.ipinfo.io/t/how-to-ip-summarize-an-asn-using-our-free-asn-database-and-ipinfo-cli/6514/5) - [IPv6 coverge, new ranges, and fallback values \[IPinfo Basics\]](https://community.ipinfo.io/t/ipv6-coverge-new-ranges-and-fallback-values-ipinfo-basics/5627/1) - [How Food Delivery and eCommerce Use IPinfo’s Data](https://community.ipinfo.io/t/how-food-delivery-and-ecommerce-use-ipinfo-s-data/6520/1) - [Summarizing all the IP ranges of an ASN](https://community.ipinfo.io/t/summarizing-all-the-ip-ranges-of-an-asn/5550/1) - [Snowflake: Inaccessible function or table](https://community.ipinfo.io/t/snowflake-inaccessible-function-or-table/5791/1) - [What is Anycast? How does IPinfo geolocate anycast IPs?](https://community.ipinfo.io/t/what-is-anycast-how-does-ipinfo-geolocate-anycast-ips/5742/1) - [Getting 403 forbidden when accessing the IPinfo API and website](https://community.ipinfo.io/t/getting-403-forbidden-when-accessing-the-ipinfo-api-and-website/303/1) - [406 response on IPinfo API services: Malformed access token](https://community.ipinfo.io/t/406-response-on-ipinfo-api-services-malformed-access-token/5751/1) - [IPinfo’s Free IP database now available in Caddy: caddy-ipinfo-free](https://community.ipinfo.io/t/ipinfos-free-ip-database-now-available-in-caddy-caddy-ipinfo-free/5747/1) - [Using IPinfo’s MMDB database with Rust](https://community.ipinfo.io/t/using-ipinfos-mmdb-database-with-rust/5587/1) - [Setting up a customer data upload to S3](https://community.ipinfo.io/t/setting-up-a-customer-data-upload-to-s3/1789/3) - [Lookup IP geolocation and ASN with ClickHouse and IPinfo’s free database](https://community.ipinfo.io/t/lookup-ip-geolocation-and-asn-with-clickhouse-and-ipinfos-free-database/149/5) - [Why are some IP addresses not always flagged in the privacy detection data?](https://community.ipinfo.io/t/why-are-some-ip-addresses-not-always-flagged-in-the-privacy-detection-data/5626/1) - [Freshness of data: API vs Data Downloads, which one is more “latest”?](https://community.ipinfo.io/t/freshness-of-data-api-vs-data-downloads-which-one-is-more-latest/5625/1) - [Why is my ISP getting my location wrong? \[IPinfo Basics\]](https://community.ipinfo.io/t/why-is-my-isp-getting-my-location-wrong-ipinfo-basics/5621/1) - [Appropriate geofeed URLs](https://community.ipinfo.io/t/appropriate-geofeed-urls/5602/1) - [Dynamic ASN/range based blocklist](https://community.ipinfo.io/t/dynamic-asn-range-based-blocklist/5603/1) - [Difference between rDNS and Hosted Domains](https://community.ipinfo.io/t/difference-between-rdns-and-hosted-domains/5601/1) - [Preventing Ad Fraud using IPinfo’s data](https://community.ipinfo.io/t/preventing-ad-fraud-using-ipinfo-s-data/5591/1) - [Difference between proxy and VPN according to our privacy detection](https://community.ipinfo.io/t/difference-between-proxy-and-vpn-according-to-our-privacy-detection/5604/1) - [Measuring geolocation accuracy with ground truth dataset](https://community.ipinfo.io/t/measuring-geolocation-accuracy-with-ground-truth-dataset/1717/1) - [IPinfo’s data is now available in BigQuery](https://community.ipinfo.io/t/ipinfo-s-data-is-now-available-in-bigquery/5583/1) - [Introducing the IPinfo Tags pages](https://community.ipinfo.io/t/introducing-the-ipinfo-tags-pages/5577/5) - [Create a WHOIS server from scratch](https://community.ipinfo.io/t/create-a-whois-server-from-scratch/5574/3) - [How we classify IP addresses in the IP to Privacy Detection Dataset](https://community.ipinfo.io/t/how-we-classify-ip-addresses-in-the-ip-to-privacy-detection-dataset/5573/1) - [IP Ranges API update: Redirect destination of a domain](https://community.ipinfo.io/t/ip-ranges-api-update-redirect-destination-of-a-domain/5565/1) - [Getting all prefixes or parent ranges (IPv4 and IPv6) from the ASN API using JQ](https://community.ipinfo.io/t/getting-all-prefixes-or-parent-ranges-ipv4-and-ipv6-from-the-asn-api-using-jq/5535/1) - [Regional Internet Registries (RIR) Explained](https://community.ipinfo.io/t/regional-internet-registries-rir-explained/5544/1) - [ASN (Autonomous System Number) Explained](https://community.ipinfo.io/t/asn-autonomous-system-number-explained/5545/1) - [Border Gateway Protocol (BGP) Explained](https://community.ipinfo.io/t/border-gateway-protocol-bgp-explained/5546/1) - [Why do the numbers of columns not match between the CSV/JSON and MMDB files?](https://community.ipinfo.io/t/why-do-the-numbers-of-columns-not-match-between-the-csv-json-and-mmdb-files/5531/7) - [Database for local language / foreign language / altname translation for geographic regions](https://community.ipinfo.io/t/database-for-local-language-foreign-language-altname-translation-for-geographic-regions/5561/1) - [The lie in their WHOIS: IP geolocation reporting explored](https://community.ipinfo.io/t/the-lie-in-their-whois-ip-geolocation-reporting-explored/4599/1) - [An exploration in threat intel mapping using ASN and Company data](https://community.ipinfo.io/t/an-exploration-in-threat-intel-mapping-using-asn-and-company-data/5548/1) - [Internet from scratch in 10 slides](https://community.ipinfo.io/t/internet-from-scratch-in-10-slides/5524/1) - [Fail2ban IPs visualized using IPinfo CLI and Sumamry tool](https://community.ipinfo.io/t/fail2ban-ips-visualized-using-ipinfo-cli-and-sumamry-tool/5529/1) - [Using our IPinfo’s data on Snowflake through direct upload/ingestion](https://community.ipinfo.io/t/using-our-ipinfo-s-data-on-snowflake-through-direct-upload-ingestion/3840/1) - [Using our daily updated databases on Snowflake](https://community.ipinfo.io/t/using-our-daily-updated-databases-on-snowflake/1100/1) - [IPinfo’s join\_key column explained](https://community.ipinfo.io/t/ipinfos-join-key-column-explained/5526/1) - [Announcing our new global geolocation accuracy page](https://community.ipinfo.io/t/announcing-our-new-global-geolocation-accuracy-page/5523/1) - [\[Update\] IP data pages with ping evidence for geolocation provider discrepancies](https://community.ipinfo.io/t/update-ip-data-pages-with-ping-evidence-for-geolocation-provider-discrepancies/1389/1) - [Hosting vs ISP? How we decide the IP connection types](https://community.ipinfo.io/t/hosting-vs-isp-how-we-decide-the-ip-connection-types/5521/1) - [Verify the IP location yourself](https://community.ipinfo.io/t/verify-the-ip-location-yourself/5519/1) - [Using IPinfo’s data downloads in PostgreSQL](https://community.ipinfo.io/t/using-ipinfo-s-data-downloads-in-postgresql/1000/1) - [Script to get list of ASN Organizations](https://community.ipinfo.io/t/script-to-get-list-of-asn-organizations/2415/20) - [Using IPinfo’s databases in Cribl](https://community.ipinfo.io/t/using-ipinfo-s-databases-in-cribl/5262/1) - [PostgreSQL: IP data lookup function](https://community.ipinfo.io/t/postgresql-ip-data-lookup-function/5000/3) - [PostgreSQL: \`CREATE TABLE\` and \`CREATE FUNCTION\` (UDF) queries for IPinfo data downloads](https://community.ipinfo.io/t/postgresql-create-table-and-create-function-udf-queries-for-ipinfo-data-downloads/1003/1) - [Snowflake Marketplace is the simplest, most efficient way to use our data in Snowflake](https://community.ipinfo.io/t/snowflake-marketplace-is-the-simplest-most-efficient-way-to-use-our-data-in-snowflake/4840/1) ### 2023 - [Querying IPinfo IP databases inside BigQuery](https://community.ipinfo.io/t/querying-ipinfo-ip-databases-inside-bigquery/4579/1) - [Creating MMDB datasets with selected rows](https://community.ipinfo.io/t/creating-mmdb-datasets-with-selected-rows/4571/1) - [\[Announcement\] IPinfo data downloads now come with access to all available standard file formats](https://community.ipinfo.io/t/announcement-ipinfo-data-downloads-now-come-with-access-to-all-available-standard-file-formats/4549/1) - [Why the IPinfo community should explore our data in Snowflake](https://community.ipinfo.io/t/why-the-ipinfo-community-should-explore-our-data-in-snowflake/4423/1) - [Using IPinfo’s MMDB data downloads with Golang](https://community.ipinfo.io/t/using-ipinfos-mmdb-data-downloads-with-golang/4415/1) - [Creating a htaccess file from the IPinfo IP database](https://community.ipinfo.io/t/creating-a-htaccess-file-from-the-ipinfo-ip-database/4408/1) - [How do we classify ASN types?](https://community.ipinfo.io/t/how-do-we-classify-asn-types/2236/1) - [The story behind the IPinfo’s Notecard](https://community.ipinfo.io/t/the-story-behind-the-ipinfos-notecard/4288/1) - [\[Product Update\] Data download rate limit has been increased from 3 to 10](https://community.ipinfo.io/t/product-update-data-download-rate-limit-has-been-increased-from-3-to-10/4204/1) - [IPinfo’s ping-based geolocation provides more reliable IP location compared to WHOIS records](https://community.ipinfo.io/t/ipinfos-ping-based-geolocation-provides-more-reliable-ip-location-compared-to-whois-records/3084/1) - [Why the MMDB database does not include the IP range fields?](https://community.ipinfo.io/t/why-the-mmdb-database-does-not-include-the-ip-range-fields/3052/1) - [The problem with nested and irregular data structures in IP databases](https://community.ipinfo.io/t/the-problem-with-nested-and-irregular-data-structures-in-ip-databases/2846/1) - [Script to get list of ASN from a list of AS Organizations from .csv file](https://community.ipinfo.io/t/script-to-get-list-of-asn-from-a-list-of-as-organizations-from-csv-file/2423/1) - [Using checksums to find data downloads updates](https://community.ipinfo.io/t/using-checksums-to-find-data-downloads-updates/2555/1) - [IPinfo’s free database is now available on Kaggle!](https://community.ipinfo.io/t/ipinfos-free-database-is-now-available-on-kaggle/2529/1) - [Creating an ASN based IP bot traffic filterlist: Easily or for free](https://community.ipinfo.io/t/creating-an-asn-based-ip-bot-traffic-filterlist-easily-or-for-free/2271/5) - [Extracting specific fields from the MMDB database](https://community.ipinfo.io/t/extracting-specific-fields-from-the-mmdb-database/2395/1) - [Downloading IPinfo’s data downloads samples](https://community.ipinfo.io/t/downloading-ipinfos-data-downloads-samples/2255/1) - [The caveat of the MMDB file format as a database sample](https://community.ipinfo.io/t/the-caveat-of-the-mmdb-file-format-as-a-database-sample/2256/1) - [Using IP data in Attribute Based Access Control (ABAC)](https://community.ipinfo.io/t/using-ip-data-in-attribute-based-access-control-abac/2210/1) - [IPinfo WHOIS data downloads offering](https://community.ipinfo.io/t/ipinfo-whois-data-downloads-offering/1961/1) - [Preventing bot activity with IPinfo’s IP to Privacy Data](https://community.ipinfo.io/t/preventing-bot-activity-with-ipinfos-ip-to-privacy-data/1811/1) - [Downloading the IPinfo database / data downloads](https://community.ipinfo.io/t/downloading-the-ipinfo-database-data-downloads/1745/1) - [Getting IP data from anonymous IP addresses](https://community.ipinfo.io/t/getting-ip-data-from-anonymous-ip-addresses/1743/1) - [Why the provider’s name is sometimes is missing from our IP to privacy detection data?](https://community.ipinfo.io/t/why-the-provider-s-name-is-sometimes-is-missing-from-our-ip-to-privacy-detection-data/1719/1) - [Does IPinfo have an ISP database or connection type database?](https://community.ipinfo.io/t/does-ipinfo-have-an-isp-database-or-connection-type-database/1726/1) - [Do we provide a confidence score for our IP to Privacy data?](https://community.ipinfo.io/t/do-we-provide-a-confidence-score-for-our-ip-to-privacy-data/1723/1) - [Best way to get location for an anonymized ip address](https://community.ipinfo.io/t/best-way-to-get-location-for-an-anonymized-ip-address/1640/1) - [Checksum endpoint for data downloads](https://community.ipinfo.io/t/checksum-endpoint-for-data-downloads/1667/1) - [Difference between RWHOIS and RIR WHOIS](https://community.ipinfo.io/t/difference-between-rwhois-and-rir-whois/1587/1) - [Getting a list of IP addresses from a certain location radius](https://community.ipinfo.io/t/getting-a-list-of-ip-addresses-from-a-certain-location-radius/1581/1) - [How affiliate marketing and link tracking sites can use IP data](https://community.ipinfo.io/t/how-affiliate-marketing-and-link-tracking-sites-can-use-ip-data/245/1) - [Using IPinfo’s IP to Country ASN database in Kaspersky Suricata Rules](https://community.ipinfo.io/t/using-ipinfos-ip-to-country-asn-database-in-kaspersky-suricata-rules/1433/1) - [Choosing between the ASN, IP to ASN and IP to Company database](https://community.ipinfo.io/t/choosing-between-the-asn-ip-to-asn-and-ip-to-company-database/731/1) - [The radius field in the IP to Geolocation extended database explained](https://community.ipinfo.io/t/the-radius-field-in-the-ip-to-geolocation-extended-database-explained/694/1) - [Preventing credential stuffing attacks with IPinfo](https://community.ipinfo.io/t/preventing-credential-stuffing-attacks-with-ipinfo/1201/1) - [How to request a personalized database from the Snowflakes personalized database listing?](https://community.ipinfo.io/t/how-to-request-a-personalized-database-from-the-snowflakes-personalized-database-listing/1212/1) - [Can my employer know if I am using a VPN?](https://community.ipinfo.io/t/can-my-employer-know-if-i-am-using-a-vpn/1154/1) - [Get IP address ranges from the RDNS database on Snowflake by looking up domains/websites](https://community.ipinfo.io/t/get-ip-address-ranges-from-the-rdns-database-on-snowflake-by-looking-up-domains-websites/1136/1) - [Check AS organization country against a list of countries from IPinfo’s ASN database on Snowflake](https://community.ipinfo.io/t/check-as-organization-country-against-a-list-of-countries-from-ipinfo-s-asn-database-on-snowflake/1133/1) - [Using IPinfo as a search engine in your browser](https://community.ipinfo.io/t/using-ipinfo-as-a-search-engine-in-your-browser/1070/1) - [Enrich IP addresses with the CLI and get specific columns of data](https://community.ipinfo.io/t/enrich-ip-addresses-with-the-cli-and-get-specific-columns-of-data/1030/1) - [IPinfo CLI’s bulk command documentation](https://community.ipinfo.io/t/ipinfo-clis-bulk-command-documentation/1028/1) - [PostgreSQL: Using and installing the IP4R extension](https://community.ipinfo.io/t/postgresql-using-and-installing-the-ip4r-extension/1011/1) - [IPinfo database in Postgres in under 1 minute](https://community.ipinfo.io/t/ipinfo-database-in-postgres-in-under-1-minute/998/1) - [PostgreSQL: Why use the IP4R extension and not Postgres’ network address types?](https://community.ipinfo.io/t/postgresql-why-use-the-ip4r-extension-and-not-postgres-network-address-types/1010/1) - [Differences in data for the ASN and the IP to Company database](https://community.ipinfo.io/t/differences-in-data-for-the-asn-and-the-ip-to-company-database/730/1) - [Getting started with the IPinfo-DB Python Library. Download and Query our databases from Python](https://community.ipinfo.io/t/getting-started-with-the-ipinfo-db-python-library-download-and-query-our-databases-from-python/705/1) - [\[Blog\] Probe network - how we make sure our data is accurate](https://community.ipinfo.io/t/blog-probe-network-how-we-make-sure-our-data-is-accurate/529/1) - [Filtering ASN database](https://community.ipinfo.io/t/filtering-asn-database/395/1) - [How the domain field uniquely identifies organizations in the ASN and Company database](https://community.ipinfo.io/t/how-the-domain-field-uniquely-identifies-organizations-in-the-asn-and-company-database/401/1) - [Database download code snippet on database documentation](https://community.ipinfo.io/t/database-download-code-snippet-on-database-documentation/398/1) - [Filter ASN database based on a single ASN](https://community.ipinfo.io/t/filter-asn-database-based-on-a-single-asn/393/1) - [Filter ASN database based on multiple ASNs](https://community.ipinfo.io/t/filter-asn-database-based-on-multiple-asns/394/1) - [Why are there geolocation discrepancies between IPinfo’s data and other providers?](https://community.ipinfo.io/t/why-are-there-geolocation-discrepancies-between-ipinfo-s-data-and-other-providers/350/1) - [Extract IP, currency, symbol and flag from a bulk lookup using the IPinfo CLI](https://community.ipinfo.io/t/extract-ip-currency-symbol-and-flag-from-a-bulk-lookup-using-the-ipinfo-cli/92/1) - [Working with Pandas dataframe and IPinfo’s API](https://community.ipinfo.io/t/working-with-pandas-dataframe-and-ipinfo-s-api/74/1) ================================================================================ PAGE: IP ASN API Data URL: https://ipinfo.io/developers/ip-asn-api-data SLUG: ip-asn-api-data DESCRIPTION: Get ASN information such ASN number, organization name, domain, type, and route—available across all our different API plans. ================================================================================ # IP ASN API Data **Available in**: [IPinfo Lite](/developers/lite-api) (Limited), [IPinfo Core](/developers/core-api), [IPinfo Plus](/developers/plus-api), and [IPinfo Enterprise](/developers/enterprise-api) Along with detailed ASN information, the [paid API tiers](/pricing) provide access to the dedicated [ASN API service](/data/ip-asn), which returns information related to the ASN (Autonomous System Number) of the current or queried IP. - In the [IPinfo Lite](/developers/lite-api) plan, the API will return the ASN, AS Organization name, and AS Domain name. - In the [IPinfo Core](/developers/core-api) and [IPinfo Plus](/developers/plus-api) API tiers, you will have access to the ASN, AS Organization name, AS Domain name, and AS type. IPinfo Plus additionally includes the date the ASN record was last changed. This also includes access to the [ASN API service](/developers/asn) (ASN → ASN Information). - In the [IPinfo Enterprise](/developers/enterprise-api) API services, you will have the ASN, AS Organization name, AS Domain name, AS type, and AS route/prefix information for the queried IP address. This also includes access to the [ASN API service](/developers/asn) for ASN Information. ## IPinfo Lite [IPinfo Lite](/developers/lite-api) returns limited ASN data as part of the broader IP lookup response, including the ASN, AS Organization name, and AS Domain name. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Lite API - ASN Response", "description": "Schema for IPinfo Lite - ASN fields in the IP lookup response", "type": "object", "properties": { "asn": { "type": "string", "description": "The Autonomous System Number (ASN) associated with the IP address.", "example": "AS15169" }, "as_name": { "type": "string", "description": "The name of the organization that owns the ASN.", "example": "Google LLC" }, "as_domain": { "type": "string", "description": "The domain name associated with the ASN.", "example": "google.com" } } } ``` | Field | Type | Description | Example | | ----------- | ------ | ----------------------------------------------------------------- | ------------ | | `asn` | string | The Autonomous System Number (ASN) associated with the IP address. | `AS15169` | | `as_name` | string | The name of the organization that owns the ASN. | `Google LLC` | | `as_domain` | string | The domain name associated with the ASN. | `google.com` | **Full Response** ```bash # With token query parameter $ curl https://api.ipinfo.io/lite/8.8.8.8?token=$TOKEN $ curl https://api.ipinfo.io/lite/me?token=$TOKEN ``` API Response ```json { //... "asn": "AS15169", "as_name": "Google LLC", "as_domain": "google.com", //... } ``` **Specific Fields** ```bash $ curl https://api.ipinfo.io/lite/8.8.8.8/asn?token=$TOKEN AS15169 $ curl https://api.ipinfo.io/lite/8.8.8.8/as_name?token=$TOKEN Google LLC $ curl https://api.ipinfo.io/lite/8.8.8.8/as_domain?token=$TOKEN google.com ``` ## IPinfo Core [IPinfo Core](/developers/core-api) returns ASN data including the ASN, AS Organization name, AS Domain name, and AS type. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Core API - ASN Response", "description": "Schema for IPinfo Core - ASN API response", "type": "object", "properties": { "asn": { "type": "string", "description": "The Autonomous System Number (ASN) associated with the IP address.", "example": "AS52778" }, "name": { "type": "string", "description": "The name of the organization that owns the ASN.", "example": "SANER TELECOM INFORMATICA LTDA ME" }, "domain": { "type": "string", "description": "The domain name associated with the ASN.", "example": "vilanet.com.br" }, "type": { "type": "string", "description": "The type of the ASN, such as isp, business, hosting, or education.", "example": "isp" } } } ``` | Field | Type | Description | Example | | -------- | ------ | ------------------------------------------------------------------ | ----------------------------------- | | `asn` | string | The Autonomous System Number (ASN) associated with the IP address. | `AS52778` | | `name` | string | The name of the organization that owns the ASN. | `SANER TELECOM INFORMATICA LTDA ME` | | `domain` | string | The domain name associated with the ASN. | `vilanet.com.br` | | `type` | string | The type of the ASN, such as isp, business, hosting, or education. | `isp` | **Full Response** ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/177.155.240.88/as?token=$TOKEN $ curl https://api.ipinfo.io/lookup/me/as?token=$TOKEN ``` API Response ```json { "asn": "AS52778", "name": "SANER TELECOM INFORMATICA LTDA ME", "domain": "vilanet.com.br", "type": "isp" } ``` **Specific Fields** ```bash $ curl https://api.ipinfo.io/lookup/177.155.240.88/as/asn?token=$TOKEN AS52778 $ curl https://api.ipinfo.io/lookup/177.155.240.88/as/name?token=$TOKEN SANER TELECOM INFORMATICA LTDA ME $ curl https://api.ipinfo.io/lookup/177.155.240.88/as/domain?token=$TOKEN vilanet.com.br $ curl https://api.ipinfo.io/lookup/177.155.240.88/as/type?token=$TOKEN isp ``` ## IPinfo Plus [IPinfo Plus](/developers/plus-api) returns all Core ASN fields plus the date the ASN record was last changed. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Plus API - ASN Response", "description": "Schema for IPinfo Plus - ASN API response", "type": "object", "properties": { "asn": { "type": "string", "description": "The Autonomous System Number (ASN) associated with the IP address.", "example": "AS52778" }, "name": { "type": "string", "description": "The name of the organization that owns the ASN.", "example": "SANER TELECOM INFORMATICA LTDA ME" }, "domain": { "type": "string", "description": "The domain name associated with the ASN.", "example": "vilanet.com.br" }, "type": { "type": "string", "description": "The type of the ASN, such as isp, business, hosting, or education.", "example": "isp" }, "last_changed": { "type": "string", "description": "The date when the ASN record was last updated, in ISO 8601 format (YYYY-MM-DD).", "example": "2024-06-04" } } } ``` | Field | Type | Description | Example | | -------------- | ------ | ------------------------------------------------------------------ | ----------------------------------- | | `asn` | string | The Autonomous System Number (ASN) associated with the IP address. | `AS52778` | | `name` | string | The name of the organization that owns the ASN. | `SANER TELECOM INFORMATICA LTDA ME` | | `domain` | string | The domain name associated with the ASN. | `vilanet.com.br` | | `type` | string | The type of the ASN, such as isp, business, hosting, or education. | `isp` | | `last_changed` | string | The date when the ASN record was last updated, in ISO 8601 format (YYYY-MM-DD). | `2024-06-04` | **Full Response** ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/177.155.240.88/as?token=$TOKEN $ curl https://api.ipinfo.io/lookup/me/as?token=$TOKEN ``` API Response ```json { "asn": "AS52778", "name": "SANER TELECOM INFORMATICA LTDA ME", "domain": "vilanet.com.br", "type": "isp", "last_changed": "2024-06-04" } ``` **Specific Fields** ```bash $ curl https://api.ipinfo.io/lookup/177.155.240.88/as/asn?token=$TOKEN AS52778 $ curl https://api.ipinfo.io/lookup/177.155.240.88/as/name?token=$TOKEN SANER TELECOM INFORMATICA LTDA ME $ curl https://api.ipinfo.io/lookup/177.155.240.88/as/domain?token=$TOKEN vilanet.com.br $ curl https://api.ipinfo.io/lookup/177.155.240.88/as/type?token=$TOKEN isp $ curl https://api.ipinfo.io/lookup/177.155.240.88/as/last_changed?token=$TOKEN 2024-06-04 ``` ## IPinfo Enterprise [IPinfo Enterprise](/developers/enterprise-api) returns all Core ASN fields plus the AS route/prefix associated with the queried IP address. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Enterprise API - ASN Response", "description": "Schema for IPinfo Enterprise - ASN API response", "type": "object", "properties": { "asn": { "type": "string", "description": "The Autonomous System Number (ASN) associated with the IP address.", "example": "AS52778" }, "name": { "type": "string", "description": "The name of the organization that owns the ASN.", "example": "SANER TELECOM INFORMATICA LTDA ME" }, "domain": { "type": "string", "description": "The domain name associated with the ASN.", "example": "vilanet.com.br" }, "route": { "type": "string", "description": "The IP route or prefix associated with the ASN for the queried IP address, in CIDR notation.", "example": "177.155.240.0/23" }, "type": { "type": "string", "description": "The type of the ASN, such as isp, business, hosting, or education.", "example": "isp" } } } ``` | Field | Type | Description | Example | | -------- | ------ | -------------------------------------------------------------------------------------------- | ----------------------------------- | | `asn` | string | The Autonomous System Number (ASN) associated with the IP address. | `AS52778` | | `name` | string | The name of the organization that owns the ASN. | `SANER TELECOM INFORMATICA LTDA ME` | | `domain` | string | The domain name associated with the ASN. | `vilanet.com.br` | | `route` | string | The IP route or prefix associated with the ASN for the queried IP address, in CIDR notation. | `177.155.240.0/23` | | `type` | string | The type of the ASN, such as isp, business, hosting, or education. | `isp` | **Full Response** ```bash # With token query parameter $ curl https://ipinfo.io/177.155.240.88/asn?token=$TOKEN $ curl https://ipinfo.io/me/asn?token=$TOKEN ``` API Response ```json { "asn": "AS52778", "name": "SANER TELECOM INFORMATICA LTDA ME", "domain": "vilanet.com.br", "route": "177.155.240.0/23", "type": "isp" } ``` **Specific Fields** ```bash $ curl https://ipinfo.io/177.155.240.88/asn/asn?token=$TOKEN AS52778 $ curl https://ipinfo.io/177.155.240.88/asn/name?token=$TOKEN SANER TELECOM INFORMATICA LTDA ME $ curl https://ipinfo.io/177.155.240.88/asn/domain?token=$TOKEN vilanet.com.br $ curl https://ipinfo.io/177.155.240.88/asn/route?token=$TOKEN 177.155.240.0/23 $ curl https://ipinfo.io/177.155.240.88/asn/type?token=$TOKEN isp ``` In the [paid plans](/pricing), you also get access to the standalone [ASN API](/developers/asn) service, which provides information on the queried ASN. ```bash curl https://ipinfo.io/AS7922/json?token=$TOKEN ``` ```json { "asn": "AS7922", "name": "Comcast Cable Communications, LLC", "country": "US", "allocated": "1997-02-14", "registry": "arin", "domain": "comcast.com", "num_ips": 71224576, "type": "isp", "prefixes": [ { "netblock": "104.69.216.0/22", "id": "AKAMAI", "name": "Akamai Technologies, Inc.", "country": "US" }, { "netblock": "104.69.220.0/23", "id": "AKAMAI", "name": "Akamai Technologies, Inc.", "country": "US" } ], "prefixes6": [ { "netblock": "2601::/20", "id": "COMCAST6NET", "name": "Comcast Cable Communications, LLC", "country": "US" }, // ... ] } ``` You can learn more about the ASN API from [its documentation page](/developers/asn). ## Related Resources - [IPinfo Lite API](/developers/lite-api) - [IPinfo Core API](/developers/core-api) - [IPinfo Plus API](/developers/plus-api) - [IPinfo Enterprise API](/developers/enterprise-api) - [IP to ASN Database](/developers/ip-to-asn-database) - [ASN API](/developers/asn) ================================================================================ PAGE: Carrier Detection API Data URL: https://ipinfo.io/developers/ip-carrier-api-data SLUG: ip-carrier-api-data DESCRIPTION: Get mobile carrier information—carrier name, mobile country code (MCC), and mobile network code (MNC)—available across IPinfo Core, Plus, and Enterprise API plans. ================================================================================ # Carrier or Mobile IP API Data **Available in**: [IPinfo Core](/developers/core-api) (Partial), [IPinfo Plus](/developers/plus-api), and [IPinfo Enterprise](/developers/enterprise-api) [Carrier Data](/data/ip-carrier) returns mobile or carrier-related information for the IP address. - In limited capability, [IPinfo Core](/developers/core-api) also contains IP to carrier information, flagging carrier IP addresses. - The full IP to Carrier response is available across [IPinfo Plus](/developers/plus-api) and [IPinfo Enterprise](/developers/enterprise-api), which include the mobile carrier's name, its Mobile Country Code (MCC), and Mobile Network Code (MNC). ## IPinfo Core [IPinfo Core](/developers/core-api) returns limited carrier data as part of the broader IP lookup response, indicating whether the IP address is associated with a mobile carrier. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Core API - Carrier Flag Response", "description": "Schema for IPinfo Core - Carrier detection flag in the IP lookup response", "type": "object", "properties": { "is_mobile": { "type": "boolean", "description": "Indicates whether the IP address is associated with a mobile carrier network.", "example": true } } } ``` | Field | Type | Description | Example | | ----------- | ------- | ----------------------------------------------------------------------------- | ------- | | `is_mobile` | boolean | Indicates whether the IP address is associated with a mobile carrier network. | `true` | ```bash # With token query parameter $ curl https://ipinfo.io/66.87.125.72?token=$TOKEN $ curl https://ipinfo.io/me?token=$TOKEN ``` API Response ```json { //... "is_mobile": true, //... } ``` ## IPinfo Plus [IPinfo Plus](/developers/plus-api) returns full carrier data including the carrier name, Mobile Country Code (MCC), and Mobile Network Code (MNC). API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Plus API - Carrier Response", "description": "Schema for IPinfo Plus - Carrier API response", "type": "object", "properties": { "name": { "type": "string", "description": "The name of the mobile carrier associated with the IP address.", "example": "Vi India" }, "mcc": { "type": "string", "description": "The Mobile Country Code (MCC) identifying the country of the mobile carrier.", "example": "404" }, "mnc": { "type": "string", "description": "The Mobile Network Code (MNC) identifying the specific mobile carrier network.", "example": "22" } } } ``` | Field | Type | Description | Example | | ------ | ------ | ------------------------------------------------------------------------------ | ---------- | | `name` | string | The name of the mobile carrier associated with the IP address. | `Vi India` | | `mcc` | string | The Mobile Country Code (MCC) identifying the country of the mobile carrier. | `404` | | `mnc` | string | The Mobile Network Code (MNC) identifying the specific mobile carrier network. | `22` | **Full Response** ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/1.39.203.0/mobile?token=$TOKEN $ curl https://api.ipinfo.io/lookup/me/mobile?token=$TOKEN ``` API Response ```json { "name": "Vi India", "mcc": "404", "mnc": "22" } ``` **Specific Fields** ```bash $ curl https://api.ipinfo.io/lookup/1.39.203.0/mobile/name?token=$TOKEN Vi India $ curl https://api.ipinfo.io/lookup/1.39.203.0/mobile/mcc?token=$TOKEN 404 $ curl https://api.ipinfo.io/lookup/1.39.203.0/mobile/mnc?token=$TOKEN 22 ``` ## IPinfo Enterprise [IPinfo Enterprise](/developers/enterprise-api) returns full carrier data including the carrier name, Mobile Country Code (MCC), and Mobile Network Code (MNC). API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Enterprise API - Carrier Response", "description": "Schema for IPinfo Enterprise - Carrier API response", "type": "object", "properties": { "name": { "type": "string", "description": "The name of the mobile carrier associated with the IP address.", "example": "Vi India" }, "mcc": { "type": "string", "description": "The Mobile Country Code (MCC) identifying the country of the mobile carrier.", "example": "404" }, "mnc": { "type": "string", "description": "The Mobile Network Code (MNC) identifying the specific mobile carrier network.", "example": "22" } } } ``` | Field | Type | Description | Example | | ------ | ------ | ------------------------------------------------------------------------------ | ---------- | | `name` | string | The name of the mobile carrier associated with the IP address. | `Vi India` | | `mcc` | string | The Mobile Country Code (MCC) identifying the country of the mobile carrier. | `404` | | `mnc` | string | The Mobile Network Code (MNC) identifying the specific mobile carrier network. | `22` | **Full Response** ```bash # With token query parameter $ curl https://ipinfo.io/66.87.125.72/carrier?token=$TOKEN $ curl https://ipinfo.io/me/carrier?token=$TOKEN ``` API Response ```json { "name": "Vi India", "mcc": "404", "mnc": "22" } ``` **Specific Fields** ```bash $ curl https://ipinfo.io/66.87.125.72/carrier/name?token=$TOKEN Vi India $ curl https://ipinfo.io/66.87.125.72/carrier/mcc?token=$TOKEN 404 $ curl https://ipinfo.io/66.87.125.72/carrier/mnc?token=$TOKEN 22 ``` ## Related Resources - [IPinfo Core API](/developers/core-api) - [IPinfo Plus API](/developers/plus-api) - [IPinfo Enterprise API](/developers/enterprise-api) - [IP to Carrier Database](/developers/ip-to-mobile-carrier-database) ================================================================================ PAGE: IP Geolocation API Data URL: https://ipinfo.io/developers/ip-geolocation-api-data SLUG: ip-geolocation-api-data DESCRIPTION: Get IP address geolocation data—city, region, country, coordinates, timezone, postal code, and more—available across all our different API plans. ================================================================================ # IP Geolocation API Data **Available in**: IPinfo Lite (Limited), IPinfo Core, IPinfo Plus, and IPinfo Enterprise - Country-level geolocation data is offered in the IPinfo Lite API. - The full IP geolocation response is available across all our paid plans. - The IPinfo Plus API service comes with accuracy radius and geolocation stability fields. ## IPinfo Lite [IPinfo Lite](/developers/lite-api) returns limited IP geolocation data, including the country and continent. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Lite", "description": "Schema for IPinfo Country and Continent API response for IPinfo Lite", "type": "object", "properties": { "country_code": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code of the IP address.", "example": "FR" }, "country": { "type": "string", "description": "The country where the IP address is located.", "example": "France" }, "continent_code": { "type": "string", "description": "The two-letter continent code of the IP address location.", "example": "EU" }, "continent": { "type": "string", "description": "The continent where the IP address is located.", "example": "Europe" } } } ``` | Field | Type | Description | Example | | ---------------- | ------ | --------------------------------------------------------- | -------- | | `country_code` | string | The ISO 3166-1 alpha-2 country code of the IP address. | `FR` | | `country` | string | The country where the IP address is located. | `France` | | `continent_code` | string | The two-letter continent code of the IP address location. | `EU` | | `continent` | string | The continent where the IP address is located. | `Europe` | **Full Response** ```bash # With token query parameter $ curl https://api.ipinfo.io/lite/37.67.193.154?token=$TOKEN $ curl https://api.ipinfo.io/lite/me?token=$TOKEN ``` API Response ```json { // [...] "country_code": "FR", "country": "France", "continent_code": "EU", "continent": "Europe" } ``` **Specific Fields** ```bash $ curl https://api.ipinfo.io/lite/37.67.193.154/country_code?token=$TOKEN FR $ curl https://api.ipinfo.io/lite/37.67.193.154/country?token=$TOKEN France $ curl https://api.ipinfo.io/lite/37.67.193.154/continent_code?token=$TOKEN EU $ curl https://api.ipinfo.io/lite/37.67.193.154/continent?token=$TOKEN Europe ``` ## IPinfo Core [IPinfo Core](/developers/core-api) returns granular geolocation data down to zipcode, geographic coordinates, city, and state/region. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Core API - Geolocation API Response", "description": "Schema for IPinfo Core - IP Geolocation API response", "type": "object", "properties": { "city": { "type": "string", "description": "The city where the IP address is located.", "example": "Paris" }, "region": { "type": "string", "description": "The region or state where the IP address is located.", "example": "Île-de-France" }, "region_code": { "type": "string", "description": "The region code in ISO 3166 format.", "example": "IDF" }, "country": { "type": "string", "description": "The country where the IP address is located.", "example": "France" }, "country_code": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code of the IP address.", "example": "FR" }, "continent": { "type": "string", "description": "The continent where the IP address is located.", "example": "Europe" }, "continent_code": { "type": "string", "description": "The two-letter continent code of the IP address location.", "example": "EU" }, "latitude": { "type": "number", "description": "The latitude coordinate of the IP address location.", "example": 48.85341 }, "longitude": { "type": "number", "description": "The longitude coordinate of the IP address location.", "example": 2.3488 }, "timezone": { "type": "string", "description": "The local timezone of the IP address location, formatted according to the IANA Time Zone Database.", "example": "Europe/Paris" }, "postal_code": { "type": "string", "description": "The postal or zip code associated with the IP address location.", "example": "75000" } } } ``` | Field | Type | Description | Example | | ---------------- | ------ | -------------------------------------------------------------------------------------------------- | --------------- | | `city` | string | The city where the IP address is located. | `Paris` | | `region` | string | The region or state where the IP address is located. | `Île-de-France` | | `region_code` | string | The region code in ISO 3166 format. | `IDF` | | `country` | string | The country where the IP address is located. | `France` | | `country_code` | string | The ISO 3166-1 alpha-2 country code of the IP address. | `FR` | | `continent` | string | The continent where the IP address is located. | `Europe` | | `continent_code` | string | The two-letter continent code of the IP address location. | `EU` | | `latitude` | number | The latitude coordinate of the IP address location. | `48.85341` | | `longitude` | number | The longitude coordinate of the IP address location. | `2.3488` | | `timezone` | string | The local timezone of the IP address location, formatted according to the IANA Time Zone Database. | `Europe/Paris` | | `postal_code` | string | The postal or zip code associated with the IP address location. | `75000` | **Full Response** ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/37.67.193.154/geo?token=$TOKEN $ curl https://api.ipinfo.io/lookup/me/geo?token=$TOKEN ``` API Response ```json { "city": "Paris", "region": "Île-de-France", "region_code": "IDF", "country": "France", "country_code": "FR", "continent": "Europe", "continent_code": "EU", "latitude": 48.85341, "longitude": 2.3488, "timezone": "Europe/Paris", "postal_code": "75000" } ``` **Specific Fields** ```bash $ https://api.ipinfo.io/lookup/37.67.193.154/geo/city?token=$TOKEN Paris $ https://api.ipinfo.io/lookup/37.67.193.154/geo/region?token=$TOKEN Île-de-France $ https://api.ipinfo.io/lookup/37.67.193.154/geo/region_code?token=$TOKEN IDF $ https://api.ipinfo.io/lookup/37.67.193.154/geo/country?token=$TOKEN France $ https://api.ipinfo.io/lookup/37.67.193.154/geo/country_code?token=$TOKEN FR $ https://api.ipinfo.io/lookup/37.67.193.154/geo/continent?token=$TOKEN Europe $ https://api.ipinfo.io/lookup/37.67.193.154/geo/continent_code?token=$TOKEN EU $ https://api.ipinfo.io/lookup/37.67.193.154/geo/latitude?token=$TOKEN 48.85341 $ https://api.ipinfo.io/lookup/37.67.193.154/geo/longitude?token=$TOKEN 2.3488 $ https://api.ipinfo.io/lookup/37.67.193.154/geo/timezone?token=$TOKEN Europe/Paris $ https://api.ipinfo.io/lookup/37.67.193.154/geo/postal_code?token=$TOKEN 75000 ``` ## IPinfo Plus [IPinfo Plus](/developers/plus-api) returns granular geolocation data down to zipcode, geographic coordinates, city, and state/region, with additional accuracy metadata. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Plus API - Geolocation API Response", "description": "Schema for IPinfo Plus - IP Geolocation API response", "type": "object", "properties": { "city": { "type": "string", "description": "The city where the IP address is located.", "example": "Paris" }, "region": { "type": "string", "description": "The region or state where the IP address is located.", "example": "Île-de-France" }, "region_code": { "type": "string", "description": "The region code in ISO 3166 format.", "example": "IDF" }, "country": { "type": "string", "description": "The country where the IP address is located.", "example": "France" }, "country_code": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code of the IP address.", "example": "FR" }, "continent": { "type": "string", "description": "The continent where the IP address is located.", "example": "Europe" }, "continent_code": { "type": "string", "description": "The two-letter continent code of the IP address location.", "example": "EU" }, "latitude": { "type": "number", "description": "The latitude coordinate of the IP address location.", "example": 48.85341 }, "longitude": { "type": "number", "description": "The longitude coordinate of the IP address location.", "example": 2.3488 }, "timezone": { "type": "string", "description": "The local timezone of the IP address location, formatted according to the IANA Time Zone Database.", "example": "Europe/Paris" }, "postal_code": { "type": "string", "description": "The postal or zip code associated with the IP address location.", "example": "75000" }, "dma_code": { "type": "string", "description": "The Designated Market Area (DMA) code associated with the IP address location.", "example": "75" }, "geoname_id": { "type": "string", "description": "The GeoNames ID associated with the IP address location.", "example": "2988507" }, "radius": { "type": "number", "description": "The estimated accuracy radius in kilometers for the IP address location.", "example": 50 }, "last_changed": { "type": "string", "description": "The date when the geolocation data for this IP address was last updated, in ISO 8601 format.", "example": "2025-10-12" } } } ``` | Field | Type | Description | Example | | ---------------- | ------ | -------------------------------------------------------------------------------------------------- | --------------- | | `city` | string | The city where the IP address is located. | `Paris` | | `region` | string | The region or state where the IP address is located. | `Île-de-France` | | `region_code` | string | The region code in ISO 3166 format. | `IDF` | | `country` | string | The country where the IP address is located. | `France` | | `country_code` | string | The ISO 3166-1 alpha-2 country code of the IP address. | `FR` | | `continent` | string | The continent where the IP address is located. | `Europe` | | `continent_code` | string | The two-letter continent code of the IP address location. | `EU` | | `latitude` | number | The latitude coordinate of the IP address location. | `48.85341` | | `longitude` | number | The longitude coordinate of the IP address location. | `2.3488` | | `timezone` | string | The local timezone of the IP address location, formatted according to the IANA Time Zone Database. | `Europe/Paris` | | `postal_code` | string | The postal or zip code associated with the IP address location. | `75000` | | `dma_code` | string | The Designated Market Area (DMA) code associated with the IP address location. | `75` | | `geoname_id` | string | The GeoNames ID associated with the IP address location. | `2988507` | | `radius` | number | The estimated accuracy radius in kilometers for the IP address location. | `50` | | `last_changed` | string | The date when the geolocation data for this IP address was last updated, in ISO 8601 format. | `2025-10-12` | **Full Response** ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/37.67.193.154/geo?token=$TOKEN $ curl https://api.ipinfo.io/lookup/me/geo?token=$TOKEN ``` API Response ```json { "city": "Paris", "region": "Île-de-France", "region_code": "IDF", "country": "France", "country_code": "FR", "continent": "Europe", "continent_code": "EU", "latitude": 48.85341, "longitude": 2.3488, "timezone": "Europe/Paris", "postal_code": "75000", "dma_code": "75", "geoname_id": "2988507", "radius": 50, "last_changed": "2025-10-12" } ``` **Specific Fields** ```bash $ https://api.ipinfo.io/lookup/37.67.193.154/geo/city?token=$TOKEN Paris $ https://api.ipinfo.io/lookup/37.67.193.154/geo/region?token=$TOKEN Île-de-France $ https://api.ipinfo.io/lookup/37.67.193.154/geo/region_code?token=$TOKEN IDF $ https://api.ipinfo.io/lookup/37.67.193.154/geo/country?token=$TOKEN France $ https://api.ipinfo.io/lookup/37.67.193.154/geo/country_code?token=$TOKEN FR $ https://api.ipinfo.io/lookup/37.67.193.154/geo/continent?token=$TOKEN Europe $ https://api.ipinfo.io/lookup/37.67.193.154/geo/continent_code?token=$TOKEN EU $ https://api.ipinfo.io/lookup/37.67.193.154/geo/latitude?token=$TOKEN 48.85341 $ https://api.ipinfo.io/lookup/37.67.193.154/geo/longitude?token=$TOKEN 2.3488 $ https://api.ipinfo.io/lookup/37.67.193.154/geo/timezone?token=$TOKEN Europe/Paris $ https://api.ipinfo.io/lookup/37.67.193.154/geo/postal_code?token=$TOKEN 75000 $ https://api.ipinfo.io/lookup/37.67.193.154/geo/dma_code?token=$TOKEN 75 $ https://api.ipinfo.io/lookup/37.67.193.154/geo/geoname_id?token=$TOKEN 2988507 $ https://api.ipinfo.io/lookup/37.67.193.154/geo/radius?token=$TOKEN 50 $ https://api.ipinfo.io/lookup/37.67.193.154/geo/last_changed?token=$TOKEN 2025-10-12 ``` ## IPinfo Enterprise [IPinfo Enterprise](/developers/enterprise-api) returns IP geolocation data including city, zip code, country, and location coordinates. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Enterprise API - Geolocation API Response", "description": "Schema for IPinfo Enterprise - IP Geolocation API response", "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address being looked up.", "example": "37.67.193.154" }, "city": { "type": "string", "description": "The city where the IP address is located.", "example": "Paris" }, "region": { "type": "string", "description": "The region or state where the IP address is located.", "example": "Île-de-France" }, "country": { "type": "string", "description": "The ISO 3166-1 alpha-2 country code of the IP address.", "example": "FR" }, "loc": { "type": "string", "description": "The latitude and longitude coordinates of the IP address location, formatted as a comma-separated string.", "example": "48.8534,2.3488" }, "org": { "type": "string", "description": "The ASN and organization name associated with the IP address.", "example": "AS15557 Societe Francaise Du Radiotelephone - SFR SA" }, "postal": { "type": "string", "description": "The postal or zip code associated with the IP address location.", "example": "75000" }, "timezone": { "type": "string", "description": "The local timezone of the IP address location, formatted according to the IANA Time Zone Database.", "example": "Europe/Paris" } } } ``` | Field | Type | Description | Example | | ---------- | ------ | -------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | `ip` | string | The IP address being looked up. | `37.67.193.154` | | `city` | string | The city where the IP address is located. | `Paris` | | `region` | string | The region or state where the IP address is located. | `Île-de-France` | | `country` | string | The ISO 3166-1 alpha-2 country code of the IP address. | `FR` | | `loc` | string | The latitude and longitude coordinates of the IP address location, formatted as a comma-separated string. | `48.8534,2.3488` | | `org` | string | The ASN and organization name associated with the IP address. | `AS15557 Societe Francaise Du Radiotelephone - SFR SA` | | `postal` | string | The postal or zip code associated with the IP address location. | `75000` | | `timezone` | string | The local timezone of the IP address location, formatted according to the IANA Time Zone Database. | `Europe/Paris` | **Full Response** ```bash # With token query parameter $ curl https://ipinfo.io/37.67.193.154/geo?token=$TOKEN $ curl https://ipinfo.io/me/geo?token=$TOKEN ``` API Response ```json { "ip": "37.67.193.154", "city": "Paris", "region": "Île-de-France", "country": "FR", "loc": "48.8534,2.3488", "org": "AS15557 Societe Francaise Du Radiotelephone - SFR SA", "postal": "75000", "timezone": "Europe/Paris" } ``` **Specific Fields** ```bash $ curl https://ipinfo.io/37.67.193.154/geo/ip?token=$TOKEN 37.67.193.154 $ curl https://ipinfo.io/37.67.193.154/geo/city?token=$TOKEN Paris $ curl https://ipinfo.io/37.67.193.154/geo/region?token=$TOKEN Île-de-France $ curl https://ipinfo.io/37.67.193.154/geo/country?token=$TOKEN FR $ curl https://ipinfo.io/37.67.193.154/geo/loc?token=$TOKEN 48.8534,2.3488 $ curl https://ipinfo.io/37.67.193.154/geo/org?token=$TOKEN AS15557 Societe Francaise Du Radiotelephone - SFR SA $ curl https://ipinfo.io/37.67.193.154/geo/postal?token=$TOKEN 75000 $ curl https://ipinfo.io/37.67.193.154/geo/timezone?token=$TOKEN Europe/Paris ``` ## Related Resources - [IPinfo Lite API](/developers/lite-api) - [IPinfo Core API](/developers/core-api) - [IPinfo Plus API](/developers/plus-api) - [IP to Geolocation Database](/developers/ip-to-geolocation-database) - [IP to Geolocation Extended Database](/developers/ip-to-geolocation-extended) ================================================================================ PAGE: Privacy Detection API Data URL: https://ipinfo.io/developers/ip-privacy-detection-api-data SLUG: ip-privacy-detection-api-data DESCRIPTION: Detect VPNs, proxies, Tor, relays, and hosting providers associated with an IP address, available across IPinfo Plus and Enterprise API plans. ================================================================================ # IP to Privacy Detection API Data **Available in**: IPinfo Core (Limited), IPinfo Plus, IPinfo IP to Privacy Detection API (Enterprise), and IPinfo IP to Privacy Detection Extended API (Enterprise) - The IPinfo Core API returns only limited information via IP flags for detecting non-residential IP addresses. - The IPinfo Plus API returns a summary anonymous IP detection response via the `/anonymous` endpoint, while in the enterprise plan it is returned via the `/privacy` endpoint. - The IPinfo IP to Privacy Detection Extended API includes additional confidence, coverage, and signal fields. ## IPinfo Core [IPinfo Core](/developers/core-api) returns limited privacy detection data as part of the broader IP lookup response, indicating whether an IP address is anonymous or associated with a hosting provider. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Core API - IP Flags Response", "description": "Schema for IPinfo Core - Privacy detection flags in the IP lookup response", "type": "object", "properties": { "is_anonymous": { "type": "boolean", "description": "Indicates whether the IP address is associated with an anonymization service such as a VPN, proxy, Tor, or relay.", "example": true }, "is_hosting": { "type": "boolean", "description": "Indicates whether the IP address belongs to a hosting provider, cloud service, or data center.", "example": true } } } ``` | Field | Type | Description | Example | | -------------- | ------- | --------------------------------------------------------------------------------------------------------------------- | ------- | | `is_anonymous` | boolean | Indicates whether the IP address is associated with an anonymization service such as a VPN, proxy, Tor, or relay. | `true` | | `is_hosting` | boolean | Indicates whether the IP address belongs to a hosting provider, cloud service, or data center. | `true` | **Full Response** ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/89.187.171.166?token=$TOKEN $ curl https://api.ipinfo.io/lookup/me?token=$TOKEN ``` API Response ```json { "is_anonymous": true, "is_hosting": true } ``` **Specific Fields** ```bash $ curl https://api.ipinfo.io/lookup/89.187.171.166/is_anonymous?token=$TOKEN true $ curl https://api.ipinfo.io/lookup/89.187.171.166/is_hosting?token=$TOKEN true ``` ## IPinfo Plus [IPinfo Plus](/developers/plus-api) returns a summary of anonymous IP detection, indicating whether the IP is a VPN, proxy, Tor exit node, or relay. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo Plus API - Anonymous IP Detection Response", "description": "Schema for IPinfo Plus - Anonymous IP Detection API response", "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VPN, proxy, or anonymization service associated with the IP address.", "example": "CyberGhost" }, "is_proxy": { "type": "boolean", "description": "Indicates whether the IP address is associated with a proxy service.", "example": false }, "is_relay": { "type": "boolean", "description": "Indicates whether the IP address is associated with a relay service.", "example": false }, "is_tor": { "type": "boolean", "description": "Indicates whether the IP address is a Tor exit node.", "example": false }, "is_vpn": { "type": "boolean", "description": "Indicates whether the IP address is associated with a VPN service.", "example": true } } } ``` | Field | Type | Description | Example | | ----------- | ------- | ----------------------------------------------------------------------------------- | ------------- | | `name` | string | The name of the VPN, proxy, or anonymization service associated with the IP address. | `CyberGhost` | | `is_proxy` | boolean | Indicates whether the IP address is associated with a proxy service. | `false` | | `is_relay` | boolean | Indicates whether the IP address is associated with a relay service. | `false` | | `is_tor` | boolean | Indicates whether the IP address is a Tor exit node. | `false` | | `is_vpn` | boolean | Indicates whether the IP address is associated with a VPN service. | `true` | **Full Response** ```bash # With token query parameter $ curl https://api.ipinfo.io/lookup/89.187.171.166/anonymous?token=$TOKEN $ curl https://api.ipinfo.io/lookup/me/anonymous?token=$TOKEN ``` API Response ```json { "name": "CyberGhost", "is_proxy": false, "is_relay": false, "is_tor": false, "is_vpn": true } ``` **Specific Fields** ```bash $ curl https://api.ipinfo.io/lookup/89.187.171.166/anonymous/name?token=$TOKEN CyberGhost $ curl https://api.ipinfo.io/lookup/89.187.171.166/anonymous/is_proxy?token=$TOKEN false $ curl https://api.ipinfo.io/lookup/89.187.171.166/anonymous/is_relay?token=$TOKEN false $ curl https://api.ipinfo.io/lookup/89.187.171.166/anonymous/is_tor?token=$TOKEN false $ curl https://api.ipinfo.io/lookup/89.187.171.166/anonymous/is_vpn?token=$TOKEN true ``` ## IPinfo IP to Privacy Detection API (Enterprise) [IPinfo IP to Privacy Detection API](/developers/ip-privacy-detection-api-data) returns privacy detection data including VPN, proxy, Tor, relay, and hosting signals for an IP address. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo IP to Privacy Detection API Response", "description": "Schema for IPinfo IP to Privacy Detection API response", "type": "object", "properties": { "vpn": { "type": "boolean", "description": "Indicates whether the IP address is associated with a VPN service.", "example": true }, "proxy": { "type": "boolean", "description": "Indicates whether the IP address is associated with a proxy service.", "example": false }, "tor": { "type": "boolean", "description": "Indicates whether the IP address is a Tor exit node.", "example": false }, "relay": { "type": "boolean", "description": "Indicates whether the IP address is associated with a relay service.", "example": false }, "hosting": { "type": "boolean", "description": "Indicates whether the IP address is associated with a hosting or cloud provider.", "example": true }, "service": { "type": "string", "description": "The name of the VPN, proxy, or anonymization service associated with the IP address.", "example": "CyberGhost" } } } ``` | Field | Type | Description | Example | | --------- | ------- | ------------------------------------------------------------------------------------ | ------------- | | `vpn` | boolean | Indicates whether the IP address is associated with a VPN service. | `true` | | `proxy` | boolean | Indicates whether the IP address is associated with a proxy service. | `false` | | `tor` | boolean | Indicates whether the IP address is a Tor exit node. | `false` | | `relay` | boolean | Indicates whether the IP address is associated with a relay service. | `false` | | `hosting` | boolean | Indicates whether the IP address is associated with a hosting or cloud provider. | `true` | | `service` | string | The name of the VPN, proxy, or anonymization service associated with the IP address. | `CyberGhost` | **Full Response** ```bash # With token query parameter $ curl https://ipinfo.io/89.187.171.166/privacy?token=$TOKEN $ curl https://ipinfo.io/me/privacy?token=$TOKEN ``` API Response ```json { "vpn": true, "proxy": false, "tor": false, "relay": false, "hosting": true, "service": "CyberGhost" } ``` **Specific Fields** ```bash $ curl https://ipinfo.io/89.187.171.166/privacy/vpn?token=$TOKEN true $ curl https://ipinfo.io/89.187.171.166/privacy/proxy?token=$TOKEN false $ curl https://ipinfo.io/89.187.171.166/privacy/tor?token=$TOKEN false $ curl https://ipinfo.io/89.187.171.166/privacy/relay?token=$TOKEN false $ curl https://ipinfo.io/89.187.171.166/privacy/hosting?token=$TOKEN true $ curl https://ipinfo.io/89.187.171.166/privacy/service?token=$TOKEN CyberGhost ``` ## IPinfo IP to Privacy Detection Extended API (Enterprise) [IPinfo IP to Privacy Detection Extended API](/developers/privacy-extended-api) returns all fields from the standard Privacy Detection API, plus additional confidence, coverage, and detection signal fields. API Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "IPinfo IP to Privacy Detection Extended API Response", "description": "Schema for IPinfo IP to Privacy Detection Extended API response", "type": "object", "properties": { "vpn": { "type": "boolean", "description": "Indicates whether the IP address is an exit node of a Virtual Private Network (VPN) service.", "example": true }, "proxy": { "type": "boolean", "description": "Indicates whether the IP address is associated with an open web proxy service.", "example": false }, "tor": { "type": "boolean", "description": "Indicates whether the IP address is a Tor (The Onion Router) exit node.", "example": false }, "relay": { "type": "boolean", "description": "Indicates whether the IP address is part of a location-preserving anonymous relay service.", "example": false }, "hosting": { "type": "boolean", "description": "Indicates whether the IP address belongs to a hosting provider, cloud service, or data center.", "example": true }, "service": { "type": "string", "description": "The name of the privacy service provider, including VPN, proxy, and relay service providers.", "example": "CyberGhost" }, "confidence": { "type": "integer", "description": "The confidence level (1–3) attributed to the best detection source for this IP range. Level 3 indicates direct observation of commercial VPN use; level 2 indicates observed VPN software with provider association or strong device activity signals; level 1 indicates observed VPN software without a known provider association.", "example": 3 }, "coverage": { "type": "number", "description": "For inferred IP ranges, the proportion of the range (by IP count) where direct VPN activity was observed. For ranges with full direct evidence, this value is 1.0.", "example": 1.0 }, "census": { "type": "boolean", "description": "Indicates whether VPN software or associated ports were detected on this IP range through active port scanning.", "example": true }, "census_ports": { "type": "string", "description": "The ports that returned positive results during VPN detection census scans.", "example": "500" }, "device_activity": { "type": "boolean", "description": "Indicates whether device activity patterns consistent with VPN usage were observed on this IP range, such as simultaneous use across a large geographic area or association with hosting providers.", "example": false }, "inferred": { "type": "boolean", "description": "Indicates whether the privacy classification is based on direct observation or inferred from activity on neighboring IP addresses.", "example": false }, "vpn_config": { "type": "boolean", "description": "Indicates whether VPN activity was confirmed by directly running VPN software from known providers and collecting exit IPs.", "example": true }, "whois": { "type": "boolean", "description": "Indicates whether VPN software or ports were detected on this range and the WHOIS record associates the IP with a VPN provider or VPN-related activity.", "example": false }, "first_seen": { "type": "string", "description": "The date when anonymous activity on this IP address was first observed, in ISO 8601 format (YYYY-MM-DD). Within a 3-month lookback period.", "example": "2025-12-12" }, "last_seen": { "type": "string", "description": "The date when anonymous activity on this IP address was most recently observed, in ISO 8601 format (YYYY-MM-DD).", "example": "2025-12-12" } } } ``` | Field | Type | Description | Example | | ----------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | | `vpn` | boolean | Indicates whether the IP address is an exit node of a Virtual Private Network (VPN) service. | `true` | | `proxy` | boolean | Indicates whether the IP address is associated with an open web proxy service. | `false` | | `tor` | boolean | Indicates whether the IP address is a Tor (The Onion Router) exit node. | `false` | | `relay` | boolean | Indicates whether the IP address is part of a location-preserving anonymous relay service. | `false` | | `hosting` | boolean | Indicates whether the IP address belongs to a hosting provider, cloud service, or data center. | `true` | | `service` | string | The name of the privacy service provider, including VPN, proxy, and relay service providers. | `CyberGhost` | | `confidence` | integer | The confidence level (1–3) attributed to the best detection source for this IP range. Level 3: direct commercial VPN use observed. Level 2: VPN software with provider association or strong device activity. Level 1: VPN software observed without a known provider association. | `3` | | `coverage` | number | For inferred IP ranges, the proportion of the range (by IP count) where direct VPN activity was observed. For ranges with full direct evidence, this value is `1.0`. | `1.0` | | `census` | boolean | Indicates whether VPN software or associated ports were detected on this IP range through active port scanning. | `true` | | `census_ports` | string | The ports that returned positive results during VPN detection census scans. | `500` | | `device_activity` | boolean | Indicates whether device activity patterns consistent with VPN usage were observed, such as simultaneous use across a large geographic area or association with hosting providers. | `false` | | `inferred` | boolean | Indicates whether the privacy classification is based on direct observation or inferred from activity on neighboring IP addresses. | `false` | | `vpn_config` | boolean | Indicates whether VPN activity was confirmed by directly running VPN software from known providers and collecting exit IPs. | `true` | | `whois` | boolean | Indicates whether VPN software or ports were detected on this range and the WHOIS record associates the IP with a VPN provider or VPN-related activity. | `false` | | `first_seen` | string | The date when anonymous activity on this IP address was first observed, in ISO 8601 format (YYYY-MM-DD). Within a 3-month lookback period. | `2025-12-12` | | `last_seen` | string | The date when anonymous activity on this IP address was most recently observed, in ISO 8601 format (YYYY-MM-DD). | `2025-12-12` | **Full Response** ```bash # With token query parameter $ curl https://ipinfo.io/89.187.171.166/privacy?token=$TOKEN $ curl https://ipinfo.io/me/privacy?token=$TOKEN ``` API Response ```json { "vpn": true, "proxy": false, "tor": false, "relay": false, "hosting": true, "service": "CyberGhost", "confidence": 3, "coverage": 1, "census": true, "census_ports": "500", "device_activity": false, "inferred": false, "vpn_config": true, "whois": false, "first_seen": "2025-12-12", "last_seen": "2025-12-12" } ``` **Specific Fields** ```bash $ curl https://ipinfo.io/89.187.171.166/privacy/vpn?token=$TOKEN true $ curl https://ipinfo.io/89.187.171.166/privacy/proxy?token=$TOKEN false $ curl https://ipinfo.io/89.187.171.166/privacy/tor?token=$TOKEN false $ curl https://ipinfo.io/89.187.171.166/privacy/relay?token=$TOKEN false $ curl https://ipinfo.io/89.187.171.166/privacy/hosting?token=$TOKEN true $ curl https://ipinfo.io/89.187.171.166/privacy/service?token=$TOKEN CyberGhost $ curl https://ipinfo.io/89.187.171.166/privacy/confidence?token=$TOKEN 3 $ curl https://ipinfo.io/89.187.171.166/privacy/coverage?token=$TOKEN 1.0 $ curl https://ipinfo.io/89.187.171.166/privacy/census?token=$TOKEN true $ curl https://ipinfo.io/89.187.171.166/privacy/census_ports?token=$TOKEN 500 $ curl https://ipinfo.io/89.187.171.166/privacy/device_activity?token=$TOKEN false $ curl https://ipinfo.io/89.187.171.166/privacy/inferred?token=$TOKEN false $ curl https://ipinfo.io/89.187.171.166/privacy/vpn_config?token=$TOKEN true $ curl https://ipinfo.io/89.187.171.166/privacy/whois?token=$TOKEN false $ curl https://ipinfo.io/89.187.171.166/privacy/first_seen?token=$TOKEN 2025-12-12 $ curl https://ipinfo.io/89.187.171.166/privacy/last_seen?token=$TOKEN 2025-12-12 ``` ## Related Resources - [IPinfo Plus API](/developers/core-api) - [IPinfo Plus API](/developers/plus-api) - [IPinfo IP to Privacy Detection API](/developers/ip-privacy-detection-api-data) - [IPinfo IP to Privacy Detection Extended API](/developers/privacy-extended-api) - [IP to Privacy Detection Database](/developers/privacy-detection-database) ================================================================================ PAGE: IPinfo ProbeNet Live URL: https://ipinfo.io/developers/probenet-live SLUG: probenet-live DESCRIPTION: IPinfo ProbeNet Live lets you run ping and traceroute measurements against any IP address from a global network of probe servers. ================================================================================ # IPinfo ProbeNet Live IPinfo [ProbeNet Live](/probenet/live) lets you ping or traceroute an IP address (IPv4 or IPv6) from [ProbeNet](https://ipinfo.io/probenet) PoPs (Points of Presence) around the world. Running measurements from multiple regions simultaneously helps you troubleshoot and investigate connectivity issues for any IP address. ## Acesss & Limit | Feature | Free | Paid | |---|---|---| | Rate limits | Lower | Higher | | Region selection | Continent only | Country and continent | | Probe assignment | Random within continent | Random within country | [Paid tier](/pricing) is available to subscribers of any premium IPinfo plan. ## Ping Your browser does not support the video tag. A ping measurement sends 10 packets per probe operation and summarizes results visually in the chart section. Both ICMP and TCP ping are supported. When using TCP, you can select a specific port to send the packets to. | Field | What it means | |---|---| | **Location** | The probe node sending packets to the target IP | | **Loss** | Percentage of packets sent with no reply received | | **Sent** | Total packets fired from that probe | | **Last** | RTT of the most recent packet | | **Avg** | Mean RTT across all sent packets | | **Best** | Lowest RTT recorded, closest to true propagation delay | | **Worst** | Highest RTT recorded, reveals occasional spikes | | **StDev** | How consistent the RTTs are. Low means stable, high means jittery | **Frequently Asked Questions (FAQs)** **Why is the first ping usually the slowest?** Before sending the first packet, the probe needs to look up the destination's hardware address (ARP) and domain name (DNS). That lookup only happens once and makes the first ping slower than the rest. **What does packet loss mean?** The probe sent a packet but never got a reply back. This can happen because of network congestion, a firewall blocking the packets, the target server ignoring ICMP requests, or a broken link somewhere along the path. **What does 0.0% loss confirm?** Every packet sent from that probe reached the target and got a reply, meaning the path between them is working cleanly. **Why might a geographically closer probe show higher latency?** Internet traffic does not travel in a straight line between two points. It follows routes decided by BGP, a system that prioritizes network policies and agreements over physical distance, sometimes sending traffic through extra hops that add delay. **What causes a gap between Best and Worst RTT?** Occasionally a router along the path gets briefly busy and delays the packet before forwarding it. This creates a one-off spike in RTT without indicating a persistent problem. **Why is ICMP latency not always representative of real application performance?** Routers treat ping packets as low priority and handle them through a slower processing path. Regular application traffic like web requests gets handled differently, so ping results do not always reflect what a real user would experience. **What is congestion?** When more data is being sent through a link than it can carry at that moment, packets pile up in a queue and wait their turn, which adds to RTT. If the queue gets completely full, the router starts dropping packets, which shows up as loss. ## Trace Your browser does not support the video tag. Trace measurements use MTR, which combines the functionality of traceroute and ping into a single tool. Unlike a standard traceroute that runs once, MTR sends multiple packets per hop and continuously updates the results. Each hop in the results is enriched with IPinfo IP intelligence data including location and ASN. Each traceroute operation sends 3 packets per hop. | Field | What it means | |---|---| | **Hop** | The sequence number of each router the packet passed through on its way to the target | | **IP Address** | The address of the router at that hop | | **Location** | The estimated geographic location of that router | | **ASN** | The network that owns that router, identified by an Autonomous System Number | | **Loss** | Percentage of packets that got no reply at that specific hop | | **Sent** | Number of packets sent to that hop | | **Last** | RTT of the most recent packet to that hop | | **Avg** | Mean RTT across all packets to that hop | | **Best** | Lowest RTT recorded to that hop | | **Worst** | Highest RTT recorded to that hop | | **StDev** | Consistency of RTT to that hop. Low means stable, high means variable | **Frequently Asked Questions (FAQs)** **Why does a hop show 100% loss even when the destination is reachable?** That router is configured to silently drop ICMP packets but still forwards your actual traffic normally. The hops after it appear fine because they respond to ICMP even though that middle router does not. **Why does traffic leave the country to reach a nearby destination?** Routing follows BGP agreements between networks, not maps. If two networks in the same country do not peer directly with each other, traffic may transit through a third country where they do have a connection. **Why does RTT jump significantly between two adjacent hops?** Each hop adds the physical propagation delay of the link connecting them. A large jump usually means those two routers are far apart geographically or connected through a slower link. **Why would traffic route halfway around the world to reach the destination?** The source network may only have transit agreements that go through distant hubs. BGP selects routes based on policy and cost, not distance, so a technically longer path can be the only available one. **What happens when traceroute detects a routing loop?** The same IP addresses start repeating in consecutive hops, meaning packets are bouncing between two or more routers indefinitely. The packet eventually gets dropped when its TTL reaches zero. **What happens when the hop limit of 30 is exceeded?** Traceroute stops and reports that the destination was not reached. This usually means there is a routing loop, a firewall blocking TTL-expired replies beyond a certain point, or an unusually long path. **What is a `* * *` hop?** The router at that hop did not send back a TTL-expired reply, so traceroute has no information about it. The router exists and is forwarding traffic, it is just not responding to ICMP. **Why do private IP addresses like `10.x.x.x` or `192.168.x.x` appear mid-trace?** Those are internal routers inside a carrier or data center network that are not publicly addressable. They are real hops but their location cannot be looked up because private IPs are not registered to any organization. **Why does an intermediate hop show loss but all hops after it show 0%?** That specific router deprioritizes or rate-limits ICMP replies when it is busy, but it still forwards traffic normally. The loss is in the router's reply generation, not in the actual forwarding path. **Why does traceroute take so long to complete?** Each unresponsive hop waits for a timeout, typically 1 to 3 seconds, before moving on. With 30 possible hops and multiple timeouts along the way, a trace to an unresponsive destination can take over a minute. **How does loss work when only 3 packets are sent per hop?** With 3 packets, loss can only be 0%, 33%, 66%, or 100%. A single dropped packet shows as 33%, which can look alarming but may just be a one-off event rather than a real problem. More packets sent gives a more accurate loss percentage. **Why does a hop have no ASN information?** That IP address is not announced in the global BGP routing tables, meaning no network has publicly claimed ownership of it. This is common for internal carrier infrastructure or misconfigured network segments. **Why does the same ASN appear across multiple consecutive hops?** Those routers all belong to the same network. Traffic often passes through several routers within a single provider before handing off to the next network. **Why does the location change between hops within the same ASN?** Large networks span multiple cities and countries. As your packet moves through that network's internal infrastructure, it physically moves between locations before exiting to the next provider. ================================================================================ END OF DOCUMENTATION ================================================================================ For the latest documentation, visit: https://ipinfo.io/developers For the table of contents version, see: https://ipinfo.io/developers/llms.txt API Status: https://status.ipinfo.io Support: support@ipinfo.io