Python API, get bezier points taking into account shape key values
You can create a shape key that is the mix of the current shape keys (as it is accessible from the shape key menu).

From it get spline info.

Then delete this shape key which was created only for that purpose.

Something like:

import bpy

curve = bpy.context.object

# Add a new shape key that is a mix of the existing one
bpy.ops.object.shape_key_add(from_mix=True)

# Get the last shape key
shape_key = curve.data.shape_keys.key_blocks[len(curve.data.shape_keys.key_blocks)-1]

# Get the info you want
for sk in shape_key.data:
    print( sk.co )
    print( sk.handle_left )
    print( sk.radius )

# Remove the shape key 
bpy.ops.object.shape_key_remove( all = False )