Products
Thoughtful tools crafted for reliability and scale.
Geolocation API
Address verification with geocoding, and time–distance determination.
Endpoints
VerifyAddress
Verifies & formats addresses, returns confidence score, and provides geolocation (lat/lng).
TimeDistance
Computes travel time & distance between locations with travel modes and route options.
Key Features
- Cost-effective vs. other providers
- Pre-action data cleansing
- Pagination up to 1000 requests per call
- Result caching up to 30 days
- Built for high availability, scale, and concurrency
- No long-term contarct and pay as you go
- Volume discounts for enterprise customers
- Responsive customer support by phone and email
Simple, Transparent Pricing
Choose a plan that fits your needs. Scale as you grow.
Most Popular
Business
$49
per month
- ✅ 50,000 requests included
- ✅ $1.25 / 1,000 extra
- ✅ Priority email support
Enterprise
$249+
per month
- ✅ 250,000 requests included
- ✅ $1.00 / 1,000 extra
- ✅ SLA & dedicated support
*Overages are billed monthly at the listed per-1,000 rate.
Live Showcase
VerifyAddress (batch up to 5) |
JSON Outcome |
TimeDistance (batch up to 5) |
JSON Outcome |
Code examples for VerifyAddress API invocation
using System; using System.Collections.Generic; using System.Net.Http; using System.Text; using System.Text.Json; using System.Threading.Tasks; public class AddressVerifyRequest { public IEnumerable<string> Addresses { get; set; } = Array.Empty<string>(); } public static class VerifyAddressExample { private const string BASE_URL = "https://YOUR-API-BASE"; private const string API_KEY = "YOUR-API-KEY"; public static async Task Main() { var payload = new AddressVerifyRequest { Addresses = new[] { "1600 Amphitheatre Pkwy, Mountain View, CA", "1 Apple Park Way, Cupertino, CA", "350 Fifth Ave, New York, NY", "1 Microsoft Way, Redmond, WA", "1600 Pennsylvania Ave NW, Washington, DC" } }; // Keep property name exactly "Addresses" (PascalCase) var json = JsonSerializer.Serialize(payload, new JsonSerializerOptions { PropertyNamingPolicy = null }); using var http = new HttpClient { Timeout = TimeSpan.FromSeconds(30) }; using var req = new HttpRequestMessage(HttpMethod.Post, $"{BASE_URL.TrimEnd('/')}/verifyAddress") { Content = new StringContent(json, Encoding.UTF8, "application/json") }; req.Headers.Add("X-API-Key", API_KEY); using var resp = await http.SendAsync(req); var body = await resp.Content.ReadAsStringAsync(); Console.WriteLine($"HTTP {(int)resp.StatusCode} {resp.ReasonPhrase}"); Console.WriteLine(Pretty(body)); } private static string Pretty(string raw) { try { using var doc = JsonDocument.Parse(raw); return JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true }); } catch { return raw; } } }
Code examples for TimeDistance API invocation
using System; using System.Collections.Generic; using System.Net.Http; using System.Text; using System.Text.Json; using System.Threading.Tasks; public static class TimeDistanceSample { private const string BaseUrl = "https://YOUR-API-BASE"; private const string ApiKey = "YOUR-API-KEY"; public static async Task Main() { var requestModel = new TimeDistanceRequest { travelMode = "Car", avoid = "Tolls,Ferries", geoInputData = new List<GeoInput> { new GeoInput { origin = new GeoData { latitude = 37.7749, longitude = -122.4194 }, destination = new GeoData { latitude = 34.0522, longitude = -118.2437 } }, new GeoInput { origin = new GeoData { latitude = 40.7128, longitude = -74.0060 }, destination = new GeoData { latitude = 42.3601, longitude = -71.0589 } }, new GeoInput { origin = new GeoData { latitude = 47.6062, longitude = -122.3321 }, destination = new GeoData { latitude = 45.5152, longitude = -122.6784 } }, new GeoInput { origin = new GeoData { latitude = 41.8781, longitude = -87.6298 }, destination = new GeoData { latitude = 42.3314, longitude = -83.0458 } }, new GeoInput { origin = new GeoData { latitude = 32.7767, longitude = -96.7970 }, destination = new GeoData { latitude = 30.2672, longitude = -97.7431 } } } }; using var http = new HttpClient { Timeout = TimeSpan.FromSeconds(30) }; var url = $"{BaseUrl.TrimEnd('/')}/timeDistance"; var json = JsonSerializer.Serialize(requestModel, new JsonSerializerOptions { PropertyNamingPolicy = null }); using var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new StringContent(json, Encoding.UTF8, "application/json") }; req.Headers.Add("X-API-Key", ApiKey); using var resp = await http.SendAsync(req); var body = await resp.Content.ReadAsStringAsync(); Console.WriteLine($"HTTP {(int)resp.StatusCode} {resp.ReasonPhrase}"); Console.WriteLine(Pretty(body)); } private static string Pretty(string raw) { try { using var doc = JsonDocument.Parse(raw); return JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true }); } catch { return raw; } } } public class GeoData { public double latitude { get; set; } public double longitude { get; set; } } public class GeoInput { public GeoData origin { get; set; } public GeoData destination { get; set; } } public class TimeDistanceRequest { //Optional; Can be one of Car, Pedestrian, Scooter, Truck. Defaults to Car if not provided public string? travelMode { get; set; } //Optional; the features that calculated routes should avoid.A string, comma-separated, including one or more of Tolls, Ferries,Motorways,Carpools and Unpaved.No features are avoided if not provided public string? avoid { get; set; } public List<GeoInput> geoInputData { get; set; } }