Reverse Geocoding USA
Convert Geographic Coordinates to Addresses
Last updated: March 7, 2026
Usage
0 / day
Remaining
500 / day
Average
0 MS
IP Address
216.73.216.61
Integrate in Minutes
Two steps: get your token, then make the GET request. Pick your language and start building.
# Step 1: Get your auth token TOKEN=$(curl -s "https://api.sthan.io/Auth/Token" \ -H "profileName: YOUR_PROFILE_NAME" \ -H "profilePassword: YOUR_PROFILE_PASSWORD" | jq -r '.access_token') # Step 2: Make the API call curl "https://api.sthan.io/Geocoding/USA/Reverse/38.8977/-77.0365" \ -H "Authorization: Bearer $TOKEN"
// Step 1: Get your auth token const auth = await fetch("https://api.sthan.io/Auth/Token", { headers: { "profileName": "YOUR_PROFILE_NAME", "profilePassword": "YOUR_PROFILE_PASSWORD" } }); const { access_token } = await auth.json(); // Step 2: Make the API call const response = await fetch("https://api.sthan.io/Geocoding/USA/Reverse/38.8977/-77.0365", { headers: { "Authorization": `Bearer ${access_token}` } }); const data = await response.json(); console.log(data);
import requests # Step 1: Get your auth token auth = requests.get( "https://api.sthan.io/Auth/Token", headers={ "profileName": "YOUR_PROFILE_NAME", "profilePassword": "YOUR_PROFILE_PASSWORD" } ) token = auth.json()["access_token"] # Step 2: Make the API call response = requests.get( "https://api.sthan.io/Geocoding/USA/Reverse/38.8977/-77.0365", headers={"Authorization": f"Bearer {token}"} ) data = response.json() print(data)
using var client = new HttpClient(); // Step 1: Get your auth token client.DefaultRequestHeaders.Add("profileName", "YOUR_PROFILE_NAME"); client.DefaultRequestHeaders.Add("profilePassword", "YOUR_PROFILE_PASSWORD"); var authJson = await client.GetStringAsync("https://api.sthan.io/Auth/Token"); var auth = JsonSerializer.Deserialize<JsonElement>(authJson); var token = auth.GetProperty("access_token").GetString(); // Step 2: Make the API call client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); var response = await client.GetStringAsync( "https://api.sthan.io/Geocoding/USA/Reverse/38.8977/-77.0365"); Console.WriteLine(response);
import java.net.*; import java.net.http.*; // Step 1: Get your auth token HttpClient client = HttpClient.newHttpClient(); HttpRequest authReq = HttpRequest.newBuilder() .uri(URI.create("https://api.sthan.io/Auth/Token")) .header("profileName", "YOUR_PROFILE_NAME") .header("profilePassword", "YOUR_PROFILE_PASSWORD") .build(); HttpResponse<String> authResp = client.send(authReq, HttpResponse.BodyHandlers.ofString()); // Parse access_token from authResp.body() // Step 2: Make the API call HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.sthan.io/Geocoding/USA/Reverse/38.8977/-77.0365")) .header("Authorization", "Bearer " + token) .build(); HttpResponse<String> resp = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(resp.body());
// Step 1: Get your auth token $ch = curl_init("https://api.sthan.io/Auth/Token"); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "profileName: YOUR_PROFILE_NAME", "profilePassword: YOUR_PROFILE_PASSWORD" ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = json_decode(curl_exec($ch), true); $token = $data["access_token"]; // Step 2: Make the API call $ch = curl_init("https://api.sthan.io/Geocoding/USA/Reverse/38.8977/-77.0365"); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $token ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); echo $response;
require 'net/http' require 'json' # Step 1: Get your auth token uri = URI("https://api.sthan.io/Auth/Token") req = Net::HTTP::Get.new(uri) req["profileName"] = "YOUR_PROFILE_NAME" req["profilePassword"] = "YOUR_PROFILE_PASSWORD" resp = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) } token = JSON.parse(resp.body)["access_token"] # Step 2: Make the API call uri = URI("https://api.sthan.io/Geocoding/USA/Reverse/38.8977/-77.0365") req = Net::HTTP::Get.new(uri) req["Authorization"] = "Bearer #{token}" resp = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) } puts JSON.parse(resp.body)
import ("net/http"; "io"; "fmt") // Step 1: Get your auth token authReq, _ := http.NewRequest("GET", "https://api.sthan.io/Auth/Token", nil) authReq.Header.Set("profileName", "YOUR_PROFILE_NAME") authReq.Header.Set("profilePassword", "YOUR_PROFILE_PASSWORD") authResp, _ := http.DefaultClient.Do(authReq) defer authResp.Body.Close() // Parse access_token from response JSON // Step 2: Make the API call req, _ := http.NewRequest("GET", "https://api.sthan.io/Geocoding/USA/Reverse/38.8977/-77.0365", nil) req.Header.Set("Authorization", "Bearer " + token) resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body))
Example Response
{
"latitude": 38.8977,
"longitude": -77.0365,
"address": "1600 Pennsylvania Ave NW, Washington, DC 20500",
"city": "Washington",
"state": "DC",
"zipCode": "20500"
}
Instant Coordinate-to-Address Conversion
Find the nearest address to any GPS coordinates in milliseconds using our proximity search technology.
Advanced Proximity Search
Find the nearest address to any coordinate using our optimized spatial search:
5km search radius for USA addresses
Distance calculation included in response
20-50ms response time average
Spatial indexes on latitude/longitude for speed
Full Address Components
Get complete address details, not just a string:
Street number and name
City, State, ZIP code
ZIP+4 extended postal code
Structured components for easy parsing
High Availability
Our intelligent fallback system ensures continuous service:
Primary: Local database proximity search (~20ms)
Secondary: US Census Reverse Geocoding API
Tertiary: Commercial fallback APIs
Final: OpenStreetMap Nominatim
Perfect for GPS Applications
Ideal for mobile apps and IoT devices:
Real-time location tracking - Convert GPS coordinates to addresses on-the-fly
Fleet management - Show driver locations as addresses
Delivery tracking - Display package location addresses
Location tagging - Convert device coordinates to nearest street addresses
Intelligent Caching
Reduce costs and improve speed with our caching layer:
1-hour cache for frequently requested coordinates
5ms response time for cached results
Reduced API costs by minimizing external calls
Same Affordable Pricing
Same great pricing as our Geocoding USA product:
Free Tier: 100 requests/month - Perfect for testing
Basic: From $5/month - 10,000 requests
Starter: From $18/month - 50,000 requests
Frequently Asked Questions
Reverse geocoding is the process of converting geographic coordinates (latitude and longitude) into a human-readable street address. This is the opposite of geocoding, and is commonly used to display addresses for GPS locations, map pins, and device coordinates.
Accuracy depends on how close the coordinates are to a known address point. Our API uses a large local database to find the nearest matching address. For coordinates near residential or commercial buildings, you'll typically get a precise street address. For remote locations, the result may be an approximate or nearest-road address.
The API accepts decimal degree coordinates (e.g., latitude: 40.7128, longitude: -74.0060). Coordinates must be within the 50 US states, including Alaska and Hawaii. Latitude values range from 18 to 72, and longitude values range from -180 to -66.
We offer a free tier for Reverse Geocoding, perfect for testing and small projects. No credit card required. Paid plans are available for higher volumes. See our pricing page for current plans and rates. Annual subscriptions provide additional savings.
If no address can be determined for the given coordinates, the API will return an appropriate error response. This can happen if the coordinates fall in the ocean, unpopulated wilderness, or outside the United States coverage area.
Yes, reverse geocoding is ideal for converting GPS and mobile device coordinates into addresses. Common use cases include ride-sharing apps, delivery services, fleet tracking, and any application that captures device location and needs to display a human-readable address.
Ready to Get Started?
Sign up for early access and be the first to use our Reverse Geocoding USA API
No credit card required • 100 free requests/day