The official Python Client Library for IPGeolocation.io's set of APIs, provides a quick, developer friendly, way to access IP Location, Security, Timezone, Astronomy, ASN, Abuse Contact, and useragent data. Lookup your own IP or provide any IPv4, IPv6 or domain name to get structured results in Python, without the need for manual HTTP handling.
- IP Location API: Get all-in-one unified solution for location (city, locality, state, country, etc.), currency, network (AS number, ASN name, organization, asn type, date of allocation, company/ISP name, company type, company domain), timezone , useragent string parsing, security (threat score, is_tor, is_bot, proxy_provider, cloud_provider), and abuse contact (route/CIDR network, country, address, email, phone numbers) information.
- IP Security API: Get security, network, location, hostname, timezone and useragent parsing.
- ASN API: Get ASN details along with peers, upstreams, downstreams, routes, and raw WHOIS.
- Abuse Contact API: Get abuse emails, phone numbers, kind, organization, route/CIDR network and country.
- Astronomy API: Get sunrise, sunset, moonrise, moonset, moon phases with precise twilight period times in combination with location information.
- Timezone API: Get timezone name, multiple time formats, daylight saving status and its details along with location information.
- Timezone Convert API: Convert time between timezone names, geo coordinates, location addresses, IATA codes, ICAO codes, or UN/LOCODE.
- User Agent API: Get browser, Operating System, and device info from single or multiple Useragent string parsing.
This library aims to empower developers to integrate threat intelligence, personalization, fraud prevention, compliance, and analytics features directly into Python based applications. Whether you're enriching signup forms with ip geolocation data, localizing content, embedding threat intelligence in back-end systems, or converting time zones and currencies, the library ensures seamless, scalable integration with IPGeolocation.io’s global API infrastructure.
Based on:
- API version: 2.0.0
- Python 3.9+
- API Key from IPGeolocation.io
You can install package directly using:
pip install ipgeolocationio
(you may need to run pip
with root permission: sudo pip install ipgeolocationio
)
python -m pip install git+https://github.com/IPGeolocation/ip-geolocation-api-python-sdk.git
(or append sudo
in the start to install the package for all users)
Then import the package:
import ipgeolocation
All URIs are relative to https://api.ipgeolocation.io/v2
Class | Method | HTTP request | Description |
---|---|---|---|
IPGeolocationApi | get_ip_geolocation | GET /ipgeo | Get geolocation data for a single IP address |
IPGeolocationApi | get_bulk_ip_geolocation | POST /ipgeo-bulk | Get geolocation data for multiple IP addresses in a single API request |
IPSecurityApi | get_ip_security_info | GET /security | Retrieve security information (VPN, TOR, proxy, etc.) for a single IP |
IPSecurityApi | get_bulk_ip_security_info | POST /security-bulk | Retrieve security threat intelligence for multiple IPs |
ASNLookupApi | get_asn_info | GET /asn | Get details of any ASN number or associated IP address |
AbuseContactApi | get_abuse_contact_info | GET /abuse | Retrieve abuse reporting contact information for a given IP address |
AstronomyApi | get_astronomy_details | GET /astronomy | Get sunrise, sunset, moonrise, moonset, and related data for a location |
AstronomyApi | get_time_series_lookup | GET /astronomy/timeSeries | Get astronomy information for given date range at once |
TimezoneApi | get_timezone_info | GET /timezone | Timezone information details |
TimeConversionApi | convert_time_between_timezones | GET /timezone/convert | Convert time between two specified timezones |
UserAgentApi | get_user_agent_details | GET /user-agent | Get details of user-agent |
UserAgentApi | parse_user_agent_string | POST /user-agent | Handle single User-Agent string |
UserAgentApi | parse_bulk_user_agent_strings | POST /user-agent-bulk | Handle multiple user-agent string lookups |
IP Geolocation offers four plans from billing point of view: Free, Standard, Security, Advance. The availability of each method calling from the respective class, over all plans are presented below.
Class | Method | Free | Standard | Security | Advance |
---|---|---|---|---|---|
IPGeolocationApi | get_ip_geolocation | ✔ | ✔ | ✖ | ✔ |
IPGeolocationApi | get_bulk_ip_geolocation | ✖ | ✔ | ✖ | ✔ |
IPSecurityApi | get_ip_security_info | ✖ | ✖ | ✔ | ✖ |
IPSecurityApi | get_bulk_ip_security_info | ✖ | ✖ | ✔ | ✖ |
ASNLookupApi | get_asn_info | ✖ | ✖ | ✖ | ✔ |
AbuseContactApi | get_abuse_contact_info | ✖ | ✖ | ✖ | ✔ |
AstronomyApi | get_astronomy_details | ✔ | ✔ | ✔ | ✔ |
AstronomyApi | get_time_series_lookup | ✔ | ✔ | ✔ | ✔ |
TimezoneApi | get_timezone_info | ✔ | ✔ | ✔ | ✔ |
TimeConversionApi | convert_time_between_timezones | ✔ | ✔ | ✔ | ✔ |
UserAgentApi | get_user_agent_details | ✔ | ✔ | ✔ | ✔ |
UserAgentApi | parse_user_agent_string | ✔ | ✔ | ✔ | ✔ |
UserAgentApi | parse_bulk_user_agent_strings | ✖ | ✔ | ✔ | ✔ |
Note: The availability of fields in every API endpoint across all API plans is provided in the Reference Table within each respective API Documentation. e.g., for IPGeolocationApi, please visit https://ipgeolocation.io/ip-location-api.html#fields-reference.
To authenticate API requests, you need to get an API key from ipgeolocation.io.
- Sign up here: https://app.ipgeolocation.io/signup
- (optional) Verify your email, if you signed up using email.
- Log in to your account: https://app.ipgeolocation.io/login
- After logging in, navigate to your Dashboard to find your API key: https://app.ipgeolocation.io/dashboard
The documentation below corresponds to the four available API tier plans:
- Developer Plan (Free): Full Documentation
- Standard Plan: Full Documentation
- Advance Plan: Full Documentation
- Security Plan: Full Documentation
For a detailed comparison of what each plan offers, visit the Pricing Page.
Once you've obtained the api key, configure your API client as follows:
The client must configure the authentication and authorization parameters in accordance with the API server security policy.
import ipgeolocation
import os
# from dotenv import load_dotenv
# load_dotenv(".env")
# Defining the host is optional and defaults to https://api.ipgeolocation.io/v2
# See configuration.py for a list of all supported configuration parameters.
configuration = ipgeolocation.Configuration(
host = "https://api.ipgeolocation.io/v2"
)
# Configure API key authorization: ApiKeyAuth
configuration.api_key['ApiKeyAuth'] = os.getenv("API_KEY")
Note: Uncomment the dotenv
part, if you placed the API_KEY in .env
file.
Set the environment variable for API_KEY
or specify in .env
file and execute pytest
to run the tests.
This section provides usage examples of the get_ip_geolocation()
method from the package across Free, Standard, and Advanced subscription tiers. Each example highlights different combinations of parameters: fields
, include
, and excludes
.
Use this parameter to include specific fields in the response.
Use this parameter to omit specific fields from the response.
Use this parameter to add optional modules to the response, such as:
security
user_agent
hostname
liveHostname
hostnameFallbackLive
abuse
dma
time_zone
For complete details, refer to the official documentation: IP Geolocation API Documentation
The ip
parameter in the package can accept any valid IPv4 address, IPv6 address, or domain name. If ip=
the parameter is omitted, the API will return information about the public IP address of the device or server where the package is executing.
import ipgeolocation
from pprint import pprint
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPGeolocationApi(client)
response = api_instance.get_ip_geolocation(ip="1.1.1.1")
pprint(response.to_dict())
Sample Response:
{'country_metadata': {'calling_code': '+61',
'languages': ['en-AU'],
'tld': '.au'},
'currency': {'code': 'AUD', 'name': 'Australian Dollar', 'symbol': 'A$'},
'ip': '1.1.1.1',
'location': {'city': 'South Brisbane',
'continent_code': 'OC',
'continent_name': 'Oceania',
'country_capital': 'Canberra',
'country_code2': 'AU',
'country_code3': 'AUS',
'country_emoji': '🇦🇺',
'country_flag': 'https://ipgeolocation.io/static/flags/au_64.png',
'country_name': 'Australia',
'country_name_official': 'Commonwealth of Australia',
'district': 'Brisbane',
'geoname_id': '10113228',
'is_eu': False,
'latitude': '-27.47306',
'longitude': '153.01421',
'state_code': 'AU-QLD',
'state_prov': 'Queensland',
'zipcode': '4101'}}
Filtering Specific Fields from the Response (Use of 'exclude' and 'fields')
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPGeolocationApi(client)
response = api_instance.get_ip_geolocation(ip="1.1.1.1", fields="location", excludes="location.continent_code,location.continent_name")
pprint(response.to_dict())
Sample Response:
{'ip': '1.1.1.1',
'location': {'city': 'South Brisbane',
'country_capital': 'Canberra',
'country_code2': 'AU',
'country_code3': 'AUS',
'country_emoji': '🇦🇺',
'country_flag': 'https://ipgeolocation.io/static/flags/au_64.png',
'country_name': 'Australia',
'country_name_official': 'Commonwealth of Australia',
'district': 'Brisbane',
'geoname_id': '10113228',
'is_eu': False,
'latitude': '-27.47306',
'longitude': '153.01421',
'state_code': 'AU-QLD',
'state_prov': 'Queensland',
'zipcode': '4101'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPGeolocationApi(client)
response = api_instance.get_ip_geolocation(ip="8.8.8.8")
pprint(response.to_json())
Sample Response:
{'country_metadata': {'calling_code': '+1',
'languages': ['en-US', 'es-US', 'haw', 'fr'],
'tld': '.us'},
'currency': {'code': 'USD', 'name': 'US Dollar', 'symbol': '$'},
'ip': '8.8.8.8',
'location': {'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_capital': 'Washington, D.C.',
'country_code2': 'US',
'country_code3': 'USA',
'country_emoji': '🇺🇸',
'country_flag': 'https://ipgeolocation.io/static/flags/us_64.png',
'country_name': 'United States',
'country_name_official': 'United States of America',
'district': 'Santa Clara',
'geoname_id': '6301403',
'is_eu': False,
'latitude': '37.42240',
'longitude': '-122.08421',
'state_code': 'US-CA',
'state_prov': 'California',
'zipcode': '94043-1351'},
'network': {'asn': {'as_number': 'AS15169',
'country': 'US',
'organization': 'Google LLC'},
'company': {'name': 'Google LLC'}}}
Here is an example to get the geolocation data for IP address '2001:4230:4890::1' in French language:
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPGeolocationApi(client)
response = api_instance.get_ip_geolocation(ip="2001:4230:4890::1", lang="fr")
pprint(response.to_dict())
Sample Response:
{'country_metadata': {'calling_code': '+230',
'languages': ['en-MU', 'bho', 'fr'],
'tld': '.mu'},
'currency': {'code': 'MUR', 'name': 'Mauritius Rupee', 'symbol': '₨'},
'ip': '2001:4230:4890:0:0:0:0:1',
'location': {'city': 'Quatre Bornes',
'continent_code': 'AF',
'continent_name': 'Afrique',
'country_capital': 'Port Louis',
'country_code2': 'MU',
'country_code3': 'MUS',
'country_emoji': '🇲🇺',
'country_flag': 'https://ipgeolocation.io/static/flags/mu_64.png',
'country_name': 'Maurice',
'country_name_official': '',
'district': 'Quatre Bornes',
'geoname_id': '1106777',
'is_eu': False,
'latitude': '-20.24304',
'longitude': '57.49631',
'state_code': 'MU-PW',
'state_prov': 'Wilhems des plaines',
'zipcode': '72201'},
'network': {'asn': {'as_number': 'AS0', 'country': '', 'organization': ''},
'company': {'name': 'African Network Information Center AfriNIC '
'Ltd'}}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPGeolocationApi(client)
response = api_instance.get_ip_geolocation(ip="219.100.37.207", fields="location.country_name,location.country_capital",
include="user_agent,time_zone,hostnameFallbackLive")
pprint(response.to_dict())
Sample Response:
{'hostname': 'public-vpn-13-15.vpngate.v4.open.ad.jp',
'ip': '219.100.37.207',
'location': {'country_capital': 'Tokyo', 'country_name': 'Japan'},
'time_zone': {'current_time': '2025-08-07 18:47:11.809+0900',
'current_time_unix': 1754560031.809,
'dst_end': {},
'dst_exists': False,
'dst_savings': 0,
'dst_start': {},
'is_dst': False,
'name': 'Asia/Tokyo',
'offset': 9,
'offset_with_dst': 9},
'user_agent': {'device': {'brand': 'Unknown',
'cpu': 'Unknown',
'name': 'Unknown',
'type': 'Unknown'},
'engine': {'name': 'Unknown',
'type': 'Unknown',
'version': '??',
'version_major': '??'},
'name': 'IPGeolocation-API',
'operating_system': {'build': '??',
'name': 'Unknown',
'type': 'Unknown',
'version': '??',
'version_major': '??'},
'type': 'Special',
'user_agent_string': 'IPGeolocation-API/1.0.0/python',
'version': '1.0.0',
'version_major': '1'}}
Note on Hostname Parameters
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.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPGeolocationApi(client)
response = api_instance.get_ip_geolocation(ip="8.8.8.8", excludes="location.country_flag,location.country_emoji",
include="dma,abuse,security")
pprint(response.to_dict())
Sample Response:
{'abuse': {'address': '1600 Amphitheatre Parkway\n'
'Mountain View\n'
'CA\n'
'94043\n'
'United States',
'country': '',
'emails': ['network-abuse@google.com'],
'handle': 'ABUSE5250-ARIN',
'kind': 'group',
'name': 'Abuse',
'organization': 'Abuse',
'phone_numbers': ['+1-650-253-0000'],
'role': 'abuse',
'route': '8.8.8.0/24'},
'country_metadata': {'calling_code': '+1',
'languages': ['en-US', 'es-US', 'haw', 'fr'],
'tld': '.us'},
'currency': {'code': 'USD', 'name': 'US Dollar', 'symbol': '$'},
'ip': '8.8.8.8',
'location': {'accuracy_radius': '',
'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_capital': 'Washington, D.C.',
'country_code2': 'US',
'country_code3': 'USA',
'country_name': 'United States',
'country_name_official': 'United States of America',
'district': 'Santa Clara',
'dma_code': '807',
'geoname_id': '6301403',
'is_eu': False,
'latitude': '37.42240',
'locality': 'Mountain View',
'longitude': '-122.08421',
'state_code': 'US-CA',
'state_prov': 'California',
'zipcode': '94043-1351'},
'network': {'asn': {'allocation_status': 'assigned',
'as_number': 'AS15169',
'asn_name': 'GOOGLE',
'country': 'US',
'date_allocated': '',
'domain': 'about.google',
'num_of_ipv4_routes': '991',
'num_of_ipv6_routes': '104',
'organization': 'Google LLC',
'rir': 'ARIN',
'type': 'BUSINESS'},
'company': {'domain': '', 'name': 'Google LLC', 'type': ''},
'connection_type': ''},
'security': {'cloud_provider': '',
'is_anonymous': False,
'is_bot': False,
'is_cloud_provider': False,
'is_known_attacker': False,
'is_proxy': False,
'is_spam': False,
'is_tor': False,
'proxy_provider': '',
'proxy_type': '',
'threat_score': 0}}
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.
Note: 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.
The Package also supports bulk IP geolocation requests using the get_bulk_ip_geolocation()
method. All parameters like fields
, include
, and excludes
can also be used in bulk requests.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPGeolocationApi(client)
bulk_ipgeolocation_request = ipgeolocation.GetBulkIpGeolocationRequest.from_dict({"ips": ["8.8.8.8", "1.1.0.0"]})
response = api_instance.get_bulk_ip_geolocation(bulk_ipgeolocation_request, fields="location.country_name,location.city",
include="security,timezone", excludes="location.continent_code")
for item in response:
pprint(item.to_dict())
This section provides usage examples of the get_ip_security_info()
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.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPSecurityApi(client)
response = api_instance.get_ip_security_info(ip="2.56.188.34")
pprint(response.to_dict())
Sample Response:
{'ip': '2.56.188.34',
'security': {'cloud_provider': 'Packethub S.A.',
'is_anonymous': True,
'is_bot': False,
'is_cloud_provider': True,
'is_known_attacker': True,
'is_proxy': True,
'is_spam': False,
'is_tor': False,
'proxy_provider': 'Nord VPN',
'proxy_type': 'VPN',
'threat_score': 80}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPSecurityApi(client)
response = api_instance.get_ip_security_info(ip="2.56.188.34", include="location,network,currency,time_zone,user_agent,country_metadata,hostname")
pprint(response.to_dict())
Sample Response:
{'country_metadata': {'calling_code': '+1',
'languages': ['en-US', 'es-US', 'haw', 'fr'],
'tld': '.us'},
'currency': {'code': 'USD', 'name': 'US Dollar', 'symbol': '$'},
'hostname': '2.56.188.34',
'ip': '2.56.188.34',
'location': {'city': 'Dallas',
'continent_code': 'NA',
'continent_name': 'North America',
'country_capital': 'Washington, D.C.',
'country_code2': 'US',
'country_code3': 'USA',
'country_emoji': '🇺🇸',
'country_flag': 'https://ipgeolocation.io/static/flags/us_64.png',
'country_name': 'United States',
'country_name_official': 'United States of America',
'district': 'Dallas',
'geoname_id': '4684902',
'is_eu': False,
'latitude': '32.77822',
'longitude': '-96.79512',
'state_code': 'US-TX',
'state_prov': 'Texas',
'zipcode': '75201'},
'network': {'asn': {'as_number': 'AS62240',
'country': 'GB',
'organization': 'Clouvider Limited'},
'company': {'name': 'Packethub S.A.'}},
'security': {'cloud_provider': 'Packethub S.A.',
'is_anonymous': True,
'is_bot': False,
'is_cloud_provider': True,
'is_known_attacker': True,
'is_proxy': True,
'is_spam': False,
'is_tor': False,
'proxy_provider': 'Nord VPN',
'proxy_type': 'VPN',
'threat_score': 80},
'time_zone': {'current_time': '2025-08-07 14:31:46.086-0500',
'current_time_unix': 1754595106.086,
'dst_end': {'date_time_after': '2025-11-02 TIME 01',
'date_time_before': '2025-11-02 TIME 02',
'duration': '-1H',
'gap': False,
'overlap': True,
'utc_time': '2025-11-02 TIME 07'},
'dst_exists': True,
'dst_savings': 1,
'dst_start': {'date_time_after': '2025-03-09 TIME 03',
'date_time_before': '2025-03-09 TIME 02',
'duration': '+1H',
'gap': True,
'overlap': False,
'utc_time': '2025-03-09 TIME 08'},
'is_dst': True,
'name': 'America/Chicago',
'offset': -6,
'offset_with_dst': -5},
'user_agent': {'device': {'brand': 'Unknown',
'cpu': 'Unknown',
'name': 'Unknown',
'type': 'Unknown'},
'engine': {'name': 'Unknown',
'type': 'Unknown',
'version': '??',
'version_major': '??'},
'name': 'IPGeolocation-API',
'operating_system': {'build': '??',
'name': 'Unknown',
'type': 'Unknown',
'version': '??',
'version_major': '??'},
'type': 'Special',
'user_agent_string': 'IPGeolocation-API/1.0.0/python',
'version': '1.0.0',
'version_major': '1'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.IPSecurityApi(client)
response = api_instance.get_ip_security_info(ip="195.154.221.54",
fields="security.is_tor,security.is_proxy,security.is_bot,security.is_spam")
pprint(response.to_dict())
Sample Response:
{'ip': '195.154.221.54',
'security': {'is_bot': False,
'is_proxy': True,
'is_spam': False,
'is_tor': False}}
The SDK also supports bulk IP Security requests using the get_bulk_ip_security_info()
method. All parameters like fields
, include
, and excludes
can also be used in bulk requests.
with ipgeolocation.ApiClient(configuration) as client:
bulk_security_request = ipgeolocation.GetBulkIpGeolocationRequest(ips=["2.56.188.34", "2.56.188.35"])
api_instance = ipgeolocation.IPSecurityApi(client)
response = api_instance.get_bulk_ip_security_info(bulk_security_request, include="location,network", fields="security.threat_score,location.country_name")
for item in response:
pprint(item.to_dict())
This section provides usage examples of the get_asn_info()
method from the SDK. These methods allow developers to retrieve detailed ASN-level network data either by ASN number or by IP address.
Note: ASN API is only available in the Advanced Plan
Refer to the ASN API documentation for a detailed list of supported fields and behaviors.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.ASNLookupApi(client)
response = api_instance.get_asn_info(ip="8.8.8.8")
pprint(response.to_dict())
Sample Response:
{'asn': {'allocation_status': 'assigned',
'as_number': 'AS15169',
'asn_name': 'GOOGLE',
'country': 'US',
'date_allocated': '',
'domain': 'about.google',
'num_of_ipv4_routes': '991',
'num_of_ipv6_routes': '104',
'organization': 'Google LLC',
'rir': 'ARIN',
'type': 'BUSINESS'},
'ip': '8.8.8.8'}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.ASNLookupApi(client)
response = api_instance.get_asn_info(asn="AS15169")
pprint(response.to_dict())
Sample Response:
{'asn': {'allocation_status': 'assigned',
'as_number': 'AS15169',
'asn_name': 'GOOGLE',
'country': 'US',
'date_allocated': '',
'domain': 'about.google',
'num_of_ipv4_routes': '991',
'num_of_ipv6_routes': '104',
'organization': 'Google LLC',
'rir': 'ARIN',
'type': 'BUSINESS'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.ASNLookupApi(client)
response = api_instance.get_asn_info(asn=12,
include="peers,downstreams,upstreams,routes,whois_response")
pprint(response.to_dict())
Sample Response:
{'asn': {'allocation_status': 'assigned',
'as_number': 'AS12',
'asn_name': 'NYU-DOMAIN',
'country': 'US',
'date_allocated': '',
'domain': 'nyu.edu',
'downstreams': [{'as_number': 'AS394666',
'country': 'US',
'description': 'NYU Langone Health'},
{'as_number': 'AS54965',
'country': 'US',
'description': 'Polytechnic Institute of NYU'}],
'num_of_ipv4_routes': '11',
'num_of_ipv6_routes': '1',
'organization': 'New York University',
'peers': [{'as_number': 'AS3269',
'country': 'IT',
'description': 'Telecom Italia S.p.A.'},
...
{'as_number': 'AS54965',
'country': 'US',
'description': 'Polytechnic Institute of NYU'}],
'rir': 'ARIN',
'routes': ['192.76.177.0/24',
...
'216.165.103.0/24'],
'type': 'EDUCATION',
'upstreams': [{'as_number': 'AS3269',
'country': 'IT',
'description': 'Telecom Italia S.p.A.'},
...
{'as_number': 'AS137',
'country': 'IT',
'description': 'Consortium GARR'}],
'whois_response': '\n'
'\n'
'ASNumber: 12\n'
'ASName: NYU-DOMAIN\n'
'ASHandle: AS12\n'
...
'#\n'}}
This section demonstrates how to use the get_abuse_contact_info()
method of the AbuseContact API. This API helps security teams, hosting providers, and compliance professionals quickly identify the correct abuse reporting contacts for any IPv4 or IPv6 address. You can retrieve data like the responsible organization, role, contact emails, phone numbers, and address to take appropriate mitigation action against abusive or malicious activity.
Note: Abuse Contact API is only available in the Advanced Plan
Refer to the official Abuse Contact API documentation for details on all available fields.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.AbuseContactApi(client)
response = api_instance.get_abuse_contact_info(ip="1.0.1.0")
pprint(response.to_dict())
Sample Response:
{'abuse': {'address': 'No.31 ,jingrong street,beijing\n100032',
'country': 'CN',
'emails': ['anti-spam@chinatelecom.cn'],
'handle': 'IRT-CHINANET-CN',
'kind': 'group',
'name': 'IRT-CHINANET-CN',
'organization': '',
'phone_numbers': ['+86-591-83371954', ' +86-591-83309761'],
'role': 'abuse',
'route': '1.0.1.0/24'},
'ip': '1.0.1.0'}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.AbuseContactApi(client)
response = api_instance.get_abuse_contact_info(ip="2.76.19.0", fields="abuse.role,abuse.emails")
pprint(response.to_dict())
Sample Response:
{'abuse': {'emails': ['abuse@kcell.kz'],
'role': 'abuse'},
'ip': '2.76.19.0'}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.AbuseContactApi(client)
response = api_instance.get_abuse_contact_info(ip="2.76.19.0", excludes="abuse.handle,abuse.emails")
pprint(response.to_dict())
Sample Response:
{'abuse': {'address': 'MEDEU DISTRICT, Alimzhanov street, house 51\n'
'050004\n'
'Almaty\n'
'KAZAKHSTAN',
'country': 'KZ',
'kind': 'group',
'name': 'Abuse-C Role',
'organization': '',
'phone_numbers': ['+77272582755 ext. 1889'],
'role': 'abuse',
'route': '2.76.0.0/15'},
'ip': '2.76.19.0'}
This section provides usage examples of the get_timezone_info()
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.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.TimezoneApi(client)
response = api_instance.get_timezone_info(ip="8.8.8.8")
pprint(response.to_dict())
Sample Response:
{'ip': '8.8.8.8',
'location': {'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_code2': 'US',
'country_code3': 'USA',
'country_name': 'United States',
'country_name_official': 'United States of America',
'district': 'Santa Clara',
'is_eu': False,
'latitude': '37.42240',
'longitude': '-122.08421',
'state_code': 'US-CA',
'state_prov': 'California',
'zipcode': '94043-1351'},
'time_zone': {'date': '2025-08-07',
'date_time': '2025-08-07 21:39:59',
'date_time_txt': 'Thursday, August 07, 2025 21:39:59',
'date_time_unix': 1754627999.594,
'date_time_wti': 'Thu, 07 Aug 2025 21:39:59 -0700',
'date_time_ymd': '2025-08-07T21:39:59-0700',
'dst_end': {'date_time_after': '2025-11-02 TIME 01',
'date_time_before': '2025-11-02 TIME 02',
'duration': '-1H',
'gap': False,
'overlap': True,
'utc_time': '2025-11-02 TIME 09'},
'dst_exists': True,
'dst_savings': 1,
'dst_start': {'date_time_after': '2025-03-09 TIME 03',
'date_time_before': '2025-03-09 TIME 02',
'duration': '+1H',
'gap': True,
'overlap': False,
'utc_time': '2025-03-09 TIME 10'},
'is_dst': True,
'month': 8,
'name': 'America/Los_Angeles',
'offset': -8,
'offset_with_dst': -7,
'time_12': '09:39:59 PM',
'time_24': '21:39:59',
'week': 32,
'year': 2025,
'year_abbr': '25'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.TimezoneApi(client)
response = api_instance.get_timezone_info(tz="Europe/London")
pprint(response.to_dict())
Sample Response:
{'time_zone': {'date': '2025-08-08',
'date_time': '2025-08-08 05:41:48',
'date_time_txt': 'Friday, August 08, 2025 05:41:48',
'date_time_unix': 1754628108.702,
'date_time_wti': 'Fri, 08 Aug 2025 05:41:48 +0100',
'date_time_ymd': '2025-08-08T05:41:48+0100',
'dst_end': {'date_time_after': '2025-10-26 TIME 01',
'date_time_before': '2025-10-26 TIME 02',
'duration': '-1H',
'gap': False,
'overlap': True,
'utc_time': '2025-10-26 TIME 01'},
'dst_exists': True,
'dst_savings': 1,
'dst_start': {'date_time_after': '2025-03-30 TIME 02',
'date_time_before': '2025-03-30 TIME 01',
'duration': '+1H',
'gap': True,
'overlap': False,
'utc_time': '2025-03-30 TIME 01'},
'is_dst': True,
'month': 8,
'name': 'Europe/London',
'offset': 0,
'offset_with_dst': 1,
'time_12': '05:41:48 AM',
'time_24': '05:41:48',
'week': 32,
'year': 2025,
'year_abbr': '25'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.TimezoneApi(client)
response = api_instance.get_timezone_info(location="Munich, Germany")
pprint(response.to_dict())
Sample Response:
{'location': {'city': 'Munich',
'country_name': 'Germany',
'latitude': '48.13711',
'locality': '',
'location_string': 'Munich, Germany',
'longitude': '11.57538',
'state_prov': 'Bavaria'},
'time_zone': {'date': '2025-08-08',
'date_time': '2025-08-08 06:42:54',
'date_time_txt': 'Friday, August 08, 2025 06:42:54',
'date_time_unix': 1754628174.007,
'date_time_wti': 'Fri, 08 Aug 2025 06:42:54 +0200',
'date_time_ymd': '2025-08-08T06:42:54+0200',
'dst_end': {'date_time_after': '2025-10-26 TIME 02',
'date_time_before': '2025-10-26 TIME 03',
'duration': '-1H',
'gap': False,
'overlap': True,
'utc_time': '2025-10-26 TIME 01'},
'dst_exists': True,
'dst_savings': 1,
'dst_start': {'date_time_after': '2025-03-30 TIME 03',
'date_time_before': '2025-03-30 TIME 02',
'duration': '+1H',
'gap': True,
'overlap': False,
'utc_time': '2025-03-30 TIME 01'},
'is_dst': True,
'month': 8,
'name': 'Europe/Berlin',
'offset': 1,
'offset_with_dst': 2,
'time_12': '06:42:54 AM',
'time_24': '06:42:54',
'week': 32,
'year': 2025,
'year_abbr': '25'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.TimezoneApi(client)
response = api_instance.get_timezone_info(lat="48.8566", long="2.3522")
pprint(response.to_dict())
Sample Response:
{'time_zone': {'date': '2025-08-08',
'date_time': '2025-08-08 06:44:31',
'date_time_txt': 'Friday, August 08, 2025 06:44:31',
'date_time_unix': 1754628271.639,
'date_time_wti': 'Fri, 08 Aug 2025 06:44:31 +0200',
'date_time_ymd': '2025-08-08T06:44:31+0200',
'dst_end': {'date_time_after': '2025-10-26 TIME 02',
'date_time_before': '2025-10-26 TIME 03',
'duration': '-1H',
'gap': False,
'overlap': True,
'utc_time': '2025-10-26 TIME 01'},
'dst_exists': True,
'dst_savings': 1,
'dst_start': {'date_time_after': '2025-03-30 TIME 03',
'date_time_before': '2025-03-30 TIME 02',
'duration': '+1H',
'gap': True,
'overlap': False,
'utc_time': '2025-03-30 TIME 01'},
'is_dst': True,
'month': 8,
'name': 'Europe/Paris',
'offset': 1,
'offset_with_dst': 2,
'time_12': '06:44:31 AM',
'time_24': '06:44:31',
'week': 32,
'year': 2025,
'year_abbr': '25'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.TimezoneApi(client)
response = api_instance.get_timezone_info(iata_code="ZRH")
pprint(response.to_dict())
Sample Response:
{'airport_details': {'city': 'Zurich',
'continent_code': 'EU',
'country_code': 'CH',
'elevation_ft': 1417,
'faa_code': '',
'iata_code': 'ZRH',
'icao_code': 'LSZH',
'latitude': '47.45806',
'longitude': '8.54806',
'name': 'Zurich Airport',
'state_code': 'CH-ZH',
'type': 'large_airport'},
'time_zone': {'date': '2025-08-08',
'date_time': '2025-08-08 06:46:22',
'date_time_txt': 'Friday, August 08, 2025 06:46:22',
'date_time_unix': 1754628382.876,
'date_time_wti': 'Fri, 08 Aug 2025 06:46:22 +0200',
'date_time_ymd': '2025-08-08T06:46:22+0200',
'dst_end': {'date_time_after': '2025-10-26 TIME 02',
'date_time_before': '2025-10-26 TIME 03',
'duration': '-1H',
'gap': False,
'overlap': True,
'utc_time': '2025-10-26 TIME 01'},
'dst_exists': True,
'dst_savings': 1,
'dst_start': {'date_time_after': '2025-03-30 TIME 03',
'date_time_before': '2025-03-30 TIME 02',
'duration': '+1H',
'gap': True,
'overlap': False,
'utc_time': '2025-03-30 TIME 01'},
'is_dst': True,
'month': 8,
'name': 'Europe/Zurich',
'offset': 1,
'offset_with_dst': 2,
'time_12': '06:46:22 AM',
'time_24': '06:46:22',
'week': 32,
'year': 2025,
'year_abbr': '25'}}
Similarly, you can fetch Airport Details and Timezone from using any ICAO code as well
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.TimezoneApi(client)
response = api_instance.get_timezone_info(lo_code="ESBCN")
pprint(response.to_dict())
Sample Response:
{'lo_code_details': {'city': 'Barcelona',
'country_code': 'ES',
'country_name': '',
'latitude': '41.38289',
'lo_code': 'ESBCN',
'location_type': 'Port, Rail Terminal, Road Terminal, '
'Airport, Postal Exchange',
'longitude': '2.17743',
'state_code': ''},
'time_zone': {'date': '2025-08-08',
'date_time': '2025-08-08 06:48:13',
'date_time_txt': 'Friday, August 08, 2025 06:48:13',
'date_time_unix': 1754628493.203,
'date_time_wti': 'Fri, 08 Aug 2025 06:48:13 +0200',
'date_time_ymd': '2025-08-08T06:48:13+0200',
'dst_end': {'date_time_after': '2025-10-26 TIME 02',
'date_time_before': '2025-10-26 TIME 03',
'duration': '-1H',
'gap': False,
'overlap': True,
'utc_time': '2025-10-26 TIME 01'},
'dst_exists': True,
'dst_savings': 1,
'dst_start': {'date_time_after': '2025-03-30 TIME 03',
'date_time_before': '2025-03-30 TIME 02',
'duration': '+1H',
'gap': True,
'overlap': False,
'utc_time': '2025-03-30 TIME 01'},
'is_dst': True,
'month': 8,
'name': 'Europe/Madrid',
'offset': 1,
'offset_with_dst': 2,
'time_12': '06:48:13 AM',
'time_24': '06:48:13',
'week': 32,
'year': 2025,
'year_abbr': '25'}}
This section provides usage examples of the convert_time_between_timezones()
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.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.TimeConversionApi(client)
response = api_instance.convert_time_between_timezones(tz_from="America/New_York", tz_to="Asia/Tokyo")
pprint(response.to_dict())
Sample Response:
{'converted_time': '2025-08-08 13:50:44',
'diff_hour': 13,
'diff_min': 780,
'original_time': '2025-08-08 00:50:44'}
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 .
This section provides usage examples of the parse_user_agent_string()
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.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.UserAgentApi(client)
response = api_instance.get_user_agent_details(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36")
pprint(response.to_dict())
Sample Response:
{'device': {'brand': 'Unknown',
'cpu': 'Intel x86_64',
'name': 'Desktop',
'type': 'Desktop'},
'engine': {'name': 'Blink',
'type': 'Browser',
'version': '125',
'version_major': '125'},
'name': 'Chrome',
'operating_system': {'build': '??',
'name': 'Windows NT',
'type': 'Desktop',
'version': '??',
'version_major': '??'},
'type': 'Browser',
'user_agent_string': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 '
'Safari/537.36',
'version': '125',
'version_major': '125'}
If you don't pass any userAgentString, the API will return the data of device's user agent.
The SDK also supports bulk User Agent parsing using the parse_bulk_user_agent_strings()
method. This allows parsing multiple user agent strings in a single request. All fields available in single-user-agent parsing are returned per entry.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.UserAgentApi(client)
bulk_user_agent_string_request = ipgeolocation.ParseBulkUserAgentStringsRequest(uaStrings=[
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
"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"
])
response = api_instance.parse_bulk_user_agent_strings(bulk_user_agent_string_request)
for item in response:
pprint(item.to_dict())
This section provides usage examples of the get_astronomy_details()
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.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.AstronomyApi(client)
response = api_instance.get_astronomy_details(lat="40.7128", long="-74.0060")
pprint(response.to_dict())
Sample Response:
{'astronomy': {'current_time': '01:24:34.206',
'date': '2025-08-08',
'day_length': '14:03',
'evening': {'astronomical_twilight_begin': '21:09',
'astronomical_twilight_end': '21:49',
'blue_hour_begin': '20:21',
'blue_hour_end': '20:44',
'civil_twilight_begin': '20:03',
'civil_twilight_end': '20:32',
'golden_hour_begin': '19:24',
'golden_hour_end': '20:21',
'nautical_twilight_begin': '20:32',
'nautical_twilight_end': '21:09'},
'mid_night': '01:01',
'moon_altitude': 23.669055866442545,
'moon_angle': 166.27229987123508,
'moon_azimuth': 198.75293380735044,
'moon_distance': 384876.99936538114,
'moon_illumination_percentage': '98.57',
'moon_parallactic_angle': 15.390260494111123,
'moon_phase': 'FULL_MOON',
'moon_status': '-',
'moonrise': '20:01',
'moonset': '04:52',
'morning': {'astronomical_twilight_begin': '04:13',
'astronomical_twilight_end': '04:53',
'blue_hour_begin': '05:17',
'blue_hour_end': '05:41',
'civil_twilight_begin': '05:29',
'civil_twilight_end': '05:59',
'golden_hour_begin': '05:41',
'golden_hour_end': '06:38',
'nautical_twilight_begin': '04:53',
'nautical_twilight_end': '05:29'},
'night_begin': '21:49',
'night_end': '04:13',
'solar_noon': '13:01',
'sun_altitude': -32.984922198146315,
'sun_azimuth': 6.547113802544914,
'sun_distance': 151721123.19916567,
'sun_status': '-',
'sunrise': '05:59',
'sunset': '20:03'},
'location': {'city': 'New York',
'country_name': '',
'elevation': '6',
'latitude': '40.71280',
'locality': '',
'longitude': '-74.00600',
'state_prov': 'New York'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.AstronomyApi(client)
response = api_instance.get_astronomy_details(ip="8.8.8.8")
pprint(response.to_dict())
Sample Response:
{'astronomy': {'current_time': '22:26:45.166',
'date': '2025-08-07',
'day_length': '13:51',
'evening': {'astronomical_twilight_begin': '21:12',
'astronomical_twilight_end': '21:48',
'blue_hour_begin': '20:26',
'blue_hour_end': '20:49',
'civil_twilight_begin': '20:09',
'civil_twilight_end': '20:37',
'golden_hour_begin': '19:33',
'golden_hour_end': '20:26',
'nautical_twilight_begin': '20:37',
'nautical_twilight_end': '21:12'},
'mid_night': '01:14',
'moon_altitude': 23.499956846028425,
'moon_angle': 166.29082916314508,
'moon_azimuth': 151.12598145672808,
'moon_distance': 384870.3937982859,
'moon_illumination_percentage': '98.58',
'moon_parallactic_angle': -24.685745972238635,
'moon_phase': 'FULL_MOON',
'moon_status': '-',
'moonrise': '19:35',
'moonset': '04:15',
'morning': {'astronomical_twilight_begin': '04:38',
'astronomical_twilight_end': '05:15',
'blue_hour_begin': '05:38',
'blue_hour_end': '06:00',
'civil_twilight_begin': '05:49',
'civil_twilight_end': '06:17',
'golden_hour_begin': '06:00',
'golden_hour_end': '06:54',
'nautical_twilight_begin': '05:15',
'nautical_twilight_end': '05:49'},
'night_begin': '21:48',
'night_end': '04:38',
'solar_noon': '13:14',
'sun_altitude': -23.622520216576035,
'sun_azimuth': 315.6208700434932,
'sun_distance': 151743546.31162292,
'sun_status': '-',
'sunrise': '06:17',
'sunset': '20:09'},
'ip': '8.8.8.8',
'location': {'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_code2': 'US',
'country_code3': 'USA',
'country_name': 'United States',
'country_name_official': 'United States of America',
'district': 'Santa Clara',
'elevation': '3',
'is_eu': False,
'latitude': '37.42240',
'locality': 'Charleston Terrace',
'longitude': '-122.08421',
'state_code': 'US-CA',
'state_prov': 'California',
'zipcode': '94043-1351'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.AstronomyApi(client)
response = api_instance.get_astronomy_details(location="Milan, Italy")
pprint(response.to_dict())
Sample Response:
{'astronomy': {'current_time': '07:27:27.944',
'date': '2025-08-08',
'day_length': '14:30',
'evening': {'astronomical_twilight_begin': '21:55',
'astronomical_twilight_end': '22:42',
'blue_hour_begin': '21:01',
'blue_hour_end': '21:27',
'civil_twilight_begin': '20:43',
'civil_twilight_end': '21:14',
'golden_hour_begin': '19:59',
'golden_hour_end': '21:01',
'nautical_twilight_begin': '21:14',
'nautical_twilight_end': '21:55'},
'mid_night': '01:29',
'moon_altitude': -25.010715698704324,
'moon_angle': 166.29688189098198,
'moon_azimuth': 261.4389380532827,
'moon_distance': 384868.236228891,
'moon_illumination_percentage': '98.58',
'moon_parallactic_angle': 49.04972415962652,
'moon_phase': 'FULL_MOON',
'moon_status': '-',
'moonrise': '20:35',
'moonset': '04:46',
'morning': {'astronomical_twilight_begin': '04:14',
'astronomical_twilight_end': '05:01',
'blue_hour_begin': '05:29',
'blue_hour_end': '05:55',
'civil_twilight_begin': '05:42',
'civil_twilight_end': '06:13',
'golden_hour_begin': '05:55',
'golden_hour_end': '06:57',
'nautical_twilight_begin': '05:01',
'nautical_twilight_end': '05:42'},
'night_begin': '22:42',
'night_end': '04:14',
'solar_noon': '13:28',
'sun_altitude': 11.11568551252996,
'sun_azimuth': 78.33676356672913,
'sun_distance': 151721123.1991657,
'sun_status': '-',
'sunrise': '06:13',
'sunset': '20:43'},
'location': {'city': 'Milan',
'country_name': 'Italy',
'elevation': '122',
'latitude': '45.46419',
'locality': '',
'location_string': 'Milan, Italy',
'longitude': '9.18963',
'state_prov': 'Lombardy'}}
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.AstronomyApi(client)
response = api_instance.get_astronomy_details(lat="-27.47", long="153.02", var_date="2025-01-01")
pprint(response.to_dict())
Sample Response:
{'astronomy': {'current_time': '15:37:36.338',
'date': '2025-01-01',
'day_length': '13:50',
'evening': {'astronomical_twilight_begin': '19:45',
'astronomical_twilight_end': '20:18',
'blue_hour_begin': '19:02',
'blue_hour_end': '19:23',
'civil_twilight_begin': '18:46',
'civil_twilight_end': '19:13',
'golden_hour_begin': '18:12',
'golden_hour_end': '19:02',
'nautical_twilight_begin': '19:13',
'nautical_twilight_end': '19:45'},
'mid_night': '23:51',
'moon_altitude': 55.581857131320504,
'moon_angle': 16.006816957603085,
'moon_azimuth': 264.9032851876516,
'moon_distance': 381160.8743283583,
'moon_illumination_percentage': '1.94',
'moon_parallactic_angle': 102.49215878888498,
'moon_phase': 'NEW_MOON',
'moon_status': '-',
'moonrise': '05:42',
'moonset': '20:08',
'morning': {'astronomical_twilight_begin': '03:24',
'astronomical_twilight_end': '03:57',
'blue_hour_begin': '04:19',
'blue_hour_end': '04:40',
'civil_twilight_begin': '04:29',
'civil_twilight_end': '04:56',
'golden_hour_begin': '04:40',
'golden_hour_end': '05:30',
'nautical_twilight_begin': '03:57',
'nautical_twilight_end': '04:29'},
'night_begin': '20:18',
'night_end': '03:24',
'solar_noon': '11:51',
'sun_altitude': 39.09727912525482,
'sun_azimuth': 261.6973481428636,
'sun_distance': 147102938.88036567,
'sun_status': '-',
'sunrise': '04:56',
'sunset': '18:46'},
'location': {'city': 'Brisbane',
'country_name': 'Australia',
'elevation': '',
'latitude': '-27.47000',
'locality': 'Brisbane',
'longitude': '153.02000',
'state_prov': 'Queensland'}}
You can also get Astronomy Data in other languages as well. Only paid subscriptions can access this feature.
with ipgeolocation.ApiClient(configuration) as client:
api_instance = ipgeolocation.AstronomyApi(client)
response = api_instance.get_astronomy_details(ip="1.1.1.1", lang="fr")
pprint(response.to_dict())
Sample Response:
{'astronomy': {'current_time': '15:39:12.077',
...
'sunrise': '06:24',
'sunset': '17:23'},
'ip': '1.1.1.1',
'location': {'city': 'Brisbane Sud',
'continent_code': 'OC',
'continent_name': 'Océanie',
'country_code2': 'AU',
'country_code3': 'AUS',
'country_name': 'Australie',
'country_name_official': '',
'district': 'Brisbane',
'elevation': '',
'is_eu': False,
'latitude': '-27.47306',
'locality': '',
'longitude': '153.01421',
'state_code': 'AU-QLD',
'state_prov': 'Queensland',
'zipcode': '4101'}}
- ASNConnection
- ASNResponse
- ASNDetails
- Abuse
- AbuseResponse
- Astronomy
- AstronomyEvening
- AstronomyLocation
- AstronomyMorning
- AstronomyResponse
- CountryMetadata
- Currency
- ErrorResponse
- GeolocationResponse
- GetBulkIpGeolocationResponse
- GetBulkIpGeolocationRequest
- GetBulkIpSecurityInfoResponse
- Location
- LocationMinimal
- Network
- NetworkAsn
- NetworkCompany
- NetworkMinimal
- NetworkMinimalAsn
- NetworkMinimalCompany
- ParseBulkUserAgentStringsRequest
- ParseUserAgentStringRequest
- Security
- IPSecurityAPIResponse
- TimeConversionResponse
- TimeSeries
- TimeZone
- TimeZoneDetailedResponse
- TimeZoneDstEnd
- TimeZoneDstStart
- TimezoneAirport
- TimezoneDetail
- TimezoneDetailDstEnd
- TimezoneDetailDstStart
- TimezoneLocation
- TimezoneLocode
- UserAgentData
- UserAgentDataDevice
- UserAgentDataEngine
- UserAgentDataOperatingSystem