How do I parse StarCraft 2 replay files (.sc2replay)? Is there an API?
I know of Sc2gears, but it doesn't quite fulfil my needs.
The Starcraft 2 replays are stored as MPQ a compressed file-format developed and used by Blizzard. On the bottom of the Wiki page you'll also find links to MPQ parsers.
Update: As of now, there's also a Python library out there that can read a lot of the replay data: sc2reader. This is most likely the best option that is currently available (as of March 2013).
Disclosure: I'm the author of Scelight and Sc2gears.
Blizzard released an official, open-source SC2Replay file parser library called s2protocol written in python:
That is the most complete, up-to-date, official replay parser. It is considered the reference implementation. It is quite low-level though.
There is another project called Scelight (which is the successor to Sc2gears). In Scelight there is a setting (a combobox):
Scelight also has an extension interface called External Module API which has a well documented API. The External Module API provides access to SC2Replay parser and both low and high-level replay internal datastructures and tools.The javadoc of the External Module API is also available online here:
Both Scelight and Sc2gears have been open-sourced, you can see exactly how they do it (both projects count more than 100,000 lines of code):
I played with parsing the SC2 replay files a while back. You can view what I've done and what I've been able to reverse engineer (as well as bunch of links to helpful sites at the bottom):