Firecrawl
Web crawling and data extraction powered by Firecrawl API. Scrape single URLs, map entire websites, search the web, and extract structured data.
This node signs in with a credential: Firecrawl API Token. See Connect a credential.
Actions
Steps this node can perform. Add one from Add a step, then pick the action.
Start Crawl Job
Start a recursive website crawl (async operation, returns job ID)
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The website URL to crawl |
| Prompt | Text | The prompt to crawl the website | |
| Page Limit | Number | Maximum number of pages to crawl Default: 100 |
Output
Later steps use this data by picking this step in the $ picker. For example, id is $.<step ID>.output.id.
{
"id": "string",
"success": false,
"url": "string"
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
id | Text | Crawl job identifier for status checking |
success | Yes / No | |
url | Text | URL to check crawl job status |
Cancel Crawl Job
Cancel a running crawl job
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Crawl Job ID | Text | Yes | The crawl job ID to cancel |
Output
Later steps use this data by picking this step in the $ picker. For example, status is $.<step ID>.output.status.
{
"status": "cancelled",
"success": false
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
status | Text | Crawl status after cancelling, e.g. cancelled |
success | Yes / No | True when Firecrawl cancelled the crawl |
Check Crawl Status
Check the status of a running or completed crawl job
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Job ID | Text | Yes | The crawl job ID to check |
Output
Later steps use this data by picking this step in the $ picker. For example, completed is $.<step ID>.output.completed.
{
"completed": 0,
"creditsUsed": 0,
"data": [
{
"actions": {
"javascriptReturns": [],
"pdfs": [],
"scrapes": [],
"screenshots": []
},
"changeTracking": {
"changeStatus": "string",
"diff": "string",
"json": {},
"previousScrapeAt": "string",
"visibility": "string"
},
"html": "string",
"links": [
"string"
],
"markdown": "string",
"metadata": {
"description": "string",
"error": "string",
"keywords": "string",
"language": "string",
"ogLocaleAlternate": [],
"sourceURL": "string",
"statusCode": 0,
"title": "string"
},
"rawHtml": "string",
"screenshot": "string",
"summary": "string",
"warning": "string"
}
],
"next": "string",
"status": "string",
"success": false,
"total": 0
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
completed | Number | |
creditsUsed | Number | |
data[] | List | Array of crawled pages with content |
data[].actions | Object | Actions performed during scraping |
data[].actions.javascriptReturns[] | List | JavaScript execution results |
data[].actions.javascriptReturns[].type | Text | |
data[].actions.javascriptReturns[].value | any | |
data[].actions.pdfs[] | List | PDF files generated |
data[].actions.scrapes[] | List | Nested scrape operations |
data[].actions.scrapes[].html | Text | |
data[].actions.scrapes[].url | Text | |
data[].actions.screenshots[] | List | Screenshots captured |
data[].changeTracking | Object | Change tracking information |
data[].changeTracking.changeStatus | Text | Change status: new, updated, unchanged |
data[].changeTracking.diff | Text | Diff from previous scrape |
data[].changeTracking.json | Object | Additional change tracking data |
data[].changeTracking.previousScrapeAt | Text | Timestamp of previous scrape |
data[].changeTracking.visibility | Text | Page visibility status |
data[].html | Text | HTML content |
data[].links[] | List | Links found on the page |
data[].markdown | Text | Content in markdown format |
data[].metadata | Object | Page metadata including title, description, etc. |
data[].metadata.description | Text | Page description |
data[].metadata.error | Text | Error message if any |
data[].metadata.keywords | Text | Page keywords |
data[].metadata.language | Text | Page language |
data[].metadata.ogLocaleAlternate[] | List | OpenGraph locale alternates |
data[].metadata.sourceURL | Text | Source URL |
data[].metadata.statusCode | Number | HTTP status code |
data[].metadata.title | Text | Page title |
data[].rawHtml | Text | Raw HTML content |
data[].screenshot | Text | Screenshot URL or data |
data[].summary | Text | Content summary |
data[].warning | Text | Warning message if any |
next | Text | Next URL to crawl |
status | Text | Job status: scraping, completed, failed |
success | Yes / No | |
total | Number |
Extract Structured Data
Extract structured data from URLs using AI (async operation, returns job ID)
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URLs | List | Yes | List of URLs to extract data from |
| Extraction Prompt | Text | Natural language description of what data to extract | |
| JSON Schema | Object | JSON schema defining the structure of data to extract |
Output
Later steps use this data by picking this step in the $ picker. For example, id is $.<step ID>.output.id.
{
"id": "string",
"success": false,
"url": "string"
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
id | Text | Extraction job identifier |
success | Yes / No | |
url | Text |
Check Extract Status
Check the status of a running or completed extraction job
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Job ID | Text | Yes | The extraction job ID to check |
Output
Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.
{
"data": {},
"status": "string",
"success": false
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
data | Object | Structured data extracted from the URLs |
status | Text | Job status: processing, completed, failed, cancelled |
success | Yes / No |
Map Website
Discover all URLs on a website quickly to identify pages to scrape
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The website URL to map |
| Search Keyword | Text | Optional keyword to filter URLs (e.g., 'blog', 'product') | |
| Limit | Number | Maximum number of URLs to return Default: 5000 | |
| Sitemap Mode | Choice | How to handle sitemap: include (use sitemap), skip (ignore sitemap), only (use only sitemap) Options: Include Sitemap, Skip Sitemap, Only Sitemap | |
| Enable Cache | Yes / No | Cache the result for this URL to avoid redundant crawl/scrape requests Default: false | |
| Cache Duration | Choice | Yes | How long to cache the result before performing a fresh crawl Options: 1 Hour, 6 Hours, 1 Day |
Output
Later steps use this data by picking this step in the $ picker. For example, links[0].url is $.<step ID>.output.links[0].url.
{
"links": [
{
"url": "string"
}
],
"success": false
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
links[] | List | Array of discovered URLs |
links[].url | Text | Discovered URL |
success | Yes / No | Whether the operation was successful |
Scrape URL
Extract content from a single URL in multiple formats (markdown, HTML, screenshots, etc.)
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The URL to scrape |
| Output Formats | Multiple choice | Formats to return (default: markdown) Options: Markdown, HTML, Raw HTML, Content, Links, Screenshot, Full Page Screenshot | |
| Enable Cache | Yes / No | Cache the result for this URL to avoid redundant crawl/scrape requests Default: false | |
| Cache Duration | Choice | Yes | How long to cache the result before performing a fresh crawl Options: 1 Hour, 6 Hours, 1 Day |
Output
Later steps use this data by picking this step in the $ picker. For example, actions.javascriptReturns[0].type is $.<step ID>.output.actions.javascriptReturns[0].type.
{
"actions": {
"javascriptReturns": [
{
"type": "string",
"value": "string"
}
],
"pdfs": [
"string"
],
"scrapes": [
{
"html": "string",
"url": "string"
}
],
"screenshots": [
"string"
]
},
"changeTracking": {
"changeStatus": "string",
"diff": "string",
"json": {},
"previousScrapeAt": "string",
"visibility": "string"
},
"html": "string",
"links": [
"string"
],
"markdown": "string",
"metadata": {
"description": "string",
"error": "string",
"keywords": "string",
"language": "string",
"ogLocaleAlternate": [
"string"
],
"sourceURL": "string",
"statusCode": 0,
"title": "string"
},
"rawHtml": "string",
"screenshot": "string",
"summary": "string",
"warning": "string"
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
actions | Object | Actions performed during scraping |
actions.javascriptReturns[] | List | JavaScript execution results |
actions.javascriptReturns[].type | Text | |
actions.javascriptReturns[].value | any | |
actions.pdfs[] | List | PDF files generated |
actions.scrapes[] | List | Nested scrape operations |
actions.scrapes[].html | Text | |
actions.scrapes[].url | Text | |
actions.screenshots[] | List | Screenshots captured |
changeTracking | Object | Change tracking information |
changeTracking.changeStatus | Text | Change status: new, updated, unchanged |
changeTracking.diff | Text | Diff from previous scrape |
changeTracking.json | Object | Additional change tracking data |
changeTracking.previousScrapeAt | Text | Timestamp of previous scrape |
changeTracking.visibility | Text | Page visibility status |
html | Text | HTML content |
links[] | List | Links found on the page |
markdown | Text | Content in markdown format |
metadata | Object | Page metadata including title, description, etc. |
metadata.description | Text | Page description |
metadata.error | Text | Error message if any |
metadata.keywords | Text | Page keywords |
metadata.language | Text | Page language |
metadata.ogLocaleAlternate[] | List | OpenGraph locale alternates |
metadata.sourceURL | Text | Source URL |
metadata.statusCode | Number | HTTP status code |
metadata.title | Text | Page title |
rawHtml | Text | Raw HTML content |
screenshot | Text | Screenshot URL or data |
summary | Text | Content summary |
warning | Text | Warning message if any |
Web Search
Perform a web search and retrieve scraped content from results
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Search Query | Text | Yes | The search term or query |
| Search Sources | Multiple choice | Types of search results to include Options: Web, News, Images | |
| Result Limit | Number | Maximum number of search results to return (default: 5, max: 100) Default: 5 | |
| Location | Object | Geographic location for search results |
Output
Later steps use this data by picking this step in the $ picker. For example, data.images[0].imageHeight is $.<step ID>.output.data.images[0].imageHeight.
{
"data": {
"images": [
{
"imageHeight": 0,
"imageUrl": "string",
"imageWidth": 0,
"position": 0,
"title": "string",
"url": "string"
}
],
"news": [
{
"date": "string",
"html": "string",
"imageUrl": "string",
"links": [],
"markdown": "string",
"metadata": {},
"position": 0,
"rawHtml": "string",
"screenshot": "string",
"snippet": "string",
"title": "string",
"url": "string"
}
],
"web": [
{
"description": "string",
"markdown": "string",
"position": 0,
"title": "string",
"url": "string"
}
]
},
"success": false
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
data | Object | Search results organized by source |
data.images[] | List | Image search results |
data.images[].imageHeight | Number | Image Height |
data.images[].imageUrl | Text | Result Image URL |
data.images[].imageWidth | Number | Image Width |
data.images[].position | Number | Result ranking position |
data.images[].title | Text | Result URL |
data.images[].url | Text | Result URL |
data.news[] | List | News search results |
data.news[].date | Text | Publication date |
data.news[].html | Text | HTML content |
data.news[].imageUrl | Text | Article image URL |
data.news[].links[] | List | Links found in the article |
data.news[].markdown | Text | Content in markdown format |
data.news[].metadata | Object | Article metadata |
data.news[].metadata.description | Text | Page description |
data.news[].metadata.error | Text | Error message if any |
data.news[].metadata.sourceURL | Text | Source URL |
data.news[].metadata.statusCode | Number | HTTP status code |
data.news[].metadata.title | Text | Page title |
data.news[].position | Number | Result ranking position |
data.news[].rawHtml | Text | Raw HTML content |
data.news[].screenshot | Text | Screenshot URL |
data.news[].snippet | Text | Brief snippet of the article |
data.news[].title | Text | News article title |
data.news[].url | Text | Article URL |
data.web[] | List | Web search results |
data.web[].description | Text | Page description/snippet |
data.web[].markdown | Text | Content in markdown format |
data.web[].position | Number | Result ranking position |
data.web[].title | Text | Page title |
data.web[].url | Text | Result URL |
success | Yes / No | Whether the search was successful |