You can use getblock with the default verbose=true to retrieve a list of transaction IDs for each block, then retrieve the data for each of those transactions using getrawtransaction.
Alternatively use getblock with verbose=false to get the full block content in hexadecimal form, which you can then parse using any library which can parse bitcoin-formatted blocks.