This guide will walk you through setting up the required environment variables to download courses from Thinkific-based platforms.
For a general overview of using browser DevTools to extract authentication data, you can watch this reference video: How to Extract Authentication Data from Browser
- A web browser (Chrome, Firefox, Edge, Safari)
- Access to the course you want to download
- Basic knowledge of browser Developer Tools
You need to configure 3 main variables in your .env file:
COURSE_LINK- The URL of the courseCOOKIE_DATA- Authentication cookies from your browserCLIENT_DATE- Timestamp for API requests
First, create your environment file from the template:
# Copy the example file
cp .env.example .envOr manually create a .env file and copy the contents from .env.example.
This is the most important step. You need to capture authentication cookies and timestamp.
📺 Visual Reference: While the video guide shows similar concepts, follow these exact steps below for Thinkific-based platforms.
For Chrome/Edge:
- Press
F12OR - Right-click → "Inspect" OR
- Menu → More Tools → Developer Tools
For Firefox:
- Press
F12OR - Right-click → "Inspect Element" OR
- Menu → Web Developer → Inspector
For Safari:
- Enable Developer menu first: Safari → Preferences → Advanced → "Show Develop menu"
- Then: Develop → Show Web Inspector
- Click on the "Network" tab in Developer Tools
- Make sure "All" or "XHR" filter is selected
- Clear any existing logs (click the clear button 🗑️)
- Refresh the course page (F5 or Ctrl+R)
- OR navigate to any lesson within the course
- Wait for the page to fully load
-
In the Network tab, look for a request containing:
course_player/v2/courses/ -
It might look like:
course_player/v2/courses/123456course_player/v2/courses/your-course-id
-
Click on this request to select it
-
Click on the request you found
-
Look for the "Headers" section (or click "Headers" tab)
-
Find "Request Headers" section
-
Look for the "cookie:" line (it will be long)
-
Copy the entire cookie value (everything after "cookie: ")
COOKIE_DATA=_session_id=abc123...; user_token=xyz789...;
- Copy the ENTIRE cookie string
- It should be very long (several hundred characters)
- Include all parts separated by semicolons
-
In the same request headers section
-
Look for "Response Headers"
-
Find the "date:" field
-
Copy the date value
CLIENT_DATE=25:08:202410:30:45 GMT
Your .env file should look like this:
# Course Configuration
COURSE_LINK="https://your-platform.com/courses/your-course"
# Authentication (Required)
COOKIE_DATA="_session_id=abcd1234...; user_token=xyz789...; other_cookies=values..."
CLIENT_DATE="25:08:2024-10:30:45GMT"
# Download Settings (Optional)
OUTPUT_DIR=./downloads
CONCURRENT_DOWNLOADS=3 # ⚠️ KEEP ≤3 - Thinkific rate limit!
RETRY_ATTEMPTS=3
RESUME_PARTIAL=true
RATE_LIMIT_MB_S=10.0
DEBUG=falseThinkific has a rate limit of approximately 3 requests per second.
🚨 IMPORTANT SAFETY GUIDELINES:
- CONCURRENT_DOWNLOADS should NEVER exceed 3
- Higher values (4, 5, 10, etc.) will cause:
- ❌ API errors and failed downloads
- ❌ Files being skipped due to server rejections
- ❌ Potential temporary IP blocking
- ❌ Incomplete course downloads
✅ SAFE CONFIGURATION:
# Safe and recommended settings
CONCURRENT_DOWNLOADS=3 # Maximum safe value
DOWNLOAD_DELAY=1.0 # 1 second between downloads🐌 IF YOU EXPERIENCE ISSUES:
- Reduce
CONCURRENT_DOWNLOADSto 2 or 1 - Increase
DOWNLOAD_DELAYto 2.0 or higher - Lower values = slower downloads but 100% reliability
📺 Need visual help? The reference video shows general DevTools concepts, but follow our specific steps above for this project.
Solutions:
- Make sure you're logged into the course
- Try navigating to different lessons
- Refresh the page with Network tab open
- Check if the URL pattern is slightly different (search for "course" in Network tab)
Solutions:
- Make sure you copied the ENTIRE cookie string
- Cookies expire - get fresh ones
- Try logging out and back in, then repeat the process
Solutions:
- Copy the exact date format from the response headers
- It should look like:
Wed, 25 Sep 2024 10:30:45 GMT - Don't modify the format
Solutions:
- Refresh your cookies (they might have expired)
- Make sure you have access to the course
- Check that COURSE_LINK points to the correct course
- Keep your .env file private - it contains your authentication data
- Don't commit .env to version control (it's in .gitignore by default)
- Cookies expire - you may need to refresh them periodically
- Only use on courses you have legitimate access to
Test your setup by running:
# Docker
docker-compose up
# Python
python thinkificdownloader.pyIf authentication works, you should see course information being fetched. If not, double-check your cookie data.
- 🐛 Issues: Report Problems
- 💬 Questions: Community Discussions
- 📚 Documentation: Main README
- 🎯 Selective Downloads: Download Specific Lessons Only
⚡ Pro Tip: Bookmark this guide! You'll need to refresh your cookies periodically as they expire.