ipgeolocation-java-sdk

Ipgeolocation provides a set of APIs to make IP based decisions.

Installation Requirements

  • Java: 1.8 or higher
  • Build Tools: Maven 3.8.3+ or Gradle 7.2+

Using Maven

Add the following dependency to your pom.xml file:

xml
<dependency>
  <groupId>io.ipgeolocation</groupId>
  <artifactId>ipgeolocation</artifactId>
  <version>2.0.0</version>
</dependency>

Using Gradle

Add this to your build.gradle file:

groovy
repositories {
    mavenCentral()
    mavenLocal() // Only needed if using locally built version
}
dependencies {
    implementation "io.ipgeolocation:ipgeolocation:2.0.0"
}

Manual Installation

To build the SDK manually:

bash
mvn clean package

Then include the following JARs in your classpath:

  • target/ipgeolocation-sdk-java-2.0.0.jar
  • All JARs in target/lib/

Authentication Setup

To authenticate API requests, you need an API key from ipgeolocation.io. Once obtained, configure your API client as follows:

java
import invoker.io.ipgeolocation.sdk.ApiClient;
import invoker.io.ipgeolocation.sdk.Configuration;
import auth.invoker.io.ipgeolocation.sdk.ApiKeyAuth;

ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://api.ipgeolocation.io/v2");

ApiKeyAuth apiKeyAuth = (ApiKeyAuth) client.getAuthentication("ApiKeyAuth");
apiKeyAuth.setApiKey("YOUR_API_KEY_HERE");

Ensure that your API key is securely stored and not exposed in public repositories.

IP Geolocation Examples

1 - Basic Plan Examples

The default response returns the main location and currency fields.

Default Fields

java
import io.ipgeolocation.sdk.api.IPGeolocationAPI;
import io.ipgeolocation.sdk.model.GeolocationResponse;

IPGeolocationAPI api = new IPGeolocationAPI(client);
GeolocationResponse response = api.getIPGeolocation()
        .ip("8.8.8.8")
        .execute();

System.out.println(response);
Sample Response:
java
class GeolocationResponse {
    ip: 8.8.8.8
    location: class Location {
        continentCode: NA
        continentName: North America
        countryCode2: US
        countryCode3: USA
        countryName: United States
        countryNameOfficial: United States of America
        countryCapital: Washington, D.C.
        stateProv: California
        stateCode: US-CA
        district: Santa Clara
        city: Mountain View
        zipcode: 94043-1351
        latitude: 37.42240
        longitude: -122.08421
        isEu: false
        countryFlag: https://ipgeolocation.io/static/flags/us_64.png
        geonameId: 6301403
        countryEmoji: 🇺🇸
    }
    countryMetadata: class CountryMetadata {
        callingCode: +1
        tld: .us
        languages: [en-US, es-US, haw, fr]
    }
    currency: class Currency {
        code: USD
        name: US Dollar
        symbol: $
    }
}

You can filter fields with the 'fields' and 'excludes' parameters:

"Filtering Specific Fields from the Response (Use of 'exclude' and 'fields')"

'fields' and 'excludes' params

java
GeolocationResponse response = api.getIPGeolocation()
    .ip("8.8.4.4")
    .fields("location")
    .excludes("location.continent_code,location.continent_name")
    .execute();

System.out.println(response);
Sample Response:
java
class GeolocationResponse {
    ip: 8.8.4.4
    location: class Location {
        countryCode2: US
        countryCode3: USA
        countryName: United States
        countryNameOfficial: United States of America
        countryCapital: Washington, D.C.
        stateProv: California
        stateCode: US-CA
        district: Santa Clara
        city: Mountain View
        zipcode: 94043-1351
        latitude: 37.42240
        longitude: -122.08421
        isEu: false
        countryFlag: https://ipgeolocation.io/static/flags/us_64.png
        geonameId: 6301403
        countryEmoji: 🇺🇸
    }
}

2 - Standard Plan Examples

Default Fields

java
import io.ipgeolocation.sdk.api.IPGeolocationAPI;
import io.ipgeolocation.sdk.model.GeolocationResponse;

IPGeolocationAPI api = new IPGeolocationAPI(client);
GeolocationResponse response = api.getIPGeolocation()
        .ip("8.8.8.8")
        .execute();

System.out.println(response);
Sample Response:
java
class GeolocationResponse {
    ip: 8.8.8.8
    location: class Location {
        continentCode: NA
        continentName: North America
        countryCode2: US
        countryCode3: USA
        countryName: United States
        countryNameOfficial: United States of America
        countryCapital: Washington, D.C.
        stateProv: California
        stateCode: US-CA
        district: Santa Clara
        city: Mountain View
        zipcode: 94043-1351
        latitude: 37.42240
        longitude: -122.08421
        isEu: false
        countryFlag: https://ipgeolocation.io/static/flags/us_64.png
        geonameId: 6301403
        countryEmoji: 🇺🇸
    }
    countryMetadata: class CountryMetadata {
        callingCode: +1
        tld: .us
        languages: [en-US, es-US, haw, fr]
    }
    network: class Network {
        asn: class NetworkAsn {
            asNumber: AS15169
            organization: Google LLC
            country: US
        }
        company: class NetworkCompany {
            name: Google LLC
        }
    }
    currency: class Currency {
        code: USD
        name: US Dollar
        symbol: $
    }
}

"Here is an example to get the geolocation data for IP address '2001:4230:4890::1' in French language:"

Retrieving Geolocation Data in Multiple Languages

java
IPGeolocationAPI api = new IPGeolocationAPI(client);
GeolocationResponse response = api.getIPGeolocation()
        .ip("2001:4230:4890::1")
        .lang("fr")
        .execute();

System.out.println(response);
Sample Response:
java
class GeolocationResponse {
    ip: 2001:4230:4890:0:0:0:0:1
    location: class Location {
        continentCode: AF
        continentName: Afrique
        countryCode2: MU
        countryCode3: MUS
        countryName: Maurice
        countryNameOfficial: 
        countryCapital: Port Louis
        stateProv: Wilhems des plaines
        stateCode: MU-PW
        district: Quatre Bornes
        city: Quatre Bornes
        zipcode: 72201
        latitude: -20.24304
        longitude: 57.49631
        isEu: false
        countryFlag: https://ipgeolocation.io/static/flags/mu_64.png
        geonameId: 1106777
        countryEmoji: 🇲🇺
    }
    countryMetadata: class CountryMetadata {
        callingCode: +230
        tld: .mu
        languages: [en-MU, bho, fr]
    }
    network: class Network {
        asn: class NetworkAsn {
            asNumber: AS0
            organization: 
            country:
        }
        company: class NetworkCompany {
            name: African Network Information Center AfriNIC Ltd
        }
    }
    currency: class Currency {
        code: MUR
        name: Mauritius Rupee
        symbol:    }
}

Include HostName, Timezone and User-Agent

java
IPGeolocationAPI api = new IPGeolocationAPI(client);
GeolocationResponse response = api.getIPGeolocation()
        .ip("4.5.6.7")
        .fields("location.country_name,location.country_capital")
        .include("user_agent, time_zone, hostnameFallbackLive")
        .execute();

System.out.println(response);
Sample Response:
java
class GeolocationResponse {
    ip: 4.5.6.7
    hostname: 4.5.6.7
    location: class Location {
        countryName: United States
        countryCapital: Washington, D.C.
    }
    timeZone: class TimeZone {
        name: America/Chicago
        offset: -6
        offsetWithDst: -5
        currentTime: 2025-05-28 06:52:16.748-0500
        currentTimeUnix: 1748433136.748
        isDst: true
        dstSavings: 1
        dstExists: true
        dstStart: class TimeZoneDstStart {
            utcTime: 2025-03-09 TIME 08
            duration: +1H
            gap: true
            dateTimeAfter: 2025-03-09 TIME 03
            dateTimeBefore: 2025-03-09 TIME 02
            overlap: false
        }
        dstEnd: class TimeZoneDstEnd {
            utcTime: 2025-11-02 TIME 07
            duration: -1H
            gap: false
            dateTimeAfter: 2025-11-02 TIME 01
            dateTimeBefore: 2025-11-02 TIME 02
            overlap: true
        }
    }
    userAgent: class UserAgentData {
        userAgentString: OpenAPI-Generator/1.0.0/java
        name: OpenAPI-Generator
        type: Special
        version: 1.0.0
        versionMajor: 1
        device: class UserAgentDataDevice {
            name: Unknown
            type: Unknown
            brand: Unknown
            cpu: Unknown
        }
        engine: class UserAgentDataEngine {
            name: Unknown
            type: Unknown
            version: ??
            versionMajor: ??
        }
        operatingSystem: class UserAgentDataOperatingSystem {
            name: Unknown
            type: Unknown
            version: ??
            versionMajor: ??
            build: ??
        }
    }
}

