Skip to article

Firecrawl

Web search with explicitly separate scraping, extraction, crawl, and monitor operations.

On this page

Normalized search

Normalized search selects ordinary web sources and caps output. Optional page scraping and other result categories are not folded into web snippets. Provider-native responses keep scrape and per-page outcome information.

firecrawl-search.ts · server
import { createSearch } from '@belweave/search-sdk';
import { firecrawl } from '@belweave/search-sdk/firecrawl';

const apiKey = process.env.FIRECRAWL_API_KEY;
if (!apiKey) throw new Error('FIRECRAWL_API_KEY is required');

const client = createSearch({ provider: firecrawl({ apiKey }) });
const response = await client.web.search({
  query: 'SQLite write concurrency',
  limit: 5,
});
console.log(response.results, response.attempts);

Opting into scraping adds retrieval work and can produce partial failures. Treat image, news, and specialized indexes as separate material. The native endpoint inventory reflects the pinned SDK mapping rather than a guarantee of every future provider extension.

100 include or 100 exclude under conservative SDK policy; both lists cannot be combined. Query ceiling: 500 UTF-16 code units.

Provider-native client

firecrawl-native.ts · server
import { createFirecrawlClient } from '@belweave/search-sdk/native-firecrawl';

const apiKey = process.env.FIRECRAWL_API_KEY;
if (!apiKey) throw new Error('FIRECRAWL_API_KEY is required');

const client = createFirecrawlClient({ apiKey, timeoutMs: 10_000 });
const response = await client.search({ body: { query: 'SQLite write concurrency', limit: 5, sources: [{ type: 'web' }] } });
console.log(response.data, response.metadata);

Read provider data from response.data and sanitized transport details from response.metadata. Native TypeScript response types are not runtime schema validation. Preserve the operation's native response and source identities.

Native operation inventory

Methods available on this native client. Paths are relative to each operation's fixed base; a provider may use more than one origin. Eligible operations retry only when you opt into a client retry policy.

57 / 57
MethodHTTP / relative pathResponse / retry eligibility
createMonitorPOST /monitorjson · no automatic retry
listMonitorsGET /monitorjson · eligible
getMonitorGET /monitor/{monitorId}json · eligible
updateMonitorPATCH /monitor/{monitorId}json · no automatic retry
deleteMonitorDELETE /monitor/{monitorId}json · no automatic retry
runMonitorPOST /monitor/{monitorId}/runjson · no automatic retry
listMonitorChecksGET /monitor/{monitorId}/checksjson · eligible
getMonitorCheckGET /monitor/{monitorId}/checks/{checkId}json · eligible
scrapePOST /scrapejson · no automatic retry
interactWithScrapeBrowserSessionPOST /scrape/{jobId}/interactjson · no automatic retry
stopInteractiveScrapeBrowserSessionDELETE /scrape/{jobId}/interactjson · no automatic retry
parseFilePOST /parsejson · no automatic retry
getParseFormatsGET /parse/formatsjson · eligible
batchScrapePOST /batch/scrapejson · no automatic retry
getBatchScrapeStatusGET /batch/scrape/{id}json · eligible
cancelBatchScrapeDELETE /batch/scrape/{id}json · no automatic retry
getBatchScrapeErrorsGET /batch/scrape/{id}/errorsjson · eligible
getCrawlStatusGET /crawl/{id}json · eligible
cancelCrawlDELETE /crawl/{id}json · no automatic retry
getCrawlErrorsGET /crawl/{id}/errorsjson · eligible
crawlPOST /crawljson · no automatic retry
crawlParamsPreviewPOST /crawl/params-previewjson · no automatic retry
mapPOST /mapjson · no automatic retry
extractPOST /extractjson · no automatic retry
getExtractStatusGET /extract/{id}json · eligible
listAgentsGET /agentjson · eligible
startAgentPOST /agentjson · no automatic retry
getAgentStatusGET /agent/{jobId}json · eligible
cancelAgentDELETE /agent/{jobId}json · no automatic retry
getAgentTraceGET /agent/{jobId}/tracejson · eligible
getAgentSnapshotGET /agent/{jobId}/snapshots/{snapshotId}json · eligible
getActiveCrawlsGET /crawl/activejson · eligible
getCreditUsageGET /team/credit-usagejson · eligible
getHistoricalCreditUsageGET /team/credit-usage/historicaljson · eligible
getTokenUsageGET /team/token-usagejson · eligible
getHistoricalTokenUsageGET /team/token-usage/historicaljson · eligible
getQueueStatusGET /team/queue-statusjson · eligible
getActivityGET /team/activityjson · eligible
searchPOST /searchjson · no automatic retry
createBrowserSessionPOST /interactjson · no automatic retry
listBrowserSessionsGET /interactjson · eligible
executeBrowserCodePOST /interact/{sessionId}/executejson · no automatic retry
deleteBrowserSessionDELETE /interact/{sessionId}json · no automatic retry
getScrapeStatusGET /scrape/{jobId}json · eligible
submitSearchFeedbackPOST /search/{jobId}/feedbackjson · no automatic retry
askSupportAgentPOST /support/askjson · no automatic retry
searchSupportDocsPOST /support/docs-searchjson · no automatic retry
researchSearchPapersGET /search/research/papersjson · eligible
researchGetPaperGET /search/research/papers/{id}json · eligible
researchRelatedPapersGET /search/research/papers/{id}/similarjson · eligible
developerSearchGET /search/developerjson · eligible
developerSearchPostPOST /search/developerjson · no automatic retry
govSearchGET /search/govjson · eligible
govSearchPostPOST /search/govjson · no automatic retry
submitEndpointFeedbackPOST /feedbackjson · no automatic retry
getThreatProtectionGET /team/threat-protectionjson · eligible
updateThreatProtectionPUT /team/threat-protectionjson · no automatic retry

Limits and operation lifecycle

  • Pass signal and per-call timeoutMs on native request input when needed.
  • Persist a returned job identifier before explicitly reading or polling the same job. Native clients do not automatically poll.
  • SSE data is incremental provider event text. Parse and validate terminal or error events according to the provider contract; there is no reconnect or replay.
  • Native operations may create, delete, ingest, or incur charges. A successful HTTP response is not proof that a remote job completed.

Official sources

Use the official reference for current schemas, account access, and operation-specific requirements.