Perhaps you've been burning to build an online feature around some interesting government data source; if so, the Federal Communications Commission just made the task simpler. The agency has released the Application Programming Interface (API) specs for four of its big repositories of information: its consumer broadband test, broadband provider database, license owner storehouse, and latitude/longitude to county converter.

"We want the FCC's Web presence to be larger than a single Web site," FCC Geographic Information Officer Michael Byrne posted on Tuesday. "We want the developer community to run with these APIs to make mash-ups and data calls connecting FCC data assets to other sources for creative and useful applications to the public."

Although the Commission has done a fine job of making its public filings much more accessible, that's only the tip of the vast data iceberg which is the FCC. The biggest challenge is figuring out where this juicy stuff actually resides at fcc.gov.

License lookup

For example, suppose you wanted to learn something about an FCC wireless or broadcast license holder—say, the details of its latest license application or transfer agreement. It's actually easier to search for those databases via Google than to try to locate them in the agency's online labyrinth. And once you do find them, there isn't a lot that you can do besides punch in the name of a station and see what's up.

Now the FCC's License View API opens up a new range of possibilities. It lists the crucial data fields and methods needed to offer snapshots of license ownership patterns across various services, such as wireless broadband, plus when these licenses are up for renewal.

So, if you want to get a rundown of all the FCC licenses owned by Verizon Wireless, the License View API discloses all the relevant GET methods and how to script them into your URL line.

"GetLicenses" is the method in question. The API call is:

http://data.fcc.gov/api/license-view/basicSearch/getLicenses

The method's parameters include

searchValue (Required) pageNum (Optional) - Default is 1. sortColumn (Optional) - Default is licName. Valid values are: licName, frn, callsign, service, status, expdate sortOrder (Optional) - Default is asc. Valid values are: asc, desc pageSize (Optional) - Default is 100. format (Optional) - Default is xml. Valid values are: xml, json, jsonp jsonCallback (Optional) - Default is callback.

Thus if you set up a GetLicense URL link, plugging "Verizon Wireless" into the "searchValue" param:

http://data.fcc.gov/api/license-view/basicSearch/getLicenses?searchValue=Verizon%20Wireless

—you'll get a truckload of licenses in XML form when you click the hyperlink.

A more interesting parameter is getRenewal, which returns the number of licenses up for renewal in a given month (in the form of twelve months worth of data). Plug Verizon into that script:

http://data.fcc.gov/api/license-view/licenses/getRenewals?commonName=Verizon Wireless&limit=50

—and you get a new trove of XML intel. As every PHP and JSP coder reading this knows, from these methods flow all kinds of nifty online forms by which consumer groups, bloggers, businesses, and researchers can now peer into the FCC's data repositories in new, interesting, and distinctly public ways.

Broadband test data

You can also do this with the data being collected by the FCC's Consumer Broadband Test, which gives you an evaluation of your upload and download speeds, then plugs the results into a county-by-county database.

For example, in Ruther Glen, Virginia, you'd plug Caroline County's latitude and longitude numbers (38.0/-77.5) into the URL line via the API's "speedtest/find" feature:

http://data.fcc.gov/api/speedtest/find?latitude=38.0&longitude=-77.5

And get an XML result as so (the numbers are presumably Kbps):

<Response executionTime="0.163" status="OK"> <SpeedTestCounty> <wirelineMaxDownload>0.0</wirelineMaxDownload> <wirelineMaxUpload>0.0</wirelineMaxUpload> <wirelineAvgDownload>9072.4</wirelineAvgDownload> <wirelineAvgUpload>4562.2</wirelineAvgUpload> <wirelessMaxDownload>14490.0</wirelessMaxDownload> <wirelessMaxUpload>11180.0</wirelessMaxUpload> <wirelessAvgDownload>9146.5</wirelessAvgDownload> <wirelessAvgUpload>6498.5</wirelessAvgUpload> <wirelineTests>0</wirelineTests> <wirelessTests>12</wirelessTests> </SpeedTestCounty> </Response>

ISP intel

Another API offers broadband provider data in a given state via ISP FCC Registration Numbers (FRNs).

The FRN search program has two methods: "getList" and "getInfo." So a query using the getList method and the stateCode parameter for California:

http://data.fcc.gov/api/frn/getList?stateCode=CA&multi=Yes

—gets you a nice long list of ISPs (which we won't print out here). Using the first listed ISP's FRN number (0016639023), we can access more data via the "getInfo" method:

http://data.fcc.gov/api/frn/getInfo?frn=0016639023

—about a specific ISP.

Finally, the FCC has released a method to help developers do census block conversions (latitude/longitude to census block numbers). That, in turn, will help them translate individual locations into census data for a wide array of government databases.

More of this is coming, the Commission promises.

"The release of these APIs marks an important day for us at the FCC," Byrne says. "The FCC has long published many data sets. Now we are allowing developers direct access to our data via live queries. Your feedback on these APIs—what you think, how you are using them, what needs to be improved—helps us continue in this direction."