firecrawl-search
firecrawl/cli
Web search with full page content extraction—find articles, research topics, and discover sources beyond snippets.
What is firecrawl-search?
Search the web and optionally extract full page content from results as markdown. Use this when you need to find pages, answer questions, or discover sources—it goes beyond Claude's built-in search by returning structured JSON with optional full-page scraping.
- Search the web with filters for source type (web, images, news), time range, location, and category
- Optionally scrape full page content from search results in markdown format
- Return results as structured JSON with URLs, titles, and metadata
- Filter by time-based search (past hour, day, week, month, year)
- Support location and country-specific search parameters
- Integrate with feedback system to refund credits and improve search quality
How to install firecrawl-search
npx skills add null --skill firecrawl-search- Firecrawl CLI installed (npx firecrawl)
- Valid Firecrawl API key configured
- Output directory .firecrawl/ for storing results
How to use firecrawl-search
- 1.Run a basic search: firecrawl search "your query" -o .firecrawl/result.json --json
- 2.Optionally add --scrape to extract full page content from each result
- 3.Use filters like --sources news, --tbs qdr:d, --limit <n>, or --country <code> as needed
- 4.Extract data from results using jq: jq -r '.data.web[].url' .firecrawl/result.json
- 5.Send feedback within 2 minutes using firecrawl search-feedback <id> to refund 1 credit and improve quality
Use cases
- Find recent news articles on a topic using --sources news and --tbs qdr:d filters
- Research a subject by searching and scraping full content from top results to avoid re-fetching
- Discover authoritative sources and URLs before deciding which pages to scrape in detail
- Look up information across multiple sources when you don't have a specific URL yet
- Filter search results by category (GitHub, research papers, PDFs) for specialized queries
- Researchers and analysts who need to find and extract information from multiple sources
- Developers building workflows that start with search before scraping specific pages
- Anyone needing web search capabilities beyond built-in tools with full-page content access
- Teams conducting competitive analysis or monitoring news on specific topics
firecrawl-search FAQ
No. Use the --scrape flag during search to fetch full content for each result. This saves credits and avoids redundant fetches.
Send search-feedback with a rating (good/partial/bad) and substantive content (valuable-sources or missing-content) within ~2 minutes of the search. The first feedback per search refunds 1 credit.
firecrawl-search finds pages and returns results; firecrawl-scrape extracts content from a specific URL you already have. Use search first when you don't know which pages to target.
Yes. Use --tbs qdr:h|d|w|m|y for time ranges, --location for location context, and --country <code> for country-specific results.
Use the naming convention .firecrawl/search-{query}.json or .firecrawl/search-{query}-scraped.json to keep results organized and avoid context window bloat.
Full instructions (SKILL.md)
Source of truth, from firecrawl/cli.
name: firecrawl-search description: | Web 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. allowed-tools:
- Bash(firecrawl *)
- Bash(npx firecrawl *)
firecrawl search
Web search with optional content scraping. Returns search results as JSON, optionally with full page content.
When to use
- You don't have a specific URL yet
- You need to find pages, answer questions, or discover sources
- First step in the workflow escalation pattern: search → scrape → map → crawl → interact
Quick start
# Basic search
firecrawl search "your query" -o .firecrawl/result.json --json
# Search and scrape full page content from results
firecrawl search "your query" --scrape -o .firecrawl/scraped.json --json
# News from the past day
firecrawl search "your query" --sources news --tbs qdr:d -o .firecrawl/news.json --json
Options
| Option | Description |
|---|---|
--limit <n> | Max number of results |
--sources <web,images,news> | Source types to search |
--categories <github,research,pdf> | Filter by category |
--tbs <qdr:h|d|w|m|y> | Time-based search filter |
--location | Location for search results |
--country <code> | Country code for search |
--scrape | Also scrape full page content for each result |
--scrape-formats | Formats when scraping (default: markdown) |
-o, --output <path> | Output file path |
--json | Output as JSON |
Tips
--scrapefetches full content — don't re-scrape URLs from search results. This saves credits and avoids redundant fetches.- Always write results to
.firecrawl/with-oto avoid context window bloat. - Use
jqto extract URLs or titles:jq -r '.data.web[].url' .firecrawl/search.json - Naming convention:
.firecrawl/search-{query}.jsonor.firecrawl/search-{query}-scraped.json
Send feedback after every search (refunds 1 credit)
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.
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.)
Rules to know before you call this:
- Time window: must be sent within ~2 minutes of the search. Late feedback is rejected.
--missing-contentis 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.- Substantive content required (zero-effort feedback is rejected with HTTP 400):
good→ must include at least one--valuable-sourcesentry.partial→ must include--valuable-sourcesor--missing-content.bad→ must include--missing-contentor--query-suggestions.
- 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. WhendailyCapReached: true, stop callingsearch-feedbackfor the rest of the UTC day — it won't refund anything and you're wasting bandwidth. - Idempotent: re-submitting for the same search id returns success but no extra refund.
--silent &is the right pattern — exit code 0 even on failure, so a rejected/expired call never crashes your pipeline.
Read the search response's id:
SEARCH_ID=$(jq -r '.id' .firecrawl/search-react-hooks.json)
Then send feedback. Pick the rating that matches what actually happened:
# Results were useful, with notes on what was still missing
firecrawl search-feedback "$SEARCH_ID" \
--rating good \
--valuable-sources '[{"url":"https://react.dev/reference/react/hooks","reason":"Most authoritative"}]' \
--missing-content '[
{"topic":"useDeferredValue","description":"No example of useDeferredValue with Suspense"},
{"topic":"useTransition","description":"No coverage of useTransition for routing"}
]' \
--query-suggestions "Boost react.dev for queries about react hooks" \
--silent &
# Results were partially useful — multiple missing topics, one entry per topic
firecrawl search-feedback "$SEARCH_ID" \
--rating partial \
--missing-content '[
{"topic":"useDeferredValue"},
{"topic":"useTransition","description":"Need React 18+ examples"},
{"topic":"Server Components hooks"}
]' \
--silent &
# Quick form — repeat --missing-content or use comma-separated topics
firecrawl search-feedback "$SEARCH_ID" \
--rating bad \
--missing-content "official api reference: missing v2 endpoints" \
--missing-content "code examples in python" \
--silent &
--missing-content accepts:
- JSON array of
{topic, description?}objects (richest, preferred) "topic: description"strings (shorthand)- Plain
"topic1, topic2, topic3"(when you only have topic names) - Repeated
--missing-contentflags
--silent suppresses output and & runs it in the background so feedback never blocks you.
See also
- firecrawl-scrape — scrape a specific URL
- firecrawl-map — discover URLs within a site
- firecrawl-crawl — bulk extract from a site
Related skills
More from firecrawl/cli and the wider catalog.
firecrawl
Search, scrape, and interact with the web via Firecrawl CLI—real-time content extraction and monitoring.
firecrawl-scrape
Extract clean markdown from any URL, including JavaScript-rendered pages.
firecrawl-crawl
Bulk extract content from entire websites or site sections with depth and path filtering.
firecrawl-agent
AI-powered autonomous data extraction from complex websites, returning structured JSON.
firecrawl-map
Discover and list all URLs on a website with optional search filtering.
firecrawl-download
Download entire websites as local markdown, screenshots, or multiple formats organized in directories.