Got the exact same problem. Luckily I’m into C++. It will never work thanks to this:
// @TODO Online - integrate this filter
// SteamMatchmakingPtr->AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable );
Found in FOnlineAsyncTaskSteamFindLobbiesBase::CreateQuery. Steam by default does not return full lobbies, and since this filter represents the capability we both seek - using steam subsystem means you’re not going to have full lobbies returned.
I cannot find where the null subsystem does that, but it doesn’t seem like it’s filtered on the searching machine, it’s probably done by the packet receiving machine that decides to keep quiet about it’s existence, but I could not confirm that.
While this option works for values higher than 0 (if I search for 2 or more slots and force this value to 2 it’s all ok), when you give it 0 it still does not return full lobbies. If someone has a solution, I’m listening.