A spreadsheet with addresses is almost a spatial dataset, it may contain offices, customers, survey locations, infrastructure objects, schools, shops, or any other places. But without coordinates, you still cannot put those records on a map.
Geocoding closes this gap by converting human-readable addresses and place names into geographic coordinates.
NextGIS Toolbox provides two tools for common geocoding workflows:
The first turns an existing table into a dataset ready for mapping. The second is particularly useful when you need to locate a place or define a geographic area for another processing task.
Consider a typical dataset maintained outside GIS:
| name | type | address |
| The Bright Lights | office | Bulevar oslobođenja 30, Novi Sad, Serbia |
| The Garden | warehouse | Svetosavska 6, Nis, Serbia |
| X109 Group | office | Trg republike 5, Beograd, Serbia |
This is useful business data, but GIS software does not know where these records belong geographically. The Geocode a table tool takes a CSV file like this, sends the values from the selected address field to a geocoder, and returns another CSV containing the original attributes plus latitude and longitude.

The workflow requires four parameters.
Upload a CSV file containing your data.
The first row must contain field names, and the file should use UTF-8 encoding.
Select the geocoding provider.
OpenStreetMap Nominatim is available without an API key. Other available geocoders require the corresponding service credentials and are subject to their providers’ licensing and usage conditions.
Select the CSV column containing the address to geocode. For example, address
Ideally, the values should contain enough information to identify a location unambiguously: Marienplatz 1, München, Germany will generally be more useful to a geocoder than Marienplatz 1
For Nominatim, leave this field empty.
When using another supported geocoder, provide an API key for that service.
Run the tool, and the resulting CSV contains all the source data plus two additional columns with geographic coordinates. Also, a GeoPackage is automatically created in addition to the CSV file.

The result can then be opened in QGIS, imported into a database, processed with Python, or used in another GIS workflow.

Address lists appear in almost every industry:
The whole table can be processed in one run!
Sometimes you do not have a table at all, you just know the place you are interested in. For this case, NextGIS Toolbox provides Geocode with Nominatim.
The tool sends the query to the OpenStreetMap Nominatim API and returns the matched location together with its geographic coordinates and bounding box.

There are two inputs.
Enter a human-readable place name or address. For example: Buxoro shahri
Optionally expand the returned bounding box by a specified distance in kilometers. This is useful when a point address should become a practical working area. For example, geocoding an address with a 5 km buffer gives you a geographic extent covering the surroundings of that address.
The Nominatim tool returns several outputs:

The bounding box output is especially useful! This is the same representation commonly used by other geoprocessing and data-download tools. That means geocoding can become the first step of a larger Toolbox workflow.
| Geocode a table | Geocode with Nominatim | |
| Input | CSV with many addresses | One address or place name |
| Main purpose | Add coordinates to records | Resolve a location and its extent |
| Output | CSV with latitude and longitude; GeoPackage | Coordinates, bounding box, JSON metadata |
| Geocoder | Nominatim, Yandex or Google | OpenStreetMap Nominatim |
| API key | Not required | Nominatim Not required |
| Best for | Converting addresses into GIS-ready datasets | Finding an area for another spatial operation |
Use Geocode a table when the addresses are themselves your dataset.
Use Geocode with Nominatim when an address or place name describes where another operation should happen.
Like other NextGIS Toolbox tools, both geocoding operations are also available programmatically.
Every tool page includes a ready-to-use example for the NextGIS Toolbox SDK.

Install it with pip install toolbox-sdk
For example, Geocode with Nominatim can be invoked through the SDK using the tool identifier:
from toolbox_sdk import ToolboxClient
# Initialize the Toolbox client
toolbox = ToolboxClient("YOUR_TOOLBOX_API_KEY")
# Select the tool
nominatim_geocode = toolbox.tool("nominatim_geocode")
# Geocode a place and expand its bounding box by 5 km
result = nominatim_geocode( {
"query": "Novi Sad, Serbia",
"buffer_km": 5,
})
# Inspect all returned outputs
print(result.outputs)
and Geocode a table through:
from toolbox_sdk import ToolboxClient
# Initialize the Toolbox client
toolbox = ToolboxClient("YOUR_TOOLBOX_API_KEY")
# Select the tool
geocodetable = toolbox.tool("geocodetable")
# Run it synchronously
result = geocodetable( {
"table": toolbox.upload_file("offices.csv"),
"geocoder_vendor": "nominatim",
"addr_field": "address",
"api_key": "",
})
# Download the resulting CSV into the current directory
toolbox.download_results(result, ".")
This makes geocoding easy to include in scripts and larger processing pipelines.
For example, an automated workflow could Export addresses from a database -> Geocode the CSV -> Create spatial features -> Run spatial analysis -> Publish the result
Or another application might start only with a user-supplied place: user enters “Novi Sad, Serbia” -> Geocode with Nominatim -> Get bounding box -> Request data for this area -> Run analysis
These tools are useful both as browser-based utilities and as building blocks for reproducible geospatial processing.
Both tools are free. All you need to do is create an account at my.nextgis.com.