The IP Geolocation API supports hostname lookup for all paid subscriptions. However, this is not included by default. To enable hostname resolution, use the include parameter with one of the following options:

  • hostname: Performs a quick lookup using the internal hostname database. If no match is found, the IP is returned as-is. This is fast but may produce incomplete results.
  • liveHostname: Queries live sources for accurate hostname resolution. This may increase response time.
  • hostnameFallbackLive: Attempts the internal database first, and falls back to live sources if no result is found. This option provides a balance of speed and reliability.

3 - Advanced Plan Examples

These examples demonstrate typical usage of the IP Geolocation API with different subscription tiers. Use fields to specify exactly which data to receive, include for optional data like security and user agent, and excludes to omit specific keys from the response.

Include DMA, Abuse and Security

java
import io.ipgeolocation.sdk.api.IPGeolocationAPI;
import io.ipgeolocation.sdk.model.GeolocationResponse;

IPGeolocationAPI api = new IPGeolocationAPI(client);
GeolocationResponse response = api.getIPGeolocation()
        .ip("8.8.8.8")
        .excludes("location.country_flag,location.country_emoji")
        .include("dma,abuse,security")
        .execute();

System.out.println(response);
Sample Response:
java
class GeolocationResponse {
    ip: 8.8.8.8
    location: class Location {
        continentCode: NA
        continentName: North America
        countryCode2: US
        countryCode3: USA
        countryName: United States
        countryNameOfficial: United States of America
        countryCapital: Washington, D.C.
        stateProv: California
        stateCode: US-CA
        district: Santa Clara
        city: Mountain View
        zipcode: 94043-1351
        latitude: 37.42240
        longitude: -122.08421
        isEu: false
        countryFlag: null
        geonameId: 6301403
        countryEmoji: null
        accuracyRadius: 
        locality: Mountain View
        dmaCode: 807
    }
    countryMetadata: class CountryMetadata {
        callingCode: +1
        tld: .us
        languages: [en-US, es-US, haw, fr]
    }
    network: class Network {
        asn: class NetworkAsn {
            asNumber: AS15169
            organization: Google LLC
            country: US
            asnName: GOOGLE
            type: BUSINESS
            domain: about.google
            dateAllocated: 
            allocationStatus: assigned
            numOfIpv4Routes: 965
            numOfIpv6Routes: 104
            rir: ARIN
        }
        connectionType: 
        company: class NetworkCompany {
            name: Google LLC
            type: Business
            domain: googlellc.com
        }
    }
    currency: class Currency {
        code: USD
        name: US Dollar
        symbol: $
    }
    security: class Security {
        threatScore: 0
        isTor: false
        isProxy: false
        proxyType: 
        proxyProvider: 
        isAnonymous: false
        isKnownAttacker: false
        isSpam: false
        isBot: false
        isCloudProvider: false
        cloudProvider: 
    }
    abuse: class Abuse {
        route: 8.8.8.0/24
        country: 
        handle: ABUSE5250-ARIN
        name: Abuse
        organization: Abuse
        role: abuse
        kind: group
        address: 1600 Amphitheatre Parkway
        Mountain View
        CA
        94043
        United States
        emails: [network-abuse@google.com]
        phoneNumbers: [+1-650-253-0000]
    }
}

All features available in the Free plan are also included in the Standard and Advanced plans. Similarly, all features of the Standard plan are available in the Advanced plan.

Bulk IP Geolocation Example

The SDK also supports bulk IP geolocation requests using the getBulkIpGeolocation() method. All parameters like fields, include, and excludes can also be used in bulk requests."

Retrieving Geolocation Data in Multiple Languages

java

import io.ipgeolocation.sdk.model.BulkIPRequest;
import io.ipgeolocation.sdk.api.IPGeolocationAPI;
import io.ipgeolocation.sdk.model.BulkGeolocationResponse;

IPGeolocationAPI api = new IPGeolocationAPI(client);

BulkIPRequest bulkRequest = new BulkIPRequest();
bulkRequest.addIp("8.8.8.8");
bulkRequest.addIp("1.1.1.1");

List<BulkGeolocationResponse> response = api.getBulkIPGeolocation()
        .bulkIpRequest(bulkRequest)
        .fields("location.country_name,location.city")
        .include("security,timezone")
        .excludes("location.continent_code")
        .execute();

System.out.println(response);

IP Security Examples

This section provides usage examples of the getIPSecurity() method from the SDK across various subscription tiers. Each example demonstrates different ways to query threat intelligence and risk metadata using parameters like fields, excludes, and optional modules. For full API specifications, refer to the official IP Security API documentation.

Basic Request (Minimal Setup)

java
import io.ipgeolocation.sdk.api.IPSecurityAPI;
import io.ipgeolocation.sdk.model.SecurityAPIResponse;

IPSecurityAPI api = new IPSecurityAPI(client);
SecurityAPIResponse response = api.getIPSecurity()
        .ip("2.56.188.34")
        .execute();

System.out.println(response);
Sample Response:
java
class SecurityAPIResponse {
    ip: 2.56.188.34
    security: class Security {
        threatScore: 80
        isTor: false
        isProxy: true
        proxyType: VPN
        proxyProvider: Nord VPN
        isAnonymous: true
        isKnownAttacker: true
        isSpam: false
        isBot: false
        isCloudProvider: true
        cloudProvider: Packethub S.A.
    }
}

Include Multiple Optional Fields

java
SecurityAPIResponse response = api.getIPSecurity()
    .ip("2.56.188.34")
    .include("location,network,currency,time_zone,user_agent,country_metadata,hostname")
    .execute();
Sample Response:
java
class SecurityAPIResponse {
    ip: 2.56.188.34
    hostname: 2.56.188.34
    security: class Security {
        threatScore: 80
        isTor: false
        isProxy: true
        proxyType: VPN
        proxyProvider: Nord VPN
        isAnonymous: true
        isKnownAttacker: true
        isSpam: false
        isBot: false
        isCloudProvider: true
        cloudProvider: Packethub S.A.
    }
    location: class LocationMinimal {
        continentCode: NA
        continentName: North America
        countryCode2: US
        countryCode3: USA
        countryName: United States
        countryNameOfficial: United States of America
        countryCapital: Washington, D.C.
        stateProv: Texas
        stateCode: US-TX
        district: Dallas County
        city: Dallas
        zipcode: 75207
        latitude: 32.78916
        longitude: -96.82170
        isEu: false
        countryFlag: https://ipgeolocation.io/static/flags/us_64.png
        geonameId: 7181768
        countryEmoji: 🇺🇸
    }
    network: class NetworkMinimal {
        asn: class NetworkMinimalAsn {
            asNumber: AS62240
            organization: Clouvider Limited
            country: GB
        }
        company: class NetworkMinimalCompany {
            name: Packethub S.A.
        }
    }
    timeZone: class TimeZone {
        name: America/Chicago
        offset: -6
        offsetWithDst: -5
        currentTime: 2025-05-29 08:27:44.939-0500
        currentTimeUnix: 1748525264.939
        isDst: true
        dstSavings: 1
        dstExists: true
        dstStart: class TimeZoneDstStart {
            utcTime: 2025-03-09 TIME 08
            duration: +1H
            gap: true
            dateTimeAfter: 2025-03-09 TIME 03
            dateTimeBefore: 2025-03-09 TIME 02
            overlap: false
        }
        dstEnd: class TimeZoneDstEnd {
            utcTime: 2025-11-02 TIME 07
            duration: -1H
            gap: false
            dateTimeAfter: 2025-11-02 TIME 01
            dateTimeBefore: 2025-11-02 TIME 02
            overlap: true
        }
    }
    userAgent: class UserAgentData {
        userAgentString: OpenAPI-Generator/1.0.0/java
        name: OpenAPI-Generator
        type: Special
        version: 1.0.0
        versionMajor: 1
        device: class UserAgentDataDevice {
            name: Unknown
            type: Unknown
            brand: Unknown
            cpu: Unknown
        }
        engine: class UserAgentDataEngine {
            name: Unknown
            type: Unknown
            version: ??
            versionMajor: ??
        }
        operatingSystem: class UserAgentDataOperatingSystem {
            name: Unknown
            type: Unknown
            version: ??
            versionMajor: ??
            build: ??
        }
    }
    countryMetadata: class CountryMetadata {
        callingCode: +1
        tld: .us
        languages: [en-US, es-US, haw, fr]
    }
    currency: class Currency {
        code: USD
        name: US Dollar
        symbol: $
    }
}

