I've been working on a Hangouts.json parser for Google's Takeout service that takes all of the conversations, attachments, and miscellaneous information from the json file and populates a database with everything. I've finished everything but the only information the json file provides for who sent what is a GAIA ID that I've been able to figure out is the unique ID Google uses between their services. The problem is I don't know how to look up any other information about the user such as the name they identify with or their email.
I know most of the information is publicly available as you can take the GAIA ID and put it into a URL like: https://plus.google.com/u/0/#####################/about
where the #'s are the GAIA ID. This page will reveal their screen name publicly. When a email address is unknown the same thing can be inferred by using: reply-#####################@profiles.google.com
where this will also be able to be used to contact them.
Ideally I'd like to be able to look up a user's screen name without having to parse that public Google+ page at least but a true email would be great as well. So ideally I'd like an API or other resource to look up screen names and / or email info from a GAIA ID.
IMPORTANT UPDATE
March 2019: This answer is still getting up votes, however Google are withdrawing / have withdrawn the Google Plus API.
You will need an alternative solution as this will no longer apply.
Original Reply
Use the Google Plus API: https://developers.google.com/+/api/
I've not tested specifically with Hangouts (I never knew there was a Hongouts API!) but it returns details given IDs from other APIs.
You can test it out here: https://developers.google.com/apis-explorer/#p/plus/v1/plus.people.get to see what you'll get.