I need to parse single-field addresses into multiple fields such as address number, street name, street type, etc. Esri has the Standardize Addresses tool in the Geocoding Tools toolbox, but I am curious if anything similar is possible with Google's API. It looks like it is wonderful at geocoding and reverse geocoding, but I haven't found any info on standardizing input addresses. I understand that for commercial purposes I would need to pay for some sort of licensing, but first I want to know if it is possible in the first place.
[GIS] use the Google Geocoding API to parse and standardize address data
addressaddress-parsinggeocodinggoogle-maps-api
Related Solutions
The only publicly available source of actual addresses per street segment is the PAD file -- the Property Address Directory -- from the New York City Dept of City Planning. If you rely on centerline files such as TIGER or LION, these will provide hypothetical address ranges. The centerline data may be ok(and often is), but if you need to know the valid addresses rather than a broad range, PAD is the way to go. The Planning Dept provides it as a free download at http://www.nyc.gov/html/dcp/html/bytes/applbyte.shtml#pad You'll likely need to do some file manipulation, but it's a powerful data set. Also, I believe it's updated at least annually, if not more frequently. And it contains other useful information, such as a crosswalk between parcel IDs, addresses, and building identification numbers.
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.
Best Answer
Google's Terms of Use does not permit commercial (esp. automated) use of the data. Yes, Google appears to parse single-line street addresses and geocodes them, but it is not appropriate for commercial purposes as Mapperz has noted.
Also, standardizing addresses will be a bit of a bugger with Google's API. Google Maps is an address approximation service, not a standardization or verification service.
For example, have you ever done street view by a house on the edge of town, or out in the suburbs, even in rural areas? Often, it will only show the street name and say "Address is approximate" -- if you had that house's actual address and typed it in Google Maps, it would probably adjust the address to the incorrect location. This happened to me yesterday near a city/county border. The mailing address I had was correct but Google got the wrong city and placed me about a mile away from the delivery point. Oops?
Fortunately that wasn't for commercial use (I only needed directions), but if you need reliable data, even their commercial license doesn't provide actual verification. You're probably looking for something like a CASS-Certified service to standardize and geocode addresses. Such a service is authorized by the USPS to correct and "fill out" address data so it is in a standard format, and must pass rigorous quality tests every so often.
I work with one such provider called SmartyStreets. We service US Street Address API which doesn't have any restrictions against commercial usage. You can reference this other GIS question to investigate its performance and capabilities, or see our website.
And I'll let you in on a little secret: while it doesn't yet appear that we parse single-line addresses, we actually do (as of this week). Submit an entire address in the "street 1" field through our API and you'll get a CASS-Certified result.