Request with Field Filtering

java
SecurityAPIResponse response = api.getIPSecurity()
        .ip("195.154.221.54")
        .fields("is_tor,is_proxy,is_bot,is_spam")
        .execute();

System.out.println(response);
Sample Response:
java
class SecurityAPIResponse {
    ip: 195.154.221.54
    security: class Security {
        isTor: false
        isProxy: true
        isSpam: false
        isBot: false
    }
}

Bulk IP Security Request

The SDK also supports bulk IP Security requests using the getBulkIPSecurity() method. All parameters like fields, include, and excludes can also be used in bulk requests.

Retrieving Geolocation Data in Multiple Languages

java
import io.ipgeolocation.sdk.model.BulkSecurityResponse;
import io.ipgeolocation.sdk.model.BulkIPRequest;

BulkIPRequest bulkRequest = new BulkIPRequest();
bulkRequest.addIp("2.56.188.34");
bulkRequest.addIp("2.56.188.35");

List<BulkSecurityResponse> response = api.getBulkIPSecurity(bulkIPRequest)
        .include("location,network")
        .fields("security.threat_score,location.country_name")
        .execute();

System.out.println(response);

ASN API Examples

This section provides usage examples of the getAsnDetails() method from the SDK. These methods allow developers to retrieve detailed ASN-level network data either by ASN number or by IP address. Note that ASN API is only available in the Advanced subscription plans." + Refer to the ASN API documentation for a detailed list of supported fields and behaviors.

Get ASN Information by IP Address

java
import io.ipgeolocation.sdk.api.AsnLookupAPI;
import io.ipgeolocation.sdk.api.AsnLookupApi;
import io.ipgeolocation.sdk.model.ASNResponse;

AsnLookupAPI api = new AsnLookupAPI(client);

ASNResponse response = api.getAsnDetails()
        .ip("8.8.8.8")
        .execute();

System.out.println(response);
Sample Response:
java
class ASNResponse {
    ip: 8.8.8.8
    asn: class ASNDetails {
        asNumber: AS15169
        organization: Google LLC
        country: US
        asnName: GOOGLE
        type: BUSINESS
        domain: about.google
        dateAllocated: 
        allocationStatus: assigned
        numOfIpv4Routes: 983
        numOfIpv6Routes: 104
        rir: ARIN
    }
}

Get ASN Information by ASN Number

java
import io.ipgeolocation.sdk.model.ASNResponse;

ASNResponse response = api.getAsnDetails()
        .asn("AS15169")
        .execute();

System.out.println(response);
Sample Response:
java
class ASNResponse {
    asn: class ASNDetails {
        asNumber: AS15169
        organization: Google LLC
        country: US
        asnName: GOOGLE
        type: BUSINESS
        domain: about.google
        dateAllocated: 
        allocationStatus: assigned
        numOfIpv4Routes: 983
        numOfIpv6Routes: 104
        rir: ARIN
    }
}

Combine All objects using Include

java
import io.ipgeolocation.sdk.model.ASNResponse;

ASNResponse response = api.getAsnDetails()
        .asn("AS12")
        .include("peers,downstreams,upstreams,routes,whois_response")
        .execute();

System.out.println(response);
Sample Response:
java
class ASNResponse {
    ip: null
    asn: class ASNDetails {
        asNumber: AS12
        organization: New York University
        country: US
        asnName: NYU-DOMAIN
        type: EDUCATION
        domain: nyu.edu
        dateAllocated: 
        allocationStatus: assigned
        numOfIpv4Routes: 11
        numOfIpv6Routes: 1
        rir: ARIN
        routes: [192.76.177.0/24, 216.165.96.0/20, 216.165.89.0/24, 216.165.0.0/18, 216.165.112.0/21, 128.122.0.0/16, 2607:f600::/32, 216.165.102.0/24, 216.165.64.0/19, 216.165.120.0/22, 192.86.139.0/24, 216.165.103.0/24]
        upstreams: [class ASNConnection {
            asNumber: AS3269
            description: Telecom Italia S.p.A.
            country: IT
        }, class ASNConnection {
            asNumber: AS8220
            description: COLT Technology Services Group Limited
            country: GB
        }, class ASNConnection {
            asNumber: AS286
            description: GTT Communications Inc.
            country: US
        }, class ASNConnection {
            asNumber: AS3257
            description: GTT Communications Inc.
            country: US
        }, class ASNConnection {
            asNumber: AS3754
            description: NYSERNet
            country: US
        }, class ASNConnection {
            asNumber: AS3356
            description: Level 3 Parent, LLC
            country: US
        }, class ASNConnection {
            asNumber: AS6461
            description: Zayo Bandwidth
            country: US
        }, class ASNConnection {
            asNumber: AS137
            description: Consortium GARR
            country: IT
        }]
        downstreams: [class ASNConnection {
            asNumber: AS394666
            description: NYU Langone Health
            country: US
        }, class ASNConnection {
            asNumber: AS54965
            description: Polytechnic Institute of NYU
            country: US
        }]
        peers: [class ASNConnection {
            asNumber: AS3269
            description: Telecom Italia S.p.A.
            country: IT
        }, class ASNConnection {
            asNumber: AS8220
            description: COLT Technology Services Group Limited
            country: GB
        }, class ASNConnection {
            asNumber: AS394666
            description: NYU Langone Health
            country: US
        }, class ASNConnection {
            asNumber: AS286
            description: GTT Communications Inc.
            country: NL
        }, class ASNConnection {
            asNumber: AS286
            description: GTT Communications Inc.
            country: US
        }, class ASNConnection {
            asNumber: AS3257
            description: GTT Communications Inc.
            country: US
        }, class ASNConnection {
            asNumber: AS3754
            description: NYSERNet
            country: US
        }, class ASNConnection {
            asNumber: AS3356
            description: Level 3 Parent, LLC
            country: US
        }, class ASNConnection {
            asNumber: AS6461
            description: Zayo Bandwidth
            country: US
        }, class ASNConnection {
            asNumber: AS137
            description: Consortium GARR
            country: IT
        }, class ASNConnection {
            asNumber: AS54965
            description: Polytechnic Institute of NYU
            country: US
        }]
        whoisResponse: 
        
        
        ASNumber:       12
        ASName:         NYU-DOMAIN
        ASHandle:       AS12
        RegDate:        1984-07-05
        Updated:        2023-05-25    
        Ref:            https://rdap.arin.net/registry/autnum/12
        
        
        OrgName:        New York University
        OrgId:          NYU-Z
        Address:        726 Broadway, 8th Floor - ITS
        City:           New York
        StateProv:      NY
        PostalCode:     10003
        Country:        US
        RegDate:        2023-05-15
        Updated:        2023-05-15
        Ref:            https://rdap.arin.net/registry/entity/NYU-Z
        
        
        OrgAbuseHandle: OIS9-ARIN
        OrgAbuseName:   Office of Information Security
        OrgAbusePhone:  +1-212-998-3333 
        OrgAbuseEmail:  abuse@nyu.edu
        OrgAbuseRef:    https://rdap.arin.net/registry/entity/OIS9-ARIN
        
        OrgNOCHandle: COSI-ARIN
        OrgNOCName:   Communications Operations Services - ITS
        OrgNOCPhone:  +1-212-998-3444 
        OrgNOCEmail:  noc-cosi-arin@nyu.edu
        OrgNOCRef:    https://rdap.arin.net/registry/entity/COSI-ARIN
        
        OrgTechHandle: COSI-ARIN
        OrgTechName:   Communications Operations Services - ITS
        OrgTechPhone:  +1-212-998-3444 
        OrgTechEmail:  noc-cosi-arin@nyu.edu
        OrgTechRef:    https://rdap.arin.net/registry/entity/COSI-ARIN
        
        RTechHandle: COSI-ARIN
        RTechName:   Communications Operations Services - ITS
        RTechPhone:  +1-212-998-3444 
        RTechEmail:  noc-cosi-arin@nyu.edu
        RTechRef:    https://rdap.arin.net/registry/entity/COSI-ARIN
        
        RNOCHandle: COSI-ARIN
        RNOCName:   Communications Operations Services - ITS
        RNOCPhone:  +1-212-998-3444 
        RNOCEmail:  noc-cosi-arin@nyu.edu
        RNOCRef:    https://rdap.arin.net/registry/entity/COSI-ARIN
               
    }
}

