Firecrawl

App · AI Agents · 20 actions

Turn any website into clean, AI-ready data: scrape pages to Markdown, map and crawl whole sites, search the web with full page content, and send a research agent to find information for you.

Actions

ActionWhat it does
Cancel a batch scrapeStop a running batch scrape so it reads, and costs, no more pages.
Cancel a crawlStop a running crawl so it reads, and costs, no more pages.
Cancel an agent runStop an agent run that is still working.
Check a batch scrapeSee how far a batch scrape has got and get the pages it has read so far.
Check a crawlSee how far a crawl has got and get the pages it has read so far.
Check an agent runSee whether an agent run has finished and get its answer.
Check credit usageSee how many credits are left this billing period.
Check the job queueSee how many of the account's jobs are running or waiting, and how many can run at once.
Crawl a siteRead a whole site by following its links, and get every page's content.
List a batch scrape's errorsSee which pages a batch scrape could not read and why, and which ones robots.txt kept it out of.
List a crawl's errorsSee which pages a crawl could not read and why, and which ones the site's robots.txt kept it out of.
List agent runsList the account's agent runs, newest first, twenty at a time.
List recent activityList the account's scrapes, crawls, searches and other jobs from the last 24 hours, newest first.
List running crawlsList every crawl on the account that is still running.
Map a siteList every address on a website without reading the pages.
Preview crawl settingsDescribe in plain words what to crawl and see the settings Firecrawl would use, without starting a crawl or spending page credits.
Scrape a list of pagesRead a list of pages in the background, with the same options as 'Scrape a page'.
Scrape a pageRead a web page and get it back as clean Markdown, ready for an AI step.
Search the webSearch the web, news or images and get the results as data.
Start an agent runGive Firecrawl's research agent a task in plain words; it searches and browses on its own and returns the data.

Cancel a batch scrape

Stop a running batch scrape so it reads, and costs, no more pages.

Inputs

Batch scrapebatch_idtextRequired
The batch scrape's id, as 'Scrape a list of pages' gave it back.

Outputs

batch_idtext
cancelledtrue/false
statustext
Example output
{
  "batch_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "cancelled": true,
  "status": "cancelled"
}

Cancel a crawl

Stop a running crawl so it reads, and costs, no more pages. The pages already read stay available through 'Check a crawl'.

Inputs

Crawlcrawl_idtextRequired
The crawl's id, as 'Crawl a site' gave it back.

Outputs

cancelledtrue/false
crawl_idtext
statustext
Example output
{
  "cancelled": true,
  "crawl_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "status": "cancelled"
}

Cancel an agent run

Stop an agent run that is still working.

Inputs

Agent runagent_idtextRequired
The run's id, as 'Start an agent run' gave it back.

Outputs

agent_idtext
cancelledtrue/false
Example output
{
  "agent_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "cancelled": true
}

Check a batch scrape

See how far a batch scrape has got and get the pages it has read so far. 'is_finished' says whether more is still coming.

Inputs

Batch scrapebatch_idtextRequired
The batch scrape's id, as 'Scrape a list of pages' gave it back.

Outputs

batch_idtext
The batch scrape checked.
completed_attext
created_attext
credits_usednumber
Credits spent so far.
expires_attext
When Firecrawl discards the results.
has_more_pagestrue/false
True when there were more pages than one step fetches.
is_finishedtrue/false
True once nothing more will happen.
page_countnumber
How many pages are in this response.
pageslist
The pages read so far.
pages_completednumber
How many pages have been read.
pages_totalnumber
How many pages the job knows about.
statustext
scraping, completed, failed or cancelled.
Example output
{
  "batch_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "completed_at": "2026-09-21T10:00:20Z",
  "created_at": "2026-09-21T10:00:00Z",
  "credits_used": 1,
  "expires_at": "2026-09-22T10:00:00Z",
  "has_more_pages": false,
  "is_finished": true,
  "page_count": 1,
  "pages": [
    {
      "answer": null,
      "description": "Plans and prices.",
      "error": null,
      "final_url": "https://example.com/pricing",
      "html": null,
      "images": [],
      "json": null,
      "language": "en",
      "links": [
        "https://example.com/signup"
      ],
      "markdown": "# Pricing\n\nStarter is $19 a month...",
      "metadata": {
        "statusCode": 200,
        "title": "Pricing"
      },
      "raw_html": null,
      "screenshot": null,
      "status_code": 200,
      "summary": null,
      "title": "Pricing",
      "url": "https://example.com/pricing",
      "warning": null
    }
  ],
  "pages_completed": 1,
  "pages_total": 1,
  "status": "completed"
}

