Agent skill

Firecrawl

by LeoYeAI in LeoYeAI/openclaw-master-skills

Firecrawl API integration with managed authentication. An agent skill from LeoYeAI/openclaw-master-skills.

MITAuto-check passedData & Analytics

Install Firecrawl

skills CLI
$ npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install LeoYeAI/openclaw-master-skills firecrawl --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/firecrawl-api .claude/skills/firecrawl && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
firecrawl
GitHub stars
2.2k
Token cost
~6.2k tokens
SKILL.md length
1,070 words
Files
3
Skills in repo
972
Repo updated
First seen
Licence
MIT

At a glance

Firecrawl API integration with managed authentication. An agent skill from LeoYeAI/openclaw-master-skills.

  • Works in 3 steps: Sign in or create an account at maton.ai → Go to maton.ai/settings → Copy your API key
  • Users want to extract content from websites
  • SKILL.md covers Quick Start, Base URL, Authentication and Connection Management, plus 1 more section
  • Calls python; reaches gateway.maton.ai and ctrl.maton.ai; needs MATON_API_KEY and API_KEY

What it does

Firecrawl is an agent skill from LeoYeAI/openclaw-master-skills. Firecrawl API integration with managed authentication. Scrape, crawl, map, and search web content. Use this skill when users want to extract content from websites, crawl entire sites, map URLs, or search the web. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).

Its SKILL.md is about 6.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `_meta.json`). Compatibility notes: Requires network access and valid Maton API key

It sits in Data & Analytics, covering Web scraping. It works with Firecrawl. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.

When your agent uses it

  • Users want to extract content from websites
  • Crawl entire sites

Example prompts

  • “/firecrawl”

Requirements

  • Python 3
  • A credential in MATON_API_KEY
  • A credential in YOUR_API_KEY
  • Compatibility (from SKILL.md): Requires network access and valid Maton API key

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Copy your API key

What it can do on your machine

Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • gateway.maton.ai
    • ctrl.maton.ai
    • docs.firecrawl.dev
    • liveview.firecrawl.dev
    • api.firecrawl.dev
    • connect.maton.ai

    Also links to:

    • maton.ai
    • firecrawl.dev
    • discord.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • MATON_API_KEY
    • API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires network access and valid Maton API key

    From compatibility in the SKILL.md frontmatter.

Context cost

Firecrawl loads about 6.2k tokens when it runs. Until then it costs about 80 tokens; SKILL.md has 1,070 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~80
When it runs · the whole SKILL.md, loaded when a task matches
~6.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,070 words, ~6,155 tokens.

Download SKILL.mdSave it as .claude/skills/firecrawl/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
firecrawl
description
Firecrawl API integration with managed authentication. Scrape, crawl, map, and search web content. Use this skill when users want to extract content from websites, crawl entire sites, map URLs, or search the web. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).
compatibility
Requires network access and valid Maton API key
metadata.author
maton
metadata.version
1.0

Firecrawl

Access the Firecrawl API with managed authentication. Scrape webpages, crawl entire websites, map site URLs, and search the web with full content extraction.

Quick Start

bash
# Scrape a webpage
python <<'EOF'
import urllib.request, os, json
data = json.dumps({"url": "https://example.com", "formats": ["markdown"]}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/scrape', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Base URL

https://gateway.maton.ai/firecrawl/{native-api-path}

Replace {native-api-path} with the actual Firecrawl API endpoint path. The gateway proxies requests to api.firecrawl.dev and automatically injects your API key.

Authentication

All requests require the Maton API key in the Authorization header:

Authorization: Bearer $MATON_API_KEY

Environment Variable: Set your API key as MATON_API_KEY:

bash
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Copy your API key

Connection Management

Manage your Firecrawl connections at https://ctrl.maton.ai.

List Connections
bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=firecrawl&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Create Connection
bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'firecrawl'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Get Connection
bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "connection": {
    "connection_id": "b5449045-2dcd-4e99-816f-65f80511affb",
    "status": "ACTIVE",
    "creation_time": "2026-03-11T09:49:09.917114Z",
    "last_updated_time": "2026-03-11T09:49:27.616143Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "firecrawl",
    "metadata": {},
    "method": "API_KEY"
  }
}
Delete Connection
bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Specifying Connection