Timezone API Examples

This section provides usage examples of the getTimezone() method from the SDK, showcasing how to fetch timezone and time-related data using different query types — IP address, latitude/longitude, and timezone ID. For full API specifications, refer to the Timezone API documentation.

Get Timezone by IP Address

java
import io.ipgeolocation.sdk.api.TimezoneAPI;
import io.ipgeolocation.sdk.model.TimezoneResponse;

TimezoneAPI api = new TimezoneAPI(client);

TimezoneResponse response = api.getTimezone()
        .ip("8.8.8.8")
        .execute();

System.out.println(response);
Sample Response:
java
class TimeZoneResponse {
    ip: 8.8.8.8
   
    location: class TimezoneLocation {
        continentCode: NA
        continentName: North America
        countryCode2: US
        countryCode3: USA
        countryName: United States
        countryNameOfficial: United States of America
        isEu: false
        stateProv: California
        stateCode: US-CA
        district: Santa Clara
        city: Mountain View
        locality: null
        zipcode: 94043-1351
        latitude: 37.42240
        longitude: -122.08421
    }
    timeZone: class TimezoneDetails {
        name: America/Los_Angeles
        offset: -8
        offsetWithDst: -7
        date: 2025-06-23
        dateTime: 2025-06-23 02:15:25
        dateTimeTxt: Monday, June 23, 2025 02:15:25
        dateTimeWti: Mon, 23 Jun 2025 02:15:25 -0700
        dateTimeYmd: 2025-06-23T02:15:25-0700
        dateTimeUnix: 1.750670125437E9
        time24: 02:15:25
        time12: 02:15:25 AM
        week: 26
        month: 6
        year: 2025
        yearAbbr: 25
        isDst: true
        dstSavings: 1
        dstExists: true
        dstStart: class TimezoneDetailDstStart {
            utcTime: 2025-03-09 TIME 10
            duration: +1H
            gap: true
            dateTimeAfter: 2025-03-09 TIME 03
            dateTimeBefore: 2025-03-09 TIME 02
            overlap: false
        }
        dstEnd: class TimezoneDetailDstEnd {
            utcTime: 2025-11-02 TIME 09
            duration: -1H
            gap: false
            dateTimeAfter: 2025-11-02 TIME 01
            dateTimeBefore: 2025-11-02 TIME 02
            overlap: true
        }
    }
}

Get Timezone by Timezone Name

java
import io.ipgeolocation.sdk.model.TimezoneResponse;

TimezoneResponse response = api.getTimezone()
        .tz("Europe/ London")
        .execute();

System.out.println(response);
Sample Response:
java
class TimeZoneResponse {
    timeZone: class TimezoneDetails {
        name: Europe/London
        offset: 0
        offsetWithDst: 1
        date: 2025-06-23
        dateTime: 2025-06-23 10:25:01
        dateTimeTxt: Monday, June 23, 2025 10:25:01
        dateTimeWti: Mon, 23 Jun 2025 10:25:01 +0100
        dateTimeYmd: 2025-06-23T10:25:01+0100
        dateTimeUnix: 1.750670701706E9
        time24: 10:25:01
        time12: 10:25:01 AM
        week: 26
        month: 6
        year: 2025
        yearAbbr: 25
        isDst: true
        dstSavings: 1
        dstExists: true
        dstStart: class TimezoneDetailDstStart {
            utcTime: 2025-03-30 TIME 01
            duration: +1H
            gap: true
            dateTimeAfter: 2025-03-30 TIME 02
            dateTimeBefore: 2025-03-30 TIME 01
            overlap: false
        }
        dstEnd: class TimezoneDetailDstEnd {
            utcTime: 2025-10-26 TIME 01
            duration: -1H
            gap: false
            dateTimeAfter: 2025-10-26 TIME 01
            dateTimeBefore: 2025-10-26 TIME 02
            overlap: true
        }
    }
}

Get Timezone from Any Address

java
import io.ipgeolocation.sdk.model.TimezoneResponse;

TimezoneResponse response = api.getTimezone()
        .location("Munich, Germany")
        .execute();

System.out.println(response);
Sample Response:
java
class TimeZoneResponse {
    location: class TimezoneLocation {
        locationString: Munich, Germany
        countryName: Germany
        stateProv: Bavaria
        city: Munich
        locality: 
        latitude: 48.13711
        longitude: 11.57538
    }
    timeZone: class TimezoneDetails {
        name: Europe/Berlin
        offset: 1
        offsetWithDst: 2
        date: 2025-06-23
        dateTime: 2025-06-23 11:35:23
        dateTimeTxt: Monday, June 23, 2025 11:35:23
        dateTimeWti: Mon, 23 Jun 2025 11:35:23 +0200
        dateTimeYmd: 2025-06-23T11:35:23+0200
        dateTimeUnix: 1.750671323755E9
        time24: 11:35:23
        time12: 11:35:23 AM
        week: 26
        month: 6
        year: 2025
        yearAbbr: 25
        isDst: true
        dstSavings: 1
        dstExists: true
        dstStart: class TimezoneDetailDstStart {
            utcTime: 2025-03-30 TIME 01
            duration: +1H
            gap: true
            dateTimeAfter: 2025-03-30 TIME 03
            dateTimeBefore: 2025-03-30 TIME 02
            overlap: false
        }
        dstEnd: class TimezoneDetailDstEnd {
            utcTime: 2025-10-26 TIME 01
            duration: -1H
            gap: false
            dateTimeAfter: 2025-10-26 TIME 02
            dateTimeBefore: 2025-10-26 TIME 03
            overlap: true
        }
    }
}

Get Timezone from Location Coordinates

java
import io.ipgeolocation.sdk.model.TimezoneResponse;

TimezoneResponse response = api.getTimezone()
        .lat(48.8566F)
        ._long(2.3522F)
        .execute();

System.out.println(response);
Sample Response:
java
class TimeZoneResponse {
    timeZone: class TimezoneDetails {
        name: Europe/Paris
        offset: 1
        offsetWithDst: 2
        date: 2025-06-23
        dateTime: 2025-06-23 11:53:31
        dateTimeTxt: Monday, June 23, 2025 11:53:31
        dateTimeWti: Mon, 23 Jun 2025 11:53:31 +0200
        dateTimeYmd: 2025-06-23T11:53:31+0200
        dateTimeUnix: 1.750672411295E9
        time24: 11:53:31
        time12: 11:53:31 AM
        week: 26
        month: 6
        year: 2025
        yearAbbr: 25
        isDst: true
        dstSavings: 1
        dstExists: true
        dstStart: class TimezoneDetailDstStart {
            utcTime: 2025-03-30 TIME 01
            duration: +1H
            gap: true
            dateTimeAfter: 2025-03-30 TIME 03
            dateTimeBefore: 2025-03-30 TIME 02
            overlap: false
        }
        dstEnd: class TimezoneDetailDstEnd {
            utcTime: 2025-10-26 TIME 01
            duration: -1H
            gap: false
            dateTimeAfter: 2025-10-26 TIME 02
            dateTimeBefore: 2025-10-26 TIME 03
            overlap: true
        }
    }
}

Get Timezone and Airport Details from IATA Code

java
import io.ipgeolocation.sdk.model.TimezoneResponse;

TimezoneResponse response = api.getTimezone()
        .iataCode("ZRH")
        .execute();

