# Get web data  with a prompt

Turn entire websites into structured data with AI

From firecrawl.dev, get the pricing.

Try for Free

![Message balloon](https://www.firecrawl.dev/images/extract/balloon.svg)

From **firecrawl.dev** find the company name, mission and whether it's open source.

![Message balloon](https://www.firecrawl.dev/images/extract/balloon-2.svg)

{

"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.It will find and extract information across the entire website.\> 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.

|  | Name | Contact | Email |
| --- | --- | --- | --- |
| 1 | Sarah Johnson | +1 (555) 123-4567 | sarah.j@example.com |
| 2 | Michael Chen | +1 (555) 234-5678 | m.chen@example.com |
| 3 | Emily Williams | +1 (555) 345-6789 | e.williams@example.com |
| 4 | James Wilson | +1 (555) 456-7890 | j.wilson@example.com |

[Integrate with Zapier](https://zapier.com/apps/firecrawl/integrations)

FAQ

## Frequently Asked

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

### How much does Extract cost?

### What is a token and how many do I need?

### How does Extract handle JavaScript-heavy websites?

### What programming languages and frameworks are supported?

### How many pages can I process in a single API call?

### How can I integrate Extract with my existing workflow?

### Does Extract work with password-protected pages?

### Can I schedule regular extractions for monitoring changes?

### What happens if a website's structure changes?

### How fresh is the extracted data?

### Can Extract handle multiple languages and international websites?

### Can I use Extract for competitor monitoring?

### How does Extract handle dynamic content like prices or inventory?

### Is Extract suitable for real-time data needs?

/extract returns a JSON in your desired format

## Web Data Playground
Introducing /extract - Get web data with a prompt [Try now](https://www.firecrawl.dev/extract)