Custom Web Scrapers Aren't Dying
August 6, 2026
I was building a quick workaround, a local CLI engine paired with a lightweight browser extension, to solve my own immediate headache in researching payment gateway providers. It took a process that used to burn 4 to 6 hours down to about 30 minutes.
graph TD
A[Traditional Manual Research] -->|4-6 Hours| B(Inefficient)
C[Local Extension + CLI Tool] -->|30 Mins| D(Better)
E[Hybrid Agent Pipeline] -->|Automated| F(Autonomous Engine)
Is 30 minutes per audit better than 6 hours? Absolutely. Is it a fully autonomous, production-ready pipeline? Not quite.
When you still have to navigate pages, click extension buttons, trigger CLI tasks, and review LLM outputs, you are still in the loop. Yet, this small project raised a bigger question about where web extraction is actually heading.
Web scraping is not disappearing as agents evolve, it is becoming the adaptive, self-healing infrastructure layer that AI systems rely on to read the open web.
1. The Backstory
Evaluating payment gateways and MoR platforms for a individual merchant is infuriating. The information that actually matters, like partner bank fund freeze rights, unlisted cross-border surcharges, and mandatory arbitration clauses, is buried deep inside dynamic legal disclosures and API documentation.
At first, I gathered everything manually: reading ToS documents, checking forum and review signals, capturing evidence on Figma boards, and writing manual summaries. It produced clean, high-trust data, but spending 4 to 6 hours per vendor was economically absurd for a side project.
Naturally, I tried automating the pipeline using headless scrapers like Playwright and SeleniumBase paired with extraction libraries like Trafilatura. That immediately hit a wall:
- Enterprise edge networks block headless runtimes using CDP detection, TLS JA4 fingerprints, WebGL noise, and HTTP/2 pseudo-header ordering.
- Dynamic DOM trees bleed noise into the extraction, wasting context tokens on dynamic navigation bars, footers, and cookie banners.
To bypass anti-bot blocks without spinning up expensive residential proxy networks or cloud browsers, I built a client-assisted pipeline:
-
Pagemark Web Extension: A browser extension using
@mozilla/readabilityandturndowninsidepagemark-core. Since it runs inside a real browser session, anti-bot defenses are bypassed naturally. It converts raw HTML into normalized Markdown with custom table formatting and heading maps. -
Audit Engine CLI: A local TypeScript CLI that ingests raw Markdown drops from a staging folder (
temp/), provisions files into a version-controlledcontent/submodule, uploads vendor logo assets to PocketBase, and logs records to a custom HTTP API running onaudit.rafifmsn.com.

2. The Audit Engine
B2B fintech vendors routinely update pricing tiers, adjust partner bank routing, and silently modify arbitration terms without sending email notices. A static review becomes outdated fast. Saving dated snapshots creates an immutable historical ledger of a provider’s policies over time.

Furthermore, compiling 1.3M to 2.0M+ characters of dense terms across subsidiary disclosures into a unified context window surfaces hidden operational risks that human reviewers routinely miss.

