Usage data can be retrieved from an SPWeb by calling GetUsageData(). Problem is that only 2000 records for the site are returned. There is also a GetUsageBlob RPC call that returns all information, but the format of the blob was not documented. Until now.
At Microsoft downloads: Windows SharePoint Services: Usage Blob Parser (http://www.microsoft.com/downloads/details.aspx?FamilyID=8ed64398-4992-47cb-9075-afec32060986&DisplayLang=en)
Quote: "Use this sample download to retrieve the daily and monthly usage BLOBs that are processed from the front-end Web servers in a deployment of Windows SharePoint Services. The Usage BLOB Parser sample demonstrates how to use the GetUsageBlob RPC method to return usage data and how to parse the data."
It is a pity the code is in C++, but the file usagedata.cpp contains the info about the format of the blob data.
I could not get the tool working even on my local portal due to unauthorized exceptions. The info should be enough however to parse the data in a c# program doing the GetUsageBlob RPC call.