14

Is there a simple way to export all transactions related to a specific account/smartcontract to a CSV or some other plain text format?

q9f
  • 32,913
  • 47
  • 156
  • 395
Alex
  • 175
  • 1
  • 1
  • 7

8 Answers8

10

Or you can simply use etherscan API and Json to CSV online service.

Use API, ie: https://api.etherscan.io/api?module=account&action=txlist&address=0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae&sort=asc and put it in the URL field of http://www.convertcsv.com/json-to-csv.htm

Et voilà.

Nicolas Massart
  • 6,783
  • 2
  • 29
  • 63
  • Handy solution, thanks for posting it! Now however, do you know what the timestamp" format in the JSON is? Excel just chokes on it both as date, time, and also as datetime. – JVC Mar 17 '17 at 17:02
  • @JonathanvanClute it looks to be Unix timestamp. Try to check if this is the right format using http://www.timestamp.fr – Nicolas Massart Mar 17 '17 at 17:05
  • 1
    Yep was Unix, thanks!. Used the formula here to convert to date: https://www.extendoffice.com/documents/excel/2473-excel-timestamp-to-date.html#a3 – JVC Mar 17 '17 at 17:24
  • This does not work for smart contracts only for account (it gives you the list of where the address is the one submitting to the chain, not contract interactions.) – shredding Apr 10 '22 at 09:30
6

Here is a guide on how to export Ethereum data to csv https://medium.com/@medvedev1088/exporting-and-analyzing-ethereum-blockchain-f5353414a94e

It uses https://github.com/medvedev1088/ethereum-etl which outputs the data into blocks.csv, transactions.csv, erc20_transfers.csv.

blocks.csv

Column                  | Type               |
------------------------|---------------------
block_number            | bigint             |
block_hash              | hex_string         |
block_parent_hash       | hex_string         |
block_nonce             | hex_string         |
block_sha3_uncles       | hex_string         |
block_logs_bloom        | hex_string         |
block_transactions_root | hex_string         |
block_state_root        | hex_string         |
block_miner             | hex_string         |
block_difficulty        | bigint             |
block_total_difficulty  | bigint             |
block_size              | bigint             |
block_extra_data        | hex_string         |
block_gas_limit         | bigint             |
block_gas_used          | bigint             |
block_timestamp         | bigint             |
block_transaction_count | bigint             |

transactions.csv

Column              |    Type     |
--------------------|--------------
tx_hash             | hex_string  |
tx_nonce            | bigint      |
tx_block_hash       | hex_string  |
tx_block_number     | bigint      |
tx_index            | bigint      |
tx_from             | hex_string  |
tx_to               | hex_string  |
tx_value            | bigint      |
tx_gas              | bigint      |
tx_gas_price        | bigint      |
tx_input            | hex_string  |

erc20_transfers.csv

Column              |    Type     |
--------------------|--------------
erc20_token         | hex_string  |
erc20_from          | hex_string  |
erc20_to            | hex_string  |
erc20_value         | bigint      |
erc20_tx_hash       | hex_string  |
erc20_block_number  | bigint      |
medvedev1088
  • 10,996
  • 5
  • 35
  • 63
3

QuickBlocks does exactly this. It even picks up incoming internal transactions. Plus it exports to JSON, CSV, TEXT or any other format at the flip of switch. All while remaining 100% decentralized.

Thomas Jay Rush
  • 9,943
  • 4
  • 31
  • 72
3

Recently, PeterChauYEG put together a node app / scraper for the DAO address that uses Etehrescan's API and outputs a CSV.

It will do the same for any address provided if you changed line 8 @ main.js: const address = '0xbb9bc244d798123fde783fcc1c72d3bb8c189413'; to the address you would like to generate a CSV from.


If you find it useful, consider supporting the developer w/ a donation: 0x1A416af553Faca53b4be48DCFB6E749C9737455D

tayvano
  • 15,961
  • 4
  • 45
  • 74
2

There's no built-in way to do this. How difficult it is to do depends on what you mean by "related to a specific account".

Transactions initiated by an external account are easy to look up, as 'from' is one of the fields of the transaction - though there's no API call that returns only transactions initated by a given account you can at least scan transactions looking for ones you care about.

Transactions from an external account to another, or to a contract, are easy to detect, too, since there's also a 'to' field.

Where it gets complicated, however, is for value transfers initiated by a contract. These are often called "internal transactions", though in actual fact they're not transactions at all. There's no direct record of these in Ethereum, except by their side-effects (value transferred and state changes made), so there's no easy way to export them. Blockchain explorers that provide this functionality work by tracing transaction execution in the EVM, recording details about what took place.

However, let me plug my own project, Etherquery. It's a dump of Ethereum blockchain data - blocks, transactions, and transfers - to BigQuery, which permits arbitrary analytic queries, and supports exporting to a number of formats, including CSV. BigQuery is user-pays, but the first terabyte of processing each month is free. If you don't have a Google Cloud project, you'll need to create an empty one in order to access the public tables linked above.

Nick Johnson
  • 8,144
  • 1
  • 28
  • 35
1

To export Ethereum data, you may rely on a number of public nodes listed at ethereumnodes.com: some of them are free of charge.

They provide access to JSON RPC API which allows you to export blocks, transactions and other blockchain data in JSON.

Here is a modern approach to export the full history of Ethereum into S3 using the public nodes: “How to Export a Full History of Ethereum Blockchain to S3” (Medium). When exported to S3, you may reformat your data into CSV or more storage-efficient format like Parquet (and GZIP for even greater storage costs!).

As an alternative, you may rely on BigQuery public datasets with Ethereum data. This will free your hands from exporting the data. Using BigQuery datasets is also covered by the article.

1

If you are writing the contract you include events in your contract to track what's happening, and then you can log those events easily to a CSV file. This will include internal transactions as well, which addresses an issue noted above.

In Solidity, you log with Events. You can then listen to all events on your contract with web3.js "allEvents" callback.

In the Javascript event allEvents callback, it's extremely easy to log to JSON (it's already an object), and logging to CSV in Javascript means just choosing an appropriate CSV library.

tayvano
  • 15,961
  • 4
  • 45
  • 74
Paul S
  • 4,271
  • 1
  • 22
  • 48
0

Etherscan now provides this capability built in!

Go to etherscan and list all transactions for your account. Then at the bottom hit the "Download CSV export" button.

enter image description here

On the resulting .CSV file there are two columns one for Txn fee in ETH and one for Txn fee in USD

enter image description here

Thomas M
  • 136
  • 3