Is there a way to select Non-Planar Faces?
Here is a script to run in edit mode,  It looks at all faces with > 3 vertices, defines a plane from the first 3 verts [v.co for v in ngon.verts[:3]] as input coords to determine its normal and ngon.verts[0].co is a point on the plane

If absolute distance from rest of vertices in ngon to defined plane is less than some tolerance the face is planar. 

import bpy
import bmesh
from mathutils.geometry import (
            distance_point_to_plane,
            normal)

context = bpy.context
obj = context.edit_object
mesh = obj.data

TOL = 0.001

# select None
bpy.ops.mesh.select_all(action='DESELECT')
bm = bmesh.from_edit_mesh(mesh)
ngons = [f for f in bm.faces if len(f.verts) &gt; 3]

for ngon in ngons:
    # define a plane from first 3 points
    co = ngon.verts[0].co
    norm = normal([v.co for v in ngon.verts[:3]])

    ngon.select =  not all(
        [abs(distance_point_to_plane(v.co, co, norm)) &lt; TOL
        for v in ngon.verts[3:]])

bmesh.update_edit_mesh(mesh)


Result of running script with TOL = 0.1 on mesh made of cylinder, uv sphere, torus and monkey primitives.