Stealth Web Scraper avatar

Stealth Web Scraper

Pricing

from $2.00 / 1,000 successful pages

Go to Apify Store
Stealth Web Scraper

Stealth Web Scraper

General-purpose stealth collection helper for public pages when a dedicated source Actor is not available. Prefer specialized Actors for jobs, ads, maps, and e-commerce.

Pricing

from $2.00 / 1,000 successful pages

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

197

Total users

45

Monthly active users

4 days ago

Last modified

Share

Scrape Cloudflare-protected and JavaScript-heavy public pages without building your own browser, proxy, or CAPTCHA stack.

Paste a list of URLs → get rendered HTML, clean plain text, and optional CSS field extraction. Successful pages land in the default dataset (billable); blocked or failed pages go to a separate failures dataset and are not billed as successful pages.

Engine ladder (automatic): Bright Data Web Unlocker → Patchright stealth browser + CapSolver (Cloudflare / Turnstile) → Camoufox short-session failover. Residential egress and unlock credentials are handled by the scrape worker — you do not need to bring your own proxies for normal use.

Free Apify-plan users (developer policy): 10 runs / 200 URLs per run.


Features

CapabilityWhat it means for you
Anti-bot ladderUnlocker first (fast/cheap when it works), then headed Patchright + CapSolver, then Camoufox if Chromium still fails
Soft-success / shell detectionChallenge pages and empty “success” shells are treated as blocked — not billed as successful pages
Bandwidth-aware browser pathHeavy assets (images / fonts / media) can be blocked to cut proxy spend (blockResources, default on)
Geo hintOptional proxyCountry (e.g. us, gb) for egress / Unlocker geo
Cookies & headersForward session cookies or extra HTTP headers when a public page needs them
Quality signalPer-page dataQuality: ok / partial / blocked / empty, plus provider, latency, and failover notes
Failures datasetBlocked / wait-selector misses / hard failures stay out of the billable default dataset
Standby Live ViewLightweight health + OpenAPI surface for monitoring; full scrapes still run as normal Actor runs

What you can do with it

1. Monitor competitor pricing on protected shops

In plain English: give the Actor a list of product page URLs → get back a clean table with product name, price, and stock status, ready to drop into Excel or an alert system.

You give:

FieldWhat to enter
URLsList of competitor product page links (one per row)
FieldsproductName, price, availability

You get back (table you can download as Excel / CSV / JSON):

Product NamePriceAvailability
Example Product$49.00In stock
Another Product$29.00Out of stock
.........

Tip: for large marketplaces (Walmart, Amazon, Shopee, SHEIN, …) prefer the dedicated e-commerce Actors in More Actors like this — they return structured product fields without you writing selectors.


2. Pull company listings from directories (Clutch, G2, Capterra)

In plain English: point the Actor at a directory category page → get a list of provider cards with company names, locations, ratings, and review counts.

You give:

FieldWhat to enter
URLsCategory page URLs (e.g. Clutch digital marketing)
Wait for[data-testid='provider-card'] (optional)

You get back (one row per provider):

CompanyLocationRatingReviewsCategory
Agency OneNew York4.942Digital Marketing
Agency TwoLos Angeles4.731Digital Marketing

3. Extract reviews from Trustpilot / G2 / Capterra

In plain English: provide the review page URL → get a clean list of reviews you can feed into sentiment analysis or a spreadsheet.

You get back:

ReviewerRatingDateReview
John D.52026-03-15Great product, fast shipping...
Sarah K.22026-02-28Had issues with the packaging...

4. Feed AI agents with rendered page content

In plain English: your AI agent needs the actual visible content of a page (not a 403 page) → pass the URL, get back readable plain text and HTML. Works natively with LangChain, Make, n8n, and Zapier.

Plug the Actor output straight into:

  • Your prompt as context
  • A vector database for RAG
  • A custom summarization pipeline

Optional: set provider to unlocker_only for cheap HTML/text when you know the page does not need a full browser.


5. Watch for content changes

In plain English: run the same URLs on a schedule (daily / weekly) → Actor returns a timestamp and quality signal for each page, so you can diff changes over time.

Useful for tracking:

  • Competitor landing page updates
  • Pricing page changes
  • Legal / Terms of Service updates
  • Product launch announcements

More Actors like this

Use a specialized Actor when one exists for your site — structured fields, better coverage, usually lower cost. Use Stealth Web Scraper when you need a general URL list on protected public pages.

General tools

Prefer a dedicated site scraper?

If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic URL scrape.

Jobs & Freelance

E-commerce

Real Estate

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to use (no code required)

  1. Click "Try for Free" at the top of this page
  2. Paste your list of URLs (one per line)
  3. (Optional) Add CSS selectors if you want specific fields like price or title
  4. (Optional) Set waitForSelector if the page has content that loads dynamically
  5. (Optional) Set proxyCountry if the page should be fetched from a specific country
  6. Click Start — results appear in the Dataset tab within seconds

Download your results as CSV, Excel, or JSON. That's it.

From May 21, 2026, the free $5 monthly Apify credit gets you around 2,400 successful pages in practice, depending on how many separate runs you use.


What you get back

Every successfully scraped page returns:

  • Page title — the <title> of the page
  • Text content — clean plain text, ready for analysis
  • HTML — full rendered HTML (if you need it)
  • Extracted fields — whatever you asked for with CSS selectors
  • Quality signalok, partial, blocked, or empty, so you know what you got
  • Provider / diagnostics — which engine served the page (brightdata_unlocker, patchright, camoufox, …), plus latency and failover notes when useful
  • Timestamp — when the page was scraped

