Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
podcast
Filter by Categories
ArcGIS Pro
GDAL
GeoJson
Map
Map Tools
Maps
postgis
Python
QGIS
Uncategorized

Bulk Reverse Geocoding in ArcGIS Pro

GUI wizard, Python automation & ModelBuilder for high‑volume look‑ups

Quick link: This article is a companion to Batch Geocoding in ArcGIS Pro 3.4+. If you need the forward direction (addresses ➜ points) read that guide first.


1  Why reverse geocoding?

Turn raw latitude/longitude into postal addresses for reporting, compliance or customer analytics. Common scenarios include:

Use‑caseTypical InputRequired Output
Accident reporting for insurersGPS points from mobile appClosest street address & city
Retail foot‑traffic analysisBluetooth beaconsZip code for demographic join
Emergency servicesAVL vehicle tracksMile‑marker / address for dispatch

ArcGIS Pro 3.4+ ships with fast, credit‑efficient reverse geocoding in the World Geocoding Service, and you can automate it the same ways you automated forward geocoding.


2  Prerequisites

  1. ArcGIS Pro 3.4 or later.
  2. Access to ArcGIS World Geocoding Service (credits) or a local reverse locator (StreetMap Premium or your own).
  3. Coordinate table or point feature class with X, Y fields in WGS 84 (EPSG:4326) or projected CRS.

Tip — free credits: Your ArcGIS Developer account includes 2 000 reverse‑geocode requests each month.


3  Method 1 — GUI: Reverse Geocode tool

3.1  Prepare your input layer

  • If your coordinates are in a CSV, import with XY Table To Point (set the proper CRS).
  • Ensure fields are type Double for X & Y.

3.2  Run Reverse Geocode

  1. Analysis ▶ Tools ▶ Data Management ▶ Features ▶ Reverse Geocode.
  2. Input Features ➜ your point layer.
  3. Locator ➜ World Geocoding Service.
  4. Output Feature Classpoints_with_addr.
  5. Address Type: choose Point Address for most precise, or Street Name to save credits.
  6. Click Run.

The tool writes a new feature class with fields like Address, City, Region, Postal, Country, plus Distance (metres to nearest address).

3.3  Credit cost

1 point = 1 reverse geocode. Multiply your record count by 0.04 credits per match.


4  Method 2 — Python script (ArcPy)

import arcpy, pathlib

# — user parameters —
ws          = pathlib.Path(r"C:\GIS\ReverseDemo")
points_in   = ws / "gps_points.shp"           # input points
locator     = "ArcGIS World Geocoding Service"  # or local .loc file
out_fc      = ws / "gps_points_addr"
BATCH_SIZE  = 1000                             # requests per chunk

arcpy.env.workspace = ws
arcpy.SetLogHistory(False)

arcpy.geocoding.ReverseGeocode(
    in_features=str(points_in),
    address_locator=locator,
    out_feature_class=str(out_fc),
    address_type="POINT_ADDRESS",
    search_distance="100 Meters",
    location_type="ROUTING_LOCATION",
    batch_size=BATCH_SIZE)

print(arcpy.GetMessages())

Why batch‑size? For > 50 k records, chunking avoids token timeouts and lets you throttle credit use.

Scheduling: Same approach as in the batch‑geocoding article: Windows Task Scheduler or cron for nightly runs.


5  Method 3 — ModelBuilder (low‑code)

  1. Insert ▶ ModelBuilder.
  2. Drag XY Table To PointReverse GeocodeExport Features.
  3. Right‑click Input Table & Address TypeParameter so end‑users can pick files and precision.
  4. Save the model into a toolbox; share it as a custom tool.

(Add a colour‑coded model screenshot placeholder here.)


6  Choosing address precision vs credits

Address TypeExample OutputCredits/recordUse‑case
Point Address380 New York St, Redlands CA0.04Asset or parcel‑level accuracy
Street NameNew York St, Redlands CA0.04General routing, anonymised data
Postal923730.04Demographic roll‑ups

All address types cost the same credits, but less specific types run faster and reduce mismatch risk.


7  Handling unmatched or far‑distance points

  • Distance > 100 m? Check CRS errors or rural/missing addresses.
  • Null Address? Increase Search Distance to 500 m or fall back to Street Name.
  • Country mismatch? Filter your input points by country and feed to country‑specific locators.

8  Exporting & sharing results

  1. CSV — use Table To Table, include geom columns if needed.
  2. Feature layer to ArcGIS OnlineShare ▶ Web Layer.
  3. Join back to original tracking table by unique ID.

GDPR note: World Geocoding Service processes coordinates, not personal data. If you must create addresses fully on‑prem, use StreetMap Premium or a custom locator.


9  Related reading


FAQ

Q: How many credits does 10,000 coordinates cost?
A: Approximately 400 credits (10,000 × 0.04).

Q: Can I reverse-geocode offline?
A: Yes. You can use StreetMap Premium or build your own custom locator in a file geodatabase (FGDB).

Q: What coordinate system should my points use?
A: WGS 84 (EPSG 4326) is safest, but ArcGIS Pro can reproject on-the-fly from any CRS.


About the Author
I'm Daniel O'Donohue, the voice and creator behind The MapScaping Podcast ( A podcast for the geospatial community ). With a professional background as a geospatial specialist, I've spent years harnessing the power of spatial to unravel the complexities of our world, one layer at a time.