Firecrawl’s search API allows you to perform web searches and optionally scrape the search results in one operation.

  • Choose specific output formats (markdown, HTML, links, screenshots)
  • Search the web with customizable parameters (language, country, etc.)
  • Optionally retrieve content from search results in various formats
  • Control the number of results and set timeouts

For details, see the Search Endpoint API Reference.

Performing a Search with Firecrawl

/search endpoint

Used to perform web searches and optionally retrieve content from the results.

Installation

pip install firecrawl-py

Basic Usage

from firecrawl import FirecrawlApp

# Initialize the client with your API key
app = FirecrawlApp(api_key="fc-YOUR_API_KEY")

# Perform a basic search
search_result = app.search("firecrawl web scraping", limit=5)

# Print the search results
for result in search_result.data:
    print(f"Title: {result['title']}")
    print(f"URL: {result['url']}")
    print(f"Description: {result['description']}") 

Response

SDKs will return the data object directly. cURL will return the complete payload.

{
  "success": true,
  "data": [
    {
      "title": "Firecrawl - The Ultimate Web Scraping API",
      "description": "Firecrawl is a powerful web scraping API that turns any website into clean, structured data for AI and analysis.",
      "url": "https://firecrawl.dev/"
    },
    {
      "title": "Web Scraping with Firecrawl - A Complete Guide",
      "description": "Learn how to use Firecrawl to extract data from websites effortlessly.",
      "url": "https://firecrawl.dev/guides/web-scraping/"
    },
    {
      "title": "Firecrawl Documentation - Getting Started",
      "description": "Official documentation for the Firecrawl web scraping API.",
      "url": "https://docs.firecrawl.dev/"
    }
    // ... more results
  ]
}

Search with Content Scraping

Search and retrieve content from the search results in one operation.

from firecrawl import FirecrawlApp, ScrapeOptions

# Initialize the client with your API key
app = FirecrawlApp(api_key="fc-YOUR_API_KEY")

# Search and scrape content
search_result = app.search(
    "firecrawl web scraping",
    limit=3,
    scrape_options=ScrapeOptions(formats=["markdown", "links"])
)

# Process the results
for result in search_result.data:
    print(f"Title: {result['title']}")
    print(f"URL: {result['url']}")
    print(f"Content: {result['markdown'][:150]}...")  # first 150 chars
    print(f"Links: {', '.join(result['links'][:3])}...")  # first 3 links

Response with Scraped Content

{
  "success": true,
  "data": [
    {
      "title": "Firecrawl - The Ultimate Web Scraping API",
      "description": "Firecrawl is a powerful web scraping API that turns any website into clean, structured data for AI and analysis.",
      "url": "https://firecrawl.dev/",
      "markdown": "# Firecrawl\n\nThe Ultimate Web Scraping API\n\n## Turn any website into clean, structured data\n\nFirecrawl makes it easy to extract data from websites for AI applications, market research, content aggregation, and more...",
      "links": [
        "https://firecrawl.dev/pricing",
        "https://firecrawl.dev/docs",
        "https://firecrawl.dev/guides",
        // ... more links
      ],
      "metadata": {
        "title": "Firecrawl - The Ultimate Web Scraping API",
        "description": "Firecrawl is a powerful web scraping API that turns any website into clean, structured data for AI and analysis.",
        "sourceURL": "https://firecrawl.dev/",
        "statusCode": 200
      }
    },
    // ... more results
  ]
}

Advanced Search Options

Firecrawl’s search API supports various parameters to customize your search:

Language and Country Customization

from firecrawl import FirecrawlApp

# Initialize the client with your API key
app = FirecrawlApp(api_key="fc-YOUR_API_KEY")

# Search in German (Germany)
search_result = app.search(
    "web scraping tools",
    limit=5,
    lang="de",
    country="de"
)

# Process the results
for result in search_result.data:
    print(f"Title: {result['title']}")
    print(f"URL: {result['url']}") 

Use the tbs parameter to filter results by time:

from firecrawl import FirecrawlApp

# Initialize the client with your API key
app = FirecrawlApp(api_key="fc-YOUR_API_KEY")

# Search for results from the past week
search_result = app.search(
    "latest web scraping techniques",
    limit=5,
    tbs="qdr:w"  # qdr:w = past week
)

# Process the results
for result in search_result.data:
    print(f"Title: {result['title']}")
    print(f"URL: {result['url']}") 

Common tbs values:

  • qdr:h - Past hour
  • qdr:d - Past 24 hours
  • qdr:w - Past week
  • qdr:m - Past month
  • qdr:y - Past year

Custom Timeout

Set a custom timeout for search operations:

from firecrawl import FirecrawlApp

# Initialize the client with your API key
app = FirecrawlApp(api_key="fc-YOUR_API_KEY")

# Set a 30-second timeout
search_result = app.search(
    "complex search query",
    limit=10,
    timeout=30000  # 30 seconds in milliseconds
)

Scraping Options

When scraping search results, you can specify multiple output formats:

from firecrawl import FirecrawlApp

# Initialize the client with your API key
app = FirecrawlApp(api_key="fc-YOUR_API_KEY")

# Get search results with multiple formats
search_result = app.search(
    "firecrawl features",
    limit=3,
    scrape_options={
        "formats": ["markdown", "html", "links", "screenshot"]
    }
)

Available formats:

  • markdown: Clean, formatted markdown content
  • html: Processed HTML content
  • rawHtml: Unmodified HTML content
  • links: List of links found on the page
  • screenshot: Screenshot of the page
  • screenshot@fullPage: Full-page screenshot
  • extract: Structured data extraction

For more details about format options, refer to the Scrape Feature documentation.