IpApiIo 1.0.0

dotnet add package IpApiIo --version 1.0.0
                    
NuGet\Install-Package IpApiIo -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="IpApiIo" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="IpApiIo" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="IpApiIo" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add IpApiIo --version 1.0.0
                    
#r "nuget: IpApiIo, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package IpApiIo@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=IpApiIo&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=IpApiIo&version=1.0.0
                    
Install as a Cake Tool

IpApiIo — Official .NET client for ip-api.io

NuGet test License: MIT

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:

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 retriesRateLimitException.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.


IpApiIo is the official client for ip-api.io. It is not affiliated with ip-api.com or ipapi.com.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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