Check a crawl

See how far a crawl has got and get the pages it has read so far. 'is_finished' says whether more is still coming.

Inputs

Crawlcrawl_idtextRequired
The crawl's id, as 'Crawl a site' gave it back.

Outputs

completed_attext
crawl_idtext
The crawl checked.
created_attext
credits_usednumber
Credits spent so far.
expires_attext
When Firecrawl discards the results.
has_more_pagestrue/false
True when there were more pages than one step fetches.
is_finishedtrue/false
True once nothing more will happen.
page_countnumber
How many pages are in this response.
pageslist
The pages read so far.
pages_completednumber
How many pages have been read.
pages_totalnumber
How many pages the job knows about.
statustext
scraping, completed, failed or cancelled.
Example output
{
  "completed_at": "2026-09-21T10:00:20Z",
  "crawl_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "created_at": "2026-09-21T10:00:00Z",
  "credits_used": 1,
  "expires_at": "2026-09-22T10:00:00Z",
  "has_more_pages": false,
  "is_finished": true,
  "page_count": 1,
  "pages": [
    {
      "answer": null,
      "description": "Plans and prices.",
      "error": null,
      "final_url": "https://example.com/pricing",
      "html": null,
      "images": [],
      "json": null,
      "language": "en",
      "links": [
        "https://example.com/signup"
      ],
      "markdown": "# Pricing\n\nStarter is $19 a month...",
      "metadata": {
        "statusCode": 200,
        "title": "Pricing"
      },
      "raw_html": null,
      "screenshot": null,
      "status_code": 200,
      "summary": null,
      "title": "Pricing",
      "url": "https://example.com/pricing",
      "warning": null
    }
  ],
  "pages_completed": 1,
  "pages_total": 1,
  "status": "completed"
}

Check an agent run

See whether an agent run has finished and get its answer. Answers are kept for 24 hours.

Inputs

Agent runagent_idtextRequired
The run's id, as 'Start an agent run' gave it back.

Outputs

agent_idtext
credits_usednumber
efforttext
errortext
Why the run failed.
expires_attext
is_finishedtrue/false
modeltext
resultobject
The agent's answer, once it has finished.
statustext
processing, completed or failed.
Example output
{
  "agent_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "credits_used": 15,
  "effort": "low",
  "error": null,
  "expires_at": "2026-09-22T10:00:00Z",
  "is_finished": true,
  "model": "spark-2",
  "result": {
    "founders": [
      {
        "name": "Ada Lovelace"
      }
    ]
  },
  "status": "completed"
}

Check credit usage

See how many credits are left this billing period. Costs nothing, so it also makes a good first step for checking the connection.

Inputs

None.

Outputs

billing_period_endtext
billing_period_starttext
plan_creditsnumber
remaining_creditsnumber
Example output
{
  "billing_period_end": "2026-10-01T00:00:00Z",
  "billing_period_start": "2026-09-01T00:00:00Z",
  "plan_credits": 1000,
  "remaining_credits": 940
}

Check the job queue

See how many of the account's jobs are running or waiting, and how many can run at once.

Inputs

None.

Outputs

active_jobsnumber
jobs_in_queuenumber
max_concurrencynumber
most_recent_successtext
waiting_jobsnumber
Example output
{
  "active_jobs": 1,
  "jobs_in_queue": 1,
  "max_concurrency": 2,
  "most_recent_success": "2026-09-21T10:00:20Z",
  "waiting_jobs": 0
}

Crawl a site

Read a whole site by following its links, and get every page's content. The crawl keeps running after this step, so follow it with a Wait step and 'Check a crawl'.

Inputs

