10.1 gives zero as well. This is a workaround (in the sense of giving the answer you seem to expect) - I don't know how general but it works for this example.
expr=Expand[ApartSquareFree[x/(y1 - x), x]*ApartSquareFree[x/(y2 + x), x]]
-1 - y1/(x - y1) + y2/(x + y2) + (y1 y2)/((x - y1) (x + y2))
Coefficient[expr /. y1 y2 -> y1y2prod , y1y2prod ]
1/((x - y1) (x + y2))
My feeling, this is not a bug because your input is not a polynomial in y1,y2, and so the docs don't say what to expect. A message to that effect would be preferable to returning zero however. Note that CoefficientList[expr,{y1,y2}] appropriately gives the error expr is not a polynomial.
Edit - this may be a more robust way to extract terms in the given form of the expression based on their numerator:
Select[ List @@ expr , MatchQ[ CoefficientList[ Numerator[#] , {y1, y2}] , {{0, 0}, {0, _}}] &]/(y1 y2) // Total
1/((x - y1) (x + y2))
Another path is to substitute all the symbols as they appear in the term numerators:
Total[(Numerator[#] /. { y1 -> \[FormalY]1 , y2 -> \[FormalY]2})/ Denominator[#] & /@ List @@ expr ]
-1 - [FormalY]1/(x - y1) + [FormalY]2/( x + y2) + ([FormalY]1 [FormalY]2)/((x - y1) (x + y2))
This is now a polynomial in the \[FormalY] so you can use Coefficient and CoefficientList directly.
10.3.1result might be a bug.. $\endgroup$0. I contacted WRI (CASE:3500508), so I'm waiting for a statement from them. $\endgroup$