Hacking through this... I had to do this some while ago, but can't find the code.. here is something that works:
stateNames =
StringJoin@(Capitalize /@
StringSplit[StringReplace[#, "," -> ""]][[;; -3]]) & /@ (#["Name"] & /@
EntityList[
EntityClass["AdministrativeDivision", "AllUSStatesPlusDC"]])
And then
counties = Flatten[
EntityList[
EntityClass["AdministrativeDivision", "USCounties" <> #]] & /@ stateNames];
(Deconstruct this from the inside out to see the reasons for each step)
This then gives
Length[counties] -> 3143
Querying Wolfram Alpha on this number, it gives 3144.
Exercise for the interested student (that's not me!): why is there a missing county?