Start aturltextRequired
Where the crawl begins. Only pages under this address are read unless 'Crawl the whole domain' is on.
Stop afterpage_limitnumber
The most pages to read. Each page costs a credit, so start small and raise it once the results look right.From 1 to 10000. Default: 10.
Describe what to crawlprompttext
Say in plain words which pages you want, such as 'only the blog posts'. Firecrawl turns it into settings; any setting below overrides it.
Only pages matchinginclude_pathslist
Patterns a page's path must match, such as ^/blog/.*. Leave empty to read everything found.
Skip pages matchingexclude_pathslist
Patterns for paths to leave out, such as ^/tag/.*.
Links deepmax_discovery_depthnumber
How many links away from the start page to go. 0 reads only the start page and its sitemap.From 0 to 100.
Sitemapsitemaptext
How to use the site's sitemap. Firecrawl uses it and follows links if unset.One of: include (Use the sitemap and follow links), skip (Ignore the sitemap, follow links only), only (Use only the sitemap).
Crawl the whole domaincrawl_entire_domaintrue/false
Follow links anywhere on the site, not only under the starting address.Default: false.
Follow subdomainsallow_subdomainstrue/false
Follow links to subdomains such as blog.example.com.Default: false.
Follow links to other sitesallow_external_linkstrue/false
Let the crawl leave the site. Keep the page limit small.Default: false.
Treat ?query variants as one pageignore_query_parameterstrue/false
Read an address once, whatever follows its '?'.Default: false.
Pause between pagesdelay_secondsnumber
Seconds to wait between pages, to go easy on a small site. Setting it reads one page at a time.From 0 to 60. Default: 0.
Pages at oncemax_concurrencynumber
The most pages to read at the same time. Leave empty for your plan's limit (2 on the free plan).From 1 to 100.
Bring backformatslist
What each page should come back as. Readable text is Markdown with the clutter stripped out, which is what most steps want. A summary or a screenshot costs extra credits.One or more of: markdown (Readable text (Markdown)), summary (A short summary), html (Tidied HTML), rawHtml (Raw HTML), links (Every link on the page), images (Every image on the page), screenshot, screenshot@fullPage (Full-page screenshot). Default: ["markdown"].
Skip navigation and footersonly_main_contenttrue/false
Keep only the main body of each page. Turn this off when what you need lives in a header, a sidebar or a footer.Default: true.

Outputs

crawl_idtext
Pass this to 'Check a crawl' to read the pages.
page_limitnumber
The most pages this crawl will read.
urltext
Where the crawl started.
Example output
{
  "crawl_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "page_limit": 10,
  "url": "https://example.com/docs/"
}

List a batch scrape's errors

See which pages a batch scrape could not read and why, and which ones robots.txt kept it out of.

Inputs

Batch scrapebatch_idtextRequired
The batch scrape's id, as 'Scrape a list of pages' gave it back.

Outputs

batch_idtext
blocked_by_robotslist
Addresses the site's robots.txt ruled out.
blocked_countnumber
failed_countnumber
failed_pageslist
Each page that failed, with its address and reason.
Example output
{
  "batch_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "blocked_by_robots": [
    "https://example.com/private"
  ],
  "blocked_count": 1,
  "failed_count": 1,
  "failed_pages": [
    {
      "error": "404 Not Found",
      "id": "9d1f0c2e-4b1a-4e8e-9d52-7b1c1c0e2a11",
      "timestamp": "2026-09-21T10:00:10Z",
      "url": "https://example.com/docs/old"
    }
  ]
}

List a crawl's errors

See which pages a crawl could not read and why, and which ones the site's robots.txt kept it out of.

Inputs

Crawlcrawl_idtextRequired
The crawl's id, as 'Crawl a site' gave it back.

Outputs

blocked_by_robotslist
Addresses the site's robots.txt ruled out.
blocked_countnumber
crawl_idtext
failed_countnumber
failed_pageslist
Each page that failed, with its address and reason.
Example output
{
  "blocked_by_robots": [
    "https://example.com/private"
  ],
  "blocked_count": 1,
  "crawl_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "failed_count": 1,
  "failed_pages": [
    {
      "error": "404 Not Found",
      "id": "9d1f0c2e-4b1a-4e8e-9d52-7b1c1c0e2a11",
      "timestamp": "2026-09-21T10:00:10Z",
      "url": "https://example.com/docs/old"
    }
  ]
}

