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