Grab data from every frame with Python API? without using bpy.context.scene.frame_set(frame)
You can read the keyframe points of F-Curves directly, which doesn't require frame changes. Instead, the x-coordinate of a point is the time / keyframe, the y-coordinate is the value.

To find the right F-Curves, iterate over Object.animation_data.action.fcurves and check their data_path and array_index properties.

Related:
http://www.blender.org/documentation/blender_python_api_2_71_release/info_quickstart.html#animation
(See the low level example)