If you have multiple Firecrawl connections, specify which one to use with the Maton-Connection header:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({"url": "https://example.com"}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/scrape', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', 'b5449045-2dcd-4e99-816f-65f80511affb')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

If omitted, the gateway uses the default (oldest) active connection.

API Reference

Scrape
bash
POST /firecrawl/v2/scrape

Extract content from a single webpage.

Required Parameters:

  • url (string): The webpage URL to scrape

Optional Parameters:

  • formats (array): Output formats - "markdown", "html", "json", "screenshot", "links" (default: ["markdown"])
  • onlyMainContent (boolean): Extract only main content, exclude headers/footers (default: true)
  • includeTags (array): HTML tags to include
  • excludeTags (array): HTML tags to exclude
  • waitFor (integer): Milliseconds to wait before scraping (default: 0)
  • timeout (integer): Request timeout in ms (default: 30000, max: 300000)
  • mobile (boolean): Emulate mobile device (default: false)
  • actions (array): Browser actions to perform before scraping
  • headers (object): Custom HTTP headers
  • blockAds (boolean): Block ads and cookie banners (default: true)

Example:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "url": "https://docs.firecrawl.dev",
    "formats": ["markdown", "html"],
    "onlyMainContent": True,
    "waitFor": 1000
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/scrape', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "data": {
    "markdown": "# Example Domain\n\nThis domain is for use in documentation...",
    "metadata": {
      "title": "Example Domain",
      "language": "en",
      "sourceURL": "https://example.com",
      "url": "https://example.com/",
      "statusCode": 200,
      "contentType": "text/html",
      "creditsUsed": 1
    }
  }
}
Crawl (Start)
bash
POST /firecrawl/v2/crawl

Start crawling an entire website. Returns a crawl ID for status polling.

Required Parameters:

  • url (string): The base URL to start crawling from

Optional Parameters:

  • limit (integer): Maximum pages to crawl (default: 10000)
  • maxDepth (integer): Maximum crawl depth
  • includePaths (array): Regex patterns for URLs to include
  • excludePaths (array): Regex patterns for URLs to exclude
  • allowSubdomains (boolean): Enable subdomain crawling
  • allowExternalLinks (boolean): Follow external links
  • scrapeOptions (object): Options for each page scrape (formats, onlyMainContent, etc.)
  • webhook (string): Webhook URL for completion notification

Example:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "url": "https://example.com",
    "limit": 10,
    "scrapeOptions": {
        "formats": ["markdown"]
    }
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/crawl', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "id": "019cdc53-0acf-76ec-a80c-3ead753b2730",
  "url": "https://api.firecrawl.dev/v1/crawl/019cdc53-0acf-76ec-a80c-3ead753b2730"
}
Crawl (Get Status)
bash
GET /firecrawl/v2/crawl/{id}

Get the status and results of a crawl job.

Path Parameters:

  • id (string): The crawl job ID

Example:

bash
python <<'EOF'
import urllib.request, os, json
crawl_id = "019cdc53-0acf-76ec-a80c-3ead753b2730"
req = urllib.request.Request(f'https://gateway.maton.ai/firecrawl/v2/crawl/{crawl_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "status": "completed",
  "completed": 2,
  "total": 2,
  "creditsUsed": 2,
  "expiresAt": "2026-03-12T09:56:00.000Z",
  "data": [
    {
      "markdown": "# Example Domain\n\nThis domain is for use in documentation...",
      "metadata": {
        "title": "Example Domain",
        "sourceURL": "https://example.com",
        "statusCode": 200
      }
    }
  ]
}

Status Values:

  • scraping - Crawl in progress
  • completed - Crawl finished successfully
  • failed - Crawl failed
Crawl (Cancel)
bash
DELETE /firecrawl/v2/crawl/{id}

Cancel an in-progress crawl job.

Path Parameters:

  • id (string): The crawl job ID

Example:

bash
python <<'EOF'
import urllib.request, os, json
crawl_id = "019cdc53-0acf-76ec-a80c-3ead753b2730"
req = urllib.request.Request(f'https://gateway.maton.ai/firecrawl/v2/crawl/{crawl_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "status": "cancelled"
}
Map
bash
POST /firecrawl/v2/map

