or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

tessl/npm-mendable--firecrawl-js

JavaScript SDK for Firecrawl API that enables comprehensive web scraping, crawling, and data extraction with AI-ready output formats.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@mendable/firecrawl-js@4.3.x

To install, run

npx @tessl/cli install tessl/npm-mendable--firecrawl-js@4.3.0

0

# Firecrawl JavaScript SDK

1

2

JavaScript/TypeScript SDK for the Firecrawl API that enables comprehensive web scraping, crawling, and data extraction with AI-ready output formats.

3

4

## Package Information

5

6

- **Package Name**: @mendable/firecrawl-js

7

- **Package Type**: npm

8

- **Language**: JavaScript/TypeScript

9

- **Installation**: `npm install @mendable/firecrawl-js`

10

11

## Core Imports

12

13

```typescript

14

// Unified client (recommended)

15

import Firecrawl from '@mendable/firecrawl-js';

16

17

// Direct v2 client

18

import { FirecrawlClient } from '@mendable/firecrawl-js';

19

20

// Legacy v1 client

21

import { FirecrawlAppV1 } from '@mendable/firecrawl-js';

22

```

23

24

## Basic Usage

25

26

```typescript

27

// Initialize the client

28

const app = new Firecrawl({ apiKey: 'your-api-key' });

29

30

// Scrape a single URL

31

const scrapeResult = await app.scrape('https://example.com', {

32

formats: ['markdown', 'html']

33

});

34

35

// Crawl a website

36

const crawlResult = await app.crawl('https://example.com', {

37

limit: 100,

38

scrapeOptions: { formats: ['markdown'] }

39

});

40

```

41

42

## Architecture

43

44

The SDK provides both current (v2) and legacy (v1) API access:

45

46

- **Unified Client (`Firecrawl`)**: Extends v2 client with `.v1` property for backward compatibility

47

- **Direct v2 Client (`FirecrawlClient`)**: Current API with modern async patterns

48

- **Legacy v1 Client (`FirecrawlAppV1`)**: Feature-frozen v1 API for existing integrations

49

50

All clients support real-time job monitoring via WebSocket with automatic fallback to polling.

51

52

## Core Types

53

54

```typescript { .api }

55

// Client configuration

56

interface FirecrawlClientOptions {

57

apiKey?: string | null;

58

apiUrl?: string | null;

59

timeoutMs?: number;

60

maxRetries?: number;

61

backoffFactor?: number;

62

}

63

64

// Document structure

65

interface Document {

66

markdown?: string;

67

html?: string;

68

rawHtml?: string;

69

json?: unknown;

70

summary?: string;

71

metadata?: DocumentMetadata;

72

links?: string[];

73

images?: string[];

74

screenshot?: string;

75

attributes?: Array<{

76

selector: string;

77

attribute: string;

78

values: string[];

79

}>;

80

actions?: Record<string, unknown>;

81

warning?: string;

82

changeTracking?: Record<string, unknown>;

83

}

84

85

// Document metadata

86

interface DocumentMetadata {

87

title?: string;

88

description?: string;

89

language?: string;

90

keywords?: string | string[];

91

robots?: string;

92

ogTitle?: string;

93

ogDescription?: string;

94

ogUrl?: string;

95

ogImage?: string;

96

sourceURL?: string;

97

statusCode?: number;

98

error?: string;

99

[key: string]: unknown;

100

}

101

```

102

103

## Main Client Classes

104

105

```typescript { .api }

106

// Unified client class

107

class Firecrawl extends FirecrawlClient {

108

constructor(opts?: FirecrawlClientOptions);

109

get v1(): FirecrawlAppV1;

110

}

111

112

// Direct v2 client

113

class FirecrawlClient {

114

constructor(options?: FirecrawlClientOptions);

115

116

// Core methods available - see capability sections below

117

scrape(url: string, options?: ScrapeOptions): Promise<Document>;

118

search(query: string, req?: Omit<SearchRequest, "query">): Promise<SearchData>;

119

map(url: string, options?: MapOptions): Promise<MapData>;

120

crawl(url: string, req?: CrawlOptions): Promise<CrawlJob>;

121

batchScrape(urls: string[], opts?: BatchScrapeOptions): Promise<BatchScrapeJob>;

122

extract(args: any): Promise<ExtractResponse>;

123

watcher(jobId: string, opts?: WatcherOptions): Watcher;

124

}

125

```

