blu-ray-scraper
September 8, 2025 ยท View on GitHub
A scraper for blu-ray.com.
Output examples
Can be found in examples. Files under digital, dvd, itunes, ma, movies, prime and uv have the same format, different to main - dvd/101447 main/31864.
Usage
If called with urls to resources, only they will be scraped
./blu-ray.py 'https://www.blu-ray.com/movies/Tarantino-XX-8-Film-Collection-Blu-ray/55782/' 'https://www.blu-ray.com/digital/Tarantino-6-Film-Collection-Digital/26486/?retailerid=20'
If no urls are passed then sitemap urls will be scraped and saved to links file (around 1170773 urls) and then scraped for contents.
Saved data is categorized into directories digital, dvd, itunes, ma, main, movies, prime and saved in json files named by it's id in them e.g. digital/5, dvd/272457.
Running with --help option will print available options.
./blu-ray.py --help
usage: blu-ray.py [-h] [-d DIR] [-f] [-t NUM] [-w TIME] [-W TIME] [-r NUM]
[--retry-wait TIME] [--force-retry] [-m TIME] [-k] [-L] [-A UA]
[-x DICT] [-H HEADER] [-b COOKIE] [-B BROWSER] [--proxy PROXY]
[URL ...]
Tool for scraping blu-ray.com. If no URLs provided scrapes the whole site
positional arguments:
URL urls
options:
-h, --help Show this help message and exit
-d, --directory DIR Use DIR as working directory
-f, --force Overwrite existing files
-t, --threads NUM run tasks using NUM of threads
Request settings:
-w, --wait TIME Sets waiting time for each request
-W, --wait-random TIME
Sets random waiting time for each request to be from 0 to TIME
-r, --retries NUM Sets number of retries for failed request to NUM
--retry-wait TIME Sets interval between each retry
--force-retry Retry no matter the error
-m, --timeout TIME Sets request timeout
-k, --insecure Ignore ssl errors
-L, --location Allow for redirections, can be dangerous if credentials are
passed in headers
-A, --user-agent UA Sets custom user agent
-x DICT Set requests proxies dictionary, e.g. -x
'{"http":"127.0.0.1:8080","ftp":"0.0.0.0"}'
-H, --header HEADER Set curl style header, can be used multiple times e.g. -H
'User: Admin' -H 'Pass: 12345'
-b, --cookie COOKIE Set curl style cookie, can be used multiple times e.g. -b
'auth=8f82ab' -b 'PHPSESSID=qw3r8an829'
-B, --browser BROWSER
Get cookies from specified browser e.g. -B firefox
--proxy PROXY add proxy to list
Protection
blu-ray.com will block you if you make requests too fast, it also sets periodic limit per ip (i did not confirm if it was limited to a day) after which you'll get banned. If done correctly you can expect about 4000 pages scraped every day.
If you want to scrape the whole site you should use a lot of proxies, they don't require residential proxies pretty much anything will do, they block IPv6 addresses though. Although the site is extremely inefficient and their html pages take about 300KB-400KB, so 1170773 entries will take at least 390GB of transfer.
For getting the whole site i recommend running
while :
do
./blu-ray --wait 22 --wait-random 14 --threads 3 --proxy PROXY1 --proxy PROXY2 --proxy PROXY3
sleep 1m
done