Apollo for Reddit isn't dead: how to keep enjoying your favorite Reddit client after June 30th 2023

Unleashing Apollo: A workaround to keep using third-party Reddit apps despite API access restrictions

Apollo for Reddit isn't dead: how to keep enjoying your favorite Reddit client after June 30th 2023

In June 2023, Reddit Inc. the company behind the popular link aggregation and discussion platform of the same name, often ambitiously describing itself as "The front page of the Internet", has announced its discontinuation of the free availability of its Data API to third-party application developers, and announced a very steeply-priced paid access plan to maintain access.

Through its Data API Reddit currently permits any automated program or script on a computer to access the content of Reddit posts, threads, communities and user history (among other pieces of information), enabling the creation of third-party "bots", tools and clients to use the website in novel ways. Bots like RemindMeBot, for instance, allow users to get a reminder notification for a specific post in the future, by simply commenting with a !RemindMe message on any discussion thread on the site. Other tools like Pushshift collect Reddit data and allow for analytics and academic research on the collected info, and even ease the training of Large Language Models (LLMs) similar to ChatGPT, hence one of the alleged motivations behind Reddit's decision.

But one of the most interesting uses of the API, setting the orange alien website apart from other mainstream social media platforms which force you to use their own software, is the opportunity to build and use third-party mobile applications to browse the website. These apps often introduce additional functionality such as a more user-friendly user interface, no ads, and better accessibility for users who require accommodations to fully enjoy Reddit.

Apollo for Reddit is one such app. A highly polished piece of software, it has been nominated Editors Choice and thus brought under the spotlight by no other than Apple. Apple even explicitly featured the app as recently as in the Worldwide Developers Conference of 2023 (WWDC23). The app is a true marvel of modern mobile UI/UX design, and a great source of inspiration for all iOS native app developers.

Met with significant backlash by the site's most loyal users, Reddit's decision left a sour taste in the mouths of both devs and users of 3rd-party apps alike. The authors of most clients like Apollo, RIF and Boost for Reddit have decided to cease operations due to the economic impossibility of maintaining an independent project of such a scale given the Reddit API price tag, and the outrage even sparked a collective effort by Reddit community moderators who went on 'strike' or even indefinitely shut their communities down in protest.

I myself—as a longtime user of both Apollo and Reddit—am rather unhappy about the recent developments, and this pushed me to devise a solution to keep using Apollo at least for some time, until the communities I follow either leave the website altogether, or Reddit improves their (in my opinion) subpar app to provide a decent UI/UX on mobile.

The technique I came up with relies on the fact that Reddit still allows free use of its API exclusively for individual developers of bots and tools that send less than 100 requests per minute to the API. Within these limitations, it's well possible to use a client like Apollo normally, provided we can get it to log into Reddit using our own personal "Client ID" instead of the public one created by Apollo developer Christian Selig, which stopped working on June 30th 2023.

What you'll need

DISCLAIMER: follow this guide AT YOUR OWN PERIL. What you are doing is likely a circumvention of Reddit's terms of service and might result in a permanent ban from the website. I won't be able to help you if Reddit decides to ban you.

In order to follow this guide, you're gonna need to satisfy the following requirements:

  • A mobile device with a third-party Reddit application. I recommend not updating the app and possibly making a backup of its .IPA installation file if on iOS (.APK on Android); as inferable from the title this guide is primarily geared towards Apple devices, namely the Apollo app
  • A computer: it can be any system with macOS, Windows or Linux. Make sure you have at least a gigabyte of free space on disk
  • A Wi-Fi network without special restrictions in place, preferably your home Wi-Fi (although even a personal hotspot from a mobile device might work)
  • Both devices must be connected to the same network
  • You need to know the local IP address of the computer. If you don't know how to find that, you can check this guide. It should look like either 192.168.x.y, 172.x.y.z or 10.x.y.z.

You only need to do this procedure once per account, on each account you want logged into Apollo (you can reuse the client ID across accounts and devices).

Getting started: setting up the environment

On your PC/Mac, we'll need to install a piece of software called mitmproxy: this tool lets us intercept secure HTTPS requests from your device to Reddit's servers, and will allow us to manipulate responses from the server before they are returned to your mobile device.

On Mac, you'll first have to install Homebrew. Once that's done, you can install mitmproxy by opening a Terminal window and entering the command:

brew install mitmproxy

On Windows, you can download and install the installer executable from the official website. It should just work out of the box.

On Linux, the recommended approach to install mitmproxy is to just download the official binary builds from the website. Most modern distributions like Ubuntu and Arch should already have all the required external dependencies. You could also try using your distro's built-in repository (e.g. by running apt install mitmproxy on Ubuntu) but YMMV.


Once that's done, open a Terminal window and run the mitmweb command. This will launch mitmproxy in its graphical mode: a browser window will open allowing you to monitor traffic.

mitmproxy is now accepting connections on port 8080

Getting connected: enabling HTTPS MITM on your mobile device

