firecrawl-hello-world
Provides starter code for Firecrawl's scrape, crawl, map, and extract APIs.
Install
mkdir -p .claude/skills/firecrawl-hello-world && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3828" && unzip -o skill.zip -d .claude/skills/firecrawl-hello-world && rm skill.zipInstalls to .claude/skills/firecrawl-hello-world
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Create a minimal working Firecrawl example that scrapes a page to markdown.Key capabilities
- →Scrape a single web page to markdown, HTML, metadata, and links
- →Crawl multiple web pages recursively while respecting robots.txt
- →Discover all URLs on a site using sitemap and SERP
- →Extract structured data from a page using an LLM and JSON schema
- →Scrape multiple URLs concurrently in a batch operation
How it works
The skill uses the Firecrawl API to perform web scraping, crawling, URL discovery, and structured data extraction. It provides code snippets for each core endpoint: scrape, crawl, map, and extract.
Inputs & outputs
When to use firecrawl-hello-world
- →Scraping single pages to markdown
- →Crawling multiple pages recursively
- →Extracting structured data from websites
- →Testing Firecrawl API connectivity
About this skill
Firecrawl Hello World
Overview
Four minimal examples covering Firecrawl's core endpoints: scrape (single page), crawl (multi-page), map (URL discovery), and extract (LLM structured data). Each is a standalone snippet you can run immediately.
Prerequisites
@mendable/firecrawl-jsinstalled (npm install @mendable/firecrawl-js)FIRECRAWL_API_KEYenvironment variable set
Instructions
Step 1: Single-Page Scrape
import FirecrawlApp from "@mendable/firecrawl-js";
const firecrawl = new FirecrawlApp({
apiKey: process.env.FIRECRAWL_API_KEY!,
});
// Scrape one page — returns markdown, HTML, metadata, links
const result = await firecrawl.scrapeUrl("https://docs.firecrawl.dev", {
formats: ["markdown"],
});
console.log("Title:", result.metadata?.title);
console.log("Markdown:", result.markdown?.substring(0, 500));
Step 2: Multi-Page Crawl
// Crawl a site recursively — follows links, respects robots.txt
const crawlResult = await firecrawl.crawlUrl("https://docs.firecrawl.dev", {
limit: 10, // max 10 pages (saves credits)
scrapeOptions: {
formats: ["markdown"],
},
});
console.log(`Crawled ${crawlResult.data?.length} pages`);
for (const page of crawlResult.data || []) {
console.log(` ${page.metadata?.title} — ${page.metadata?.sourceURL}`);
}
Step 3: Map a Site (URL Discovery)
// Discover all URLs on a site in ~2-3 seconds (uses sitemap + SERP)
const mapResult = await firecrawl.mapUrl("https://docs.firecrawl.dev");
console.log(`Found ${mapResult.links?.length} URLs`);
mapResult.links?.slice(0, 10).forEach(url => console.log(` ${url}`));
Step 4: LLM Extract (Structured Data)
// Extract structured data from a page using an LLM + JSON schema
const extracted = await firecrawl.scrapeUrl("https://firecrawl.dev/pricing", {
formats: ["extract"],
extract: {
schema: {
type: "object",
properties: {
plans: {
type: "array",
items: {
type: "object",
properties: {
name: { type: "string" },
price: { type: "string" },
credits: { type: "number" },
},
},
},
},
},
},
});
console.log("Pricing plans:", JSON.stringify(extracted.extract, null, 2));
Output
- Single-page markdown scraped from a live URL
- Multi-page crawl results with titles and source URLs
- Site map with all discovered URLs
- Structured JSON extracted by LLM from page content
Error Handling
| Error | Cause | Solution |
|---|---|---|
Cannot find module | SDK not installed | npm install @mendable/firecrawl-js |
401 Unauthorized | Missing or invalid API key | Check FIRECRAWL_API_KEY env var |
429 Too Many Requests | Rate limit exceeded | Wait and retry with backoff |
Empty markdown | JS-heavy page not rendered | Add waitFor: 5000 to scrape options |
402 Payment Required | Credits exhausted | Check balance at firecrawl.dev/app |
Examples
Python Hello World
from firecrawl import FirecrawlApp
firecrawl = FirecrawlApp(api_key="fc-YOUR_API_KEY")
# Scrape
result = firecrawl.scrape_url("https://example.com", params={
"formats": ["markdown"]
})
print(result["markdown"][:500])
# Map
urls = firecrawl.map_url("https://example.com")
print(f"Found {len(urls.get('links', []))} URLs")
Batch Scrape Multiple URLs
// Scrape many URLs at once — more efficient than individual scrapes
const batchResult = await firecrawl.batchScrapeUrls(
[
"https://docs.firecrawl.dev/features/scrape",
"https://docs.firecrawl.dev/features/crawl",
"https://docs.firecrawl.dev/features/extract",
],
{ formats: ["markdown"] }
);
for (const page of batchResult.data || []) {
console.log(`${page.metadata?.title}: ${page.markdown?.length} chars`);
}
Resources
Next Steps
Proceed to firecrawl-local-dev-loop for development workflow setup.
When not to use it
- →When the page is JS-heavy and requires rendering time, without adding a wait option
- →When the API key is missing or invalid, resulting in a 401 Unauthorized error
- →When the rate limit is exceeded, causing a 429 Too Many Requests error
Prerequisites
Limitations
- →The crawl limit is set to a maximum of 10 pages to save credits
- →Empty markdown can occur if a JS-heavy page is not rendered with a wait option
- →A 402 Payment Required error indicates exhausted credits
How it compares
This skill provides runnable code examples for specific Firecrawl API functions, unlike manually constructing API requests for each task.
Compared to similar skills
firecrawl-hello-world side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| firecrawl-hello-world (this skill) | 1 | 26d | Review | Beginner |
| chrome-devtools | 41 | 7mo | Review | Intermediate |
| dependency-upgrade | 26 | 5mo | Review | Intermediate |
| playwright-browser-automation | 29 | 7mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
chrome-devtools
mrgoonie
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts. Use for automating browsers, taking screenshots, analyzing performance, monitoring network traffic, web scraping, form automation, and JavaScript debugging.
dependency-upgrade
wshobson
Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
playwright-browser-automation
lackeyjb
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
nestjs-expert
davila7
Nest.js framework expert specializing in module architecture, dependency injection, middleware, guards, interceptors, testing with Jest/Supertest, TypeORM/Mongoose integration, and Passport.js authentication. Use PROACTIVELY for any Nest.js application issues including architecture decisions, testing strategies, performance optimization, or debugging complex dependency injection problems. If a specialized expert is a better fit, I will recommend switching and stop.
zod-4
prowler-cloud
Zod 4 schema validation patterns. Trigger: When creating or updating Zod v4 schemas for validation/parsing (forms, request payloads, adapters), including v3 -> v4 migration patterns.
develop-ai-functions-example
vercel
Develop examples for AI SDK functions. Use when creating, running, or modifying examples under examples/ai-functions/src to validate provider support, demonstrate features, or create test fixtures.