List agent runs

List the account's agent runs, newest first, twenty at a time.

Inputs

Started beforebeforedate and time
Only runs started before this moment. Pass the previous step's 'next_before' to get the next twenty.

Outputs

has_moretrue/false
next_beforetext
Pass this as 'Started before' to get the next twenty.
run_countnumber
runslist
The runs, newest first.
Example output
{
  "has_more": false,
  "next_before": null,
  "run_count": 1,
  "runs": [
    {
      "agent_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
      "created_at": "2026-09-21T10:00:00Z",
      "effort": "low",
      "label": null,
      "origin": "api",
      "prompt": "Find the founders of example.com",
      "status": "completed",
      "urls": []
    }
  ]
}

List recent activity

List the account's scrapes, crawls, searches and other jobs from the last 24 hours, newest first.

Inputs

Onlyendpointtext
Only this kind of job. Every kind if unset.One of: scrape (Page reads), batch_scrape (Batch reads), crawl (Crawls), map (Site maps), search (Searches), agent (Agent runs).
At mostlimitnumber
The most jobs to return.From 1 to 100. Default: 50.
Continue fromcursortext
The previous step's 'next_cursor', to get the next page.

Outputs

activitieslist
Jobs from the last 24 hours, newest first.
activity_countnumber
has_moretrue/false
next_cursortext
Pass this as 'Continue from' to get the next page.
Example output
{
  "activities": [
    {
      "api_version": "v2",
      "created_at": "2026-09-21T10:00:00Z",
      "endpoint": "scrape",
      "job_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
      "target": "https://example.com"
    }
  ],
  "activity_count": 1,
  "has_more": false,
  "next_cursor": null
}

List running crawls

List every crawl on the account that is still running.

Inputs

None.

Outputs

crawl_countnumber
crawlslist
The crawls still running.
Example output
{
  "crawl_count": 1,
  "crawls": [
    {
      "crawl_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
      "options": {},
      "status": null,
      "url": "https://example.com/docs/"
    }
  ]
}

Map a site

List every address on a website without reading the pages. Quick and cheap; use it to find the pages worth scraping, or search the list for a topic.

Inputs

Site addressurltextRequired
The website to map.
Most relevant tosearchtext
Order the addresses by how well they match this, such as 'pricing' or 'blog'.
At mostlimitnumber
The most addresses to return.From 1 to 100000. Default: 100.
Sitemapsitemaptext
How to use the site's sitemap. Firecrawl uses it and follows links if unset.One of: include (Use the sitemap and follow links), skip (Ignore the sitemap, follow links only), only (Use only the sitemap).
Include subdomainsinclude_subdomainstrue/false
Also list addresses on subdomains such as blog.example.com.Default: true.
Treat ?query variants as one pageignore_query_parameterstrue/false
List an address once, whatever follows its '?'.Default: true.
Give up aftertimeout_secondsnumber
Seconds to try for before giving up.From 1 to 300.
Browse fromcountrytext
Load pages from this country, for sites that show different prices or content by location. Firecrawl uses the United States if unset.One of: AR (Argentina), AU (Australia), AT (Austria), BD (Bangladesh), BE (Belgium), BR (Brazil), BG (Bulgaria), CA (Canada), CL (Chile), CN (China), and 52 more.

Outputs

link_countnumber
linkslist
Every address found, with its title where known.
urltext
urlslist
The same addresses, as plain text.
Example output
{
  "link_count": 1,
  "links": [
    {
      "description": "Plans and prices.",
      "title": "Pricing",
      "url": "https://example.com/pricing"
    }
  ],
  "url": "https://example.com",
  "urls": [
    "https://example.com/pricing"
  ]
}

Preview crawl settings

Describe in plain words what to crawl and see the settings Firecrawl would use, without starting a crawl or spending page credits.

Inputs

