Official TruAddress SDK - Address validation, autocomplete, and geocoding
Project description
TruAddress Python SDK
Official Python SDK for TruAddress - Address validation, autocomplete, and geocoding API.
Installation
pip install truaddress
Quick Start
from truaddress import TruAddress
client = TruAddress(api_key="YOUR_API_KEY")
# Validate a US address
results = client.us_street(
street="1600 Pennsylvania Ave NW",
city="Washington",
state="DC",
zipcode="20500"
)
if results and TruAddress.is_deliverable(results[0]):
print("Valid address:", results[0]["delivery_line_1"])
Available Methods
US Endpoints
us_street() - US Street Address Validation
results = client.us_street(
street="350 5th Avenue",
city="New York",
state="NY",
zipcode="10118"
)
print(results[0]["analysis"]["dpv_match_code"]) # 'Y' = Deliverable
print(results[0]["metadata"]["latitude"]) # 40.748535
DPV Match Codes:
Y- Confirmed deliverableS- Secondary (apt/suite) missingD- Secondary invalidN- Not deliverable
us_zipcode() - ZIP Code Lookup
# By ZIP code
result = client.us_zipcode(zipcode="90210")
print(result[0]["city_states"][0]["city"]) # 'Beverly Hills'
# By city/state
result = client.us_zipcode(city="Austin", state="TX")
us_autocomplete() - Address Autocomplete
result = client.us_autocomplete(
search="350 5th Ave",
max_results=5,
state_filter=["NY"]
)
for s in result["suggestions"]:
print(f"{s['street_line']}, {s['city']}, {s['state']} {s['zipcode']}")
us_extract() - Extract Addresses from Text
result = client.us_extract("Ship to: 350 5th Avenue, New York, NY 10118. Thanks!")
print(result["meta"]["address_count"]) # 1
print(result["addresses"][0]["verified"]) # True
us_reverse_geo() - Reverse Geocoding
result = client.us_reverse_geo(
latitude=40.748535,
longitude=-73.9856571
)
for r in result["results"]:
print(f"{r['address']['street']} ({r['distance']:.0f}m away)")
International Endpoints
intl_street() - International Address Validation
results = client.intl_street(
country="GBR",
freeform="10 Downing Street, London"
)
print(results[0]["components"]["postal_code"]) # 'SW1A 2AB'
print(TruAddress.is_verified(results[0])) # True
intl_autocomplete() - International Autocomplete
result = client.intl_autocomplete(
search="Champs Elysees",
country="FRA",
max_results=5
)
Core Endpoints
validate() - Global Address Validation
results = client.validate(
country="US",
address1="350 5th Avenue",
locality="New York",
administrative_area="NY",
postal_code="10118"
)
correct() - Address Correction
results = client.correct(freeform="1600 pennsylvania ave washington dc 20500")
print(results[0]["address1"]) # Corrected address
autocomplete() - Global Autocomplete
result = client.autocomplete(q="Buckingham Palace London", limit=5)
Helper Methods
# Check if US address is deliverable
TruAddress.is_deliverable(result) # DPV code = 'Y'
# Check if US address is a mail drop (CMRA)
TruAddress.is_cmra(result)
# Check if US address is vacant
TruAddress.is_vacant(result)
# Check if international address is verified
TruAddress.is_verified(result)
# Format addresses as strings
TruAddress.format_us_address(result) # "350 5th Ave, New York NY 10118"
TruAddress.format_intl_address(result) # "10 Downing Street, London, SW1A 2AB"
Error Handling
from truaddress import TruAddress, TruAddressError
try:
results = client.us_street(street="123 Main St")
except TruAddressError as e:
print(f"Error: {e.message}")
print(f"Status code: {e.status_code}")
Configuration
client = TruAddress(
api_key="YOUR_API_KEY",
base_url="https://truaddress.net" # Optional: custom base URL
)
Django Integration
# settings.py
TRUADDRESS_API_KEY = os.environ.get("TRUADDRESS_API_KEY")
# views.py
from django.conf import settings
from truaddress import TruAddress
client = TruAddress(api_key=settings.TRUADDRESS_API_KEY)
def validate_address(request):
results = client.us_street(
street=request.POST["street"],
city=request.POST["city"],
state=request.POST["state"],
zipcode=request.POST["zipcode"]
)
return JsonResponse({"valid": len(results) > 0 and TruAddress.is_deliverable(results[0])})
Flask Integration
from flask import Flask, request, jsonify
from truaddress import TruAddress
app = Flask(__name__)
client = TruAddress(api_key=os.environ["TRUADDRESS_API_KEY"])
@app.route("/validate", methods=["POST"])
def validate():
data = request.json
results = client.us_street(**data)
return jsonify({"valid": len(results) > 0})
Requirements
- Python 3.8+
- requests >= 2.25.0
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
truaddress-1.0.0.tar.gz
(8.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file truaddress-1.0.0.tar.gz.
File metadata
- Download URL: truaddress-1.0.0.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0027e3db3aa3f43386884b6de5661ce88817489669cd95d8957d9a69483a3d37
|
|
| MD5 |
214c984a32ca88c8804dce461737fe5c
|
|
| BLAKE2b-256 |
d1a7c55d3448e04fe78f342867fe7ab85936fde84101c4274ce41175e72fcba3
|
File details
Details for the file truaddress-1.0.0-py3-none-any.whl.
File metadata
- Download URL: truaddress-1.0.0-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b319eb239f24322df8fb88be5bd280e21f0a1fd1f5ac7dab38acbe30a77e0185
|
|
| MD5 |
89de7b5d951c01ac37ce9313b9efc8f0
|
|
| BLAKE2b-256 |
d026d5699696aff81e4a87c200d589347179feb81ec60eba79a73ddb2530e0c6
|