I occasionally need to geocode >> 500,000 US street addresses (no features or intersections). I'd like to set up a geocoding service locally to handle these bulk geocodes.

I've used the Tiger-based Geocoder::US 2.0 locally in the past. Initial benchmarking gives reasonable accuracy against Google-geocoded addresses, especially when I don't rely on the Ruby parser and I pass the address elements to the geocoder explicitly.

I've also read a good deal about the PostGIS Geocoder. Since my data are already in PostGIS this sounds attractive, but I haven't set it up locally to try it out.

Also, someone recommended I try Nominatim locally. I don't know much about it except that it's not Tiger based (as far as I can tell), and I'm wondering if I'll get more reliable results.

My question to anyone with experience with the above solutions: How does the accuracy of the three compare? Specifically, which provides the most consistently-reliable geocodes for US street addresses? I'm not overly concerned with speed or set up complexity.

2 Answers 2


I haven't had a chance to test out the Nominatim and Geocoder US geocoders. My understanding though is that the Geocoder and Nominatim can't be run directly in the database, which to me is a big disadvantage because it makes them difficult to use in things like triggers or for batch updates directly in the database.

PostGIS geocoder being a pure PostGIS/postgresql set of plpgsql functions, runs completely in the database. I would expect the Geocoder US and PostGIS geocoder results to be on par and from what I have tested using the web stuff, they are. Google is a bit better since they take advantage of place names.

I think Nominatum since it does use OSM data does use tiger data indirectly since OSM imports for US much of that comes from TIGER with user contributed corrections. I am not sure what vintage (year) of Tiger OSM is currently on. From playing with the web interfaces online it takes advantage of place names too and has an interesting twist in that it allows you to specify the zoom level of the geocoding which allows for faster geocoding by set the zoom precision you need.

Full disclosure -- I've been doing a lot of work on PostGIS Geocoder and wrote the online manual for it. I will tell you a bug I am working on is that I think the location of the point it interpolates is on the wrong side of the street. I'm working on fixing that. If you could care less about which side of the street (or at least sometimes), then that may be a non-issue to you.

Probably worth while testing with the online versions comparing some address results: e.g. nominatim you can test here: http://open.mapquestapi.com/nominatim/v1/search.php

For my use cases I have found the fuzzy checking of nominatum is not as good as what PostGIS Geocoder has. For example my vanity street address (mailing address) is 1 Devonshire Place, Boston MA. PostGIS returns an answer which is close as I recall, Google returns an answer, but I can't get Nominatim to return an answer. To be fair even Boston parcel records have no clue where this is and gets listed in parcel records as washington street. PostGIS can find it since it does various levels of checking and intersections of cross streets etc. I've tested other cases where I purposely type in the zip wrong or something and PostGIS comes back with an accurate set of options. Google does too.

  • Additonal comment: Probably worth while testing with the online versions comparing some address results: e.g. nominatim you can test here: open.mapquestapi.com/nominatim/v1/search.php
    – Regina Obe
    Commented Mar 18, 2011 at 5:54
  • Thanks for the response! I'll do some benchmarking over the next week or so, but I've been impressed with the PostGIS Tiger coder so far.
    – danpelota
    Commented Mar 20, 2011 at 2:06
  • Barring the occasional hangup for a newbie, of course: postgis.refractions.net/pipermail/postgis-users/2011-March/…
    – danpelota
    Commented Mar 20, 2011 at 2:08
  • tigergeocoder.com using TIGER 2013 data, ready to run your own server instance in Amazon EC2 cloud and geocode 1,000,000+ per day. PostGIS as you mentioned, has loaded Zillow Neighborhoods as well and returns FIPS codes for the address parts. REST API similar to Google but your own server, no quota needed.
    – Biba
    Commented May 5, 2015 at 18:32
  • Nominatim runs fast and tends to be more accurate in 2019, pre-new tiger data. It does not estimate areas and the address guessing is just better. Commented Jun 28, 2019 at 20:56

Technically you can stack Tiger and OSM databases into one giant server and build them inside Nominatum OSM. Tiger can be imported easy and it complements the OSM server.

Whoever, the quality of the data you will be getting back is not going to be rooftop. OSM lacks accuracy for street addresses in USA. In some occasions I have seen it as far as 90 miles from the original target.

Tiger database also is not accurate due to the interpolation algorithm assigned to it in order to predict street number locations. In general they will offset the actual target from 300 feet to couple miles.

I do think you need to evaluate time and hosting resources if building own geocoder vs using a commercial one. With commercial one you will be getting rooftop locations and not worrying about anything. Prices for 500k will be around $600 to $800 with different vendors.

  • 2
    What does your answer have to do with your company? It looks like you are including a signature with a link to your website in the guise of, in this instance, an unnecessary disclaimer, and so I am editing it out. In any event please do not include a link in any disclaimer.
    – PolyGeo
    Commented Aug 29, 2019 at 22:16

Not the answer you're looking for? Browse other questions tagged or ask your own question.