# LangChain

> Use Firecrawl in LangChain as a document loader or as agent tools.

<Note>
**Official package:** [`langchain-firecrawl`](https://pypi.org/project/langchain-firecrawl/) · [source](https://github.com/firecrawl/langchain-firecrawl)

Scrape, crawl, map, extract, and search from LangChain, as a document loader or as agent tools
</Note>

## Install

```bash
pip install langchain-firecrawl
```

Get a key from [firecrawl.dev](https://www.firecrawl.dev/app/api-keys) and set it in your environment (or pass `api_key=...`):

```bash
export FIRECRAWL_API_KEY="fc-your-api-key"
```

## Document loader

`FirecrawlLoader` returns LangChain `Document`s. Choose a `mode`:

| Mode | What it loads |
|------|---------------|
| `scrape` | One page |
| `crawl` | A whole site |
| `map` | Discovered URLs |
| `extract` | Structured data |
| `search` | Web search results |

```python
from langchain_firecrawl import FirecrawlLoader

loader = FirecrawlLoader(url="https://www.firecrawl.dev", mode="scrape")
docs = loader.load()

print(docs[0].page_content[:200])
print(docs[0].metadata)
```

## Agent tools

Each capability is also a `BaseTool` you can bind to an agent:

```python
from langchain_firecrawl import (
    FirecrawlScrape,
    FirecrawlCrawl,
    FirecrawlMap,
    FirecrawlExtract,
    FirecrawlSearch,
)

scrape = FirecrawlScrape()
result = scrape.invoke({"url": "https://www.firecrawl.dev"})
print(result["markdown"])

search = FirecrawlSearch()
print(search.invoke({"query": "best web scraping libraries", "limit": 5}))
```

## LangChain JS

The JavaScript loader ships in `@langchain/community` and takes the Firecrawl JS SDK as a peer dependency:

```bash
npm install @langchain/community @mendable/firecrawl-js
```

```typescript
import { FireCrawlLoader } from "@langchain/community/document_loaders/web/firecrawl";

const loader = new FireCrawlLoader({
  url: "https://firecrawl.dev",
  apiKey: process.env.FIRECRAWL_API_KEY, // defaults to FIRECRAWL_API_KEY
  mode: "scrape", // "scrape" for a single page, "crawl" for subpages
});

const docs = await loader.load();
```

## Resources

- [`langchain-firecrawl` on PyPI](https://pypi.org/project/langchain-firecrawl/)
- [Firecrawl scrape](/features/scrape) and [crawl](/features/crawl) docs
- [Firecrawl Python SDK](/sdks/python) and [Node SDK](/sdks/node)
