Here is some code that you can work with. What the code does is iterate through a feature class and searches all features in every feature class within the geodatabase to see if any features intersect (see the disjoint method here). If features do, it adds the feature class name to a list. I would recommend creating a single polygon from the input feature class's extent. The code will then just have to iterate through one input feature rather than many.import arcpy from arcpy import env env.workspace = r"C:\temp\python\test.gdb" list = [] dataset = "Polygon" spatial_ref = arcpy.Describe(dataset).spatialReference with arcpy.da.SearchCursor(dataset, ["SHAPE@"], "") as cursor: for row in cursor: for fc in arcpy.ListFeatureClasses("*"): with arcpy.da.SearchCursor(fc, ["SHAPE@"], "", spatial_ref) as cursor2: for row2 in cursor2: if not row[0].disjoint(row2[0]): list.append(fc) del cursor, cursor2 #remove duplicates from list list = dict.fromkeys(list) list = list.keys() print list