web-research

|

INSTALLATION
npx skills add https://github.com/merit-systems/agentcash-skills --skill web-research
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

Web Research with x402 APIs

Access Exa (neural search) and Firecrawl (web scraping) through x402-protected endpoints.

Setup

See rules/getting-started.md for installation and wallet setup.

Quick Reference

Task

Endpoint

Price

Best For

Neural search

https://stableenrich.dev/api/exa/search

$0.01

Semantic web search

Find similar

https://stableenrich.dev/api/exa/find-similar

$0.01

Pages similar to a URL

Extract text

https://stableenrich.dev/api/exa/contents

$0.002

Clean text from URLs

Direct answers

https://stableenrich.dev/api/exa/answer

$0.01

Factual Q&A

Scrape page

https://stableenrich.dev/api/firecrawl/scrape

$0.0126

Single page to markdown

Web search

https://stableenrich.dev/api/firecrawl/search

$0.0252

Search with scraping

Crawl website

https://stableenrich.dev/api/cloudflare/crawl

$0.10

Multi-page site crawl

Poll crawl

GET https://stableenrich.dev/api/cloudflare/jobs?token=...

Free

Poll crawl results

When to Use What

Scenario

Tool

General web search

WebSearch (free) or Exa ($0.01)

Semantic/conceptual search

Exa search

Find pages like X

Exa find-similar

Get clean text from URL

Exa contents

Scrape blocked/JS-heavy site

Firecrawl scrape

Search + scrape results

Firecrawl search

Quick fact lookup

Exa answer

Crawl entire site/section

Cloudflare crawl

See rules/when-to-use.md for detailed guidance.

Exa Neural Search

Semantic search that understands meaning, not just keywords:

npx agentcash@latest fetch https://stableenrich.dev/api/exa/search -m POST -b '{

  "query": "startups building AI agents for customer support",

  "numResults": 10,

  "type": "neural"

}'

Options:

  • query - Search query (required)
  • numResults - Number of results (default: 10, max: 25)
  • type - "neural" (semantic) or "keyword" (traditional)
  • includeDomains - Only search these domains
  • excludeDomains - Skip these domains
  • startPublishedDate / endPublishedDate - Date range filter
  • category - Filter by content type: "company", "research paper", "news", "pdf", "github", "tweet", "personal site", "linkedin profile", "financial report"
  • Tip: Use category: "linkedin profile" for people/profile discovery

Returns: List of URLs with titles, snippets, and relevance scores.

Find Similar Pages

Find pages semantically similar to a reference URL:

npx agentcash@latest fetch https://stableenrich.dev/api/exa/find-similar -m POST -b '{

  "url": "https://example.com/article-i-like",

  "numResults": 10

}'

Great for:

  • Finding competitor products
  • Discovering related content
  • Expanding research sources

Extract Text Content

Get clean, structured text from URLs:

npx agentcash@latest fetch https://stableenrich.dev/api/exa/contents -m POST -b '{

  "urls": [

    "https://example.com/article1",

    "https://example.com/article2"

  ]

}'

Options:

  • urls - Array of URLs to extract
  • text - Include full text (default: true)
  • highlights - Include key highlights

Cheapest option ($0.002) when you already have URLs and just need the content.

Direct Answers

Get factual answers to questions:

npx agentcash@latest fetch https://stableenrich.dev/api/exa/answer -m POST -b '{"query": "What is the population of Tokyo?"}'

Returns a direct answer with source citations. Best for:

  • Factual questions
  • Quick lookups
  • Verification of claims

Firecrawl Scrape

Scrape a single page to clean markdown:

npx agentcash@latest fetch https://stableenrich.dev/api/firecrawl/scrape -m POST -b '{"url": "https://example.com/page-to-scrape"}'

Options:

  • url - Page to scrape (required)
  • formats - Output formats: ["markdown", "html", "links"]
  • onlyMainContent - Skip nav/footer/ads (default: true)
  • waitFor - Wait ms for JS to render

Advantages over WebFetch:

  • Handles JavaScript-rendered content
  • Bypasses common blocking
  • Extracts main content only
  • LLM-optimized markdown output

Firecrawl Search

Web search with automatic scraping of results:

npx agentcash@latest fetch https://stableenrich.dev/api/firecrawl/search -m POST -b '{

  "query": "best practices for react server components",

  "limit": 5

}'

Options:

  • query - Search query (required)
  • limit - Number of results (default: 5)
  • scrapeOptions - Options passed to scraper

Returns search results with full scraped content for each.

Cloudflare Website Crawl

Crawl multiple pages from a website with browser rendering. Async two-step pattern.

Step 1: Start the crawl (paid, $0.10)

npx agentcash@latest fetch https://stableenrich.dev/api/cloudflare/crawl -m POST -b '{

  "url": "https://example.com",

  "limit": 10,

  "depth": 1,

  "formats": ["markdown"]

}'

Returns 202 with {"token": "jwt..."}.

Step 2: Poll for results (SIWX, free)

npx agentcash@latest fetch "https://stableenrich.dev/api/cloudflare/jobs?token=JWT_TOKEN"

Poll every 3-5 seconds until complete.

Parameters:

  • url (required) — starting URL
  • limit (default 10, max 25) — max pages
  • depth (default 1, max 3) — max link depth
  • formats["markdown", "html", "json"]
  • render (default false) — execute JavaScript
  • options.includePatterns / excludePatterns — URL wildcards

Good for: crawling docs sites, scraping multiple pages, building sitemaps.

Workflows

Deep Research

  • (Optional) Check balance: npx agentcash@latest balance
  • Search broadly with Exa
  • Find related sources with find-similar
  • Extract content from top sources
  • Synthesize findings
npx agentcash@latest fetch https://stableenrich.dev/api/exa/search -m POST -b '{"query": "AI agents in healthcare 2024", "numResults": 15}'
npx agentcash@latest fetch https://stableenrich.dev/api/exa/find-similar -m POST -b '{"url": "https://best-article-found.com"}'
npx agentcash@latest fetch https://stableenrich.dev/api/exa/contents -m POST -b '{"urls": ["url1", "url2", "url3"]}'

Blocked Site Scraping

  • Try WebFetch first (free)
  • If blocked/empty, use Firecrawl with waitFor for JS-heavy sites
npx agentcash@latest fetch https://stableenrich.dev/api/firecrawl/scrape -m POST -b '{"url": "https://blocked-site.com/article", "waitFor": 3000}'

Cost Optimization

  • Use Exa contents ($0.002) when you already have URLs
  • Use WebSearch/WebFetch first (free) and fall back to x402 endpoints
  • Batch URL extraction - pass multiple URLs to Exa contents
  • Limit results - request only as many as needed
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card