Get all URLs from a website without scraping content.

Required Parameters:

  • url (string): The starting URL

Optional Parameters:

  • search (string): Query to order results by relevance
  • limit (integer): Maximum links to return (default: 5000, max: 100000)
  • includeSubdomains (boolean): Include subdomains (default: true)
  • sitemap (string): Sitemap handling - "skip", "include", "only" (default: "include")
  • ignoreQueryParameters (boolean): Exclude URLs with query params (default: true)
  • timeout (integer): Timeout in milliseconds

Example:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "url": "https://docs.firecrawl.dev",
    "limit": 100,
    "includeSubdomains": False
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/map', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "links": [
    "https://docs.firecrawl.dev",
    "https://docs.firecrawl.dev/api-reference",
    "https://docs.firecrawl.dev/introduction"
  ]
}
bash
POST /firecrawl/v2/search

Search the web and get full page content for each result.

Required Parameters:

  • query (string): Search query (max 500 characters)

Optional Parameters:

  • limit (integer): Number of results (default: 5, max: 100)
  • sources (array): Search types - "web", "images", "news" (default: ["web"])
  • country (string): ISO country code (default: "US")
  • location (string): Geographic targeting (e.g., "Germany")
  • tbs (string): Time filter - "qdr:d" (day), "qdr:w" (week), "qdr:m" (month), "qdr:y" (year)
  • timeout (integer): Timeout in ms (default: 60000)
  • scrapeOptions (object): Options for content extraction

Example:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "query": "web scraping best practices",
    "limit": 5,
    "scrapeOptions": {
        "formats": ["markdown"]
    }
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/search', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "data": [
    {
      "url": "https://example.com/article",
      "title": "Web Scraping Best Practices",
      "description": "Learn the best practices for web scraping...",
      "markdown": "# Web Scraping Best Practices\n\n..."
    }
  ],
  "creditsUsed": 5
}
Batch Scrape (Start)
bash
POST /firecrawl/v2/batch/scrape

Scrape multiple URLs in a single batch job.

Required Parameters:

  • urls (array): List of URLs to scrape

Optional Parameters:

  • formats (array): Output formats (default: ["markdown"])
  • onlyMainContent (boolean): Extract only main content (default: true)
  • webhook (string): Webhook URL for completion notification

Example:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "urls": ["https://example.com", "https://example.org"],
    "formats": ["markdown"]
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/batch/scrape', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "id": "019cdc59-56b9-7096-a9f9-95fcc92a3a75",
  "url": "https://api.firecrawl.dev/v1/batch/scrape/019cdc59-56b9-7096-a9f9-95fcc92a3a75"
}
Batch Scrape (Get Status)
bash
GET /firecrawl/v2/batch/scrape/{id}

Get the status and results of a batch scrape job.

Path Parameters:

  • id (string): The batch scrape job ID

Example:

bash
python <<'EOF'
import urllib.request, os, json
batch_id = "019cdc59-56b9-7096-a9f9-95fcc92a3a75"
req = urllib.request.Request(f'https://gateway.maton.ai/firecrawl/v2/batch/scrape/{batch_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "status": "completed",
  "completed": 2,
  "total": 2,
  "creditsUsed": 2,
  "expiresAt": "2026-03-12T10:02:54.000Z",
  "data": [
    {
      "markdown": "# Example Domain\n\n...",
      "metadata": {
        "title": "Example Domain",
        "sourceURL": "https://example.com",
        "statusCode": 200
      }
    }
  ]
}
Batch Scrape (Cancel)
bash
DELETE /firecrawl/v2/batch/scrape/{id}

Cancel an in-progress batch scrape job.

Path Parameters:

  • id (string): The batch scrape job ID
Batch Scrape (Get Errors)
bash
GET /firecrawl/v2/batch/scrape/{id}/errors

Get errors from a batch scrape job.

Path Parameters:

  • id (string): The batch scrape job ID

Response:

json
{
  "errors": [],
  "robotsBlocked": []
}
Show full SKILL.md (437 more words)Show less
Crawl (Get Errors)
bash
GET /firecrawl/v2/crawl/{id}/errors

Get errors from a crawl job.

Path Parameters:

  • id (string): The crawl job ID