System.out.println(response);
Sample Response:
java
class TimeZoneResponse {
    airportDetails: class TimezoneAirport {
        type: large_airport
        name: Zurich Airport
        latitude: 47.45806
        longitude: 8.54806
        elevationFt: 1417
        continentCode: EU
        countryCode: CH
        stateCode: CH-ZH
        city: Zurich
        iataCode: ZRH
        icaoCode: LSZH
        faaCode: 
    }
    timeZone: class TimezoneDetails {
        name: Europe/Zurich
        offset: 1
        offsetWithDst: 2
        date: 2025-06-23
        dateTime: 2025-06-23 12:24:08
        dateTimeTxt: Monday, June 23, 2025 12:24:08
        dateTimeWti: Mon, 23 Jun 2025 12:24:08 +0200
        dateTimeYmd: 2025-06-23T12:24:08+0200
        dateTimeUnix: 1.750674248242E9
        time24: 12:24:08
        time12: 12:24:08 PM
        week: 26
        month: 6
        year: 2025
        yearAbbr: 25
        isDst: true
        dstSavings: 1
        dstExists: true
        dstStart: class TimezoneDetailDstStart {
            utcTime: 2025-03-30 TIME 01
            duration: +1H
            gap: true
            dateTimeAfter: 2025-03-30 TIME 03
            dateTimeBefore: 2025-03-30 TIME 02
            overlap: false
        }
        dstEnd: class TimezoneDetailDstEnd {
            utcTime: 2025-10-26 TIME 01
            duration: -1H
            gap: false
            dateTimeAfter: 2025-10-26 TIME 02
            dateTimeBefore: 2025-10-26 TIME 03
            overlap: true
        }
    }
}

Similarly, you can fetch Airport Details and Timezone from using any ICAO code as well

Get Timezone and City Details from UN/LOCODE

java
import io.ipgeolocation.sdk.model.TimezoneResponse;

TimezoneResponse response = api.getTimezone()
        .loCode("ESBCN")
        .execute();

System.out.println(response);
Sample Response:
java
class TimeZoneResponse {
    loCodeDetails: class TimezoneLocode {
        loCode: ESBCN
        city: Barcelona
        stateCode: 
        countryCode: ES
        countryName: 
        locationType: Port, Rail Terminal, Road Terminal, Airport, Postal Exchange
        latitude: 41.38289
        longitude: 2.17743
    }
    timeZone: class TimezoneDetails {
        name: Europe/Madrid
        offset: 1
        offsetWithDst: 2
        date: 2025-06-23
        dateTime: 2025-06-23 12:32:55
        dateTimeTxt: Monday, June 23, 2025 12:32:55
        dateTimeWti: Mon, 23 Jun 2025 12:32:55 +0200
        dateTimeYmd: 2025-06-23T12:32:55+0200
        dateTimeUnix: 1.750674775033E9
        time24: 12:32:55
        time12: 12:32:55 PM
        week: 26
        month: 6
        year: 2025
        yearAbbr: 25
        isDst: true
        dstSavings: 1
        dstExists: true
        dstStart: class TimezoneDetailDstStart {
            utcTime: 2025-03-30 TIME 01
            duration: +1H
            gap: true
            dateTimeAfter: 2025-03-30 TIME 03
            dateTimeBefore: 2025-03-30 TIME 02
            overlap: false
        }
        dstEnd: class TimezoneDetailDstEnd {
            utcTime: 2025-10-26 TIME 01
            duration: -1H
            gap: false
            dateTimeAfter: 2025-10-26 TIME 02
            dateTimeBefore: 2025-10-26 TIME 03
            overlap: true
        }
    }
}

Timezone Converter Examples

This section provides usage examples of the convertTimezone() method from the SDK. The Timezone Converter API allows you to convert a specific time from one timezone to another using timezone identifiers and optional date/time inputs. For more details, refer to official documentation: Timezone Converter API.

Convert Current Time from One Timezone to Another

java
import io.ipgeolocation.sdk.api.TimezoneAPI;
import io.ipgeolocation.sdk.model.TimezoneConversionResponse;

TimezoneAPI api = new TimezoneAPI(client);

TimezoneConversionResponse response = api.convertTimezone()
        .from("America/New_York")
        .to("Asia/Tokyo")
        .execute();

System.out.println(response);
Sample Response:
java
class TimeConversionResponse {
    originalTime: 2024-12-08 11:00
    convertedTime: 2024-12-09 01:00:00
    diffHour: 14.0
    diffMin: 840
}

Similarly, you can convert time from any timezone to another timezone using location coordinates (Latitude and Longitude), location addresses, IATA codes, ICAO codes and UN/LUCODE .

User Agent API Examples

This section provides usage examples of the getUserAgent() method from the SDK. The User Agent API extracts and classifies information from user agent strings, including browser, engine, device, OS, and type metadata. For full explanation, visit the User Agent API documentation.

Parse a Basic User Agent String

java
import io.ipgeolocation.sdk.api.UserAgentAPI;
import io.ipgeolocation.sdk.model.UserAgentResponse;

UserAgentAPI api = new UserAgentAPI(client);

UserAgentResponse response = api.getUserAgent()
        .userAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36")
        .execute();

System.out.println(response);
Sample Response:
java
class UserAgentData {
    userAgentString: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
    name: Chrome
    type: Browser
    version: 125
    versionMajor: 125
    device: class UserAgentDataDevice {
        name: Desktop
        type: Desktop
        brand: Unknown
        cpu: Intel x86_64
    }
    engine: class UserAgentDataEngine {
        name: Blink
        type: Browser
        version: 125
        versionMajor: 125
    }
    operatingSystem: class UserAgentDataOperatingSystem {
        name: Windows NT
        type: Desktop
        version: ??
        versionMajor: ??
        build: ??
    }
}

If you don't pass any userAgentString, the API will return the data of device's user agent.

Bulk User Agent Parsing Example

The SDK also supports bulk User Agent parsing using the getBulkUserAgent() method. This allows parsing multiple user agent strings in a single request. All fields available in single-user-agent parsing are returned per entry.

java
import io.ipgeolocation.sdk.api.UserAgentAPI;
import io.ipgeolocation.sdk.model.UserAgentBulkRequest;
import io.ipgeolocation.sdk.model.UserAgentData;

UserAgentAPI api = new UserAgentAPI(client);

UserAgentBulkRequest bulkRequest = new UserAgentBulkRequest();
bulkRequest.addUaString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36");
bulkRequest.addUaString("Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1");

List<UserAgentData> response = api.getBulkUserAgent()
        .userAgentBulkRequest(bulkRequest)
        .execute();

System.out.println(response);

Astronomy API Examples

This section provides usage examples of the getAstronomy() method from the SDK, allowing developers to fetch sun and moon timings and position data based on coordinates, IP, or location string. Refer to the official Astronomy API documentation for more details.

Retrieving Geolocation Data in Multiple Languages

java
import io.ipgeolocation.sdk.api.AstronomyAPI;
import io.ipgeolocation.sdk.model.AstronomyResponse;

AstronomyAPI api = new AstronomyAPI(client);

AstronomyResponse response = api.getAstronomy()
        .lat(40.7128F)
        ._long(-74.0060F)
        .execute();

System.out.println(response);
Sample Response:
java
class AstronomyResponse {
    location: class TimezoneLocation {
        latitude: 40.71280
        longitude: -74.00600
    }
    astronomy: class Astronomy {
        date: 2025-06-24
        currentTime: 07:30:21.579
        sunrise: 05:26
        sunset: 20:31
        sunStatus: -
        solarNoon: 12:58
        dayLength: 15:05
        sunAltitude: 20.804246588855296
        sunDistance: 152040201.01537988
        sunAzimuth: 76.49892606690912
        moonrise: 04:03
        moonset: 20:23
        moonStatus: -
        moonAltitude: 34.414214378812524
        moonDistance: 364347.463373039
        moonAzimuth: 80.61208284060893
        moonParallacticAngle: -57.93796259578105
        moonPhase: NEW_MOON
        moonIlluminationPercentage: -1.31
        moonAngle: 346.8453135834885
    }
}

Astronomy by IP Address

java
AstronomyResponse response = api.getAstronomy()
        .ip("8.8.8.8")
        .execute();

