diff --git a/.env.example b/.env.example
index fadd395..e5cdf08 100644
--- a/.env.example
+++ b/.env.example
@@ -16,9 +16,10 @@ PRU_PROXY_KEY=a54d389c18527d9fd3e7f0643e27edbe
# SELF-HEALING FALLBACK METHODS (optional, enables auto-recovery)
# ══════════════════════════════════════════════════════════════
-# Method 2: ScraperAPI (free 1,000 req/month, no CC needed)
+# Method 2: ScraperAPI (requires premium plan — $49/month)
# Sign up at https://www.scraperapi.com/
# Enables automatic fallback when direct requests are blocked by Cloudflare
+# NOTE: Miruro is a protected domain — free plan will NOT work
SCRAPER_API_KEY=
# Method 3: FlareSolverr (self-hosted browser proxy)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 056afe9..7e164e1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,7 +25,7 @@ GET /api/pipe-health
#### Configuration (all optional, zero-config to start)
| Env Var | Purpose | Free? |
|---------|---------|-------|
-| `SCRAPER_API_KEY` | ScraperAPI proxy | Yes (1K req/mo) |
+| `SCRAPER_API_KEY` | ScraperAPI proxy | No ($49/mo premium required for protected domains) |
| `FLARESOLVERR_URL` | FlareSolverr browser | Yes (self-hosted) |
| `PIPE_OBF_KEY` | XOR decode key | N/A |
diff --git a/README.md b/README.md
index ed5031d..c1c8c88 100644
--- a/README.md
+++ b/README.md
@@ -102,10 +102,10 @@
When Cloudflare blocks streaming requests, the API automatically tries fallback methods:
- **Direct** → Mirror rotation across 4 domains (miruro.to, miruro.ru, miruro.bz, miruro.tv)
-- **ScraperAPI** → Free proxy bypass (1K req/month)
+- **ScraperAPI** → Proxy bypass via premium residential IPs ($49/mo)
- **FlareSolverr** → Self-hosted browser proxy
-Zero-config: works out of the box. Add `SCRAPER_API_KEY` env var for automatic Cloudflare bypass.
+Zero-config: works out of the box. Add `SCRAPER_API_KEY` env var for automatic Cloudflare bypass (requires ScraperAPI premium plan for protected domains).
### ⚠️ Streaming Status
@@ -124,7 +124,7 @@ Zero-config: works out of the box. Add `SCRAPER_API_KEY` env var for automatic C
**To fix streaming**, set one of these environment variables in Vercel:
```bash
-# Option 1: ScraperAPI (free 1K requests/month)
+# Option 1: ScraperAPI (requires premium plan — $49/month)
SCRAPER_API_KEY=your_scraperapi_key
# Option 2: FlareSolverr (self-hosted, unlimited)
@@ -436,12 +436,12 @@ bun dev
| `ALLOWED_ORIGINS` | `*` | Comma-separated allowed origins (restricts CORS in production) |
| `PIPE_OBF_KEY` | `71951034...` | Pipe response XOR obfuscation key (hex, 32 chars) |
| `PRU_PROXY_KEY` | `a54d389c...` | PRU proxy URL XOR key (hex, 32 chars) |
-| `SCRAPER_API_KEY` | — | ScraperAPI key for Cloudflare bypass (free 1K req/month) |
+| `SCRAPER_API_KEY` | — | ScraperAPI key for Cloudflare bypass (requires premium plan, $49/mo) |
| `FLARESOLVERR_URL` | — | FlareSolverr URL for browser-based bypass (e.g., `http://127.0.0.1:8191`) |
> ⚠️ **Required for production:** Set `ALLOWED_ORIGINS` to restrict CORS. Set `PIPE_OBF_KEY` and `PRU_PROXY_KEY` for pipe decoding.
>
-> 📺 **For streaming:** Set `SCRAPER_API_KEY` or `FLARESOLVERR_URL` to bypass Cloudflare bot protection. See [How to Fix Streaming Issues](#-how-to-fix-streaming-issues).
+> 📺 **For streaming:** Set `SCRAPER_API_KEY` (requires ScraperAPI premium plan) or `FLARESOLVERR_URL` (free, self-hosted) to bypass Cloudflare bot protection. See [How to Fix Streaming Issues](#-how-to-fix-streaming-issues).
### Vercel Configuration
@@ -1503,7 +1503,7 @@ ScraperAPI proxies your requests through residential IPs, bypassing Cloudflare.
SCRAPER_API_KEY=your_api_key_here
```
-**Cost:** Free for 1K requests/month. Paid plans from $49/month for 250K requests.
+**Cost:** $49/month (premium plan required for protected domains like Miruro).
#### Fix 2: FlareSolverr (Self-Hosted — Unlimited)
@@ -1626,7 +1626,7 @@ Yes! Use npm start to run the Express server on any VPS, Docker con
❌ Why are streaming endpoints returning 500 errors?
-Cloudflare's bot protection blocks requests from Vercel's datacenter IPs. The pipe endpoint (miruro.to/api/secure/pipe) returns HTTP 403. To fix this, set SCRAPER_API_KEY (free 1K req/month from ScraperAPI) or FLARESOLVERR_URL (self-hosted browser proxy) in your Vercel environment variables. See How to Fix Streaming Issues above.
+Cloudflare's bot protection blocks requests from Vercel's datacenter IPs. The pipe endpoint (miruro.to/api/secure/pipe) returns HTTP 403. To fix this, set SCRAPER_API_KEY (requires ScraperAPI premium plan, $49/mo) or FLARESOLVERR_URL (self-hosted, free) in your Vercel environment variables. See How to Fix Streaming Issues above.
diff --git a/src/helpers/pipe.js b/src/helpers/pipe.js
index 65d28cd..1efe4cf 100644
--- a/src/helpers/pipe.js
+++ b/src/helpers/pipe.js
@@ -153,7 +153,7 @@ const methodScraperAPI = async (encodedReq) => {
if (!SCRAPER_API_KEY) throw new Error("SCRAPER_API_KEY not configured");
const targetUrl = `${MIRURO_ORIGINS[0]}${PIPE_PATH}?e=${encodedReq}`;
- const scraperUrl = `https://api.scraperapi.com/?api_key=${SCRAPER_API_KEY}&url=${encodeURIComponent(targetUrl)}`;
+ const scraperUrl = `https://api.scraperapi.com/?api_key=${SCRAPER_API_KEY}&premium=true&url=${encodeURIComponent(targetUrl)}`;
const res = await axios.get(scraperUrl, {
headers: {