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; }
}