System.out.println(response);
Sample Response:
java
class AstronomyResponse {
    ip: 8.8.8.8
    location: class TimezoneLocation {
        continentCode: NA
        continentName: North America
        countryCode2: US
        countryCode3: USA
        countryName: United States
        countryNameOfficial: United States of America
        isEu: false
        stateProv: California
        stateCode: US-CA
        district: Santa Clara
        city: Mountain View
        zipcode: 94043-1351
        latitude: 37.42240
        longitude: -122.08421
    }
    astronomy: class Astronomy {
        date: 2025-06-24
        currentTime: 04:34:28.021
        sunrise: 05:48
        sunset: 20:33
        sunStatus: -
        solarNoon: 13:10
        dayLength: 14:45
        sunAltitude: -12.617167576625503
        sunDistance: 152040201.01537988
        sunAzimuth: 46.86985777464207
        moonrise: 04:37
        moonset: 20:30
        moonStatus: -
        moonAltitude: -0.21211874350402243
        moonDistance: 364352.7073377457
        moonAzimuth: 53.468292502889824
        moonParallacticAngle: -46.31833060135301
        moonPhase: NEW_MOON
        moonIlluminationPercentage: -1.30
        moonAngle: 346.8846229043112
    }
}

Astronomy by Location String

java
AstronomyResponse response = api.getAstronomy()
    .location("Milan, Italy")
    .execute();

System.out.println(response);
Sample Response:
java
class AstronomyResponse {
    location: class TimezoneLocation {
        locationString: Milan, Italy
        countryName: Italy
        stateProv: Lombardy
        city: Milan
        locality: 
        latitude: 45.46419
        longitude: 9.18963
    }
    astronomy: class Astronomy {
        date: 2025-06-24
        currentTime: 13:42:31.494
        sunrise: 05:35
        sunset: 21:16
        sunStatus: -
        solarNoon: 13:25
        dayLength: 15:41
        sunAltitude: 67.67235422430544
        sunDistance: 152040201.01537988
        sunAzimuth: 190.14730820895687
        moonrise: 03:55
        moonset: 20:58
        moonStatus: -
        moonAltitude: 67.12458191571332
        moonDistance: 364363.02827482205
        moonAzimuth: 226.96305382114292
        moonParallacticAngle: 35.51972222628293
        moonPhase: NEW_MOON
        moonIlluminationPercentage: -1.29
        moonAngle: 346.9617371469379
    }
}

Astronomy for Specific Date

java
AstronomyResponse response = api.getAstronomy()
        .lat("-27.47")
        ._long("153.02")
        .date("2025-01-01")
        .execute();

System.out.println(response);
Sample Response:
java
class AstronomyResponse {
    location: class TimezoneLocation {
        latitude: -27.47000
        longitude: 153.02000
    }
    astronomy: class Astronomy {
        date: 2025-01-01
        currentTime: 21:52:17.735
        sunrise: 04:56
        sunset: 18:46
        sunStatus: -
        solarNoon: 11:51
        dayLength: 13:50
        sunAltitude: -31.926446962587317
        sunDistance: 147102938.8803657
        sunAzimuth: 212.6674132050822
        moonrise: 05:42
        moonset: 20:08
        moonStatus: -
        moonAltitude: -18.400463391101542
        moonDistance: 380312.3006037494
        moonAzimuth: 228.6071219705199
        moonParallacticAngle: 133.10083951250047
        moonPhase: NEW_MOON
        moonIlluminationPercentage: 2.80
        moonAngle: 19.261001616778085
    }
}

You can also get Astronomy Data in other languages as well. Only paid subscriptions can access this feature.

Astronomy in Different Language

java
AstronomyResponse response = api.getAstronomy()
        .ip("1.1.1.1")
        .lang("fr")
        .execute();

System.out.println(response);
Sample Response:
java
class AstronomyResponse {
    ip: 1.1.1.1
    location: class TimezoneLocation {
        continentCode: OC
        continentName: Océanie
        countryCode2: AU
        countryCode3: AUS
        countryName: Australie
        countryNameOfficial: 
        isEu: false
        stateProv: Queensland
        stateCode: AU-QLD
        district: Brisbane
        city: Brisbane Sud
        locality: null
        zipcode: 4101
        latitude: -27.47306
        longitude: 153.01421
    }
    astronomy: class Astronomy {
        date: 2025-06-24
        currentTime: 21:58:05.865
        sunrise: 06:38
        sunset: 17:02
        sunStatus: -
        solarNoon: 11:50
        dayLength: 10:24
        sunAltitude: -64.35374526473097
        sunDistance: 152040201.0153799
        sunAzimuth: 267.19451980250926
        moonrise: 05:11
        moonset: 15:31
        moonStatus: -
        moonAltitude: -77.90471534790521
        moonDistance: 364383.09958533326
        moonAzimuth: 276.0819890304232
        moonParallacticAngle: 90.30849575969972
        moonPhase: NEW_MOON
        moonIlluminationPercentage: -1.26
        moonAngle: 347.1107575290927
    }
}

Documentation for Models

Each model class provides getters for all fields documented in the official API docs.

IP Geolocation API Java SDK Objects Reference

IP Geolocation API Java SDK has following classes that you can use to fully leverage it.

ASNConnection

MethodDescriptionReturn Type
asNumberReturns the autonomous system (AS) number of the network connection (e.g., 'AS12345').String
descriptionReturns the description of the AS (often the organization name associated with the AS number).String
countryReturns the two-letter country code where this AS is registered.String

ASNResponse

MethodDescriptionReturn Type
ipIP address for which ASN information was retrieved.String
asnASN information for the given IP.ASNDetails

ASNDetails

MethodDescriptionReturn Type
asNumberAS number (Autonomous System Number), typically in the format 'AS####'.String
organizationName of the organization or ISP that owns the ASN.String
countryCountry code where the ASN is registered (ISO 2-letter).String
asnNameOfficial registry name of the ASN.String
typeType of organization or network (e.g., 'ISP', 'Business', 'Hosting').String
domainDomain name associated with the ASN’s organization.URI
dateAllocatedDate when this ASN was allocated (in YYYY-MM-DD format).LocalDate
allocationStatusCurrent status of the ASN allocation.String
numOfIpv4RoutesNumber of IPv4 routes announced by this ASN.Integer
numOfIpv6RoutesNumber of IPv6 routes announced by this ASN.Integer
rirRegional Internet Registry that issued the ASN.String
routesList of route prefixes (CIDR notation) announced by this ASN.List<String>
upstreamsList of upstream provider connections.List<ASNConnection>
downstreamsList of downstream AS connections.List<ASNConnection>
peersList of lateral peer AS connections.List<ASNConnection>
whoisResponseRaw WHOIS response data for this ASN.String

Abuse

MethodDescriptionReturn Type
routeThe network route (CIDR block) that the abuse contact record covers.String
countryCountry code of the abuse contact's organization.String
handleUnique identifier/handle of the abuse contact as per WHOIS records.String
nameName of the abuse contact person or department.String
organizationOrganization name to which the abuse contact belongs.String
roleRole or title of the abuse contact (e.g., 'Abuse Manager').String
kindKind of contact (e.g., 'Group' or 'Person').String
addressMailing address for the abuse contact.String
emailsList of email addresses to report abuse incidents.List<String>
phoneNumbersList of contact phone numbers for the abuse contact.List<String>

Astronomy

MethodDescriptionReturn Type
dateDate for which the astronomical data is calculated (YYYY-MM-DD).LocalDate
currentTimeCurrent local time at the location (in HH:mm:ss.SSS format).String
sunriseLocal time of sunrise.String
sunsetLocal time of sunset.String
sunStatusSpecial status of the sun relative to the horizon.String
solarNoonLocal time of solar noon.String
dayLengthTotal length of daylight for the date (HH:mm).String
sunAltitudeSun’s altitude angle at current time.BigDecimal
sunDistanceDistance from Earth to the Sun at current time (km).BigDecimal
sunAzimuthSun’s azimuth angle at current time.BigDecimal
moonriseLocal time of moonrise.String
moonsetLocal time of moonset.String
moonStatusSpecial status of the moon relative to the horizon.String
moonAltitudeMoon’s altitude angle at current time.BigDecimal
moonDistanceDistance from Earth to the Moon at current time (km).BigDecimal
moonAzimuthMoon’s azimuth angle at current time.BigDecimal
moonParallacticAngleMoon’s parallactic angle at current time.BigDecimal
moonPhaseCurrent phase of the Moon.String
moonIlluminationPercentagePercentage of the Moon’s disc that is illuminated.String
moonAngleApparent angular diameter of the Moon as seen from Earth.BigDecimal

