IpApiIo 1.0.0
dotnet add package IpApiIo --version 1.0.0
NuGet\Install-Package IpApiIo -Version 1.0.0
<PackageReference Include="IpApiIo" Version="1.0.0" />
<PackageVersion Include="IpApiIo" Version="1.0.0" />
<PackageReference Include="IpApiIo" />
paket add IpApiIo --version 1.0.0
#r "nuget: IpApiIo, 1.0.0"
#:package IpApiIo@1.0.0
#addin nuget:?package=IpApiIo&version=1.0.0
#tool nuget:?package=IpApiIo&version=1.0.0
IpApiIo — Official .NET client for ip-api.io
The official .NET client for the ip-api.io IP intelligence platform. One client covers IP geolocation, email validation and verification (syntax, MX, SMTP deliverability), fraud detection and risk scoring, VPN/proxy/Tor detection, disposable email detection, ASN lookup, WHOIS, reverse DNS, MX records and domain age.
Zero package dependencies — built on HttpClient and System.Text.Json, fully async.
Install
dotnet add package IpApiIo
Quickstart
using IpApiIo;
using var client = new IpApiClient(apiKey: "YOUR_API_KEY"); // free key at https://ip-api.io
// Where is this IP, and is it risky?
var info = await client.LookupAsync("8.8.8.8");
Console.WriteLine(info.Location.Country); // "United States"
Console.WriteLine(info.SuspiciousFactorsInfo.IsVpn); // False
var risk = await client.RiskScoreAsync("8.8.8.8");
Console.WriteLine($"{risk.Score} {risk.RiskLevel}"); // 0 low
var email = await client.ValidateEmailAsync("user@example.com");
Console.WriteLine(email.Reachable); // "yes"
An API key is required — the API rejects keyless requests with 401. Sign up at
ip-api.io for a free key.
Documentation
Each guide documents the methods for one capability, with runnable examples and a link to the matching ip-api.io product page:
- IP geolocation & bulk lookup —
LookupAsync,LookupBatchAsync - Email validation & verification —
EmailInfoAsync,ValidateEmailAsync,ValidateEmailBatchAsync - Fraud detection & risk scoring —
RiskScoreAsync,EmailRiskScoreAsync,IpReputationAsync - VPN, proxy & Tor detection —
TorCheckAsync,SuspiciousFactorsInfo - ASN & DNS lookups —
AsnAsync,WhoisAsync,ReverseDnsAsync,ForwardDnsAsync,MxRecordsAsync - Domain age checker —
DomainAgeAsync,DomainAgeBatchAsync - Errors, rate limits & usage — exception types,
RateLimitAsync,UsageSummaryAsync
Methods
Every method maps to one ip-api.io endpoint and its product page:
| Method | Endpoint | Product page |
|---|---|---|
LookupAsync() / LookupAsync(ip) |
GET /api/v1/ip[/{ip}] |
IP geolocation |
LookupBatchAsync(ips) |
POST /api/v1/ip/batch (≤100 IPs) |
Bulk IP lookup |
EmailInfoAsync(email) |
GET /api/v1/email/{email} |
Email validation |
ValidateEmailAsync(email) |
GET /api/v1/email/advanced/{email} |
Advanced email validation |
ValidateEmailBatchAsync(emails) |
POST /api/v1/email/advanced/batch (≤100) |
Email list cleaning |
RiskScoreAsync() / RiskScoreAsync(ip) |
GET /api/v1/risk-score[/{ip}] |
Risk score |
EmailRiskScoreAsync(email) |
GET /api/v1/risk-score/email/{email} |
Fraud detection |
IpReputationAsync(ip) |
GET /api/v1/ip-reputation/{ip} |
IP reputation |
TorCheckAsync(ip) |
GET /api/v1/tor/{ip} |
Tor detection |
AsnAsync(ip) |
GET /api/v1/asn/{ip} |
ASN lookup |
WhoisAsync(domain) |
GET /api/v1/dns/whois/{domain} |
WHOIS lookup |
ReverseDnsAsync(ip) |
GET /api/v1/dns/reverse/{ip} |
Reverse DNS |
ForwardDnsAsync(hostname) |
GET /api/v1/dns/forward/{hostname} |
— |
MxRecordsAsync(domain) |
GET /api/v1/dns/mx/{domain} |
MX record lookup |
DomainAgeAsync(domain) |
GET /api/v1/domain/age/{domain} |
Domain age checker |
DomainAgeBatchAsync(domains) |
POST /api/v1/domain/age/batch |
Domain age checker |
RateLimitAsync() |
GET /api/v1/ratelimit |
— |
UsageSummaryAsync() |
GET /api/v1/usage/summary |
— |
All responses are fully typed (IpInfo, RiskScore, AdvancedEmailValidation, …).
Every method accepts an optional CancellationToken.
Error handling
The client throws typed exceptions and never retries — RateLimitException.Reset
tells you when your quota renews:
try
{
await client.LookupAsync("8.8.8.8");
}
catch (RateLimitException e)
{
Console.WriteLine($"limit={e.Limit} remaining={e.Remaining} resetsAt={e.Reset}");
}
catch (AuthenticationException)
{
Console.WriteLine("invalid API key");
}
See docs/error-handling.md for the full exception taxonomy.
Links
- Website: https://ip-api.io
- API reference: https://ip-api.io/api-docs.html
- OpenAPI spec: https://ip-api.io/openapi.json
- Get a free API key: https://ip-api.io
IpApiIo is the official client for ip-api.io.
It is not affiliated with ip-api.com or ipapi.com.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 79 | 6/14/2026 |