Introducing /extract - Now in open beta

Get web data
with a prompt

Turn entire websites into structured data with AI

Message balloon
From firecrawl.dev find the company name, mission and whether it's open source.
Message balloon
{
  "company_name": "Firecrawl",
  "company_mission": "...",
  "is_open_source": true,
}
A milestone in scraping

Web scraping was hard – now effortless

Scraping the internet had everything to do with broken scripts, bad data, wasted time. With Extract, you can get any data in any format effortlessly – in a single API call.

No more manual scraping

Extract structured data from any website using natural language prompts.

page = urlopen(url)
html = page.read().decode("utf-8")
start_index = html.find("<title>") + len("<title>")
end_index = html.find("</title>")
title = html[start_index:end_index]
>>> title
PromptBuild a B2B lead list from these company websites.

Stop rewriting broken scripts

Say goodbye to fragile scrapers that break with every site update. Our AI understands content semantically and adapts automatically.

page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
page = urlopen(url)
html = page.read().decode("utf-8")
start_idx = html.find("<title>") + len("<title>")
end_idx = html.find("</title>")
title = html[start_idx:end_idx]
>>> title
await firecrawl.extract([
  'https://firecrawl.dev/',
], {
  prompt: "Extract mission.",
  schema: z.object({
    mission: z.string()
  })
});

Extract entire websites in a single API call

Get the data you need with a simple API call, whether it's one page or thousands.

Try adding a wildcard /* to the URL.It will extract information across the site.> app.extract(['https://firecrawl.dev/*'])

Forget fighting context windows

No context window limits. Extract thousands of results effortlessly while we handle the complex LLM work.

Extracting
Video Demo

Use Extract for everything

From lead enrichment to AI onboarding to KYB – and more. Watch a demo of how Extract can help you get more out of your data.

Enrichment Integrations

Enrich data anywhere you work

Integrate Extract with your favorite tools and get enriched data where you need it.

Datasets

Build datasets spread across websites

Gather datasets from any website and use them for any enrichment task.

NameContactEmail
1Sarah Johnson+1 (555) 123-4567sarah.j@example.com
2Michael Chen+1 (555) 234-5678m.chen@example.com
3Emily Williams+1 (555) 345-6789e.williams@example.com
4James Wilson+1 (555) 456-7890j.wilson@example.com
Integrate with Zapier
Simple, transparent pricing

Pricing that scales with your business

Monthly
Yearly
Save 10%

Free

$0

One-time

Tokens / year500,000
Rate limit10 per min
SupportCommunity

Starter

$89/mo

$1,188/yr$1,068/yr (Billed annually)

Tokens / year18 million
Rate limit20 per min
SupportEmail

All credits granted upfront

Most Popular 🔥

Explorer

$359/mo

$4,788/yr$4,308/yr (Billed annually)

Tokens / year84 million
Rate limit100 per min
SupportSlack

All credits granted upfront

Best Value

Pro

$719/mo

$9,588/yr$8,628/yr (Billed annually)

Tokens / year192 million
Rate limit1000 per min
SupportSlack + Priority

All credits granted upfront

Enterprise

Custom

Billed annually

Tokens / yearNo limits
Rate limitCustom
SupportCustom (SLA, dedicated engineer)

All requests have a base cost of 300 tokens + output tokens - View token calculator

Get started for free

500K free tokens – no credit card required!

FAQ

Frequently Asked

Everything you need to know about Extract's powerful web scraping capabilities