How to obtain max and min of f-curve in python
Vectorize evaluate with numpy
Having done similar via What&#39;s the range of values on a sound-baked f-curve?
Can vectorize the fcurve evaluate method and pass in an numpy array of frames, then  using methods available  get the minimum maximum etc.
Will find this much quicker than looping as in question code above.
Test script finds the minimum of each fcurve of each action from frames 1 to 250 using 0.01 subframe increments.
import bpy
import numpy as np

frames = np.arange(1, 250, 0.01)

for action in bpy.data.actions:
    print(f&quot;{action.name}&quot;)
    
    for fc in action.fcurves:
        print(f&quot;{fc.data_path}[{fc.array_index}]&quot;)
        points = np.vectorize(fc.evaluate)(frames)


        print(f&quot;min {points.min()} at {frames[np.argmin(points)]}&quot;)