How to get xyz coordinates from f-curve
This question is similar to this one answered by christopheS.

So in the same principle, I just add some more information.


An object has animation data
This data contains curves
A curve is defined by an 'action type' (which is defined in 'data_path') and an 'array index'
Action type and array index will give about what the curve is. For instance an action type equal to 'location' with an array index of 1 is a curve about the Y location of the object
The curve contains keyframe points. Each as a 'co'(ordinate) vector where co[ 0 ] is the frame and co[ 1 ] the value


Additionally you can ask the curve value using 'value = curve.evaluate( frame )'.

The code here is commented, so please tell if it is enough explanation or not.

import bpy

print( '---------' )

# Action types, in order to filter the wanted curves if needed
actionTypes = ('location','rotation_euler','rotation_quaternion','scale')

# Get the object from which we want the animation data
obj = bpy.data.objects['Cube']

# If it has some animation
if obj.animation_data:
    # Iterates over the wanted curves
    # The data_path gives the action's type
    for curve in [c for c in obj.animation_data.action.fcurves if c.data_path.endswith( actionTypes )]:
        # The array_index give the corresponding X, Y or Z index of the curve
        print( curve.data_path, curve.array_index )
        for key in curve.keyframe_points:
            # The curve's points has a 'co' vector giving the frame and the value
            print( 'frame: ', key.co[0], ' value: ', key.co[1] )
    pass
else:
    print("no data")