Skip to main content

CSV2GEO Python SDK

PyPI version Python versions License: MIT

Official Python SDK for the CSV2GEO Geocoding API - fast, accurate geocoding powered by 461M+ addresses worldwide.

Installation

pip install csv2geo

Quick Start

from csv2geo import Client

# Initialize with your API key
client = Client("your_api_key")

# Forward geocoding (address → coordinates)
result = client.geocode("1600 Pennsylvania Ave, Washington DC")
if result:
    print(f"Lat: {result.lat}, Lng: {result.lng}")
    print(f"Address: {result.formatted_address}")

# Reverse geocoding (coordinates → address)
result = client.reverse(38.8977, -77.0365)
if result:
    print(f"Address: {result.formatted_address}")

Features

  • Forward geocoding - Convert addresses to coordinates
  • Reverse geocoding - Convert coordinates to addresses
  • Batch processing - Geocode up to 10,000 addresses per request
  • Auto-retry - Automatic retry on rate limits
  • Type hints - Full type annotations for IDE support

API Reference

Initialize Client

from csv2geo import Client

client = Client(
    api_key="your_api_key",
    base_url="https://csv2geo.com/api/v1",  # optional
    timeout=30,  # optional, seconds
    auto_retry=True,  # optional, retry on rate limit
)

Forward Geocoding

# Simple - returns best match or None
result = client.geocode("1600 Pennsylvania Ave, Washington DC")

# With country filter
result = client.geocode("123 Main St", country="US")

# Full response with all matches
response = client.geocode_full("1600 Pennsylvania Ave")
for result in response.results:
    print(f"{result.formatted_address}: {result.accuracy_score}")

Reverse Geocoding

# Simple - returns best match or None
result = client.reverse(38.8977, -77.0365)

# Full response with all matches
response = client.reverse_full(38.8977, -77.0365)

Batch Geocoding

# Geocode multiple addresses (up to 10,000)
addresses = [
    "1600 Pennsylvania Ave, Washington DC",
    "350 Fifth Avenue, New York, NY",
    "1 Infinite Loop, Cupertino, CA",
]

results = client.geocode_batch(addresses)
for response in results:
    if response.best:
        print(f"{response.query}: {response.best.lat}, {response.best.lng}")
    else:
        print(f"{response.query}: Not found")

Batch Reverse Geocoding

# Reverse geocode multiple coordinates
coordinates = [
    (38.8977, -77.0365),
    (40.7484, -73.9857),
]

results = client.reverse_batch(coordinates)
for response in results:
    if response.best:
        print(response.best.formatted_address)

GeocodeResult Object

result = client.geocode("1600 Pennsylvania Ave, Washington DC")

# Coordinates
result.lat           # 38.8977
result.lng           # -77.0365
result.location      # Location(lat=38.8977, lng=-77.0365)

# Address
result.formatted_address  # "1600 PENNSYLVANIA AVE NW, WASHINGTON, DC 20500, US"
result.accuracy           # "rooftop"
result.accuracy_score     # 1.0

# Components
result.components.house_number  # "1600"
result.components.street        # "PENNSYLVANIA AVE NW"
result.components.city          # "WASHINGTON"
result.components.state         # "DC"
result.components.postcode      # "20500"
result.components.country       # "US"

Error Handling

from csv2geo import Client, AuthenticationError, RateLimitError, InvalidRequestError

client = Client("your_api_key")

try:
    result = client.geocode("123 Main St")
except AuthenticationError as e:
    print(f"Invalid API key: {e.message}")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after} seconds")
except InvalidRequestError as e:
    print(f"Invalid request: {e.message}")

Rate Limits

The client tracks rate limit headers automatically:

client.geocode("123 Main St")

print(client.rate_limit)            # Max requests per minute
print(client.rate_limit_remaining)  # Requests remaining
print(client.rate_limit_reset)      # Unix timestamp when limit resets

With auto_retry=True (default), the client automatically waits and retries when rate limited.

Context Manager

with Client("your_api_key") as client:
    result = client.geocode("123 Main St")
    print(result.lat, result.lng)
# Session automatically closed

Get Your API Key

Sign up at csv2geo.com to get your API key.

Documentation

Community & Support

License

MIT License - see LICENSE for details.

Metadata

Release files for csv2geo 1.16.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for csv2geo 1.16.0
File Size Uploaded
csv2geo-1.16.0.tar.gz 34.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for csv2geo 1.16.0
File Interpreter ABI Platform
csv2geo-1.16.0-py3-none-any.whl Python 3 none any Details

Total release size: 71.3 kB

Release files / csv2geo-1.16.0.tar.gz

Download URL csv2geo-1.16.0.tar.gz
Size 34.6 kB
Tags Source
SHA-256 checksum
How to use checksums
37fde5d9c33842bf68738e84dab438df1e5fe807e0ac5dfebf6d9454aec66a4d
BLAKE2b-256 checksum
How to use checksums
9f84c2fbbfafe3f46ab241e96c45bb29b32789e56b94e0b4391098b692ab103e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release files / csv2geo-1.16.0-py3-none-any.whl

Download URL csv2geo-1.16.0-py3-none-any.whl
Size 36.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1871bc4c4c0e6669e42ac2e875199a4e00967df6386fffdff94133b15109f8bf
BLAKE2b-256 checksum
How to use checksums
97498c17f20afdd11eebcecfd3c43682236bb44de86fced6269e9f02bded4a5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

1.16.0 This release

2 release files

1.15.0

2 release files

1.14.0

2 release files

1.13.1

2 release files

1.13.0

2 release files

1.12.0

2 release files

1.11.0

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page