Start aturltextRequired
Where the crawl would begin.
Describe what to crawlprompttextRequired
Which pages you want, such as 'only the blog posts from 2025'.

Outputs

allow_external_linkstrue/false
allow_subdomainstrue/false
crawl_entire_domaintrue/false
delay_secondsnumber
exclude_pathslist
Pages matching these are skipped.
ignore_query_parameterstrue/false
include_pathslist
Only pages matching these.
max_discovery_depthnumber
page_limitnumber
settingsobject
Everything Firecrawl suggested, in its own words.
sitemaptext
urltext
Example output
{
  "allow_external_links": false,
  "allow_subdomains": false,
  "crawl_entire_domain": false,
  "delay_seconds": null,
  "exclude_paths": [],
  "ignore_query_parameters": null,
  "include_paths": [
    "^/blog/.*"
  ],
  "max_discovery_depth": null,
  "page_limit": null,
  "settings": {
    "includePaths": [
      "^/blog/.*"
    ],
    "url": "https://example.com"
  },
  "sitemap": "include",
  "url": "https://example.com"
}

Scrape a list of pages

Read a list of pages in the background, with the same options as 'Scrape a page'. Follow it with a Wait step and 'Check a batch scrape' to get the pages.

Inputs

Page addressesurlslistRequired
The pages to read, up to 1,000. Feed this the addresses from 'Map a site'.
Bring backformatslist
What each page should come back as. Readable text is Markdown with the clutter stripped out, which is what most steps want. A summary or a screenshot costs extra credits.One or more of: markdown (Readable text (Markdown)), summary (A short summary), html (Tidied HTML), rawHtml (Raw HTML), links (Every link on the page), images (Every image on the page), screenshot, screenshot@fullPage (Full-page screenshot). Default: ["markdown"].
Skip navigation and footersonly_main_contenttrue/false
Keep only the main body of each page. Turn this off when what you need lives in a header, a sidebar or a footer.Default: true.
Ask about the pagequestiontext
A question to answer from the page's content, such as 'What does the cheapest plan cost?'. The answer comes back as 'answer'.
Pull out dataextract_prompttext
Describe the data to pull out of the page, such as 'every plan's name and monthly price'. It comes back as 'json'.
Data shapeextract_schemaobject
Optional JSON Schema the pulled-out data must follow, for results the next step can rely on field by field.
Only these partsinclude_tagslist
HTML tags, classes or ids to keep, such as article or .price. Leave empty to keep the whole page.
Leave out these partsexclude_tagslist
HTML tags, classes or ids to drop, such as nav or #cookie-banner.
Wait before readingwait_secondsnumber
Seconds to let the page finish loading before it is read. Raise it for a page that fills itself in after it opens.From 0 to 60. Default: 0.
Give up aftertimeout_secondsnumber
Seconds to try for before giving up. Firecrawl's default is 60.From 1 to 300.
Read as a phonemobiletrue/false
Load the page as a phone would see it.Default: false.
Browse fromcountrytext
Load pages from this country, for sites that show different prices or content by location. Firecrawl uses the United States if unset.One of: AR (Argentina), AU (Australia), AT (Austria), BD (Bangladesh), BE (Belgium), BR (Brazil), BG (Bulgaria), CA (Canada), CL (Chile), CN (China), and 52 more.
Way inproxytext
How Firecrawl reaches the page. Automatic tries Basic first and switches to Enhanced if the site blocks it.One of: auto (Automatic (recommended)), basic (Basic, the fastest), enhanced (Enhanced, for sites that block scrapers).
Block ads and cookie pop-upsblock_adstrue/false
Strip ads and cookie banners before the page is read.Default: true.
Accept a cached copy up tomax_age_hoursnumber
Hours old a cached copy of the page may be. Firecrawl reuses copies up to 48 hours old unless told otherwise; 0 always reads it fresh.From 0 to 720.
Pages at oncemax_concurrencynumber
The most pages to read at the same time. Leave empty for your plan's limit (2 on the free plan).From 1 to 100.
Skip bad addressesskip_invalid_urlstrue/false
Leave out addresses that are not valid and read the rest, rather than refusing the whole list.Default: true.

