A Python library to query IP addresses using the ipquery.io API. This library allows you to easily retrieve detailed information about IP addresses, including ISP data, geolocation details, and risk analysis.
- Query detailed information for a specific IP address.
- Fetch your own public IP address.
- Perform bulk queries for multiple IP addresses.
- Includes Pydantic models for easy data validation and parsing.
Install the package using pip:
pip install ipcore
from ipapi.client import IPAPIClient
Fetch information about a specific IP address:
from ipapi.client import IPAPIClient
client = IPAPIClient()
ip_info = client.query_ip("8.8.8.8")
print(ip_info)
from ipapi.client import AsyncIPAPIClient
async def main():
client = AsyncIPAPIClient()
ip_info = await client.query_ip("8.8.8.8")
print(ip_info)
if __name__ == "__main__":
import asyncio
asyncio.run(main())
IPInfo(ip='8.8.8.8', isp=ISPInfo(asn='AS15169', org='Google LLC', isp='Google LLC'),
location=LocationInfo(country='United States', country_code='US', city='Mountain View',
state='California', zipcode='94035', latitude=37.386, longitude=-122.0838, timezone='America/Los_Angeles', localtime='2024-11-09T12:45:32'),
risk=RiskInfo(is_mobile=False, is_vpn=False, is_tor=False, is_proxy=False, is_datacenter=True, risk_score=0))
Retrieve your machine's public IP address:
ip = client.query_own_ip()
print(f"Your IP: {ip}")
Your IP: 203.0.113.45
Fetch details for multiple IP addresses in a single request:
ips = ["8.8.8.8", "1.1.1.1"]
results = client.query_bulk(ips)
for ip_info in results:
print(ip_info)
IPInfo(ip='8.8.8.8', ...)
IPInfo(ip='1.1.1.1', ...)
If you want to run tests to verify functionality:
pytest tests/
- Python 3.7
- Pydantic 2.x
- httpx
This project is licensed under the MIT License. See the LICENSE file for more information.