GeoGuessr Country Streak: how often do you get each country

I’ve been playing the country streak mode for almost a year now and in this timespan, I reached nearly 2.5 thousand points. I was curious to see how often you get each country, so I built an app which would do the calculation job for me. Unsurprisingly, Finland, Sweden, the US, Hungary and Brazil took the first 5 spots. 2405 points might not be enough to draw meaningful conclusions but it’s still interesting to see what you get. If you know how, you can use my app to calculate stats for your own country streak games. See my other post linked above for more info!

I play in the default mode so it’s more of a patience and luck game to find out where you are and not get trapped on a random road in the middle of nowhere (then you are probably in Argentina, though).

Cheers and keep playing GeoGuessr or start if you haven’t already 😉

GeoGuessr Country Streak Stats App

To make a map about how frequent each country comes up in the GeoGuessr country streak mode, I built a .NET app that would do the job of calculating the figures for me. It connects to the game’s API, using the endpoints I discovered using the developer console while browsing the GeoGuessr website. Here you can find a full list of API calls including those I haven’t used at all.

The app is able to store all the game tokens previously used and allows you to log into the game from within the app to pick up new ones if you played more games since the last time you ran the app. If you want to calculate stats for your own games, clean the GameTokens.txt file in the core folder (right now it contains my own tokens) and put your own country streak game tokens in it and voila, you can get your own stats! Each token must be on a new line and you can also leave comments on the same line after the token by using the double hashtag sign.

It processes the JSON that API returns, calculates the stats and displays it in the small GUI which is depicted in the screenshot. The app can also export the results in a CSV format, which I later use to fill in my maps.

You can find the repo for the project here. If you have any questions about the app, feel free to ask using the contact form. I’d be very happy to answer.

Temperature stability in Central America

Once, a friend of mine wondered if there was a place in the world where the temperature stays more or less the same throughout the year. “Well, check out the areas around the equator”, I said and made this map. Although yes, the Caribbean and Central America are not the closest areas to the equator, I still think the stability of air temperature in this region is absolutely astonishing.

For this map, I used the data from WMO, respective Wikipedia pages and a bit of Weather Spark.

GeoGuessr API Guide

To work on GeoGuessr maps, I created an app that would pull in data from the game using the game’s API. I had to use my browser’s console to find out what API calls the website actually makes as there is no publically accessible documentation on it.

So here’s my unofficial guide for those who wish to use the GeoGuessr API.

Notes: Most calls start with “geoguessr.com/api/” unless specified. For some of the calls, you need to be logged in, for others you don’t. The latter are indicated with italics. As I understand, there’re 2 versions of the API currently in use, 3 and 4. It is possible that in the near future a complete transition to v4 will happen and the old calls will be deprecated.

  1. v4/feed/private – entries from the “Activities” page of your profile, including game tokens. Variables: count, page.
  2. v3/profiles – info of the currently logged-in user.
  3. v4/notifications – notifications of the currently logged-in user. Returns an empty array if all the notifications have been read. Variables: count, page.
  4. v3/social/friends – friends of the currently logged-in user. Presumably, returns an empty array if the user doesn’t have friends. Variables: count, page.
  5. v3/social/friends/summary – same as the previous one but adds friends’ requests and recommendations.
  6. v3/social/friendships – shorter information on the friends of the currently logged-in user.
  7. v3/profiles/achievements – achievements of the currently logged-in user.
  8. v4/objectives – objectives of the currently logged-in user. You can also add the /unclaimed endpoint to this address.
  9. v3/social/maps/browse/personalized – personalised map for the currently logged-in user.
  10. v3/social/badges/unclaimed – unclaimed badges of the currently logged-in user.
  11. v3/social/events/unfinishedgames – unfinished games of the currently logged-in user, including the guesses, but not the rounds themselves.
  12. v3/profiles/maps – maps of the currently logged-in user (“My Maps” page).
  13. v3/likes – liked maps of the currently logged-in user (“Liked Maps” page). Variables: count, page.
  14. v4/stats/me – stats of the currently logged-in user but not what you see on your profile page.
  15. v3/profiles/stats – stats of the currently logged-in user which are displayed on the profile page.
  16. v3/subscriptions – subscriptions of the currently logged-in user.
  17. v3/explorer – details on the explorer mode of the currently logged-in user.
  18. v3/accounts/signin – signs you in, your credentials must be attached as a JSON payload in the format {email: “XXXXXX@blah.com”, password: “XXXXXX”}. You might need to properly serialise JSON with your credentials, a simple string that looked like JSON didn’t do it for me.
  19. v3/accounts/signout – signs you out. Be careful, no payload is required for this operation so it signs you out as soon as you reach the endpoint.
  20. v4/trophies/<user_ID_here> – trophies of any user. If you add “/case” at the end, it will show only the trophies you selected for your trophy case. Also works without providing your user ID, if you are logged in.
  21. v3/games/<game_token_here> – insert a game token to gather information about a specific game, including its type, rounds, score, etc. Any game ever played by whatever user can be accessed with this call, provided you have the token.
  22. v3/social/maps/browse/popular/random – a random popular map.
  23. v3/challenges/daily-challenges/today OR v3/challenges/daily-challenges/previous – today’s or previous daily challenges info.
  24. v3/challenges/<challenge_token_here> – insert a challenge token to gather information about a certain challenge.
  25. v4/seasons/active/stats – stats of the current season.
  26. v4/seasons/previous – info on the previous season.
  27. v4/seasons/next – info on the next season, if available.
  28. v3/experiments – list of GeoGuessr experiments.
  29. v3/competitions – list of GeoGuessr competitions.
  30. maps/(map name or map id) – info on maps, works with map names for official maps like “world” or “famous-places”.
  31. https://game-server.geoguessr.com/api/battle-royale/<game_ID_here> – allows seeing the stats of any BR game, provided you have the game ID.
  32. https://game-server.geoguessr.com/api/lobby/<game_ID_here> – lobby of the game, including users (even their ids and stats), type of the game, etc.
  33. v4/seasons/game/BattleRoyaleCountries – info valid for the current season. “BattleRoyaleCountries” can be substituted with “BattleRoyalDistance” or “BattleRoyaleDuels” to get the exact same result.
  34. https://game-server.geoguessr.com/api/duels/<duel_game_ID_here&gt; – info on your duel game.
  35. https://game-server.geoguessr.com/api/tournaments – info on the current and past tournaments.