Outputs

batch_idtext
Pass this to 'Check a batch scrape' to read the pages.
invalid_urlslist
Addresses Firecrawl could not treat as pages.
url_countnumber
How many addresses were sent.
Example output
{
  "batch_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "invalid_urls": [],
  "url_count": 2
}

Scrape a page

Read a web page and get it back as clean Markdown, ready for an AI step. Can also summarise it, answer a question about it, pull out structured data, or take a screenshot.

Inputs

Page addressurltextRequired
The address of the page to read.
Bring backformatslist
What each page should come back as. Readable text is Markdown with the clutter stripped out, which is what most steps want. A summary or a screenshot costs extra credits.One or more of: markdown (Readable text (Markdown)), summary (A short summary), html (Tidied HTML), rawHtml (Raw HTML), links (Every link on the page), images (Every image on the page), screenshot, screenshot@fullPage (Full-page screenshot). Default: ["markdown"].
Skip navigation and footersonly_main_contenttrue/false
Keep only the main body of each page. Turn this off when what you need lives in a header, a sidebar or a footer.Default: true.
Ask about the pagequestiontext
A question to answer from the page's content, such as 'What does the cheapest plan cost?'. The answer comes back as 'answer'.
Pull out dataextract_prompttext
Describe the data to pull out of the page, such as 'every plan's name and monthly price'. It comes back as 'json'.
Data shapeextract_schemaobject
Optional JSON Schema the pulled-out data must follow, for results the next step can rely on field by field.
Only these partsinclude_tagslist
HTML tags, classes or ids to keep, such as article or .price. Leave empty to keep the whole page.
Leave out these partsexclude_tagslist
HTML tags, classes or ids to drop, such as nav or #cookie-banner.
Wait before readingwait_secondsnumber
Seconds to let the page finish loading before it is read. Raise it for a page that fills itself in after it opens.From 0 to 60. Default: 0.
Give up aftertimeout_secondsnumber
Seconds to try for before giving up. Firecrawl's default is 60.From 1 to 300.
Read as a phonemobiletrue/false
Load the page as a phone would see it.Default: false.
Browse fromcountrytext
Load pages from this country, for sites that show different prices or content by location. Firecrawl uses the United States if unset.One of: AR (Argentina), AU (Australia), AT (Austria), BD (Bangladesh), BE (Belgium), BR (Brazil), BG (Bulgaria), CA (Canada), CL (Chile), CN (China), and 52 more.
Way inproxytext
How Firecrawl reaches the page. Automatic tries Basic first and switches to Enhanced if the site blocks it.One of: auto (Automatic (recommended)), basic (Basic, the fastest), enhanced (Enhanced, for sites that block scrapers).
Block ads and cookie pop-upsblock_adstrue/false
Strip ads and cookie banners before the page is read.Default: true.
Accept a cached copy up tomax_age_hoursnumber
Hours old a cached copy of the page may be. Firecrawl reuses copies up to 48 hours old unless told otherwise; 0 always reads it fresh.From 0 to 720.

Outputs

answertext
The answer to the question asked about the page.
descriptiontext
The page's own one-line summary, where it has one.
errortext
What went wrong with this page, if anything did.
final_urltext
Where the address ended up after any redirects.
htmltext
The page's tidied HTML.
imageslist
Every image on the page, when asked for.
jsonobject
The data extracted from the page, when a prompt or schema was given.
languagetext
The page's language.
linkslist
Every link on the page, when asked for.
markdowntext
The page's readable text, as Markdown.
metadataobject
Everything else the page declared about itself.
raw_htmltext
The page's HTML exactly as sent.
screenshottext
The address of a screenshot of the page, when asked for.
status_codenumber
The HTTP status the site answered with.
summarytext
A short summary of the page, when asked for.
titletext
The page's title.
urltext
The address that was read.
warningtext
Anything Firecrawl wants you to know about this read.
Example output
{
  "answer": null,
  "description": "Plans and prices.",
  "error": null,
  "final_url": "https://example.com/pricing",
  "html": null,
  "images": [],
  "json": null,
  "language": "en",
  "links": [
    "https://example.com/signup"
  ],
  "markdown": "# Pricing\n\nStarter is $19 a month...",
  "metadata": {
    "statusCode": 200,
    "title": "Pricing"
  },
  "raw_html": null,
  "screenshot": null,
  "status_code": 200,
  "summary": null,
  "title": "Pricing",
  "url": "https://example.com/pricing",
  "warning": null
}

