In some cases, geocod.io might return a different census tract or census block, from the one returned by the U.S. Census Bureau geocoder. And in many cases geocod.io will return a correct result when the U.S. Census Bureau is not. To understand why that is, we need to look at how the data appends work.
- Geocode address, converting it to a latitude/longitude coordinate pair
- Determine census block and tract where the coordinate pair lies within
The U.S. Census Bureau geocoder appears to be using address range interpolation geocoding, which means that locations are geocoded to the street rather than to a building.
This can be a problem, as tracts and blocks often are divided by streets, putting the geocoded locations very close to census tract and block boundaries and often overstepping into a neighboring boundary.
Looking up the White House in Washington D.C. (1600 Pennsylvania Ave NW), the U.S. Census Bureau geocodes the address just outside the Census Block boundary.
This means that the incorrect bock (1036) is returned instead of the correct block (1031).
Can you change geocod.io to return the same results as the U.S. Census Bureau (even if they are incorrect)?
The short is no.
The longer answer is that even if we disable rooftop-level (high accuracy geocoding) we can not guarantee that our geocoded location will be the same as the one from the Census Bureau. This is because there can still be significant differences in how locations for address range interpolation are geocoded.