Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Web search with optional full-page content extraction returning real results beyond Claude's built-in WebSearch capability.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
SKILL.md
1---2name: firecrawl-search3description: |4Web search with full page content extraction. Use this skill whenever the user asks to search the web, find articles, research a topic, look something up, find recent news, discover sources, or says "search for", "find me", "look up", "what are people saying about", or "find articles about". Returns real search results with optional full-page markdown — not just snippets. Provides capabilities beyond Claude's built-in WebSearch.5allowed-tools:6- Bash(firecrawl *)7- Bash(npx firecrawl *)8---910# firecrawl search1112Web search with optional content scraping. Returns search results as JSON, optionally with full page content.1314## When to use1516- You don't have a specific URL yet17- You need to find pages, answer questions, or discover sources18- First step in the [workflow escalation pattern](firecrawl-cli): search → scrape → map → crawl → interact1920## Quick start2122```bash23# Basic search24firecrawl search "your query" -o .firecrawl/result.json --json2526# Search and scrape full page content from results27firecrawl search "your query" --scrape -o .firecrawl/scraped.json --json2829# News from the past day30firecrawl search "your query" --sources news --tbs qdr:d -o .firecrawl/news.json --json31```3233## Options3435| Option | Description |36| ------------------------------------ | --------------------------------------------- |37| `--limit <n>` | Max number of results |38| `--sources <web,images,news>` | Source types to search |39| `--categories <github,research,pdf>` | Filter by category |40| `--tbs <qdr:h\|d\|w\|m\|y>` | Time-based search filter |41| `--location` | Location for search results |42| `--country <code>` | Country code for search |43| `--scrape` | Also scrape full page content for each result |44| `--scrape-formats` | Formats when scraping (default: markdown) |45| `-o, --output <path>` | Output file path |46| `--json` | Output as JSON |4748## Tips4950- **`--scrape` fetches full content** — don't re-scrape URLs from search results. This saves credits and avoids redundant fetches.51- Always write results to `.firecrawl/` with `-o` to avoid context window bloat.52- Use `jq` to extract URLs or titles: `jq -r '.data.web[].url' .firecrawl/search.json`53- Naming convention: `.firecrawl/search-{query}.json` or `.firecrawl/search-{query}-scraped.json`5455## Send feedback after every search (refunds 1 credit)5657Search costs 2 credits. After you've actually used the results (or decided they were useless), send structured feedback with `firecrawl search-feedback <id>`. The first feedback per search refunds 1 credit and helps us improve search quality. **Do this once per search**, in the background, after you finish processing the results — it does not block your main task.5859**Opt out:** if `FIRECRAWL_NO_SEARCH_FEEDBACK=1` (or `FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1`) is set, the CLI silently skips the call and never sends anything. Respect that — do not try to work around it. (Team admins can also disable this server-side; the API will return `feedbackErrorCode: "TEAM_OPTED_OUT"` and the CLI will exit 0 silently.)6061**Rules to know before you call this:**6263- **Time window:** must be sent within ~2 minutes of the search. Late feedback is rejected.64- **`--missing-content` is the most important field.** It's a list of _specific pieces_ of content you expected but did not find. One topic per entry — do not pack multiple topics into one string. These aggregate across teams and tell us what to index next.65- **Substantive content required** (zero-effort feedback is rejected with HTTP 400):66- `good` → must include at least one `--valuable-sources` entry.67- `partial` → must include `--valuable-sources` or `--missing-content`.68- `bad` → must include `--missing-content` or `--query-suggestions`.69- **Daily refund cap (per team, per UTC day, default 100 credits).** Once your team has been refunded 100 credits today, further submissions still record feedback but no longer refund credits. The response includes `creditsRefundedToday` / `dailyRefundCap` / `dailyCapReached`. **When `dailyCapReached: true`, stop calling `search-feedback` for the rest of the UTC day** — it won't refund anything and you're wasting bandwidth.70- **Idempotent:** re-submitting for the same search id returns success but no extra refund.71- **`--silent &`** is the right pattern — exit code 0 even on failure, so a rejected/expired call never crashes your pipeline.7273Read the search response's `id`:7475```bash76SEARCH_ID=$(jq -r '.id' .firecrawl/search-react-hooks.json)77```7879Then send feedback. Pick the rating that matches what actually happened:8081```bash82# Results were useful, with notes on what was still missing83firecrawl search-feedback "$SEARCH_ID" \84--rating good \85--valuable-sources '[{"url":"https://react.dev/reference/react/hooks","reason":"Most authoritative"}]' \86--missing-content '[87{"topic":"useDeferredValue","description":"No example of useDeferredValue with Suspense"},88{"topic":"useTransition","description":"No coverage of useTransition for routing"}89]' \90--query-suggestions "Boost react.dev for queries about react hooks" \91--silent &9293# Results were partially useful — multiple missing topics, one entry per topic94firecrawl search-feedback "$SEARCH_ID" \95--rating partial \96--missing-content '[97{"topic":"useDeferredValue"},98{"topic":"useTransition","description":"Need React 18+ examples"},99{"topic":"Server Components hooks"}100]' \101--silent &102103# Quick form — repeat --missing-content or use comma-separated topics104firecrawl search-feedback "$SEARCH_ID" \105--rating bad \106--missing-content "official api reference: missing v2 endpoints" \107--missing-content "code examples in python" \108--silent &109```110111**`--missing-content` accepts:**112113- JSON array of `{topic, description?}` objects (richest, preferred)114- `"topic: description"` strings (shorthand)115- Plain `"topic1, topic2, topic3"` (when you only have topic names)116- Repeated `--missing-content` flags117118`--silent` suppresses output and `&` runs it in the background so feedback never blocks you.119120## See also121122- [firecrawl-scrape](../firecrawl-scrape/SKILL.md) — scrape a specific URL123- [firecrawl-map](../firecrawl-map/SKILL.md) — discover URLs within a site124- [firecrawl-crawl](../firecrawl-crawl/SKILL.md) — bulk extract from a site125