Search the web

Search the web, news or images and get the results as data. Optionally read every result's page in the same step, so the next step gets the full text rather than a snippet.

Inputs

Search forquerytextRequired
What to search for. Operators such as site: and "quoted phrases" work.
Search insourceslist
Where to search. Web pages if unset.One or more of: web (Web pages), news, images. Default: ["web"].
Resultslimitnumber
How many results to return from each place searched.From 1 to 100. Default: 5.
Only these kinds of sitecategorieslist
Narrow web results to these kinds of site.One or more of: developer (Developer sites and code), research (Research papers), pdf (PDFs).
From thetime_rangetext
Only results from this recent period.One of: hour (Past hour), day (Past 24 hours), week (Past week), month (Past month), year (Past year).
Published on or afterpublished_afterdate
Only results from this date on. Use instead of 'From the'.
Published on or beforepublished_beforedate
Only results up to this date. Use instead of 'From the'.
Only these sitesinclude_domainslist
Only results from these domains, such as example.com.
Not these sitesexclude_domainslist
Leave out results from these domains. Use this or 'Only these sites', not both.
Search fromcountrytext
Get the results someone in this country would see.One of: AR (Argentina), AU (Australia), AT (Austria), BD (Bangladesh), BE (Belgium), BR (Brazil), BG (Bulgaria), CA (Canada), CL (Chile), CN (China), and 52 more.
Search nearlocationtext
A place to search as if you were in it, such as San Francisco,California,United States.
Hide explicit resultssafe_searchtrue/false
Turn safe search on.Default: false.
Also read each result asresult_formatslist
Read every result's page too, and return it in these formats. Each page read costs extra credits; leave empty for titles, links and snippets only.One or more of: markdown (Readable text (Markdown)), summary (A short summary), html (Tidied HTML), rawHtml (Raw HTML), links (Every link on the page), screenshot.
Skip navigation and footersonly_main_contenttrue/false
When reading result pages, keep only their main body.Default: true.
Give up aftertimeout_secondsnumber
Seconds to try for before giving up. Firecrawl's default is 60.From 1 to 300.

Outputs

credits_usednumber
imageslist
Image results, when images were searched.
newslist
News results, when news was searched.
querytext
result_countnumber
search_idtext
warningtext
weblist
Web results, best first.
Example output
{
  "credits_used": 2,
  "images": [],
  "news": [],
  "query": "firecrawl",
  "result_count": 1,
  "search_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04",
  "warning": null,
  "web": [
    {
      "description": "Turn websites into LLM-ready data.",
      "title": "Firecrawl",
      "url": "https://www.firecrawl.dev"
    }
  ]
}

Start an agent run

Give Firecrawl's research agent a task in plain words; it searches and browses on its own and returns the data. Runs in the background, so follow it with 'Check an agent run'. The free plan includes 5 runs a day.

Inputs

TaskprompttextRequired
What to find, such as 'the founders of example.com and their LinkedIn profiles'.
Start fromurlslist
Pages the agent should start from. Optional.
Stay on those pagesstay_on_urlstrue/false
Keep the agent to the pages under 'Start from'.Default: false.
Answer shapeoutput_schemaobject
Optional JSON Schema the answer must follow, for results the next step can rely on field by field.
Effortefforttext
How hard the agent should work. Higher effort costs more.One of: low (Low: quickest and cheapest), medium, high (High: most thorough).
Spend at mostmax_creditsnumber
The most credits this run may spend. Firecrawl's default is 2,500; a run that hits the cap fails and is refunded.From 1 to 100000.

Outputs

agent_idtext
Pass this to 'Check an agent run' for the answer.
Example output
{
  "agent_id": "3a6f1d90-2b4c-4f1e-9f3a-8c2d5e7b1a04"
}

On this page