I've been experimenting with using your API calls to monitor addresses for payment arrival, in particular using the block-height JSON call.
It seems that block data is often 300-500k each but contains mostly non-useful data. For monitoring address receipts we only really need (address,amount) data and probably a reference transaction hash. So I was thinking that data transfer load could be reduced to 10% or less if you offered such a "minimal-block-height" or "block-output" API call (or a query option like format=json&outputsonly=1).
It could even be pre-compressed data to reduce size+load further, eg. many servers let you store a gzip file that feeds static requests without compressing on the fly. Or maybe you already do that to reduce server load for static data.