Geocoding & Addresses

Address text is data too — and it is the messiest data in the file.

The geocoding path, from what an address is to validating the coordinates before you trust them. address text is the messiest data in the file1what an address isnot a string2parse & normalisebefore you send it3match qualityrooftop or centroid?4batch, cache, verifyat volumeStage three is the one that decides whether the output can be joined on at all

A geocoder always returns something. That is the problem: a coordinate comes back for a misspelled street, a demolished building and a town in the wrong country, and nothing in the response says which. These guides cover what a geocoder actually does, how to clean and parse addresses before you send them, how to read a match score and a precision level, how to batch thousands of lookups without being blocked, and how to check the results against a boundary you already trust before they become dots on a map.

Two thirds of this path is about the address rather than the coordinate, which is the right proportion. Parsing and normalising before you send anything is what lifts a match rate; reading the quality field afterwards is what tells you whether the coordinates you got back can be joined on at all.

The full path, in order

The concepts underneath the work, then each task, then the errors that task produces. Work down, or jump to the step you need.

  1. The Address Data Model: Why an Address Is Not a String address data model 🧭 Concept
  2. How to Parse and Normalise Addresses in Python parse addresses python ⚙️ How-To
  3. Choosing a Geocoder: Coverage, Licence and Cost Compared choosing a geocoder 🧭 Concept
  4. How to Geocode with Nominatim from Python Without Being Blocked nominatim python geocode ⚙️ How-To
  5. Match Quality Explained: Reading a Geocoder's Confidence Score geocoder match quality 🧭 Concept
  6. Rooftop, Interpolated or Centroid: Geocoding Precision Levels geocoding precision levels 🧭 Concept
  7. How to Batch Geocode Thousands of Addresses in Python batch geocode addresses python ⚙️ How-To
  8. How to Cache Geocoding Results So a Rerun Costs Nothing cache geocoding results ⚙️ How-To
  9. How to Validate Geocoding Results Before You Trust Them validate geocoding results ⚙️ How-To
  10. How to Reverse Geocode Points to Addresses and Areas in Python reverse geocode python ⚙️ How-To
  11. Address Matching Explained: Why Exact String Equality Fails address matching explained 🧭 Concept
  12. How to Match Addresses Against a Reference File in Python match addresses reference file ⚙️ How-To
  13. How to Deduplicate an Address List in Python deduplicate addresses python ⚙️ How-To
  14. How to Build an Offline Geocoder from Open Address Data offline geocoder python ⚙️ How-To
  15. My Geocoder Returns No Match for Addresses That Exist geocoder returns no match 🔧 Fix
  16. Fixing 429 Too Many Requests When Geocoding geocoding 429 rate limit 🔧 Fix
  17. Fixing Geocodes That All Land in the Country Centroid geocodes country centroid 🔧 Fix
  18. Fixing Addresses That Break on Accents and Encoding address encoding accents 🔧 Fix
  19. Fixing a Geocoder That Matches the Wrong Town geocoder wrong town 🔧 Fix

Topics this path covers

A path is a route; a topic is everything the site has on a subject. Open a topic to see the guides this path skips.

Other ways in