You want to use the for-each-ref command. Unfortunately, it’s only slightly less user friendly than filter-branch
Note that information like tag date and the tagger is only available for annotated tags.
Below is a basic prototype. Note that the format= can be an entire shell script of its own, and probably should be depending on how complicated you want the output. They have a couple of examples specifically for tags in the for-each-ref documentation
git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags