Official Swift client for ipdata.info — a free, fast IP geolocation, ASN, and threat-intelligence API. Look up country, city, ASN, timezone, currency, and security flags (proxy/VPN/Tor/hosting) for any IPv4 or IPv6 address. Powered by ipdata.info.
The public endpoint is free — 50 requests/min, no signup, no key. For higher rate limits and batch lookups, create a free API key at ipdata.info/register and manage it in your dashboard.
Add the package to your Package.swift:
.package(url: "https://github.com/IPDataInfo/ipdata-swift", from: "0.1.0")Or in Xcode: File → Add Package Dependencies… and enter
https://github.com/IPDataInfo/ipdata-swift.
import IPData
let client = IPDataClient() // free tier; or IPDataClient(apiKey: "KEY")
let info = try await client.lookup("8.8.8.8")
print(info.city ?? "", info.country ?? "", info.asnOrg ?? "")
// Mountain View United States Google LLC| Method | What it returns |
|---|---|
lookup(ip?) |
Full geolocation record (own IP if omitted) |
geo(ip) |
Geo subset (city/region/country/lat/lon/tz) |
asn(ip) |
ASN + ISP/registry for an IP |
batch(ips) |
Many IPs at once (requires an API key) |
asnDetail(n) |
ASN detail incl. prefixes |
asnWhoisHistory(n) |
ASN whois history |
asnChanges() |
ASN change feed |
threatDomain/threatHash/threatURL(x) |
Threat-intel lookup (domain / file hash / URL) |
Full response schema: ipdata.info API docs · SDK contract.
let client = IPDataClient(
apiKey: "KEY", // sent as X-Api-Key; switches to pro.ipdata.info
baseURL: URL(string: "https://ipdata.info"),
timeout: 10,
session: customURLSession // optional, e.g. for testing
)Errors from non-2xx responses are thrown as IPDataError with status and
message.
- Free (
ipdata.info): 50 req/min, no key. - Paid (
pro.ipdata.info): higher limits +batch, with an API key.
12 official SDKs — see the full list at ipdata.info/docs/sdks: Python, Node.js, Go, PHP, Java, Rust, .NET, Kotlin, Swift, Dart, Bash, Objective-C.
MIT © ipdata.info