You can always use a small script to parse on of the many available api's... I wrote a startscript that *should* work for address with a history <= 50 tx's.
It could easily be expanded for > 50 tx's by putting everything in a loop and make requests to the api changing the to-parameter untill the response is not containing anymore data...
It's also quite easy to convert the unix timestamp to a readable date, and things might go sour if the amount of numbers in the timestamp differs between the transactions (in other words, all transactions have to be BEFORE 09/09/2001 or after 09/09/2001... Fixing this issue would also be pretty easy, but as i said: i'm feeling lazy today... And since bitcoin didn't exist in 2001, it shouldn't matter anyway)
This script is open source, free and NOT intended for production environments... I did not ask blockexplorer.com's permission to use their api, and i only tested the script on one of my own addresses... I was to lazy to build a proper testcase... I'm not responsible for any damages you might incur running this script
![Grin](https://bitcointalk.org/Smileys/default/grin.gif)
import requests
import json
import collections
address = '1YourAddressHere'
URL = "https://blockexplorer.com/api/addrs/"+address+"/txs?from=0&to=50"
r = requests.get(url = URL)
database = json.loads(r.text)
outputdb = {}
for item in database['items']:
txid = item['txid']
timestamp = item['time']
vins = item['vin']
vouts = item['vout']
for vin in vins:
vinaddr = vin['addr']
valuein = vin['value']
if vinaddr == address:
value = valuein * -1
outputdb[str(timestamp) + '.' + str(txid)] = {"txid": str(txid), "timestamp": int(timestamp), "value" : float(value)}
for vout in vouts:
try:
voutaddresses = vout['scriptPubKey']['addresses']
voutvalue = vout['value']
for voutaddress in voutaddresses:
if voutaddress == address:
outputdb[str(timestamp) + '.' + str(txid)] = {"txid": str(txid), "timestamp": int(timestamp), "value" : float(voutvalue)}
except:
number = 1
od = collections.OrderedDict(sorted(outputdb.items()))
balance = 0
for k, v in od.iteritems():
balance = balance + float(v['value'])
print str(v['timestamp']) + ' ' + str(v['txid'] + "=> " + str(balance) + "<" + str(float(v['value'])) + ">")