126

127

## Capabilities

128

129

### Web Scraping

130

Single URL scraping with multiple output formats including structured data extraction.

131

132

**Key APIs**:

133

```typescript { .api }

134

scrape(url: string, options?: ScrapeOptions): Promise<Document>;

135

```

136

137

[Web Scraping Documentation](./scraping.md)

138

139

### Web Crawling

140

Recursive website crawling with configurable limits, path filtering, and webhook support.

141

142

**Key APIs**:

143

```typescript { .api }

144

startCrawl(url: string, req?: CrawlOptions): Promise<CrawlResponse>;

145

getCrawlStatus(jobId: string, pagination?: PaginationConfig): Promise<CrawlJob>;

146

crawl(url: string, req?: CrawlOptions): Promise<CrawlJob>;

147

```

148

149

[Web Crawling Documentation](./crawling.md)

150

151

### Batch Operations

152

Concurrent processing of multiple URLs with job monitoring and error handling.

153

154

**Key APIs**:

155

```typescript { .api }

156

startBatchScrape(urls: string[], opts?: BatchScrapeOptions): Promise<BatchScrapeResponse>;

157

getBatchScrapeStatus(jobId: string, pagination?: PaginationConfig): Promise<BatchScrapeJob>;

158

batchScrape(urls: string[], opts?: BatchScrapeOptions): Promise<BatchScrapeJob>;

159

```

160

161

[Batch Operations Documentation](./batch.md)

162

163

### Search

164

Web search with optional result scraping across different sources (web, news, images).

165

166

**Key APIs**:

167

```typescript { .api }

168

search(query: string, req?: Omit<SearchRequest, "query">): Promise<SearchData>;

169

```

170

171

[Search Documentation](./search.md)

172

173

### Site Mapping

174

Discover and map website URLs using sitemaps and crawling techniques.

175

176

**Key APIs**:

177

```typescript { .api }

178

map(url: string, options?: MapOptions): Promise<MapData>;

179

```

180

181

[Site Mapping Documentation](./mapping.md)

182

183

### Data Extraction

184

LLM-powered structured data extraction using natural language prompts or schemas.

185

186

**Key APIs**:

187

```typescript { .api }

188

startExtract(args: any): Promise<ExtractResponse>;

189

getExtractStatus(jobId: string): Promise<ExtractResponse>;

190

extract(args: any): Promise<ExtractResponse>;

191

```

192

193

[Data Extraction Documentation](./extraction.md)

194

195

### Real-time Monitoring

196

WebSocket-based job monitoring with automatic fallback to polling for long-running operations.

197

198

**Key APIs**:

199

```typescript { .api }

200

watcher(jobId: string, opts?: WatcherOptions): Watcher;

201

```

202

203

[Real-time Monitoring Documentation](./monitoring.md)

204

205

### Usage Analytics

206

Monitor API usage, credits, tokens, and queue status for billing and optimization.

207

208

**Key APIs**:

209

```typescript { .api }

210

getConcurrency(): Promise<ConcurrencyCheck>;

211

getCreditUsage(): Promise<CreditUsage>;

212

getTokenUsage(): Promise<TokenUsage>;

213

getQueueStatus(): Promise<QueueStatusResponse>;

214

```

215

216

[Usage Analytics Documentation](./usage.md)

217

218

### Legacy V1 API

219

Feature-frozen v1 API with additional capabilities like deep research and LLMs.txt generation.

220

221

**Key APIs**:

222

```typescript { .api }

223

// Access via unified client

224

const v1Client = app.v1;

225

```

226

227

[Legacy V1 API Documentation](./v1-api.md)