Performing multiple layer intersection in QGIS?

For a layer's feature to be represented in all layers it must be represented in any selection of two layers a well. Using this theory you can simply run multiple intersection functions according to the order below. The example assumes 4 total layers named Layer1, Layer2, Layer3, and Layer4.

  1. Run an intersection between Layer1 and Layer2 to get Output1.
  2. Run an intersection between Output1 and Layer3 to get Output2.
  3. Run an intersection between Output2 and Layer4 to get Output3.

Output 3 should contain all features that appear in all 4 layers. For the 'Count' field, I think you can just file it with the number of layers involved in the intersect, unless I am mistaking what data you want that field to hold.

This method isn't eloquent and if you have many layers or layers with many features it could prove time consuming but it should work and is a simple process to put together.


Forgot to post my solution...
STEP 1 : Merge layers
In the end I changed my Qgis Version to 2.14.11, the algorithm takes a single input param (layers) separated by a semicolon :
processing.alghelp('qgis:mergevectorlayers')

ALGORITHM: Merge vector layers
    LAYERS <ParameterMultipleInput>
    OUTPUT <OutputVector>

Prior it was :

processing.runalg('qgis:mergevectorlayers', layer1, layer2, output)

You can also do a loop to use this version of the algorithm

for i, layer in enumerate(layers):

            if i == 0:
                layer1 = layers[i]
                layer2 = slayers[i+1]
                processing.runalg('qgis:mergevectorlayers', layer1, layer2, savename)
            if i == leng-1:
                break
            else:
                layer1 = QgsVectorLayer(savename, 'temp', 'ogr')
                layer2 = sme_layers[i+1]
                savename = name          

                processing.runalg('qgis:mergevectorlayers', layer1, layer2,  savename)

STEP2 : overlay the layer with itself

processing.alghelp('grass:v.overlay')



ALGORITHM: v.overlay - Overlays two vector maps.
    ainput <ParameterVector>
    atype <ParameterSelection>
    binput <ParameterVector>
    operator <ParameterSelection>
    -t <ParameterBoolean>
    GRASS_REGION_PARAMETER <ParameterExtent>
    GRASS_SNAP_TOLERANCE_PARAMETER <ParameterNumber>
    GRASS_MIN_AREA_PARAMETER <ParameterNumber>
    GRASS_OUTPUT_TYPE_PARAMETER <ParameterSelection>
    output <OutputVector>

STEP 3 Joseph answer seems decent