Two separate datasets:

  • Successful pages go to the main dataset (and count toward billing)
  • Failed or blocked pages go to a failures dataset and are not billed as successful pages

You always know exactly what you paid for.


Pricing

Pay only for successful pages written to the default dataset. Blocked pages, failed pages, and pages where your required wait selector never appears go to the failures dataset and are not billed as successful pages.

Scheduled pricing from May 21, 2026:

What triggers a chargePrice
Actor start$0.005 per run
Successful page$0.002 per page
VolumeEstimated cost
100 successful pages~$0.205
1,000 successful pages~$2.005
10,000 successful pages~$20.005

How this compares:

  • Building your own stealth scraper: 20+ hours of dev work, ongoing maintenance
  • Bright Data / Zyte scraping API: $500+/month subscription
  • This Actor: pay only when you scrape, no subscription

Example: Scrape 500 competitor product pages once a week = about $4.02/month. Scrape 50 Clutch pages once = about $0.105.

From May 21, 2026, the $5 free monthly Apify credit covers around 2,400 successful pages — enough to test whether this fits your workflow before you spend anything.

Apify platform compute/memory is billed separately by Apify, typically pennies per run for small jobs on this thin Actor.


Connect to your tools

Use this Actor from your existing stack — no coding needed:

PlatformHow to connect
Make.comSearch "Apify" → "Run Actor" → Actor ID: lentic_clockss/stealth-web-scraper
n8nAdd Apify node → "Run Actor" action → same Actor ID
ZapierApify integration → "Run Actor" trigger
LangChainApifyActorsTool("lentic_clockss/stealth-web-scraper")
Python / Node.jsApify SDK or direct HTTPS call

API call example

curl "https://api.apify.com/v2/acts/lentic_clockss~stealth-web-scraper/runs" \
-X POST \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://www.clutch.co/it-services"], "outputFormat": "text", "proxyCountry": "us"}'

Results come back in JSON via the Apify Dataset API:

GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json

Live-view web server OpenAPI schema

This Actor enables Apify Standby and ships a documented Live-view schema via .actor/openapi.json. The standby surface is intentionally lightweight:

  • GET / — service information and readiness response.
  • GET /health — health check for the standby container.
  • GET /input-example — safe low-cost input example for a normal Actor run.
  • GET /openapi.json — the OpenAPI 3.0.3 document used by Live-view.
  • POST /scrape — optional Live-view proxy to the scrape worker (for interactive checks); persist results with a normal Actor run.

Full scraping jobs should be launched as normal Apify Actor runs so successful pages, failure reports, RUN_REPORT, RUN_SUMMARY, and ERROR_SUMMARY are persisted to the configured datasets and key-value store.


When to use something else

This Actor is great for public content on protected sites. It's NOT the right tool for:

If you need...Use this instead
Login-only pages (your account dashboard)A custom Actor with session / profile handling
Structured data from a known siteA dedicated Actor for that site
Long sessions with complex interactionsApify's Web Scraper or a custom Actor
Guaranteed success on every requestNo tool can promise this — websites change
Simple non-protected websitesApify's cheaper Web Scraper handles these fine

FAQ

Q: What counts as a successful page? A: A page is successful when it returns status 200, isn't blocked (including challenge shells), and (if you set waitForSelector) the element appeared. Only successful pages written to the default dataset are billed.

Q: What happens when a page is blocked? A: It goes to the separate failures dataset with the error details. You're not charged for blocked pages.

Q: Do I need my own proxies? A: No for normal runs. Residential egress is provided by the scrape worker. Optional proxyCountry steers geo; proxyGroup is only a hint.

Q: Can I extract specific fields like prices or titles? A: Yes. Pass extractSelectors with CSS selectors. If the selector matches one element you get a string, if multiple you get a list.

Q: Will this work on LinkedIn / Instagram / Facebook? A: No for login-walled feeds. Use the dedicated Jobs / Ads / Social Actors when available. This Actor is for public pages that are protected by anti-bot systems.

Q: How is this different from Apify's Web Scraper? A: Apify's Web Scraper handles standard sites. This Actor is built for pages blocked by Cloudflare, Akamai, PerimeterX, and similar systems, with an automatic Unlocker → browser → Camoufox ladder. Use the standard Web Scraper for easier targets to save money.

Q: How do I know if my target site needs this Actor? A: Try Apify's standard Web Scraper first (or a dedicated site Actor). If you get 403 errors or an empty challenge page, switch to this one.

Q: What does provider do? A: Leave it empty for the automatic ladder. Advanced: unlocker_only, patchright, camoufox, or orchestrator to force a path.


Input reference

For developers who want full control:

ParameterTypeDescription
urlsarrayList of URLs to scrape (required)
extractSelectorsobjectCSS selectors for specific fields, e.g. {"title": "h1", "price": ".price"}
outputFormatstringhtml, text, or both (default: both)
waitForSelectorstringCSS selector that must appear before extraction completes
maxConcurrencyintegerParallel pages, 1-5 (default: 1)
pageTimeoutintegerPage load timeout in seconds, 30-300 (default: 90)
proxyCountrystringOptional ISO country code for egress / Unlocker geo (e.g. us)
proxyGroupstringOptional hint only (auto / RESIDENTIAL / …); worker owns egress
providerstringOptional force: unlocker_only, patchright, camoufox, orchestrator
cookiesarrayOptional Playwright-style cookies forwarded to the browser path
headersobjectOptional extra HTTP headers
gotoWaitUntilstringBrowser waitUntil: commit / domcontentloaded / load / networkidle
blockResourcesbooleanBlock images/fonts/media on the browser path (default: true)

Full output schema is available in the Dataset tab.


All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss