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…
Firecrawl API integration with managed authentication. An agent skill from LeoYeAI/openclaw-master-skills.
$ npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills firecrawl --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "firecrawl" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/firecrawl-api into .claude/skills/firecrawl/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "firecrawl", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/firecrawl-apiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills firecrawl --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/firecrawl-api .agents/skills/firecrawl && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "firecrawl" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/firecrawl-api into .agents/skills/firecrawl/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "firecrawl", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills firecrawl --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/firecrawl-api .cursor/skills/firecrawl && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "firecrawl" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/firecrawl-api into .cursor/skills/firecrawl/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "firecrawl", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/firecrawl-api--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills firecrawl --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/firecrawl-api .gemini/skills/firecrawl && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "firecrawl" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/firecrawl-api into .gemini/skills/firecrawl/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "firecrawl", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills firecrawlInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/firecrawl-api .github/skills/firecrawl && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "firecrawl" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/firecrawl-api into .github/skills/firecrawl/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "firecrawl", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill firecrawl -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills firecrawl --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/firecrawl-api .opencode/skills/firecrawl && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "firecrawl" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/firecrawl-api into .opencode/skills/firecrawl/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "firecrawl", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
firecrawlFirecrawl 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. 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.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
gateway.maton.aictrl.maton.aidocs.firecrawl.devliveview.firecrawl.devapi.firecrawl.devconnect.maton.aiAlso links to:
maton.aifirecrawl.devdiscord.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
MATON_API_KEYAPI_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires network access and valid Maton API key
From compatibility in the SKILL.md frontmatter.
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.
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.
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.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,070 words, ~6,155 tokens.
.claude/skills/firecrawl/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Access the Firecrawl API with managed authentication. Scrape webpages, crawl entire websites, map site URLs, and search the web with full content extraction.
# 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))
EOFhttps://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.
All requests require the Maton API key in the Authorization header:
Authorization: Bearer $MATON_API_KEYEnvironment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"Manage your Firecrawl connections at https://ctrl.maton.ai.
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))
EOFpython <<'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))
EOFpython <<'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))
EOFResponse:
{
"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"
}
}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))
EOFIf you have multiple Firecrawl connections, specify which one to use with the Maton-Connection header:
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))
EOFIf omitted, the gateway uses the default (oldest) active connection.
POST /firecrawl/v2/scrapeExtract content from a single webpage.
Required Parameters:
url (string): The webpage URL to scrapeOptional 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 includeexcludeTags (array): HTML tags to excludewaitFor (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 scrapingheaders (object): Custom HTTP headersblockAds (boolean): Block ads and cookie banners (default: true)Example:
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))
EOFResponse:
{
"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
}
}
}POST /firecrawl/v2/crawlStart crawling an entire website. Returns a crawl ID for status polling.
Required Parameters:
url (string): The base URL to start crawling fromOptional Parameters:
limit (integer): Maximum pages to crawl (default: 10000)maxDepth (integer): Maximum crawl depthincludePaths (array): Regex patterns for URLs to includeexcludePaths (array): Regex patterns for URLs to excludeallowSubdomains (boolean): Enable subdomain crawlingallowExternalLinks (boolean): Follow external linksscrapeOptions (object): Options for each page scrape (formats, onlyMainContent, etc.)webhook (string): Webhook URL for completion notificationExample:
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))
EOFResponse:
{
"success": true,
"id": "019cdc53-0acf-76ec-a80c-3ead753b2730",
"url": "https://api.firecrawl.dev/v1/crawl/019cdc53-0acf-76ec-a80c-3ead753b2730"
}GET /firecrawl/v2/crawl/{id}Get the status and results of a crawl job.
Path Parameters:
id (string): The crawl job IDExample:
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))
EOFResponse:
{
"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 progresscompleted - Crawl finished successfullyfailed - Crawl failedDELETE /firecrawl/v2/crawl/{id}Cancel an in-progress crawl job.
Path Parameters:
id (string): The crawl job IDExample:
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))
EOFResponse:
{
"success": true,
"status": "cancelled"
}POST /firecrawl/v2/mapGet all URLs from a website without scraping content.
Required Parameters:
url (string): The starting URLOptional Parameters:
search (string): Query to order results by relevancelimit (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 millisecondsExample:
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))
EOFResponse:
{
"success": true,
"links": [
"https://docs.firecrawl.dev",
"https://docs.firecrawl.dev/api-reference",
"https://docs.firecrawl.dev/introduction"
]
}POST /firecrawl/v2/searchSearch 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 extractionExample:
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))
EOFResponse:
{
"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
}POST /firecrawl/v2/batch/scrapeScrape multiple URLs in a single batch job.
Required Parameters:
urls (array): List of URLs to scrapeOptional Parameters:
formats (array): Output formats (default: ["markdown"])onlyMainContent (boolean): Extract only main content (default: true)webhook (string): Webhook URL for completion notificationExample:
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))
EOFResponse:
{
"success": true,
"id": "019cdc59-56b9-7096-a9f9-95fcc92a3a75",
"url": "https://api.firecrawl.dev/v1/batch/scrape/019cdc59-56b9-7096-a9f9-95fcc92a3a75"
}GET /firecrawl/v2/batch/scrape/{id}Get the status and results of a batch scrape job.
Path Parameters:
id (string): The batch scrape job IDExample:
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))
EOFResponse:
{
"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
}
}
]
}DELETE /firecrawl/v2/batch/scrape/{id}Cancel an in-progress batch scrape job.
Path Parameters:
id (string): The batch scrape job IDGET /firecrawl/v2/batch/scrape/{id}/errorsGet errors from a batch scrape job.
Path Parameters:
id (string): The batch scrape job IDResponse:
{
"errors": [],
"robotsBlocked": []
}GET /firecrawl/v2/crawl/{id}/errorsGet errors from a crawl job.
Path Parameters:
id (string): The crawl job IDExample:
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))
EOFResponse:
{
"errors": [],
"robotsBlocked": []
}GET /firecrawl/v2/crawl/activeGet all active crawl jobs.
Example:
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))
EOFResponse:
{
"success": true,
"crawls": []
}POST /firecrawl/v2/extractExtract structured data from URLs using AI.
Required Parameters:
urls (array): List of URLs to extract fromprompt (string): Natural language description of what to extractOptional Parameters:
schema (object): JSON schema for structured outputscrapeOptions (object): Options for scrapingExample:
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))
EOFResponse:
{
"success": true,
"id": "019cdc59-977b-774b-b584-af2af45c055b",
"urlTrace": []
}GET /firecrawl/v2/extract/{id}Get the status and results of an extract job.
Path Parameters:
id (string): The extract job IDExample:
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))
EOFResponse:
{
"success": true,
"data": [
{
"heading": "Example Domain",
"description": "This domain is for use in documentation..."
}
],
"status": "completed",
"expiresAt": "2026-03-11T16:03:05.000Z"
}POST /firecrawl/v2/browserCreate an interactive browser session for manual control via CDP.
Example:
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))
EOFResponse:
{
"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"
}GET /firecrawl/v2/browserList all active browser sessions.
Example:
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))
EOFResponse:
{
"success": true,
"sessions": [
{
"id": "019cdc5d-5c9d-732e-a7bd-f095a96a2bb1",
"status": "active",
"cdpUrl": "wss://browser.firecrawl.dev/cdp/...",
"liveViewUrl": "https://liveview.firecrawl.dev/..."
}
]
}DELETE /firecrawl/v2/browser/{id}Delete a browser session.
Path Parameters:
id (string): The browser session IDPOST /firecrawl/v2/agentStart 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 toschema (object): JSON schema for structured outputmaxCredits (integer): Spending limit (default: 2500)strictConstrainToURLs (boolean): Only visit provided URLsmodel (string): "spark-1-mini" (default, cheaper) or "spark-1-pro" (higher accuracy)Example:
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))
EOFResponse:
{
"success": true,
"id": "019cdc5d-a2d4-728c-9c91-e9eae475568f"
}GET /firecrawl/v2/agent/{id}Get the status and results of an agent job.
Path Parameters:
id (string): The agent job IDExample:
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))
EOFResponse:
{
"success": true,
"status": "completed",
"model": "spark-1-pro",
"data": {...},
"expiresAt": "2026-03-12T10:07:30.055Z"
}DELETE /firecrawl/v2/agent/{id}Cancel an in-progress agent job.
Path Parameters:
id (string): The agent job IDUse actions parameter to interact with pages before scraping:
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))
EOFAvailable Actions:
wait - Wait for specified millisecondsclick - Click an element by CSS selectorwrite - Type text into an input fieldscroll - Scroll the pagescreenshot - Take a screenshotexecute - Run custom JavaScriptconst 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);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'])onlyMainContent: true to get cleaner output without navigation/footerjq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments| Status | Meaning |
|---|---|
| 400 | Missing Firecrawl connection or invalid parameters |
| 401 | Invalid or missing Maton API key |
| 402 | Payment required (Firecrawl credits exhausted) |
| 409 | Conflict (e.g., crawl already completed) |
| 429 | Rate limited |
| 4xx/5xx | Passthrough error from Firecrawl API |
MATON_API_KEY environment variable is set:echo $MATON_API_KEYpython <<'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))
EOFfirecrawl. For example:https://gateway.maton.ai/firecrawl/v2/scrapehttps://gateway.maton.ai/v2/scrape© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in skills/firecrawl-api of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Firecrawl this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~6.2k | Automated safety check: Pass | MIT | |
| Firecrawl Monitorfirecrawl/skills | 116 | — | ~1.4k | Automated safety check: Pass | ISC | |
| Firecrawl Rate Limitsjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Firecrawl Monitoraiskillstore/marketplace | 430 | 1 repos | ~4.6k | Automated safety check: Pass | None | |
| Firecrawl Page Scrape Integrationfirecrawl/firecrawl | 190k | 1 repos | ~944 | Automated safety check: Pass | ISC | |
| Firecrawl App Integrationfirecrawl/firecrawl | 190k | — | ~2.1k | Automated safety check: Notes | ISC |
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…
jeremylongshore/tons-of-skills-marketplace
Implement bounded Firecrawl throttling and retry behavior using current team RPM, browser concurrency, queue status, timeouts, and Retry-After.
aiskillstore/marketplace
Create Firecrawl monitors that watch pages, sites, or web search results and send change alerts by email or webhook.
firecrawl/firecrawl
Adds Firecrawl's /scrape endpoint to application code to pull markdown, HTML, links, screenshots or structured data from a single known URL.
firecrawl/firecrawl
Adds web search, scraping, structured extraction and browser interaction to application code using Firecrawl's scrape, search and interact endpoints.
firecrawl/firecrawl
Guides adding Firecrawl's /interact endpoint to product code for pages that need clicks, forms, pagination or logged-in flows beyond plain scraping.
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.
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.
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.
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.
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.
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.
Works with
Categories
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.
Firecrawl fits situations like: users want to extract content from websites; crawl entire sites.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.