After seeing Temirulan's post about question in the title I decided to rescrap this data myself using my ts sdk, but seconds later I realised, that I can just add this data online into comment/blog/user statistics. So, couple of hours implementing, couple of hours waiting for all contests proceeded and I got exactly the same table as in original post, but pretty accurate (Ruban has 1164 contests on his profile page and my DB contains 1163 contests, kmjp's count matches perfectly) and online: this data should be updated every day unless API is unavailable.
I believe that this small descripancy is because of Technocup rounds (e.g. contestId 1595-1597) for which API gives 400 error (contestId: Contest with id 1595 not found
). I don't know why CF has really different number of official/unofficial participations: I take into account only CONTESTANT
and OUT_OF_COMPETITION
participantTypes in standings and according to participantType in party I add 1
to off
or unoff
field.