AstronomyResponse

MethodDescriptionReturn Type
ipIP address for which astronomy information was requested.String
locationLocation details associated with the astronomy data.TimezoneLocation
astronomyAstronomical data for the location.Astronomy

CountryMetadata

MethodDescriptionReturn Type
callingCodeInternational telephone calling code for the country.String
tldTop-level domain for the country.String
languagesList of languages (locale codes) officially used in the country.List<String>

Currency

MethodDescriptionReturn Type
codeISO 4217 currency code (e.g., 'USD').String
nameName of the currency (e.g., 'US Dollar').String
symbolSymbol of the currency (e.g., '$' or '€').String

ErrorResponse

MethodDescriptionReturn Type
messageError message explaining why the request was not successful.String

GeolocationResponse

MethodDescriptionReturn Type
ipThe IP address that was looked up.String
hostnameThe hostname resolved for the IP.String
domainThe domain name associated with the IP.String
locationGeographical location information for the IP.Location
countryMetadataAdditional country details for the IP's country.CountryMetadata
networkNetwork information for the IP.Network
currencyLocal currency information for the IP's country.Currency
securitySecurity/threat intelligence details for the IP.Security
abuseAbuse contact information for the IP.Abuse
timeZoneTimezone information for the IP's location.TimeZone
userAgentParsed user agent data if a user agent string was provided.UserAgentData

BulkGeolocationResponse

MethodDescriptionReturn Type
messageMessage or error for this particular IP result.String
ipThe IP address that was looked up in the bulk request.String
hostnameResolved hostname for this IP.String
domainAssociated domain for this IP.String
locationGeographical location information for this IP.Location
countryMetadataCountry metadata for this IP’s country.CountryMetadata
networkNetwork information for this IP.Network
currencyLocal currency information for the IP’s country.Currency
securitySecurity details for this IP.Security
abuseAbuse contact info for this IP.Abuse
timeZoneTimezone information for this IP.TimeZone
userAgentParsed user agent data for this IP’s entry.UserAgentData

BulkIPRequest

MethodDescriptionReturn Type
ipsList of IP addresses to query in a bulk lookup request.List<String>

Location

MethodDescriptionReturn Type
continentCodeContinent code (e.g., 'NA' for North America).String
continentNameName of the continent.String
countryCode2ISO 2-letter country code.String
countryCode3ISO 3-letter country code.String
countryNameEnglish name of the country.String
countryNameOfficialOfficial name of the country.String
countryCapitalCapital city of the country.String
stateProvName of the state or province.String
stateCodeCode of the state or province.String
districtDistrict or county name.String
cityCity or town name.String
zipcodeZIP or postal code of the location.String
latitudeLatitude coordinate of the location.String
longitudeLongitude coordinate of the location.String
isEuIndicates if the country is a member of the European Union.Boolean
countryFlagURL of an image of the country’s flag.String
geonameIdGeonames.org identifier for the city/location.String
countryEmojiEmoji representation of the country’s flag.String
accuracyRadiusApproximate accuracy radius of the IP geolocation.String
localityLocality or neighborhood name.String
dmaCodeDesignated Market Area code.String

LocationMinimal

MethodDescriptionReturn Type
continentCodeContinent code (e.g., 'AS' for Asia).String
continentNameName of the continent.String
countryCode2ISO 2-letter country code.String
countryCode3ISO 3-letter country code.String
countryNameCountry name.String
countryNameOfficialOfficial country name.String
countryCapitalCapital city of the country.String
stateProvState or province name.String
stateCodeState or province code.String
districtDistrict or county name.String
cityCity name.String
zipcodePostal code.String
latitudeLatitude coordinate.String
longitudeLongitude coordinate.String
isEuTrue if the country is in the EU.Boolean
countryFlagURL of the country’s flag image.String
geonameIdGeoname ID of the location.String
countryEmojiEmoji flag of the country.String

Network

MethodDescriptionReturn Type
asnASN information for the IP address.NetworkAsn
connectionTypeType of internet connection for the IP.String
companyCompany/ISP information for the IP.NetworkCompany

NetworkAsn

MethodDescriptionReturn Type
asNumberAutonomous System Number.String
organizationOrganization name associated with the ASN.String
countryCountry code where the ASN is registered.String
asnNameName of the ASN.String
typeType/category of the ASN’s organization.String
domainAssociated domain name of the ASN’s organization.String
dateAllocatedDate the ASN was allocated.String
allocationStatusStatus of the ASN allocation.String
numOfIpv4RoutesNumber of IPv4 route prefixes announced by this ASN.String
numOfIpv6RoutesNumber of IPv6 route prefixes announced by this ASN.String
rirRegional Internet Registry that issued the ASN.String

NetworkCompany

MethodDescriptionReturn Type
nameName of the company or ISP that owns the IP address.String
typeType of company/organization.String
domainDomain name of the company.String

NetworkMinimal

MethodDescriptionReturn Type
asnBasic ASN information for the IP.NetworkMinimalAsn
companyBasic company/ISP information for the IP.NetworkMinimalCompany

NetworkMinimalAsn

MethodDescriptionReturn Type
asNumberAutonomous System Number for the IP’s network.String
organizationName of the organization/ISP for this ASN.String
countryCountry code of the ASN’s registration.String

NetworkMinimalCompany

MethodDescriptionReturn Type
nameName of the ISP or company associated with the IP.String

Security

MethodDescriptionReturn Type
threatScoreThreat score for the IP (higher score = higher risk).Integer
isTorTrue if the IP is a Tor exit node.Boolean
isProxyTrue if the IP is detected as a proxy.Boolean
proxyTypeType of proxy if the IP is a proxy (e.g., 'VPN', 'HTTP').String
proxyProviderName of the proxy/VPN provider.String
isAnonymousTrue if the IP is associated with anonymous network usage.Boolean
isKnownAttackerTrue if the IP is a known attacker source.Boolean
isSpamTrue if the IP is known for sending spam.Boolean
isBotTrue if the IP is identified as a bot or crawler.Boolean
isCloudProviderTrue if the IP belongs to a known cloud computing provider.Boolean
cloudProviderName of the cloud provider (if known).String

SecurityAPIResponse

MethodDescriptionReturn Type
ipThe IP address for which security information was requested.String
hostnameResolved hostname for the IP (if available).String
securitySecurity details for the IP address.Security
locationMinimal location information for the IP.LocationMinimal
networkMinimal network information for the IP.NetworkMinimal
timeZoneDetailed timezone information for the IP’s location.TimezoneDetails
userAgentParsed user agent data if provided in the request.UserAgentData
countryMetadataCountry metadata for the IP’s country.CountryMetadata
currencyCurrency information for the IP’s country.Currency

BulkSecurityResponse

MethodDescriptionReturn Type
ipThe IP address for which the security data is returned.String
hostnameResolved hostname for the IP address, if available.String
securityDetailed security information for the IP address (see Security class).Security
locationMinimal location information for the IP (see LocationMinimal class).LocationMinimal
networkMinimal network details for the IP (see NetworkMinimal class).NetworkMinimal
timeZoneTime zone details for the IP's location (see TimezoneDetails class).TimezoneDetails
userAgentParsed user agent data if a user agent was provided (see UserAgentData class).UserAgentData
countryMetadataAdditional country metadata (see CountryMetadata class).CountryMetadata
currencyCurrency information relevant to the IP's country (see Currency class).Currency
messageError message or additional information for this result.String

TimeConversionResponse

MethodDescriptionReturn Type
timeThe original time value to convert, typically in ISO or standard datetime string format.String
fromTimezoneTime zone ID (IANA format) to convert from (e.g., 'America/New_York').String
toTimezoneTime zone ID (IANA format) to convert to (e.g., 'Asia/Kolkata').String
convertedTimeTime converted into the target time zone, in the same format as the original.String

TimeZone

