Blender API Python split body by loose parts
It seems like blender selected the last object in that list (the reason for that is likely because these meshes are imported in a piece of code infront of the code i posted) and i never actually selected the other meshes.

This code works for me and splits all bodies:

for collection in bpy.data.collections:
if collection.name == "Render":
    for object in collection.objects:
        print("Manipulating object: {}".format(object.name))

        object.select_set(True)
        # place at correct location and scale to the setting size
        object.scale = scale

        thickness = list(object.dimensions)[2]
        location = [0 ,0, thickness/1000]
        object.location = location
        object.rotation_euler = rotation

        # split the mesh
        if object.type == 'MESH':
            print("Splitting mesh")
            bpy.ops.mesh.separate(type='LOOSE')
        object.select_set(False)
    break # no need to check other collections