To enforce these point-in-time snapshots, the local engine automates file structure and processing workflows across two stage-gated phases to prevent bad inputs from hitting production:
├── content/ <-- Git Submodule (audit datasets)
│ └── <subcategory-slug>/ <-- e.g., payment-gateways
│ └── <vendor-slug>/ <-- e.g., stripe, mercury
│ ├── mapper.json <-- Vendor metadata map
│ ├── [slug].* <-- Logo asset (cloud)
│ └── <YYYY-MM-DD>/ <-- Dated snapshot directory
│ ├── analysis.md <-- Curated due diligence report
│ ├── summary.md <-- Key takeaways
│ ├── logs.json <-- Ingestion execution logs
│ ├── processed/ <-- Raw markdown & PDFs
│ └── merged/ <-- Batch-merged LLM context
│
├── temp/ <-- Staging drop zone
└── src/ <-- CLI TypeScript source code
We can then run the ingestion and sync workflows through the CLI tasks:
# Phase 1: Provision raw files from temp/ and auto-merge (specify N files)
npm run process -- --category payment-gateways --slug stripe --date 2026-08-01 [--merge N] [--fresh]
# Phase 2: Commit LLM-synthesized analysis.md and summary.md to cloud databases
npm run process -- --category payment-gateways --slug stripe --date 2026-08-01 [--rewrite] [--sync]
# Push version-controlled content submodule to GitHub
npm run push -- -m "Publish stripe snapshot 2026-08-01" [--force]
3. Two Parallel Layers of the Web
Tools like MCP, edge Markdown rendering, and x402 payment rails make machine-to-machine integration vastly better, but they operate on a completely different domain than web extraction. A platform might expose an MCP server to let an agent execute actions in its product, but it is not going to build a dedicated API just so a third party can audit its public terms of service.
| Native Machine Layer | Adaptive Extraction Layer |
|---|---|
| Structured MCP JSON-RPC Schemas | Dynamic DOM & JS Hydration |
| Opt-in Edge Markdown (Cloudflare) | Anti-Bot Defense Bypasses |
| Monetized API Rails (x402) | Unstructured Legal Disclosures |
| Open Data Publishers | Protected, Gated, or Legacy Web |
3.1 Economics of an Agentic Browsing
Some advocate letting autonomous AI agents drive headless browsers, solve visual challenges, and extract content on the fly. In practice, running dedicated agent instances to blindly navigate dynamic web pages for every query is wildly expensive and slow.
High-volume scraping services aren’t disappearing under this model. Instead, they are deploying swarms of background agents internally to continuously update DOM selectors, test proxy channels, and repair broken extraction pipelines. They handle the messy work behind the scenes, offering fast and cheap data endpoints to upstream LLMs. AI agents don’t replace scraping, they make scraping engines more resilient and self-healing.
3.2 Protocols Don’t Serve Research Targets
MCP was built to expose application state, databases, and local tools directly to LLMs over standard JSON-RPC schemas. It is a communication interface for systems that want to be queried by agents.
Payment gateways, financial institutions, and enterprise SaaS platforms have zero commercial incentive to stand up an MCP endpoint or render clean edge Markdown for their legal disclaimers, fee schedules, or sub-processor lists. They publish those pages for human regulatory compliance, not machine indexing. Expecting every website to expose native MCP resources is like assuming every web company would publish clean, fully open APIs for their entire frontend business logic. It won’t happen.
3.3 Monetization Rails Don’t Solve Extraction
Protocols like x402 allow web endpoints to request micro-payments in stablecoins before yielding data. This is great for monetized APIs and premium data publishers, but public legal agreements, fee tables, and compliance disclosures will never be locked behind micro-payment paywalls. These documents must remain publicly accessible by law, which means they will always live on standard web pages that require robust extraction tools.
4. A Bifurcated Web Architecture
Instead of web scraping getting replaced, we are seeing the web split into two distinct tiers:
graph LR
A["Raw Web Content & Disclos"] --> B["Native Machine Rails<br/>(MCP, Edge MD, x402)"]
A --> C["Adaptive Extraction Engines<br/>(Parallel Scraping)"]
B --> D["Long-Context LLM Analysis"]
C --> D
4.1 Native Machine Layer
Sites that actively want AI agents to interact with them will adopt MCP servers, Cloudflare Markdown rendering, and x402 monetization. This handles structured workflows like placing orders, querying internal databases, or paying for live API access.
4.2 Adaptive Extraction Layer
For everything else, including public disclosures, competitive intelligence, and un-structured documentation, scraping remains the only viable path. The difference today is that scraping pipelines are getting smarter. Rather than relying on rigid CSS selectors, tools use local extensions, lightweight HTML-to-Markdown transformers, and self-healing parser models to extract clean text efficiently.
4.3 Direct Long-Context Processing
In the past, scraping required complex intermediate systems to handle chunking, vector storage, and retrieval pipelines:
graph LR
A["Scrape HTML"] --> B["Clean DOM"]
B --> C["Chunk Text into 512-Token<br/>Blocks"]
C --> D["Compute Vector<br/>Embeddings"]
D --> E["Perform Hybrid BM25 /<br/>Cosine Retrieval"]
E --> F["Feed Top-k Snippets to LLM"]
Now, once clean text is extracted via extensions or adaptive scrapers, we can skip complex vector chunking and feed entire document sets directly into long-context windows:
graph LR
A["Agent"] --> B["Negotiation<br/>(MCP / Edge API)"]
B --> C["Consolidated Payload"]
C --> D["Native 2M+ Token Window"]
D --> E["Autonomous Reasoning"]
Passing complete legal disclosures directly to a long-context model avoids the data loss inherent to vector chunking, giving us high-signal research without heavy infrastructure overhead.
5. Conclusion
My local CLI engine and browser extension (pagemark) started as 15-minute hacks to solve an inefficiency issue. They reduced my research time from 4 hours to 30 minutes.
Building them reinforced an important lesson: custom scrapers, browser extensions, and local client tools aren’t simply temporary workarounds. They are practical adaptors that bridge the gap between a web built for human eyes and models that need clean, structured context.
Protocols like MCP and x402 will thrive where machine-native interaction is mutually beneficial. For everything else across the open web, scraping engines will continue to adapt, evolve, and power the AI models running above them.
![]()
![]()
P.S. If you want to check out the source code for pagemark-core, the pagemark extension (Chrome & Firefox), the rmsn-audit-engine CLI, the rmsn-audit-content snapshots, or the project blueprint, it’s available here.