$npx -y skills add firecrawl/cli --skill firecrawl-searchWeb 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 arti
| 1 | # firecrawl search |
| 2 | |
| 3 | Web search with optional content scraping. Returns search results as JSON, optionally with full page content. |
| 4 | |
| 5 | ## When to use |
| 6 | |
| 7 | - You don't have a specific URL yet |
| 8 | - You need to find pages, answer questions, or discover sources |
| 9 | - First step in the [workflow escalation pattern](firecrawl-cli): search → scrape → map → crawl → interact |
| 10 | |
| 11 | ## Quick start |
| 12 | |
| 13 | ```bash |
| 14 | # Basic search |
| 15 | firecrawl search "your query" -o .firecrawl/result.json --json |
| 16 | |
| 17 | # Search and scrape full page content from results |
| 18 | firecrawl search "your query" --scrape -o .firecrawl/scraped.json --json |
| 19 | |
| 20 | # News from the past day |
| 21 | firecrawl search "your query" --sources news --tbs qdr:d -o .firecrawl/news.json --json |
| 22 | ``` |
| 23 | |
| 24 | ## Options |
| 25 | |
| 26 | | Option | Description | |
| 27 | | ------------------------------------ | --------------------------------------------- | |
| 28 | | `--limit <n>` | Max number of results | |
| 29 | | `--sources <web,images,news>` | Source types to search | |
| 30 | | `--categories <github,research,pdf>` | Filter by category | |
| 31 | | `--tbs <qdr:h\|d\|w\|m\|y>` | Time-based search filter | |
| 32 | | `--location` | Location for search results | |
| 33 | | `--country <code>` | Country code for search | |
| 34 | | `--scrape` | Also scrape full page content for each result | |
| 35 | | `--scrape-formats` | Formats when scraping (default: markdown) | |
| 36 | | `-o, --output <path>` | Output file path | |
| 37 | | `--json` | Output as JSON | |
| 38 | |
| 39 | ## Tips |
| 40 | |
| 41 | - **`--scrape` fetches full content** — don't re-scrape URLs from search results. This saves credits and avoids redundant fetches. |
| 42 | - Always write results to `.firecrawl/` with `-o` to avoid context window bloat. |
| 43 | - Use `jq` to extract URLs or titles: `jq -r '.data.web[].url' .firecrawl/search.json` |
| 44 | - Naming convention: `.firecrawl/search-{query}.json` or `.firecrawl/search-{query}-scraped.json` |
| 45 | |
| 46 | ## Send feedback after every search (refunds 1 credit) |
| 47 | |
| 48 | Search 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. |
| 49 | |
| 50 | **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.) |
| 51 | |
| 52 | **Rules to know before you call this:** |
| 53 | |
| 54 | - **Time window:** must be sent within ~2 minutes of the search. Late feedback is rejected. |
| 55 | - **`--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. |
| 56 | - **Substantive content required** (zero-effort feedback is rejected with HTTP 400): |
| 57 | - `good` → must include at least one `--valuable-sources` entry. |
| 58 | - `partial` → must include `--valuable-sources` or `--missing-content`. |
| 59 | - `bad` → must include `--missing-content` or `--query-suggestions`. |
| 60 | - **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. |
| 61 | - **Idempotent:** re-submitting for the same search id returns success but no extra refund. |
| 62 | - **`--silent &`** is the right pattern — exit code 0 even on failure, so a rejected/expired call never crashes your pipeline. |
| 63 | |
| 64 | Read the search response's `id`: |
| 65 | |
| 66 | ```bash |
| 67 | SEARCH_ID=$(jq -r '.id' .firecrawl/search-react-hooks.json) |
| 68 | ``` |
| 69 | |
| 70 | Then send feedback. Pick the rating that matches what |