Interesting. How did you pull the data from the API?
First I used
themes_api() in a WP-CLI command to pull all the theme data. It’s a pretty basic script, it just scrapes the response I get into a table. From here I’ve been running a bunch of MySQL queries to generate lists, like the “top 50 by downloads”.
Once I had a set of theme slugs to check, I used this endpoint to get data from the last 90 days for each theme. Since I need to ping the api for every theme, I cached the results forever (well, until I delete them).
The updates are a good point – anything that gets a theme onto the front page of wordpress.org/themes really boosts downloads.