Try France Address Verification live

Forward Geocoding - Address to Coordinates

About This Tool

Convert a single French address to geographic coordinates using the official French government API. Enter any valid French address to get latitude and longitude coordinates.

Geocoding Results

Reverse Geocoding - Coordinates to Address

About This Tool

Convert geographic coordinates (latitude, longitude) to a human-readable French address. Enter coordinates within French territory to get the nearest address.

Reverse Geocoding Results

Bulk Address Geocoding

About This Tool

Process multiple French addresses in bulk by uploading a CSV or Excel file. Perfect for large datasets that need geocoding.

Upload Address File

Drag and drop your CSV or Excel file here, or click to browse

CSV Excel (.xlsx) Excel (.xls)
Bulk Processing Format

Your file should contain at least one column with French addresses. Supported formats:

  • Single address column (e.g., "12 Rue Watteau, 75013 Paris")
  • Separated columns (address, city, postcode, country)
  • Maximum 10,000 addresses per batch

Bulk Geocoding Results

Original Address Latitude Longitude Formatted Address City Postcode Status

Bulk Reverse Geocoding

About This Tool

Convert multiple coordinates to addresses in bulk by uploading a CSV or Excel file with latitude and longitude columns.

Upload Coordinates File

Drag and drop your CSV or Excel file here, or click to browse

CSV Excel (.xlsx) Excel (.xls)
Coordinates Format

Your file should contain latitude and longitude columns. Ensure coordinates are within French territories for optimal results.

  • Latitude: Decimal degrees (e.g., 48.828)
  • Longitude: Decimal degrees (e.g., 2.356)
  • France bounding box: 41.3° to 51.1° N, -5.1° to 9.6° E

Bulk Reverse Geocoding Results

Latitude Longitude Formatted Address Street City Postcode Country Status

API Documentation

About the API

Integrate geocoding services directly into your applications using the official French government API (api-adresse.data.gouv.fr). RESTful endpoints with JSON responses.

Quick Start

Base URL
https://api.atlasgeotech
Response Format
JSON
Content-Type: application/json

Authentication

The API is open and free to use without authentication for basic usage. For high-volume requests, consider using our proxy service.

Rate Limits
  • 10 requests per second per IP
  • 1000 requests per hour per IP
  • Bulk requests: Contact for limits
Headers
User-Agent: YourApp/1.0
Accept: application/json
Accept-Language: fr

API Endpoints

GET Forward Geocoding

FREE

Convert addresses to geographic coordinates

/search/?q={query}&limit={limit}&lat={lat}&lon={lon}&type={type}
Parameters
Parameter Type Description
q string Address query (required)
limit integer Max results (default: 5, max: 20)
autocomplete 0/1 Enable autocomplete
Example Request
GET https://api.atlasgeotech/search/?q=12+Rue+Watteau+75013+Paris&limit=5&autocomplete=1
Example Response
{
  "type": "FeatureCollection",
  "version": "draft",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [2.356, 48.828]
      },
      "properties": {
        "label": "12 Rue Watteau 75013 Paris",
        "score": 0.95,
        "housenumber": "12",
        "street": "Rue Watteau",
        "postcode": "75013",
        "city": "Paris"
      }
    }
  ]
}

GET Reverse Geocoding

FREE

Convert coordinates to addresses

/reverse?lat={latitude}&lon={longitude}&type={type}
Parameters
Parameter Type Description
lat float Latitude (required)
lon float Longitude (required)
type string housenumber/street/city
Example Request
GET https://api.atlasgeotech/reverse?lat=48.828&lon=2.356&type=housenumber
Example Response
{
  "type": "FeatureCollection",
  "version": "draft",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [2.356, 48.828]
      },
      "properties": {
        "label": "12 Rue Watteau 75013 Paris",
        "distance": 15,
        "housenumber": "12",
        "street": "Rue Watteau",
        "postcode": "75013",
        "city": "Paris"
      }
    }
  ]
}

POST Batch Geocoding

PREMIUM

Process multiple addresses in bulk

/search/csv/
Request Format
# CSV Format
address;postcode;city
12 Rue Watteau;75013;Paris
8 Boulevard du Palais;75001;Paris
1 Parvis Notre-Dame;75004;Paris
Example Request
POST https://api.atlasgeotech/search/csv/
Content-Type: multipart/form-data

// Form data with CSV file
data=@addresses.csv
columns=address
citycode=postcode
Example Response
{
  "type": "FeatureCollection",
  "features": [
    {
      "properties": {
        "result_label": "12 Rue Watteau 75013 Paris",
        "result_score": 0.95,
        "latitude": 48.828,
        "longitude": 2.356
      }
    }
  ]
}

GET Address Completion

FREE

Autocomplete address suggestions

/search/?q={partial_query}&autocomplete=1
Use Cases
  • Address search boxes
  • Form autocomplete
  • Real-time suggestions
Example Request
GET https://api.atlasgeotech/search/?q=12+Rue+Watteau+Par&autocomplete=1
Example Response
{
  "type": "FeatureCollection",
  "features": [
    {
      "properties": {
        "label": "12 Rue Watteau 75013 Paris",
        "context": "75, Paris, Île-de-France"
      }
    }
  ]
}

HTTP Response Codes

Code Description When
200 OK Successful request
400 Bad Request Invalid parameters
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error

Code Examples

Forward Geocoding with cURL
curl -X GET \
"https://api.atlasgeotech/search/?q=12+Rue+Watteau+75013+Paris&limit=5" \
-H "Accept: application/json" \
-H "User-Agent: YourApp/1.0"
Reverse Geocoding with cURL
curl -X GET \
"https://api.atlasgeotech/reverse?lat=48.828&lon=2.356" \
-H "Accept: application/json"
Forward Geocoding with Python
import requests

def geocode_address(address):
  url = "https://api.atlasgeotech/search/"
  params = {
    "q": address,
    "limit": 5,
    "autocomplete": 1
  }
  headers = {
    "User-Agent": "YourApp/1.0",
    "Accept": "application/json"
  }
  response = requests.get(url, params=params, headers=headers)
  return response.json()
Forward Geocoding with JavaScript
async function geocodeAddress(address) {
  const url = new URL('https://api.atlasgeotech/search/');
  url.searchParams.append('q', address);
  url.searchParams.append('limit', '5');
  url.searchParams.append('autocomplete', '1');

  const response = await fetch(url, {
    headers: {
      'Accept': 'application/json',
      'User-Agent': 'YourApp/1.0'
    }
  });
  return await response.json();
}
Forward Geocoding with PHP
function geocodeAddress($address) {
  $url = "https://api.atlasgeotech/search/";
  $params = [
    'q' => $address,
    'limit' => 5,
    'autocomplete' => 1
  ];
  $query = http_build_query($params);
  $context = stream_context_create([
    'http' => [
      'header' => "Accept: application/json\r\n" .
               "User-Agent: YourApp/1.0\r\n"
    ]
  ]);
  $response = file_get_contents($url . '?' . $query, false, $context);
  return json_decode($response, true);
}

Best Practices

Performance
  • Use appropriate limit parameter
  • Cache results when possible
  • Implement exponential backoff for retries
  • Use bulk endpoints for large datasets
Reliability
  • Implement error handling
  • Monitor rate limits
  • Use retry logic for transient failures
  • Validate responses before processing