Appearance
FIRE-1 Agent Model
Updated Feb 2026FIRE-1 is an AI agent that enhances Firecrawl's extraction capabilities through intelligent browser automation. It plans and executes multi-step actions to uncover data that standard scraping cannot reach.
Overview
FIRE-1 differs from the Spark-1 models used in the Agent API. While Spark-1 focuses on autonomous web research (searching the web, navigating sites, synthesizing information), FIRE-1 is a browser automation agent designed to interact with complex page elements to extract structured data from specific URLs.
FIRE-1 vs Spark-1
| Capability | FIRE-1 | Spark-1 Mini/Pro |
|---|---|---|
| Purpose | Browser automation extraction | Autonomous web research |
| URLs Required | Yes | No (optional) |
| Endpoint | /v1/extract | /v2/agent |
| Browser Control | Full (clicks, forms, pagination) | Search + navigate |
| Schema Output | Yes | Yes |
| Web Search | No | Yes (built-in) |
| Cost | Variable (per-request complexity) | Dynamic (credit-based) |
| Best For | Complex single-site extraction | Multi-site research |
When to Use FIRE-1
Use FIRE-1 when your target data requires browser interaction to access:
- Paginated content -- tables, forums, or listings that span multiple pages
- Dynamic elements -- data behind "Load More" buttons, accordions, tabs
- Multi-step navigation -- content requiring sequential clicks to reach
- Interactive forms -- data that appears after filter/search interactions
- Hidden content -- elements that only render after user interaction
Use Spark-1 (Agent API) instead when:
- You do not have specific URLs
- You need web search capabilities
- The task involves cross-site research
- Data is on simple, static pages
API Endpoint
POST https://api.firecrawl.dev/v1/extractv1 Endpoint
FIRE-1 uses the /v1/extract endpoint, not /v2/extract. This is distinct from the newer Extract API which uses /v1/extract as well but can operate without an agent.
Rate Limit: 10 requests per minute
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
urls | array | Yes | Target URLs to extract from |
prompt | string | Yes | Natural language description of the extraction task |
schema | object | Yes | JSON Schema defining the output structure |
agent | object | Yes | Agent configuration: {"model": "FIRE-1"} |
Schema Definition
Define the structure of your expected output using JSON Schema:
json
{
"type": "object",
"properties": {
"company_name": { "type": "string" },
"pricing_plans": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "string" },
"features": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["name", "price"]
}
}
},
"required": ["company_name", "pricing_plans"]
}Usage Examples
Python
python
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="fc-YOUR-API-KEY")
result = app.extract(
urls=["https://example.com/pricing"],
prompt="Extract all pricing plans including plan name, monthly price, and features list",
schema={
"type": "object",
"properties": {
"plans": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"monthly_price": {"type": "string"},
"features": {
"type": "array",
"items": {"type": "string"}
}
},
"required": ["name", "monthly_price"]
}
}
},
"required": ["plans"]
},
agent={"model": "FIRE-1"}
)
for plan in result['data']['plans']:
print(f"{plan['name']}: {plan['monthly_price']}")
for feature in plan.get('features', []):
print(f" - {feature}")Node.js
javascript
import FirecrawlApp from '@mendable/firecrawl-js';
const app = new FirecrawlApp({ apiKey: "fc-YOUR-API-KEY" });
const result = await app.extract({
urls: ["https://example.com/pricing"],
prompt: "Extract all pricing plans including plan name, monthly price, and features list",
schema: {
type: "object",
properties: {
plans: {
type: "array",
items: {
type: "object",
properties: {
name: { type: "string" },
monthly_price: { type: "string" },
features: { type: "array", items: { type: "string" } }
},
required: ["name", "monthly_price"]
}
}
},
required: ["plans"]
},
agent: { model: "FIRE-1" }
});
console.log(result.data);cURL
bash
curl -X POST https://api.firecrawl.dev/v1/extract \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer fc-YOUR-API-KEY' \
-d '{
"urls": ["https://example.com/pricing"],
"prompt": "Extract all pricing plans including plan name, monthly price, and features list",
"schema": {
"type": "object",
"properties": {
"plans": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"monthly_price": {"type": "string"},
"features": {"type": "array", "items": {"type": "string"}}
},
"required": ["name", "monthly_price"]
}
}
},
"required": ["plans"]
},
"agent": {"model": "FIRE-1"}
}'Use Cases
Forum Thread Extraction
Extract all comments from a paginated forum:
python
result = app.extract(
urls=["https://forum.example.com/thread/12345"],
prompt="Extract all user comments from this forum thread, including username, timestamp, and comment text. Follow pagination to get all pages.",
schema={
"type": "object",
"properties": {
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"username": {"type": "string"},
"timestamp": {"type": "string"},
"text": {"type": "string"}
}
}
}
}
},
agent={"model": "FIRE-1"}
)Filtered Product Listings
Extract products after applying filters:
python
result = app.extract(
urls=["https://store.example.com/products"],
prompt="Filter products by category 'Electronics' and price range '$50-$200', then extract all visible product names, prices, and ratings",
schema={
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"price": {"type": "string"},
"rating": {"type": "number"}
}
}
}
}
},
agent={"model": "FIRE-1"}
)Tabbed Content
Extract data from multiple tabs on a page:
python
result = app.extract(
urls=["https://example.com/product/specs"],
prompt="Click through all specification tabs (Overview, Technical, Dimensions) and extract the content from each tab",
schema={
"type": "object",
"properties": {
"overview": {"type": "string"},
"technical_specs": {"type": "object"},
"dimensions": {"type": "object"}
}
},
agent={"model": "FIRE-1"}
)Cost
FIRE-1 pricing is non-deterministic -- costs vary based on:
- Number of browser actions required
- Complexity of the page interaction
- Number of pages navigated
- Amount of data extracted
Use the credit calculator to estimate costs for your specific use case. FIRE-1 requests are generally more expensive than standard extraction due to the advanced browser automation and AI planning involved.
Limitations
- Cloud only -- not available in self-hosted deployments
- Rate limited to 10 requests per minute
- Variable cost -- complex interactions consume more credits
- URL required -- unlike Spark-1, you must provide target URLs
- No web search -- cannot discover URLs autonomously
Related Pages
- Agent API (Spark-1) -- Autonomous research without URLs
- Extract API -- Standard extraction without browser automation
- AI Models -- Spark-1 Mini vs Pro comparison
- LLM Extract (Legacy) -- Schema-based JSON extraction on scrape
- Browser Sandbox -- Manual browser control
Back to: Features Overview -->