Example:

bash
python <<'EOF'
import urllib.request, os, json
crawl_id = "019cdc53-0acf-76ec-a80c-3ead753b2730"
req = urllib.request.Request(f'https://gateway.maton.ai/firecrawl/v2/crawl/{crawl_id}/errors')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "errors": [],
  "robotsBlocked": []
}
Crawl (Get Active)
bash
GET /firecrawl/v2/crawl/active

Get all active crawl jobs.

Example:

bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/crawl/active')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "crawls": []
}
Extract (Start)
bash
POST /firecrawl/v2/extract

Extract structured data from URLs using AI.

Required Parameters:

  • urls (array): List of URLs to extract from
  • prompt (string): Natural language description of what to extract

Optional Parameters:

  • schema (object): JSON schema for structured output
  • scrapeOptions (object): Options for scraping

Example:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "urls": ["https://example.com"],
    "prompt": "Extract the main heading and description"
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/extract', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "id": "019cdc59-977b-774b-b584-af2af45c055b",
  "urlTrace": []
}
Extract (Get Status)
bash
GET /firecrawl/v2/extract/{id}

Get the status and results of an extract job.

Path Parameters:

  • id (string): The extract job ID

Example:

bash
python <<'EOF'
import urllib.request, os, json
extract_id = "019cdc59-977b-774b-b584-af2af45c055b"
req = urllib.request.Request(f'https://gateway.maton.ai/firecrawl/v2/extract/{extract_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "data": [
    {
      "heading": "Example Domain",
      "description": "This domain is for use in documentation..."
    }
  ],
  "status": "completed",
  "expiresAt": "2026-03-11T16:03:05.000Z"
}
Browser (Create Session)
bash
POST /firecrawl/v2/browser

Create an interactive browser session for manual control via CDP.

Example:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/browser', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "id": "019cdc5d-5c9d-732e-a7bd-f095a96a2bb1",
  "cdpUrl": "wss://browser.firecrawl.dev/cdp/...",
  "liveViewUrl": "https://liveview.firecrawl.dev/...",
  "interactiveLiveViewUrl": "https://liveview.firecrawl.dev/...",
  "expiresAt": "2026-03-11T10:17:12.409Z"
}
Browser (List Sessions)
bash
GET /firecrawl/v2/browser

List all active browser sessions.

Example:

bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/browser')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "sessions": [
    {
      "id": "019cdc5d-5c9d-732e-a7bd-f095a96a2bb1",
      "status": "active",
      "cdpUrl": "wss://browser.firecrawl.dev/cdp/...",
      "liveViewUrl": "https://liveview.firecrawl.dev/..."
    }
  ]
}
Browser (Delete Session)
bash
DELETE /firecrawl/v2/browser/{id}

Delete a browser session.

Path Parameters:

  • id (string): The browser session ID
Agent (Start)
bash
POST /firecrawl/v2/agent

Start an AI agent to autonomously navigate and extract data.

Required Parameters:

  • prompt (string): Description of what data to extract (max 10,000 chars)

Optional Parameters:

  • urls (array): URLs to constrain the agent to
  • schema (object): JSON schema for structured output
  • maxCredits (integer): Spending limit (default: 2500)
  • strictConstrainToURLs (boolean): Only visit provided URLs
  • model (string): "spark-1-mini" (default, cheaper) or "spark-1-pro" (higher accuracy)

Example:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "prompt": "Find the pricing information",
    "urls": ["https://example.com"],
    "model": "spark-1-mini"
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/agent', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "id": "019cdc5d-a2d4-728c-9c91-e9eae475568f"
}
Agent (Get Status)
bash
GET /firecrawl/v2/agent/{id}

Get the status and results of an agent job.

Path Parameters:

  • id (string): The agent job ID

Example:

bash
python <<'EOF'
import urllib.request, os, json
agent_id = "019cdc5d-a2d4-728c-9c91-e9eae475568f"
req = urllib.request.Request(f'https://gateway.maton.ai/firecrawl/v2/agent/{agent_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "success": true,
  "status": "completed",
  "model": "spark-1-pro",
  "data": {...},
  "expiresAt": "2026-03-12T10:07:30.055Z"
}
Agent (Cancel)
bash
DELETE /firecrawl/v2/agent/{id}

