Finding the timing of blocks, afterwards? I understand that the timestamps on blocks are not fully accurate. Given only that information, it's efectively impossible to do retrospective analyses of timing of blocks. (For example, this; http://scienceblogs.com/builtonfacts/2014/01/11/is-bitcoin-currently-experiencing-a-selfish-miner-attack/)

Is there a way to get data on when blocks actually were mined, or (at least) when some API provider received the blocks?
I've tested blocktrail.com and they do provide an arrival time. Any provider will only have so much historical data though.

If you are only interested in data moving forward you could run your own bitcoin node(s) and use -blocknotify= command switch to record your own time(s).

You would need to consider when this notification is triggered.  Normally would be after the block is validated and longest chain is updated, not immediately when the node sees it.

Output from BlockTrail

{"hash":"000000000000000015aab005b28a326ade60f07515c33517ea5cb598f28fb7ea","height":320000,"block_time":"2014-09-10T13:55:18+0000","arrival_time":"2014-09-10T13:55:47+0000","nonce":2145106612,"difficulty":27428630902,"merkleroot":"57c6d11085df633a848eecf78befcdbbab58c2830ca380d4089d5013ab53d0df","is_orphan":false,"prev_block":"000000000000000021ecc2772de2ce57c6bd327c4ceaea52a0ecd70548b8ca41","next_block":"00000000000000001bbfee4521419de4f79c19580027b00f9739ee7b2f0b5c57","byte_size":227086,"confirmations":71045,"transactions":357,"value":262417274672,"miningpool_name":"DiscusFish \/ F2Pool","miningpool_url":"http:\/\/www.f2pool.com","miningpool_slug":"discusfish"}