HARPA AI
by @alxsharuk
Automate web browsers, scrape pages, search the web, and run AI prompts on live websites via HARPA AI Grid REST API
clawhub install harpa-aiπ About This Skill
name: harpa-grid description: Automate web browsers, scrape pages, search the web, and run AI prompts on live websites via HARPA AI Grid REST API user-invocable: true homepage: https://harpa.ai/grid/web-automation metadata: {"openclaw":{"emoji":"π","requires":{"anyBins":["curl","wget"],"env":["HARPA_API_KEY"]},"primaryEnv":"HARPA_API_KEY","homepage":"https://harpa.ai/grid/web-automation","skillKey":"harpa-grid"}}
HARPA Grid β Browser Automation API
HARPA Grid lets you orchestrate real web browsers remotely. You can scrape pages, search the web, run built-in or custom AI commands, and send AI prompts with full page context β all through a single REST endpoint.
Prerequisites
The user must have:
1. HARPA AI Chrome Extension installed from https://harpa.ai
2. At least one active Node β a browser with HARPA running (configured in the extension's AUTOMATE tab)
3. A HARPA API key β obtained from the HARPA extension AUTOMATE tab. The key is provided as the HARPA_API_KEY environment variable.
If the user hasn't set up HARPA yet, direct them to: https://harpa.ai/grid/browser-automation-node-setup
API Reference
Endpoint: POST https://api.harpa.ai/api/v1/grid
Auth: Authorization: Bearer $HARPA_API_KEY
Content-Type: application/json
Full reference: https://harpa.ai/grid/grid-rest-api-reference
Actions
1. Scrape a Web Page
Extract full page content (as markdown) or specific elements via CSS/XPath/text selectors.
Full page scrape:
curl -s -X POST https://api.harpa.ai/api/v1/grid \
-H "Authorization: Bearer $HARPA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "scrape",
"url": "https://example.com",
"timeout": 15000
}'
Targeted element scrape (grab):
curl -s -X POST https://api.harpa.ai/api/v1/grid \
-H "Authorization: Bearer $HARPA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "scrape",
"url": "https://example.com/products",
"grab": [
{
"selector": ".product-title",
"selectorType": "css",
"at": "all",
"take": "innerText",
"label": "titles"
},
{
"selector": ".product-price",
"selectorType": "css",
"at": "all",
"take": "innerText",
"label": "prices"
}
],
"timeout": 15000
}'
Grab fields:
| Field | Required | Default | Values |
|-------|----------|---------|--------|
| selector | yes | β | CSS (.class, #id), XPath (//h2), or text content |
| selectorType | no | auto | auto, css, xpath, text |
| at | no | first | all, first, last, or a number |
| take | no | innerText | innerText, textContent, innerHTML, outerHTML, href, value, id, className, attributes, styles, [attrName], (styleName) |
| label | no | data | Custom label for extracted data |
2. Search the Web (SERP)
Perform a web search. Supports operators like site:, intitle:.
curl -s -X POST https://api.harpa.ai/api/v1/grid \
-H "Authorization: Bearer $HARPA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "serp",
"query": "OpenClaw AI agent framework",
"timeout": 15000
}'
3. Run an AI Command
Execute one of 100+ built-in HARPA commands or a custom automation on a target page.
curl -s -X POST https://api.harpa.ai/api/v1/grid \
-H "Authorization: Bearer $HARPA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "command",
"url": "https://example.com/article",
"name": "Extract data",
"inputs": "List all headings with their word counts",
"connection": "HARPA AI",
"resultParam": "message",
"timeout": 30000
}'
name β command name (e.g. "Summary", "Extract data", or any custom command)inputs β pre-filled user inputs for multi-step commandsresultParam β HARPA parameter to return as result (default: "message")connection β AI model to use (e.g. "HARPA AI", "gpt-4o", "claude-3.5-sonnet")4. Run an AI Prompt
Send a custom AI prompt with page context. Use {{page}} to inject the page content.
curl -s -X POST https://api.harpa.ai/api/v1/grid \
-H "Authorization: Bearer $HARPA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "prompt",
"url": "https://example.com",
"prompt": "Analyze the current page and extract all contact information. Webpage: {{page}}",
"connection": "CHAT AUTO",
"timeout": 30000
}'
Common Parameters
| Parameter | Required | Default | Description |
|-----------|----------|---------|-------------|
| action | yes | β | scrape, serp, command, or prompt |
| url | no | β | Target page URL (ignored by serp) |
| node | no | β | Node ID ("r2d2"), multiple ("r2d2 c3po"), first N ("5"), or all ("*") |
| timeout | no | 300000 | Max wait time in ms (max 5 minutes) |
| resultsWebhook | no | β | URL to POST results to asynchronously (retained 30 days) |
| connection | no | β | AI model for command/prompt actions |
Node Targeting
node to use the default node"node": "mynode" β target a specific node by ID"node": "node1 node2" β target multiple nodes"node": "3" β use first 3 available nodes"node": "*" β broadcast to all nodesAsync Results via Webhook
Set resultsWebhook to receive results asynchronously. The action stays alive for up to 30 days, useful when target nodes are temporarily offline.
{
"action": "scrape",
"url": "https://example.com",
"resultsWebhook": "https://your-server.com/webhook",
"timeout": 15000
}
Tips
grab array with multiple selectors to extract structured data in a single request.timeout (max 300000ms / 5 min) or use resultsWebhook.{{page}} variable in prompts injects the full page content β use it to give AI context about the current page.βοΈ Configuration
The user must have:
1. HARPA AI Chrome Extension installed from https://harpa.ai
2. At least one active Node β a browser with HARPA running (configured in the extension's AUTOMATE tab)
3. A HARPA API key β obtained from the HARPA extension AUTOMATE tab. The key is provided as the HARPA_API_KEY environment variable.
If the user hasn't set up HARPA yet, direct them to: https://harpa.ai/grid/browser-automation-node-setup
π Tips & Best Practices
grab array with multiple selectors to extract structured data in a single request.timeout (max 300000ms / 5 min) or use resultsWebhook.{{page}} variable in prompts injects the full page content β use it to give AI context about the current page.