Cancel an in-progress agent job.

Path Parameters:

  • id (string): The agent job ID

Browser Actions

Use actions parameter to interact with pages before scraping:

bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "url": "https://example.com",
    "formats": ["markdown", "screenshot"],
    "actions": [
        {"type": "wait", "milliseconds": 2000},
        {"type": "click", "selector": "#load-more"},
        {"type": "scroll", "direction": "down", "amount": 500},
        {"type": "screenshot"}
    ]
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/firecrawl/v2/scrape', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Available Actions:

  • wait - Wait for specified milliseconds
  • click - Click an element by CSS selector
  • write - Type text into an input field
  • scroll - Scroll the page
  • screenshot - Take a screenshot
  • execute - Run custom JavaScript

Code Examples

JavaScript
javascript
const response = await fetch('https://gateway.maton.ai/firecrawl/v2/scrape', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${process.env.MATON_API_KEY}`
  },
  body: JSON.stringify({
    url: 'https://example.com',
    formats: ['markdown']
  })
});
const data = await response.json();
console.log(data.data.markdown);
Python
python
import os
import requests

response = requests.post(
    'https://gateway.maton.ai/firecrawl/v2/scrape',
    headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
    json={
        'url': 'https://example.com',
        'formats': ['markdown']
    }
)
data = response.json()
print(data['data']['markdown'])

Notes

  • Scrape uses 1 credit per page (basic proxy)
  • Enhanced proxy for anti-bot sites uses up to 5 credits
  • Crawl results expire after 24 hours
  • Maximum timeout is 300,000ms (5 minutes)
  • Use onlyMainContent: true to get cleaner output without navigation/footer
  • IMPORTANT: When piping curl output to jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments

Error Handling

StatusMeaning
400Missing Firecrawl connection or invalid parameters
401Invalid or missing Maton API key
402Payment required (Firecrawl credits exhausted)
409Conflict (e.g., crawl already completed)
429Rate limited
4xx/5xxPassthrough error from Firecrawl API
Troubleshooting: API Key Issues
  1. Check that the MATON_API_KEY environment variable is set:
bash
echo $MATON_API_KEY
  1. Verify the API key is valid by listing connections:
bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Troubleshooting: Invalid App Name
  1. Ensure your URL path starts with firecrawl. For example:
  • Correct: https://gateway.maton.ai/firecrawl/v2/scrape
  • Incorrect: https://gateway.maton.ai/v2/scrape

Resources

© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in skills/firecrawl-api of LeoYeAI/openclaw-master-skills.

  • SKILL.md
  • LICENSE.txt
  • _meta.json

Open the folder on GitHubat commit e5199b5

Compare with similar skills

Firecrawl next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Firecrawl compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Firecrawl this skillLeoYeAI/openclaw-master-skills2.2k—~6.2kAutomated safety check: PassMIT
Firecrawl Monitorfirecrawl/skills116—~1.4kAutomated safety check: PassISC
Firecrawl Rate Limitsjeremylongshore/tons-of-skills-marketplace2.8k—~1.1kAutomated safety check: PassMIT
Firecrawl Monitoraiskillstore/marketplace4301 repos~4.6kAutomated safety check: PassNone
Firecrawl Page Scrape Integrationfirecrawl/firecrawl190k1 repos~944Automated safety check: PassISC
Firecrawl App Integrationfirecrawl/firecrawl190k—~2.1kAutomated safety check: NotesISC

Similar skills

  • Firecrawl Monitor

    firecrawl/skills

    Alert by webhook/email on web changes — use for "monitor/watch/track/alert me when": recurring checks on known URLs (prefer over repeated one-off scrapes) or web-wide watches for new results…

    116 GitHub stars~1.4k tokensUpdated yesterday
    Data & AnalyticsAuto-check passed
  • Firecrawl Rate Limits

    jeremylongshore/tons-of-skills-marketplace

    Implement bounded Firecrawl throttling and retry behavior using current team RPM, browser concurrency, queue status, timeouts, and Retry-After.

    2.8k GitHub stars~1.1k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Firecrawl Monitor

    aiskillstore/marketplace

    Create Firecrawl monitors that watch pages, sites, or web search results and send change alerts by email or webhook.

    430 GitHub starsUsed in 1 repo~4.6k tokens
    Data & AnalyticsAuto-check passed
  • Adds Firecrawl's /scrape endpoint to application code to pull markdown, HTML, links, screenshots or structured data from a single known URL.

    190k GitHub starsUsed in 1 repo~944 tokens
    Data & AnalyticsAuto-check passed
  • Firecrawl App Integration

    firecrawl/firecrawl

    Adds web search, scraping, structured extraction and browser interaction to application code using Firecrawl's scrape, search and interact endpoints.

    190k GitHub stars~2.1k tokensUpdated today
    Data & AnalyticsAuto-check: notes
  • Guides adding Firecrawl's /interact endpoint to product code for pages that need clicks, forms, pagination or logged-in flows beyond plain scraping.

    190k GitHub starsUsed in 1 repo~731 tokens
    Data & AnalyticsAuto-check passed

More from LeoYeAI/openclaw-master-skills

All 972 skills in this repo
  • DevOps Pipeline Management

    LeoYeAI/openclaw-master-skills

    Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • Feishu Document Collaboration

    LeoYeAI/openclaw-master-skills

    Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.

    2.2k GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Files Memory System

    LeoYeAI/openclaw-master-skills

    Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.

    2.2k GitHub stars~3.8k tokensUpdated 2 mo ago
    Auto-check passed
  • GEO-Claw AI Visibility Agent

    LeoYeAI/openclaw-master-skills

    Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Google Workspace CLI

    LeoYeAI/openclaw-master-skills

    Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.

    2.2k GitHub stars~2.6k tokensUpdated 2 mo ago
    Auto-check: notes
  • HealthFit Health Advisors

    LeoYeAI/openclaw-master-skills

    Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.

    2.2k GitHub stars~4.4k tokensUpdated 2 mo ago
    Auto-check passed

Works with

Questions about Firecrawl

What does Firecrawl do?

Firecrawl API integration with managed authentication. An agent skill from LeoYeAI/openclaw-master-skills. Firecrawl is an agent skill from LeoYeAI/openclaw-master-skills. Firecrawl API integration with managed authentication.

When should I use Firecrawl?

Firecrawl fits situations like: users want to extract content from websites; crawl entire sites.

How do I install Firecrawl in Claude Code?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a claude-code`. Or copy the skill folder (skills/firecrawl-api in LeoYeAI/openclaw-master-skills) into .claude/skills/firecrawl in your project. Claude Code loads it when a task matches its description.

How do I install Firecrawl in Codex?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a codex`. Or copy the skill folder (skills/firecrawl-api in LeoYeAI/openclaw-master-skills) into .agents/skills/firecrawl in your project. Codex loads it when a task matches its description.

Can I use Firecrawl in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/firecrawl, .gemini/skills/firecrawl, .github/skills/firecrawl and .opencode/skills/firecrawl in your project.

What does Firecrawl need to run?

Going by SKILL.md and its folder, Firecrawl needs the command-line tools its instructions call (python) and credentials named MATON_API_KEY and API_KEY. Our summary lists: Python 3; A credential in MATON_API_KEY; A credential in YOUR_API_KEY. Compatibility (from SKILL.md): Requires network access and valid Maton API key.

Does Firecrawl access the network?

SKILL.md names 9 domains. In commands or code: gateway.maton.ai, ctrl.maton.ai, docs.firecrawl.dev, liveview.firecrawl.dev, api.firecrawl.dev and connect.maton.ai; the agent is likely to contact these when it follows the instructions. As links in the text: maton.ai, firecrawl.dev and discord.com. This is read from the text; nothing was executed.

Is Firecrawl safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Firecrawl use?

Firecrawl is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Firecrawl use?

About 6.2k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Firecrawl?

Skills that share tags, products or a category with Firecrawl: Firecrawl Monitor (firecrawl/skills, 116 stars), Firecrawl Rate Limits (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Firecrawl Monitor (aiskillstore/marketplace, 430 stars) and Firecrawl Page Scrape Integration (firecrawl/firecrawl, 190k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Firecrawl?

LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,159 GitHub stars. The repository holds 972 skills in this directory. The repository was last updated on July 20, 2026.

Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.