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.

Free

$0

per month

  • ✅ 1,000 requests/month
  • ✅ Community support
  • 🚫 No SLA
Get Started
Developer

$9

per month

  • ✅ 10,000 requests included
  • ✅ $1.50 / 1,000 extra
  • ✅ Email support
Choose Plan
Most Popular
Business

$49

per month

  • ✅ 50,000 requests included
  • ✅ $1.25 / 1,000 extra
  • ✅ Priority email support
Choose Plan
Enterprise

$249+

per month

  • ✅ 250,000 requests included
  • ✅ $1.00 / 1,000 extra
  • ✅ SLA & dedicated support
Contact Sales
*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; }
        }