Stealth Scraper
Pricing
Pay per usage
Stealth Scraper
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Shivam Goraksha
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Stealth HTML Scraper
Get fully rendered HTML from any website — even behind Cloudflare, Turnstile, Akamai, and other anti-bot protections.
No browser setup. No proxy headaches. No blocked requests. Just pass a URL, get back the complete rendered HTML.
The problem
You need HTML from a website. You send a request. You get back an empty shell, a CAPTCHA wall, or a 403. The site uses JavaScript rendering, anti-bot detection, or both — and your scraper is dead in the water.
This Actor fixes that permanently.
Two modes for every situation
Stealth Mode (default)
A full browser renders the page exactly like a real user would see it. Every script executes, every API call fires, every component loads. The output is the complete, final HTML after all JavaScript has finished running.
Built from the ground up to be undetectable:
- Automation fingerprints eliminated at the binary level — not patched over with JavaScript hacks that bot detectors catch in milliseconds
- Unique browser identity per request — realistic fingerprints that pass canvas, WebGL, and font enumeration checks
- WebRTC leak protection — your real IP stays hidden even without proxies
- Canvas fingerprint randomization — defeats the most common browser fingerprinting technique
- Passes Cloudflare Turnstile, Akamai Bot Manager, PerimeterX, DataDome, and every other major anti-bot system
Use stealth mode for:
- Cloudflare-protected sites
- Single-page applications (React, Vue, Angular, Next.js)
- Sites that return empty HTML to regular HTTP requests
- Any page where you need the fully rendered DOM
Fast Mode
Lightning-fast HTTP requests with intelligent header and connection fingerprinting. No browser overhead — just raw speed. 10x faster and 10x cheaper than stealth mode.
Use fast mode for:
- Static websites, blogs, and documentation
- REST APIs and JSON endpoints
- Sites without bot protection
- High-volume jobs where speed matters more than rendering
Who this is for
Lead generation teams
Scrape business directories, agent profiles, company pages, and contact databases — even when they're locked behind anti-bot walls. Get the rendered HTML with all the data your pipeline needs.
Price monitoring & competitive intelligence
Track competitor pricing, inventory levels, and product catalogs on e-commerce sites. Works on Shopify, Amazon, and other platforms that aggressively block scrapers.
Real estate & property data
Pull fully rendered listing pages, agent profiles, and property details from MLS sites and real estate platforms that rely on JavaScript rendering.
Market research & analytics
Collect rendered data from review sites, social platforms, job boards, and financial data providers. Get the same HTML a real browser sees — no missing content.
SEO & content monitoring
Check how pages actually render to search engines. Capture dynamically loaded content, lazy-loaded images, and client-side rendered text that static scrapers miss entirely.
Academic & research data collection
Gather datasets from web sources at scale without getting blocked. Ideal for researchers who need reliable, repeatable access to public web data.
Input
| Field | Type | Default | Description |
|---|---|---|---|
urls | string[] | required | List of URLs to scrape |
mode | string | "stealth" | "stealth" (full browser rendering) or "fast" (HTTP only) |
concurrency | integer | 5 | Parallel pages (1-20) |
timeout | integer | 60 | Seconds per page |
delay | number | 2 | Seconds between requests per slot |
waitSelector | string | null | CSS selector to wait for before capturing HTML |
networkIdle | boolean | true | Wait for all network requests to finish |
blockWebrtc | boolean | true | Prevent IP leaks through WebRTC |
hideCanvas | boolean | true | Randomize canvas fingerprint |
useProxy | boolean | false | Route through Apify residential proxies |
proxyGroups | string[] | ["RESIDENTIAL"] | Proxy groups to use |
Output
Each URL produces a dataset row:
{"url": "https://example.com/page","status": 200,"html": "<!DOCTYPE html><html>...</html>","bytes": 875432,"error": null}
The html field contains the full rendered DOM — ready to parse with any HTML parser in any language.
Examples
Scrape a protected page
{"urls": ["https://protected-site.com/data"],"mode": "stealth","useProxy": true,"networkIdle": true}
Bulk scrape 1,000 product pages
{"urls": ["https://shop.com/product/1", "https://shop.com/product/2", "..."],"mode": "fast","concurrency": 15,"delay": 1}
Wait for dynamic content to load
{"urls": ["https://spa-app.com/dashboard"],"mode": "stealth","waitSelector": ".dashboard-content","networkIdle": true}
API integration
Call this Actor programmatically from any language:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("YOUR_USERNAME/stealth-scraper").call(run_input={"urls": ["https://example.com"], "mode": "stealth"})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["url"], item["bytes"], "bytes")
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('YOUR_USERNAME/stealth-scraper').call({urls: ['https://example.com'],mode: 'stealth',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Performance
| Mode | Speed | Cost | Best for |
|---|---|---|---|
| Fast | ~1-2 sec/page | Fractions of a cent | Static sites, APIs, bulk jobs |
| Stealth | ~5-10 sec/page | ~$0.01-0.03/page | JS-rendered sites, anti-bot protected |
Run 15 pages in parallel and process 5,000+ pages per hour in stealth mode.
FAQ
Will this work on my target site? If it loads in a real browser, this Actor can scrape it. It passes every major bot detection system in production today.
Do I need proxies? For most sites, no. For sites that rate-limit by IP or block datacenter IPs, enable Apify residential proxies for best results.
Can I scrape thousands of pages? Yes. Set concurrency to 10-15 and let it run. The Actor handles errors gracefully and processes pages in parallel.
What do I get back? The exact same HTML that a real user's browser would render — including all JavaScript-generated content, dynamically loaded data, and client-side rendered components.
How is this different from other scraping actors? Most scrapers use standard headless browsers that get detected and blocked immediately. This Actor uses a purpose-built stealth engine that eliminates automation fingerprints at a fundamental level — not through surface-level patches that bot detectors are designed to catch.