> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toolshed.philo.ventures/llms.txt
> Use this file to discover all available pages before exploring further.

# Firecrawl Plugin

> Firecrawl web scraping — scrape pages to markdown, search the web, extract structured data, and crawl sites.

**Plugin ID:** `firecrawl` | **Auth:** API Key (Bearer token, `fc-` prefix)

## Tools

### firecrawl.scrape

**Name:** Scrape Page

Scrape a single URL and return its content as markdown, HTML, or structured data. Handles JavaScript rendering, anti-bot measures, and proxies automatically.

**Input:**

| Parameter         | Type       | Required | Default        | Description                                                    |
| ----------------- | ---------- | -------- | -------------- | -------------------------------------------------------------- |
| `url`             | `string`   | Yes      | --             | URL to scrape                                                  |
| `formats`         | `string[]` | No       | `["markdown"]` | `"markdown"`, `"html"`, `"rawHtml"`, `"links"`, `"screenshot"` |
| `onlyMainContent` | `boolean`  | No       | `true`         | Extract only main content, removing nav/footers                |
| `timeout`         | `integer`  | No       | `30000`        | Timeout in milliseconds (1000-300000)                          |

**Output:**

```json theme={null}
{
  "success": true,
  "markdown": "# Page Title\n\nArticle content...",
  "html": null,
  "links": ["https://example.com/related"],
  "metadata": { "title": "Page Title", "description": "...", "url": "https://example.com", "statusCode": 200 }
}
```

***

### firecrawl.search

**Name:** Web Search

Search the web and optionally scrape the content of each result.

**Input:**

| Parameter       | Type      | Required | Default | Description                               |
| --------------- | --------- | -------- | ------- | ----------------------------------------- |
| `query`         | `string`  | Yes      | --      | Search query (max 500 chars)              |
| `limit`         | `integer` | No       | `10`    | Number of results (1-100)                 |
| `scrapeOptions` | `object`  | No       | --      | If provided, also scrape each result page |

**Output:**

```json theme={null}
{
  "success": true,
  "results": [
    { "title": "Result Title", "url": "https://example.com", "description": "Snippet...", "markdown": "# Full page content..." }
  ]
}
```

***

### firecrawl.extract

**Name:** Extract Data

Extract structured data from one or more URLs using an LLM. Provide a natural language prompt and/or JSON Schema for output structure.

**Input:**

| Parameter         | Type       | Required | Default | Description                                                    |
| ----------------- | ---------- | -------- | ------- | -------------------------------------------------------------- |
| `urls`            | `string[]` | Yes      | --      | URLs to extract from (supports wildcards like `example.com/*`) |
| `prompt`          | `string`   | Yes      | --      | Natural language description of what to extract                |
| `schema`          | `object`   | No       | --      | JSON Schema for output structure                               |
| `enableWebSearch` | `boolean`  | No       | `false` | Allow web search for additional context                        |

**Output:**

```json theme={null}
{
  "success": true,
  "data": { "company_name": "Acme Corp", "funding_round": "Series B", "amount": 50000000 }
}
```

***

### firecrawl.crawl

**Name:** Crawl Site

Start an asynchronous crawl of a website. Returns a job ID to poll with `firecrawl.crawl_status`.

**Input:**

| Parameter      | Type       | Required | Default | Description                         |
| -------------- | ---------- | -------- | ------- | ----------------------------------- |
| `url`          | `string`   | Yes      | --      | Starting URL to crawl               |
| `limit`        | `integer`  | No       | `100`   | Max pages to crawl                  |
| `maxDepth`     | `integer`  | No       | `3`     | Max link depth to follow            |
| `includePaths` | `string[]` | No       | --      | Regex patterns for paths to include |
| `excludePaths` | `string[]` | No       | --      | Regex patterns for paths to exclude |

**Output:**

```json theme={null}
{ "success": true, "id": "crawl_abc123", "url": "https://status.firecrawl.dev/crawl/crawl_abc123" }
```

***

### firecrawl.crawl\_status

**Name:** Crawl Status

Check the status and retrieve results of an async crawl job.

**Input:**

| Parameter | Type     | Required | Description                         |
| --------- | -------- | -------- | ----------------------------------- |
| `crawlId` | `string` | Yes      | Crawl job ID from `firecrawl.crawl` |

**Output:**

```json theme={null}
{
  "status": "completed",
  "total": 25,
  "completed": 25,
  "data": [
    { "url": "https://example.com/page1", "markdown": "# Page content...", "title": "Page 1" }
  ]
}
```

***

### firecrawl.map

**Name:** Map Site URLs

Discover all URLs on a website without scraping their content.

**Input:**

| Parameter | Type     | Required | Description        |
| --------- | -------- | -------- | ------------------ |
| `url`     | `string` | Yes      | Website URL to map |

**Output:**

```json theme={null}
{
  "success": true,
  "links": ["https://example.com/", "https://example.com/about", "https://example.com/blog"]
}
```
