crw-search — web search via crw's own search backend
SkillSearchLets your agent search the web and get back titles, URLs, and descriptions for any question or topic.
Use crw-search — web search via crw's own search backend in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add crw-search — web search via crw's own search backend and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the crw-search skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Search the web with fastCRW and get titles, URLs, and descriptions. Use when you have a question or topic but not a URL, "search for", "find pages about", "look up", "what is", "who is", "latest news on", "find docs for". Own search backend: self-hosted, no API key, no per-query cost, high recall v
What this skill tells your AI
The instructions your AI receives, as published by us/crw in skills/crw-search/SKILL.md and read by ahel’s review.
When to use
- You have a question or topic, not a URL. Get candidate URLs first, then scrape the one that looks right.
- Step 1 in the crw ladder: most searches should end at step 2 (crw-scrape) — pick the best result URL and scrape it for full content.
- Token-heavy context? Pipe through a subprocess filter instead of dumping raw JSON. See crw-dynamic-search.
- The search backend is self-hosted and free — no API key, no per-query billing, no usage cap. Queries never leave your infrastructure in embedded/local mode.
Quick start
CLI (binary on PATH):
crw search "rust async http client" # text output
crw search "site:docs.rs tokio" --json --fields title,url,snippet --limit 5
crw search "CVE-2024-1234" --category news --time-range week
crw search "climate policy 2025" --json -o .crw/results.json
crw search "rust crates" --language en --limit 20
MCP (inside an agent harness):
crw_search(query="rust async http client", limit=5, lang="en")
crw_search(query="latest CVE nginx", tbs="qdr:w", categories="news")
crw_search(query="openai pricing", scrapeOptions={"formats": ["markdown"]})
REST (drop-in for Firecrawl SDKs — just swap the base URL):
curl -X POST "$CRW_API_URL/v1/search" -H "Authorization: Bearer $CRW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"query":"rust async http","limit":5,"lang":"en"}'
Options
| Need | CLI flag | MCP / REST field |
|---|---|---|
| Result count | -l/--limit N (default 10) | limit (default 5) |
| JSON output | --json or --format json | — (always JSON) |
| Field projection | --fields title,url,snippet | — |
| Output to file | -o FILE | — |
| Filter by category | --category news|images|videos|general|… | categories |
| Language | --language en | lang |
| Time filter | --time-range day|week|month|year | tbs: qdr:h|qdr:d|qdr:w|qdr:m|qdr:y |
| Safe search | --safesearch 0|1|2 | — |
| Custom search backend | --searxng-url URL / $CRW_SEARXNG_URL | — |
| Group by source | — | sources: ["web","news","images"] |
| Scrape results inline | — (use crw scrape separately) | scrapeOptions: {formats:["markdown"]} |
--fields available values: title, url, description, snippet,
position, score, category. snippet is an alias for description.
A note on result scores
The search backend is a meta-search aggregator — it merges results from
multiple engines (Google, Bing, DuckDuckGo, etc.) and the score field
reflects internal engine weighting, not a universal relevance measure. Do not
rely on score for ranking or filtering. Use position (1-based rank) or
result order instead — position 1 is the most relevant result surfaced.
Tips
- No results / 403? The search backend needs JSON output enabled in its
config. Run
crw setup --localto spin up a pre-configured sidecar automatically. Public instances usually block JSON with 403/429. --fieldssaves context.--json --fields title,url,snippet --limit 5is one call; piping tojqis two. Prefer the flag.- Inline scraping via MCP. Pass
scrapeOptions: {formats: ["markdown"]}to get page content alongside search results in one round-trip. There is no--scrapeCLI flag — use the MCP/REST path for this. - Time-sensitive queries. Use
--time-range week(CLI) ortbs: "qdr:w"(MCP/REST) for news, CVEs, releases, or any freshness-sensitive topic. - After search, scrape the winner.
crw search "…"returns candidates;crw scrape "<url>"gets the full content. Don't try to read content from search snippets alone. - Write large result sets to
.crw/. Never stream a 20-result JSON blob to stdout into context. Use-o .crw/results.jsonthenjq/grep.
See also
- crw-scrape — scrape the URL you found
- crw-dynamic-search — filter output in a subprocess to save context (use this on token-heavy tasks)
- crw — hub skill with the full workflow ladder
Signals
- GitHub stars
- 1k
- Forks
- 88
- Last commit
- Sep 2026
ahel review
K2info
exfiltration
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
crw-search- Source
- github.com/us/crw