For some of the calls, I’m not entirely certain what the response should be as in my case they return an empty array. Additionally, I haven’t played most of the game modes yet because I mostly play country streak so my expertise might not be so deep and some of my comments might not be as extensive.

Enjoy the guide and if in the future you create anything using Geoguessr API, feel free to share your work! I’ll be sharing my app as soon as I build a decent GUI.

BONUS SOUND EFFECTS:

  1. New game
  2. Countdown
  3. Division upgrade
  4. Division downgrade
  5. Round 1
  6. Round 2
  7. Round 3
  8. Round 4
  9. Multiple damage
  10. Healing round
  11. Churchbell
  12. Game lost
  13. Game won
  14. Healing up
  15. Count healing
  16. Loadig round
  17. Loading duel round
  18. Loading duel healing round
  19. Score tie
  20. Damage up
  21. Damage crush
  22. Counting damage
  23. Slide in rows
  24. Slide in

Purchasing power in Russia based on potatoes

Some time ago we looked at the nominal monthly income in Russian regions but of course, the picture would be incomplete if we didn’t look at the actual difference in purchasing power. We see that this difference is not as striking as the income one, however, you can easily see the divide between the Western part of the country and basically everywhere else (apart from Khanty-Mansi and Yamalo-Nenets autonomous okrugs).

Here’s the source. Contact me here if you want to know more or hear a lame joke.

Ukrainian Independence Referendum

In 1991, the Ukrainians clearly voted to leave the USSR and become an independent country. The referendum passed with 90.32% of the voters saying “yes, I approve” to the declaration of Ukrainian independence, which stated that continuing a millennium-old tradition of statehood in Ukraine, the country was to become independent as of now (then) and that its territory is indivisible and untouchable.

As shown on the second map, even the regions with significant Russian population decided that they didn’t want to be part of Russia anymore. That is something that this old man refuses to understand. Stop living in 1922, Volodya, your time has passed, leave Ukraine alone and, preferably, Russia too.

Contact me here if you have an idea for another map supporting Ukraine (or any other map for that matter).

Russian regions

In light of recent events, I thought it might be a good idea to make a map with an overview of Russian regions. There are 6 types of subdivisions in Russia:

  1. Republics – nominally autonomous, with its own language and constitution, created around local non-Russian ethnicities in these regions but when it comes to international affairs are basically parts of Russia
  2. Oblasts – your normal region
  3. Krais – your normal region but when new regions were created in the USSR all krais were supposed to have autonomous regions within them, something oblasts couldn’t do. Over time the situation changed, but the names remained the same.
  4. Autnomous okrugs – another form of ethnicity-based subdivisions in Russia but without official regional languages and with an option to become a part of other regions. Among all the autonomous okrugs, currently, only Chukotka is not a part of any other region.
  5. Autonomous oblast – there’s only one of them, which was created by Stalin in the 1920s to send all the Jews there. Never worked and no one knows why it is still there. But hey, they are still trying to preserve Yiddish there!
  6. Federal cities – biggest cities, i.e. Moscow and St. Petersburg

In the first decade of the 21st century, a few autonomous okrugs were fully incorporated into respective oblasts losing their subject status brining the current number of the federal subjects to 83.

As usual, you can contact me here for this and other maps in better resolution, to suggest new maps and for other matters.

Apprehended anti-war protesters in Russia

This invasion is absolutely absurd. This man is a paranoid senile maniac. I stand with Ukraine. I detest everything about this Russian government. I adore those Russians who risk being arrested and go out on the streets to protest these appalling actions of the Soviet Russian dictatorship. I don’t want to take the focus off Ukraine but I’m glad to see that there are Russians who see the situation for what it is – Russian imperialism.

Here’s the source. The data was collected by a human rights organisation that investigates politically motivated arrests, layoffs, etc. and helps those affected by it. If you want to help OVD-News, you can donate money on their website but don’t forget, the Ukrainians need help too and even more. Stay strong, Ukraine, he will fall one day.

Top corporate tax rates around the world

Taxation usually comprises a large chunk of a government’s budget and a sizeable part of it comes from corporate income tax. Attitudes toward taxation differ per country with some preferring lower rates to entice businesses and some preferring higher rates. Nevertheless, even when tax rates are pretty high, companies in some countries manage to avoid paying taxes altogether maximising their profit and decreasing the positive impact they might have on society (looking at you, Jeff). So although it is undoubtedly interesting to get an overview of top corporate tax rates worldwide, it does not mean that companies in these countries actually pay taxes based on these rates.

Some values on the map do not represent the real-world situation fully: Bahrain doesn’t have a general corporate income tax, but they do tax oil companies at a rate that can be as high as 46%; similar applies to the UAE, where each of the 7 emirates is allowed to levy their own corporate income tax up to 55%, however, in practice this tax is only applied to foreign banks and petroleum companies; on Comoros, the rate of 50% applies only to “public industrial and commercial enterprises or those where the state or certain public institutions are participants … if their turnover exceeds 500 million Comorian francs”. The normal tax rate is 35%.

Here you can find the source and here you can read about their methodology.