A self-hosted PHP page that shows you every new TV show premiering in a given month — something Trakt's official site stopped offering after its V3 redesign.
untitled.mp4
Trakt's V3 redesign removed the ability to simply browse "what new shows are premiering this month." This tool brings that back: pick a month, and see every new show premiere, grouped by day, with posters, ratings, genres, and network info.
- 📅 Browse new show premieres for any month/year (works on any Trakt account)
- 🎬 Grouped by day, with posters, ratings, genres, network & country
- 📡 Country flags and network logos (Netflix, HBO, Apple TV+, etc.) on each card, with graceful emoji/text fallback when unavailable
- ✅ Mark shows as "watching" / "not watching" — synced server-side, so it follows you across devices
- 🎬 Dedicated "Watching" page (
watched.php) — see every show you've currently got marked as watching for the month, in a clean simplified list, one click away from the main page - 📈 Tracks premiere counts over time and shows the change since your last visit
- 🆕 Green "NEW SHOW" badge on premieres added since your last visit
- 🖼️ All static assets served locally — no third-party bandwidth used on every page load
This script supports all three, purely via query parameters / local filtering — no VIP subscription or OAuth needed (see Configuration below, and the note at the bottom of this README on how we confirmed this):
- 🌍 Choose which countries' shows to include (or exclude)
- 🎭 Filter out genres you don't care about (e.g. reality, talk shows, anime)
- 📡 Optionally restrict results to specific networks/channels only (e.g. just Netflix, HBO, Apple TV+)
All filtering is controlled by three PHP variables near the top of trakt.php (in the USER CONFIGURATION section, around line 155):
$TraktGenres = '-animation,-anime,-children,-game-show,-home-and-garden,-music,-reality,-special-interest,-talk-show';A comma-separated list of Trakt genre slugs. Prefix a genre with - to exclude it (the default list above excludes reality TV, talk shows, anime, etc.). Leave off the - to only include that genre instead. Set to '' (empty string) to disable genre filtering entirely.
$TraktCountries = 'ar,au,at,be,br,ca,cl,cn,co,cz,dk,fi,fr,de,gr,hk,is,in,ie,it,jp,kr,mx,nl,nz,no,pl,pt,za,es,se,ch,tr,gb,us';A comma-separated list of 2-letter ISO country codes — only shows produced in these countries will show up. Remove any codes you don't want, or set to '' to disable country filtering.
$TraktNetworkFilter = []; // empty = no network filtering, shows everything
$TraktNetworkFilter = [
"Netflix", "Prime Video", "HBO", "Apple TV+", "Disney+"
];A PHP array of exact network names (case-sensitive, must match Trakt's naming). Leave it as [] to show shows from every network. Fill it in to only show premieres from those specific channels/services. A large commented-out example list is included right below it in the file — uncomment and trim it to what you want.
$TmdbApiKey = "your-tmdb-read-access-token";Optional. Get a free "API Read Access Token" at themoviedb.org/settings/api. When set, each show's network chip shows the actual brand logo (Netflix, HBO, Apple TV+, etc.) instead of the 📡 emoji — fetched once per network via TMDB and cached locally in images/networks/ from then on. Leave it unset to skip this entirely; chips just fall back to 📡 Network Name as before.
- Clone or download this repository to your PHP-capable web server
- Copy
config.example.phptoconfig.phpand set$TraktClientId— get one at app.trakt.tv/settings/apps/api (create an app there if needed; no OAuth authorization step needed, just the Client ID) - Make sure the
data/folder is writable by the web server (it stores your watch-status per month) - Visit
yoursite.com/trakt.php?month=7
config.php is git-ignored and will never be committed — your Client ID stays local to your server.
Note on authentication: earlier versions of this README asked for a Trakt OAuth access token as well, following the API docs' general guidance. After extensive live testing (including deliberately supplying an invalid/garbage token and cross-checking against a different calendar month to rule out caching), it turned out the
/calendars/all/endpoint this script uses — including genre, country, and network filtering — works correctly with just the Client ID. No access token, no OAuth flow, no VIP subscription required. If a future version of this script ever needs personalized/VIP-gated data, an access token setup guide will be added back at that point.
- PHP 7.4+ with cURL enabled
- A free Trakt API application (Client ID only)
Released under the MIT License.
