Public Data Hacking with Python in Larimer County
Inspired by Dave Beazley's Public Data Hacking tutorial, I decided to investigate my local public data. It turns out, Larimer County provides API access to property and property tax records. The access is limited, but does provide some beginner experience with public data.
At our recent Python Web Dev meetup , we worked on Dave Beazley's Learn Python Through Public Data Hacking tutorial . In the tutorial, Dave introduces python with a series of coding challenges involving public data resources like transit information and health inspections.
Many governments and municipalities now provide access to public records over the Internet, both as part of open information acts and to lower their costs of providing that information. Some even provide direct access to their data through APIs.
Working on the problems in the tutorial got me wondering about the public data available here in Larimer County, CO.
Larimer County provides access to a wide variety of data through the web , including property records, voter registration, and restaurant health inspections.
The county also allows direct access to property and property tax information through APIs. The APIs are implemented as SOAP web services.
The county has sample code for languages they call ColdFusion, C#, and PHP.
Hello, the 1990's called. They want their manuals back. .
I offer these Python examples.
The API's are somewhat limited. To use them you need to know the schedule number or parcel number for a property. They don't allow you to easily grab a chunk of data to play around with while learning.
# import suds client for SOAP layer from suds.client import Client # get a tax result property_tax_url = 'http://www.larimer.org/webservices/PropertyTaxes.cfc?wsdl' property_tax_client = Client(property_tax_url) property_tax_result = property_tax_client.service.GetPropertyTax(scheduleNum='', parcelNum=1234567890, taxYear=2012) print(property_tax_result) # get an info result property_info_url = 'http://www.larimer.org/webservices/PropertyInformation.cfc?wsdl' property_info_client = Client(property_info_url) property_info_result = property_info_client.service.GetPropertyInfo(scheduleNum='', parcelNum='1234567890') print(property_info_result)
The property information client has additional web services available. The county has documentation, code examples, etc. 
It's cool the county provides access to this information online. But, it is very limited in how you can access it.
Hopefully, in the future we'll see more APIs that allow us greater flexibility in our searches.
It was a good learning experience.
 I'm joking.