MethodDescriptionReturn Type
statusHTTP status code of the geolocation/time zone query (200 indicates success).Integer
messageError message if the query was unsuccessful.String
timezoneTime zone ID in IANA format (e.g., 'America/Los_Angeles').String
timezoneOffsetOffset from UTC in hours for this time zone (can be negative).Double
dateCurrent date in the time zone (format: 'yyyy-MM-dd').String
dateTimeCurrent date and time in the time zone (format: 'yyyy-MM-dd HH:mm:ss').String
dateTimeTxtDate and time as a formatted text string (e.g., 'Monday, January 01, 2024 15:30:00').String
dateTimeWtiDate and time in WTI format (e.g., 'Mon, 01 Jan 2024 15:30:00 +0000').String
dateTimeYmdDate and time in ISO 8601 format with 'T' (e.g., '2024-01-01T15:30:00Z').String
time24Current time in 24-hour format (HH:mm:ss).String
time12Current time in 12-hour format with AM/PM (hh:mm:ss aa).String
weekCurrent week of the year in this time zone.String
monthCurrent month number in this time zone.String
yearCurrent year in this time zone.String
isDSTTrue if this time zone is currently observing Daylight Saving Time.Boolean
dstSavingsDaylight Saving Time offset in hours, if applicable.Double
timezoneGeoGeolocation object for the time zone if the lookup was IP-based (see TimezoneGeo).TimezoneGeo

TimezoneResponse

MethodDescriptionReturn Type
timezoneTime zone ID for the queried location or IP.String
timezoneOffsetTime zone offset from UTC in hours.Double
dateTimeCurrent local date and time (format: 'yyyy-MM-dd HH:mm:ss').String
dateCurrent date in the queried time zone.String
time24Current time in 24-hour format.String
isDSTTrue if Daylight Saving Time is in effect.Boolean
dstSavingsAmount of DST in hours.Double
timezoneGeoGeolocation for the time zone (see TimezoneGeo).TimezoneGeo
statusHTTP status of the response.Integer
messageError message if the request failed.String

TimezoneDstEnd

MethodDescriptionReturn Type
dateThe date when Daylight Saving Time ends (format: 'yyyy-MM-dd').String
timeThe time of day when DST ends.String
dateTimeCombined date and time when DST ends.String
weekDayDay of the week when DST ends (e.g., 'Sunday').String
weekWeek of the month when DST ends (e.g., 'First', 'Last').String
monthMonth when DST ends (e.g., 'November').String

TimezoneDstStart

MethodDescriptionReturn Type
dateThe date when Daylight Saving Time starts (format: 'yyyy-MM-dd').String
timeThe time of day when DST starts.String
dateTimeCombined date and time when DST starts.String
weekDayDay of the week when DST starts.String
weekWeek of the month when DST starts.String
monthMonth when DST starts (e.g., 'March').String

TimezoneAirport

MethodDescriptionReturn Type
icaoICAO code for the airport (4-letter code, e.g., 'KJFK').String
iataIATA code for the airport (3-letter code, e.g., 'JFK').String
nameFull name of the airport.String
cityCity where the airport is located.String
stateProvState or province of the airport.String
countryCode2-letter country code of the airport.String
countryNameFull country name of the airport's location.String
latitudeLatitude coordinate of the airport.Double
longitudeLongitude coordinate of the airport.Double
timezoneTime zone of the airport.String
gmtOffsetGMT offset for the airport's time zone, in hours.Double

TimezoneDetails

MethodDescriptionReturn Type
timezoneTime zone ID in IANA format (e.g., 'Europe/Berlin').String
timezoneAbbreviationShort abbreviation of the time zone (e.g., 'CET').String
utcOffsetUTC offset in hours as a string (e.g., '+2').String
isDSTTrue if the location is observing Daylight Saving Time.Boolean
dstSavingsNumber of hours of Daylight Saving Time in effect.String
dateTimeCurrent local date and time in the time zone.String
dateCurrent date (format: 'yyyy-MM-dd').String
time24Current time in 24-hour format.String
time12Current time in 12-hour format.String
weekCurrent week number.String
monthCurrent month number.String
yearCurrent year.String
unixTimeCurrent unix timestamp for the time zone.Long
dstStartDST start details object (see TimezoneDetailDstStart).TimezoneDetailDstStart
dstEndDST end details object (see TimezoneDetailDstEnd).TimezoneDetailDstEnd
airportNearest airport details (see TimezoneAirport).TimezoneAirport
locationGeographic location details (see TimezoneLocation).TimezoneLocation
locodeUN/LOCODE details for this location (see TimezoneLocode).TimezoneLocode

TimezoneDetailDstEnd

MethodDescriptionReturn Type
dateDate when Daylight Saving Time ends.String
timeTime of day when DST ends.String
dateTimeCombined date and time when DST ends.String
weekDayDay of the week DST ends.String
weekWeek of the month DST ends.String
monthMonth DST ends.String

TimezoneDetailDstStart

MethodDescriptionReturn Type
dateDate when Daylight Saving Time starts.String
timeTime of day when DST starts.String
dateTimeCombined date and time when DST starts.String
weekDayDay of the week DST starts.String
weekWeek of the month DST starts.String
monthMonth DST starts.String

TimezoneLocation

MethodDescriptionReturn Type
countryCode22-letter ISO country code for the location.String
countryCode33-letter ISO country code for the location.String
countryNameCountry name for the location.String
stateProvinceState or province of the location.String
districtDistrict within the state/province.String
cityCity at the location.String
zipCodeZIP or postal code for the location.String
latitudeLatitude of the location.Double
longitudeLongitude of the location.Double

TimezoneLocode

MethodDescriptionReturn Type
codeUN/LOCODE for the location (e.g., 'USNYC').String
nameLocation name for the UN/LOCODE.String
countryCountry code for the location.String
subdivisionSubdivision code (state/province) for the location.String
functionFunction code assigned by UN/LOCODE.String
statusStatus of the UN/LOCODE entry.String
dateDate the UN/LOCODE was assigned or updated.String
iataIATA code for the location if available.String

UserAgentBulkRequest

MethodDescriptionReturn Type
userAgentsAn array of user agent strings to be parsed in a bulk request.List<String>

UserAgentData

MethodDescriptionReturn Type
userAgentStringThe original user agent string as provided in the request.String
typeThe detected type of agent (e.g., 'Browser', 'Bot', 'Mobile App', etc.).String
nameThe detected product name (e.g., 'Chrome', 'Edge', 'WhatsApp').String
versionVersion number of the detected product.String
engineRendering engine details (see UserAgentDataEngine).UserAgentDataEngine
operatingSystemDetected operating system details (see UserAgentDataOperatingSystem).UserAgentDataOperatingSystem
deviceDevice details (see UserAgentDataDevice).UserAgentDataDevice
isMobileTrue if the agent is recognized as a mobile device/browser.Boolean
isBotTrue if the agent is a crawler, bot, or spider.Boolean
botNameName of the bot/crawler, if detected.String

UserAgentDataDevice

MethodDescriptionReturn Type
brandBrand/manufacturer of the device, if detectable (e.g., 'Apple', 'Samsung').String
modelDevice model name or number (e.g., 'iPhone 14', 'Pixel 7 Pro').String
typeType of device (e.g., 'Smartphone', 'Tablet', 'Desktop', 'Smart TV').String
isTouchTrue if device supports touch input.Boolean

UserAgentDataEngine

MethodDescriptionReturn Type
nameName of the rendering engine (e.g., 'Blink', 'WebKit', 'Gecko').String
versionVersion number of the rendering engine.String
manufacturerManufacturer or maintainer of the engine (e.g., 'Google', 'Mozilla').String
modeEngine mode if specified (e.g., 'compatibility mode').String

UserAgentDataOperatingSystem

MethodDescriptionReturn Type
nameName of the operating system (e.g., 'Windows', 'iOS', 'Android', 'Linux').String
versionDetected OS version.String
platformPlatform family (e.g., 'x86', 'ARM', 'Apple').String
manufacturerOperating system manufacturer or vendor (e.g., 'Microsoft', 'Apple').String
isMobileTrue if the OS is typically used on mobile devices.Boolean

UserAgentPostRequest

MethodDescriptionReturn Type
userAgentA single user agent string to be parsed for device, browser, and OS detection.String

Source Code

The complete source code for this SDK is available at Github.