USA Address Autocomplete

USPS-powered address suggestions with sub-100ms response times and 100,000 free requests per month.

Last updated: March 7, 2026

Usage
0 / day
Remaining
500 / day
Average
0 MS
IP Address
216.73.216.161

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
ADDRESS="123 main st"
ENCODED=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$ADDRESS'))")

curl "https://api.sthan.io/AutoComplete/USA/Address/$ENCODED" \
  -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 address = "123 main st";
const encoded = encodeURIComponent(address);

const response = await fetch(
  `https://api.sthan.io/AutoComplete/USA/Address/${encoded}`, {
  headers: { "Authorization": `Bearer ${access_token}` }
});
const data = await response.json();
console.log(data);
import requests
from urllib.parse import quote

# 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
address = "123 main st"
encoded = quote(address)

response = requests.get(
    f"https://api.sthan.io/AutoComplete/USA/Address/{encoded}",
    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 address = "123 main st";
var encoded = Uri.EscapeDataString(address);

var response = await client.GetStringAsync(
    $"https://api.sthan.io/AutoComplete/USA/Address/{encoded}");
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
String address = "123 main st";
String encoded = URLEncoder.encode(address, "UTF-8");

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.sthan.io/AutoComplete/USA/Address/" + encoded))
    .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
$address = "123 main st";
$encoded = urlencode($address);

$ch = curl_init("https://api.sthan.io/AutoComplete/USA/Address/" . $encoded);
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'
require 'uri'

# 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
address = "123 main st"
encoded = URI.encode_www_form_component(address)

uri = URI("https://api.sthan.io/AutoComplete/USA/Address/#{encoded}")
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"; "net/url"; "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
address := "123 main st"
encoded := url.QueryEscape(address)

req, _ := http.NewRequest("GET",
    "https://api.sthan.io/AutoComplete/USA/Address/" + encoded, 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
[
  "123 Main St APT 1, Andover, MA 01810-3816",
  "123 Main St APT 1, Delhi, NY 13753-1257",
  "123 Main St STE 1, Caldwell, ID 83605-5476",
  "123 Main St STE 1, Corinth, NY 12822-1010",
  "123 Main St STE 1, Delhi, NY 13753-1258"
]

Effortless, Accurate & Instant Address Autocomplete

Speed up address entry with real-time suggestions powered by reliable USPS data.

Start for Free – No Credit Card Required

Enjoy 100,000 free address lookups per month at no cost! Perfect for startups, testing, development, and production applications.

Intelligent Address Autocomplete

Our advanced AI-powered autocomplete ensures quick and accurate address entry while reducing typos and errors.

Predictive suggestions as you type for faster input.
Recognizes abbreviations(e.g., "St" vs. "Street", "Ave" vs. "Avenue").
Handles unit types("Apt", "Suite", "#") with ease.
Reduces user friction and improves checkout experiences.

Powered by Trusted USPS Data

Our database is continuously updated to provide real-time, accurate address suggestions based on official USPS data.

Affordable & Flexible Pricing

Premium address autocomplete at unbeatable rates:

100,000 free requests/month—no credit card required.
Paid plans starting at just $7/month.
Save up to 60% with annual subscriptions.
No hidden fees—pay only for what you use.

Full Control & Hassle-Free Subscription

We do not store your payment details, and you can cancel your subscription anytime—no commitments, no hidden charges.

Frequently Asked Questions

Address Autocomplete is a feature that suggests complete addresses as users type, helping them quickly select the correct address from a dropdown list. It reduces form completion time and input errors by suggesting verified addresses in real-time. Our Address Autocomplete USA API is aligned with USPS postal standards and includes a generous free tier to get started.
Sthan.io includes a free tier for Address Autocomplete with 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.
Yes, our Address Autocomplete suggestions are aligned with USPS postal standards and updated regularly to reflect postal changes. This helps ensure you get accurate, properly formatted addresses for the United States.
Our Address Autocomplete API delivers sub-300ms response times, providing instant suggestions as users type. We use optimized infrastructure to ensure fast, reliable autocomplete for your applications.
Yes, our Address Autocomplete intelligently handles unit types (Apt, Suite, #), street abbreviations (St, Ave, Blvd), and directional prefixes (N, S, E, W). It normalizes input variations to return properly formatted addresses.
Sthan.io offers reliable Address Autocomplete at affordable prices. With a generous free tier, affordable paid plans, and data aligned with USPS postal standards — specifically optimized for US addresses — you get accurate results without breaking the budget. See our pricing page for details.

Ready to Get Started?

Start with 100,000 free requests every month. No credit card required.