I have a list of about 20k addresses in the US, and I would like to determine each one's census tract. I found a tool online that does this here, but making 20,000 requests and screenscraping the output seems like the wrong way to do.
One idea I had was to use some open source library like this to search the shapefiles provided here. However, it seems like someone should have written a utility to do something like
Geocoder.census_tract_of_address("200 N State Chicago IL 60601")
Does anyone know of such a thing? How best should I attack this problem?