OpenClaw web scraping guide: Build AI scrapers with residential proxies

AI agents are changing how people pull data off the web. Instead of writing brittle CSS selectors, you describe what you want and let an agent figure out how to get it. OpenClaw is one of the frameworks driving that shift.
This guide walks through web scraping with OpenClaw from a clean install to a production-ready scraper. You’ll learn what OpenClaw actually is, how its scraping pipeline works under the hood, and why the proxy layer underneath your requests matters just as much as the code on top of it.
By the end, you’ll have a working OpenClaw coding skill web scraping product listing pipeline you can point at real e-commerce pages.
What is OpenClaw?
OpenClaw is an open-source AI agent framework. Think of it as a gateway that connects a language model to the outside world: your browser, your file system, your messaging apps, and any tool you register as a “skill”.
At its core, OpenClaw has four pieces:
- Gateway — the daemon that runs continuously and routes messages between channels, the model, and tools
- Brain — the LLM provider you connect (Anthropic, OpenAI, Google, or a local model)
- Hands — the tools the agent can call: browser control, shell commands, file access, HTTP requests
- Skills — markdown instruction files (SKILL.md) that teach the agent how and when to use a tool for a specific task
Of the four, OpenClaw web scraping skills are the piece that’s most important for this guide.
An OpenClaw Coding Skill is just a folder with a SKILL.md file and, usually, a supporting script. When you ask the agent to do something that matches a skill’s description, it reads the instructions and follows them.
This is what makes web scraping with OpenClaw feel fundamentally different from Playwright or Selenium. Those are libraries you import into your own script and drive line by line. OpenClaw flips the relationship: the agent reasons about the page using an accessibility tree, decides how to navigate, and calls your skill’s code when it needs deterministic, repeatable extraction logic.
You still write real code, but the agent decides when and how to run it.
| Функции | OpenClaw | Драматург | Селен |
| Control model | Agent decides actions from natural-language goals | You script every action explicitly | You script every action explicitly |
| Настройка | CLI + onboarding wizard, skills registry | npm/pip package | Language-specific bindings |
| Adaptivity | Reasons about page structure, adapts to layout changes | Breaks when selectors change | Breaks when selectors change |
| Extensibility | Skills (SKILL.md + scripts) | Custom scripts | Custom scripts |
| Лучшее для | Agent-driven extraction, messy or changing sites | Fixed, well-understood sites | Fixed, well-understood sites |
| Proxy handling | Configured per-skill or per-agent | Configured per-context | Configured per-driver |
This kind of adaptability is the whole appeal of an OpenClaw web scraping framework over a fixed script. The benefit of this architecture is resilience. A traditional scraper that hardcodes .product-title breaks the moment a site redesigns its markup.
An OpenClaw web scraping framework built around accessibility trees and agent reasoning tends to survive small layout changes.
How OpenClaw web scraping works
Before touching a terminal, it helps to see the full request path. A typical OpenClaw web scraping job looks like this:

Walking through each step:
User request
You tell the agent what you want in plain language: “scrape the product listings on this page and give me name, price, and rating”
OpenClaw agent
The Gateway routes this to your configured model, which matches the request against installed skills and picks the right one.
Browser / Fetch tool
The skill’s script runs, either as a lightweight HTTP fetch or, for JavaScript-heavy pages, a full browser session.
NodeMaven резидентский прокси
Every outbound request is routed through a residential IP instead of your server’s own address, so the target site sees ordinary consumer traffic.
Target website
The request reaches the site looking like it came from a real visitor in a real location.
Structured data
The response is parsed, validated against your schema, and handed back to the agent as JSON.
That proxy hop in the middle is easy to skip in a demo and expensive to skip in production. We’ll get to why in the next section.
Why residential proxies matter
Scraping without a proxy strategy works right up until it doesn’t. Here’s what you’re actually up against:
- IP reputation. Data centers use a narrow range of known IP blocks. Anti-bot systems maintain lists of these and block or challenge them on sight.
- Ограничения скорости. Even a “clean” IP gets throttled once request volume looks non-human.
- CAPTCHA. Suspicious traffic patterns trigger challenge pages that a script can’t solve on its own.
- Рендеринг JavaScript. Many sites only reveal real content after client-side scripts run, which single-request scrapers never trigger.
- Browser fingerprinting. TLS handshakes, header order, and canvas fingerprints all feed into a trust score for your connection.
- Geo restrictions. Some content only renders for visitors in a specific country, region, or even city.
- Session persistence. Logged-in scraping and multi-step checkouts break if your IP changes mid-session.
Different proxy types solve different pieces of that list:
| Тип прокси | IP-источник | Стабильность | Лучшее для |
| Центр обработки данных | Cloud hosting providers | High speed, low trust | Non-sensitive, low-block-risk targets |
| Резидентские | Real household devices | Slower, high trust | E-commerce, SERPs, social platforms |
| Интернет-провайдер | Registered to an ISP, hosted in a data center | Datacenter speed, residential trust | Logged-in sessions, long-running jobs |
| мобильные | Carrier networks (3G/4G/5G) | Highest trust, variable speed | Extremely aggressive anti-bot targets |
For most OpenClaw scraping tool setups, this is the breakdown:
- E-commerce scraping → residential, rotating per request, for broad catalog pulls
- Search engines → residential, rotating, since SERPs fingerprint aggressively
- ИИ-агенты making autonomous requests → residential with a quality filter, since agents can’t manually solve a CAPTCHA mid-run
- Социальные сети → residential or mobile, sticky sessions, since these platforms track session continuity closely
- Logged-in sessions → ISP or sticky residential, since the IP needs to hold steady for the length of the session
Вот где NodeMaven fits into an OpenClaw for web scraping setup.
It gives you residential and mobile proxies from the same dashboard, with automatic IP rotation for high-volume jobs.
The IP pool sits above 30 million residential addresses across 190+ countries and 1,400+ cities, and every IP passes a quality filter that keeps the clean rate above 95%.
Installing OpenClaw
Requirements
- Node.js 22.19+ (Node 24 is recommended) — Node 23 is not supported
- Python 3.10+ for the scraper scripts in this guide
- An API key from a model provider: Anthropic, OpenAI, Google, or a local model endpoint
- macOS, Linux, or Windows (Windows users should run OpenClaw under WSL2)
Installation
The fastest path is the hosted installer script. It detects your OS, installs Node if it’s missing, installs OpenClaw, and launches onboarding automatically:
On Windows (PowerShell):
If you already have a supported Node version and prefer to manage the install yourself:
Tip: If sharp fails to build during install (common on macOS with a Homebrew libvips already installed), force prebuilt binaries instead of compiling from source:
openclaw onboard –install-daemon does three things:
- Connects your model provider — you paste in an API key when prompted
- Installs the Gateway as a background service (systemd on Linux, launchd on macOS) so it survives reboots
- Walks you through optional channel and skill setup, which you can safely skip for now with openclaw configure available later
Common mistake: Running the plain openclaw onboard без –install-daemon leaves the Gateway running only in your current terminal session. Close the terminal and the agent stops. Always add the flag if you want OpenClaw to keep running.
Verification
openclaw status confirms the Gateway daemon is up and listening, normally on port 18789. openclaw doctor checks for common misconfiguration: missing API keys, blocked ports, or risky permission settings. If either command comes back with errors, fix those before moving on, since every skill and scraper below depends on a healthy Gateway.
Предупреждение: Never expose port 18789 on a public-facing server without authentication in front of it.
Configuring OpenClaw for web scraping
OpenClaw’s configuration lives in a single JSON file at ~/.openclaw/openclaw.json, but for scraping work you mostly interact with it through environment variables and skill-level settings, not by hand-editing that file.
Создать .env file inside your skill’s working directory:
Here’s what each variable does:
- ANTHROPIC_API_KEY — authenticates the agent’s model calls; swap for OPENAI_API_KEY or another provider’s variable if you’re using a different model
- OPENCLAW_MODEL — the default model the agent uses; a fast mid-tier model is usually enough for scraping tasks, since you don’t need the most expensive model to decide “click next page”
- NODEMAVEN_USERNAME / NODEMAVEN_PASSWORD — your proxy credentials from the NodeMaven dashboard; the username can also encode country, city, and session parameters directly (for example username-country-us-sid-98213)
- NODEMAVEN_HOST / NODEMAVEN_PORT — NodeMaven’s gateway address; port 8080 is used for HTTP, 1080 for SOCKS5
Skills read secrets through skills.entries.*.env in OpenClaw’s config, which injects them into the skill’s process for that turn only, not into a shared sandbox. That keeps your proxy password out of prompts and logs.
Once your .env is in place, verify the proxy connection independently of OpenClaw before wiring it into a skill:
If that returns an IP address that isn’t your own, the proxy is live and you’re ready to build.
Building your first scraper
Before the full product listing tutorial, let’s build a simpler scraper you can run standalone, outside of any skill wrapper. This version fetches a page through the NodeMaven proxy, parses it, retries on failure, and writes clean JSON to disk.
A quick walkthrough of what each part is doing:
- Imports — запросы handles HTTP, BeautifulSoup parses HTML, python-dotenv loads your .env file so credentials never live in the script itself
- Настройка прокси — PROXY_URL builds a single authenticated proxy string from your NodeMaven credentials, used for both HTTP and HTTPS traffic
- fetch_with_retry — retries failed requests with exponential backoff (2 ** attempt seconds), so a single dropped connection doesn’t kill the whole run
- scrape_page — the actual extraction logic, this is the part you’ll customize per site
- save_json — writes results to disk in a format any downstream tool can consume
Install the dependencies before running it:
This script works standalone, but it’s also exactly the shape of script an OpenClaw skill wraps. That’s the core building block of web scraping with OpenClaw at any scale, and it’s what we’ll wrap into a full skill next.
OpenClaw coding skill (web scraping product listing example)
This is the section that matters most if you’re scraping e-commerce data. We’re going to wrap the scraper above in a proper OpenClaw skill, so the agent can call it whenever you ask it to pull a product listing.
The OpenClaw coding skill (web scraping product listing) pattern below extracts six fields per product: name, цена, наличие, rating, product URL, и image URL, all delivered as JSON.
Start with the folder structure:
SKILL.md needs YAML frontmatter plus instructions the agent follows:
Declaring env in the frontmatter’s metadata.openclaw.requires block matters: if the script references a variable the frontmatter doesn’t declare, ClawHub’s scan flags a metadata mismatch and blocks the skill from publishing. Keep the two in sync.
Now the extraction script itself:
Line by line, the pieces worth calling out:
- Selectors are intentionally loose (.product-card, .product, [data-product]) since real catalog pages rarely agree on class names; adjust these to match your target once you inspect the page
- Every field is optional except name — a missing price or rating shouldn’t crash the whole scrape, it should just come back as null
- try/except inside the loop means one malformed product card doesn’t take down the other forty on the page
- argparse lets the OpenClaw skill call this script directly from the command the agent runs, passing the URL and output path as arguments
Like most OpenClaw web scraping skills, this one installs by dropping the folder into ~/.openclaw/skills/product-scraper/ and restarting the Gateway:
Confirm it loaded correctly:
If product-scraper shows up in that list, ask the agent directly: “Scrape the product listings on https://example-store.com/bestsellers”. It reads the skill, runs the script through your NodeMaven proxy, and reports back what it found. This OpenClaw coding skill setup is the same pattern you’ll reuse for any structured extraction task, just with different selectors.
OpenClaw web scraping examples
Once you have the pattern above working, most other OpenClaw web scraping examples are variations on the same script with different parsing logic. Here are five common ones.
Example 1: News website
Note the word_count field instead of the full article body. Copying full article text raises copyright concerns; extract metadata and summaries, not verbatim content.
Example 2: Documentation
Useful for building a site map of a docs portal before deciding which pages need a deeper scrape.
Example 3: Google Search
Предупреждение: Google’s result markup changes frequently and aggressively rate-limits scripted traffic. Вращающиеся резидентные IP-адреса per request is close to mandatory here, and even then, expect to update selectors regularly.
Example 4: Product pages
Reuse the parse_products function from the previous section, but point it at a single product page instead of a listing, and swap the CSS selectors to match a detail page layout (spec tables, image galleries, and review counts instead of card grids).
Example 5: Blog articles
Good for building a content calendar view of a competitor’s blog without pulling the actual post text.
Лучшие практики
Good habits here save real debugging time later:
- Respect robots.txt — check it before scraping and honor disallowed paths
- Add delays between requests — even a random 1-3 second delay looks less mechanical than a fixed interval
- Build retries into everything — networks fail, proxies occasionally time out, sites throttle; retries with backoff absorb all three
- Cache responses during development — don’t re-fetch the same page ten times while you’re still tuning selectors
- Log everything — status codes, retry counts, and parse failures, so a failed run is debuggable after the fact
- Rotate IPs for volume, stick with one IP for sessions — match the proxy behavior to the task, not the other way around
- Keep structured output consistent — a stable JSON schema makes downstream processing far simpler
- Monitor success rate over time — a slowly dropping success rate is usually the first sign a site changed its defenses
Устранение неисправностей
Most issues follow predictable patterns. Here’s what you’re likely to run into and how to fix it.
| Issue | Причина | Решение |
| 403 Запрещено | IP or fingerprint flagged as a bot | Switch to a residential proxy, rotate IP, check headers match a real browser |
| 429 Слишком много запросов | Превышен лимит запросов | Add delays, reduce concurrency, rotate IPs more aggressively |
| Timeouts | Proxy or target server slow to respond | Увеличить timeout, retry with backoff, check proxy region matches target |
| JavaScript not rendering | Page needs client-side execution | Use OpenClaw’s browser tool instead of a plain HTTP fetch |
| Empty HTML | Bot-detection serving a blank shell page | Verify with a real browser first, check for a JS challenge |
| Blocked IP | Overused or low-reputation address | Switch providers or enable a quality filter on your proxy pool |
| Invalid proxy | Wrong credentials or malformed proxy string | Re-copy credentials from the dashboard, verify with a standalone curl test |
| OpenClaw errors in logs | Misconfigured skill or missing dependency | Беги openclaw doctor и openclaw skills list –eligible |
| Installation errors | PATH issue after npm install | Проверить npm prefix -g is on your $PATH, restart the terminal |
| API errors | Invalid or expired model API key | Re-run openclaw configure and re-enter the key |
Why Use NodeMaven with OpenClaw?
The gap between “works in a demo” and “works every day” almost always comes down to the proxy layer. Here’s how the options actually compare in practice:
| Настройка | What happens |
| No proxy | Your server’s IP gets flagged within hours on any moderately protected site |
| Cheap/shared datacenter proxies | Blocked quickly, since the IP range is already on most anti-bot blocklists |
| Premium residential proxies (generic) | Works, but rotation and session control are often clunky to configure |
| NodeMaven | Automatic Вращение, sticky sessions, 95%+ clean IP quality, and consistent success rates across e-commerce, search, and social targets |
In a real scenario: an OpenClaw scraping tool pulling daily pricing data from a dozen retailers needs a fresh IP per request to avoid pattern detection, while a LinkedIn or account-based workflow needs the opposite, one stable IP held for the length of a session.
NodeMaven’s dashboard lets you switch between rotating and sticky sessions from the same account, across 190+ countries and 1,400+ cities, without juggling separate providers for each use case.
Заключение
OpenClaw gives you an agent-driven way to scrape the web that adapts better than hardcoded selector scripts, and skills make it straightforward to package that logic into something reusable.
But none of it holds up without a proxy layer that keeps your requests looking like ordinary traffic. You now have a complete OpenClaw web scraping coding skill, backed by clean residential IPs, ready to point at real targets.
If you want to test the proxy side of this setup before committing to a plan, NodeMaven’s trial is a low-cost way to see how your specific target site behaves with a real residential IP pool behind it.