We now need to connect our mobile device to the HTTP proxy we just created on the computer. How to do this depends based on your device's OS, but on iOS, the process is as follows:

  1. Open Settings > Wi-Fi > [your network name] > > Configure Proxy
  2. Set the proxy type to Manual
  3. Enter the following details:
    • Server: your computer's IP (e.g. 192.168.1.2)
    • Port: 8080
    • Authentication: off

Save the configuration, open your web browser on the mobile device and go to the webpage at http://mitm.it. If you did everything correctly, you should get a screen that looks like this:

You should now follow the steps relevant to your particular device's OS. On iOS, the process can be summarized as follows:

  1. Click on Get mitmproxy-ca-cert.pem to download the certificate
  2. Open Settings and go to Profile Downloaded, then Install the mitmproxy profile.
  3. Still in Settings, go back and browse to General > About > Certificate Trust Settings
  4. Switch on the certificate mitmproxy. This will allow your own computer to hijack your device's HTTPS connections

Finding the app's client_id and redirect_uri

Due to the rather simple (and crude) design of my script, it's necessary for us to find the current client_id that your Reddit client normally uses to authenticate against Reddit. If you're on Apollo this step isn't necessary, as we already know that Apollo's client ID is 5JHxEu-4wnFfBA and that the callback URI is apollo://reddit-oauth.

If however you're on a different client, just initiate an account sign-in from the Reddit app and watch the mitmproxy tab on your browser. With the help of the Search bar, you can look for client_id= in the likely long list of requested URLs and you should be able to find and click on an entry showing an URL like this:

https://ssl.reddit.com/api/v1/authorize.compact?client_id=5JHxEu-4wnFfBA&response_type=code&state=RedditKit&redirect_uri=apollo://reddit-oauth&duration=permanent&scope=account,creddits,edit,flair,history,identity,livemanage,modconfig,modflair,modlog,modothers,modposts,modself,modwiki,mysubreddits,privatemessages,read,report,save,submit,subscribe,vote,wikiedit,wikiread,modcontributors,modtraffic,modmail,structuredstyles

As we can see, the values we were looking for are:

  • client_id (for Apollo it's 5JHxEu-4wnFfBA)
  • redirect_uri (in our case apollo://reddit-oauth)

Note these values down, it's now time to create our own "app" on Reddit's developer platform.

Getting access to the API: creating our own client ID

From a browser signed into your Reddit account, go to to https://www.reddit.com/prefs/apps, scroll down and click on the are you a developer? create an app button.

When creating the app, set the following parameters:

  • name: anything works here
  • type: installed app (this is VERY important)
  • redirect uri: the redirect_uri from before; in Apollo's case, this is apollo://reddit-oauth

Finally, click on create app and grab the random character string that is displayed below Installed app on the page: this is YOUR OWN client_id!

Adapting and running the script

Finally, download this script from GitHub Gist (click on the Raw button and save the file to your computer, leaving the .py extension intact). Save this file to your current working directory (probably your user account folder).

You now have to open the file using a plaintext editor (e.g. TextEdit or BBEdit on Mac, Notepad or Notepad++ on Windows, Gedit or Vim on Linux), NOT with a rich-text editor like Microsoft Word. Inside the Python script, replace the value of custom_client_id (i.e. change the YOUR_CLIENT_ID_HERE string between quotation marks) with your own client ID from before.

If you're on a non-Apollo client, you'll also have to change the two other values (origin_client_id and apollo://reddit-oauth). Save the modified script and close your text editor.

Completely close the running instance of mitmproxy. This doesn't mean closing the browser tab, you'll have to go onto the previous Terminal window that you ran mitmweb in and do CTRL+C to terminate the process.

Once mitmproxy is no longer running (refreshing the browser page at http://localhost:8081 should give you an error), you can start it again, although this time with our script loaded:

In the Terminal window enter the command:

mitmproxy -s apollo_custom_client_id.py

mitmproxy should once again start (as always you can replace mitmproxy with mitmweb if you want a web interface, but you're not gonna need it now).

We're basically done: logging in

Now, using the mobile app on your device, try logging into your account (if you already are logged in, you'll need to sign out first). Enter your username and password and watch the magic happen:

Click on the tiny Allow button on the page and you should be successfully signed into your account! 🎉

Cleaning up: a conclusion

Once all is said and done, pay another visit to Settings > Wi-Fi > [your network name] and disable the proxy we'd previously set up. You also might want to remove the mitmproxy certificate from Settings > General > VPN, DNS, & Device Management.

Do I recommend using Reddit like this long-term? No. In fact, Apollo itself is already starting to fall apart without the loving care of its developer: the Imgur API is already broken (probably because the API key for Apollo was discontinued) and so are other features of the app.

Also keep in mind that you won't be able to view NSFW communities once changes come into effect, and it's needless to say that Reddit could decide to ban you from the website at any moment, at their sole discretion. It's also incredibly trivial for them to render this method completely useless.

Take this as more of a proof-of-concept (or a neat 'party trick') than a real solution to the problem, a problem that we'll simply have to deal with unless a real competitor to Reddit Inc. shows up and gains popularity. Among the best contenders, the fediverse social media platform Lemmy seems highly promising.

Well, this was fun. Goodnight Apollo, and thanks Christian for creating such a masterpiece of an app. <3