[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-306":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":44,"readmeContent":45,"aiSummary":46,"trendingCount":15,"starSnapshotCount":15,"syncStatus":47,"lastSyncTime":48,"discoverSource":49},306,"firecrawl","firecrawl\u002Ffirecrawl","The API to search, scrape, and interact with the web at scale. 🔥","https:\u002F\u002Ffirecrawl.dev",null,"TypeScript",133557,7821,376,63,0,436,2906,12673,2110,120,"GNU Affero General Public License v3.0",false,"main",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"ai","ai-agents","ai-crawler","ai-scraping","ai-search","crawler","data-extraction","html-to-markdown","llm","markdown","scraper","scraping","web-crawler","web-data","web-data-extraction","web-scraper","web-scraping","web-search","webscraping","2026-06-17 04:00:02","\u003Ch3 align=\"center\">\n  \u003Ca name=\"readme-top\">\u003C\u002Fa>\n  \u003Cimg\n    src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffirecrawl\u002Ffirecrawl\u002Fmain\u002Fimg\u002Ffirecrawl_logo.png\"\n    height=\"200\"\n  >\n\u003C\u002Fh3>\n\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Ffirecrawl\u002Fblob\u002Fmain\u002FLICENSE\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Ffirecrawl\u002Ffirecrawl\" alt=\"License\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Ffirecrawl-py\">\n    \u003Cimg src=\"https:\u002F\u002Fstatic.pepy.tech\u002Fbadge\u002Ffirecrawl-py\" alt=\"Downloads\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002FGitHub.com\u002Ffirecrawl\u002Ffirecrawl\u002Fgraphs\u002Fcontributors\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcontributors\u002Ffirecrawl\u002Ffirecrawl.svg\" alt=\"GitHub Contributors\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Ffirecrawl.dev\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVisit-firecrawl.dev-orange\" alt=\"Visit firecrawl.dev\">\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cdiv>\n  \u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Ffirecrawl\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFollow%20on%20X-000000?style=for-the-badge&logo=x&logoColor=white\" alt=\"Follow on X\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002F104100957\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFollow%20on%20LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white\" alt=\"Follow on LinkedIn\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002Ffirecrawl\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FJoin%20our%20Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white\" alt=\"Join our Discord\" \u002F>\n    \u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n---\n\n# **🔥 Firecrawl**\n\n**Power AI agents with clean web data.** The API to search, scrape, and interact with the web at scale. Open source and available as a [hosted service](https:\u002F\u002Ffirecrawl.dev\u002F?ref=github).\n\n_Pst. Hey, you, join our stargazers :)_\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Ffirecrawl\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Ffirecrawl\u002Ffirecrawl.svg?style=social&label=Star&maxAge=2592000\" alt=\"GitHub stars\">\n\u003C\u002Fa>\n\n---\n\n## Why Firecrawl?\n\n- **Industry-leading reliability**: Covers 96% of the web, including JS-heavy pages — no proxy headaches, just clean data ([see benchmarks](https:\u002F\u002Fwww.firecrawl.dev\u002Fblog\u002Fthe-worlds-best-web-data-api-v25))\n- **Blazingly fast**: P95 latency of 3.4s across millions of pages, built for real-time agents and dynamic apps\n- **LLM-ready output**: Clean markdown, structured JSON, screenshots, and more — spend fewer tokens, build better AI apps\n- **We handle the hard stuff**: Rotating proxies, orchestration, rate limits, JS-blocked content, and more — zero configuration\n- **Agent ready**: Connect Firecrawl to any AI agent or MCP client with a single command\n- **Media parsing**: Parse and extract content from web-hosted PDFs, DOCX, and more\n- **Actions**: Click, scroll, write, wait, and press before extracting content\n- **Open source**: Developed transparently and collaboratively — [join our community](https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Ffirecrawl)\n\n---\n\n## Feature Overview\n\n**Core Endpoints**\n\n| Feature | Description |\n|---------|-------------|\n| [**Search**](#search) | Search the web and get full page content from results |\n| [**Scrape**](#scrape) | Convert any URL to markdown, HTML, screenshots, or structured JSON |\n| [**Interact**](#interact) | Scrape a page, then interact with it using AI prompts or code |\n\n**More**\n\n| Feature | Description |\n|---------|-------------|\n| [**Agent**](#agent) | Automated data gathering, just describe what you need |\n| [**Crawl**](#crawl) | Scrape all URLs of a website with a single request |\n| [**Map**](#map) | Discover all URLs on a website instantly |\n| [**Batch Scrape**](#batch-scrape) | Scrape thousands of URLs asynchronously |\n\n---\n\n## Quick Start\n\nSign up at [firecrawl.dev](https:\u002F\u002Ffirecrawl.dev) to get your API key. Try the [playground](https:\u002F\u002Ffirecrawl.dev\u002Fplayground) to test it out.\n\n### Search\n\nSearch the web and get full content from results.\n\n```python\nfrom firecrawl import Firecrawl\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\nsearch_result = app.search(\"firecrawl\", limit=5)\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Node.js \u002F cURL \u002F CLI\u003C\u002Fb>\u003C\u002Fsummary>\n\n**Node.js**\n```javascript\nimport Firecrawl from '@mendable\u002Ffirecrawl-js';\n\nconst app = new Firecrawl({apiKey: \"fc-YOUR_API_KEY\"});\n\napp.search(\"firecrawl\", { limit: 5 })\n```\n\n**cURL**\n```bash\ncurl -X POST 'https:\u002F\u002Fapi.firecrawl.dev\u002Fv2\u002Fsearch' \\\n-H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n-H 'Content-Type: application\u002Fjson' \\\n-d '{\n  \"query\": \"firecrawl\",\n  \"limit\": 5\n}'\n```\n\n**CLI**\n```bash\nfirecrawl search \"firecrawl\" --limit 5\n```\n\u003C\u002Fdetails>\n\nOutput:\n```json\n[\n  {\n    \"url\": \"https:\u002F\u002Ffirecrawl.dev\",\n    \"title\": \"Firecrawl\",\n    \"markdown\": \"Turn websites into...\"\n  },\n  {\n    \"url\": \"https:\u002F\u002Fdocs.firecrawl.dev\",\n    \"title\": \"Firecrawl Docs\",\n    \"markdown\": \"# Getting Started...\"\n  }\n]\n```\n\n### Scrape\n\nGet LLM-ready data from any website — markdown, JSON, screenshots, and more.\n\n```python\nfrom firecrawl import Firecrawl\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\nresult = app.scrape('firecrawl.dev')\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Node.js \u002F cURL \u002F CLI\u003C\u002Fb>\u003C\u002Fsummary>\n\n**Node.js**\n```javascript\nimport Firecrawl from '@mendable\u002Ffirecrawl-js';\n\nconst app = new Firecrawl({ apiKey: \"fc-YOUR_API_KEY\" });\n\napp.scrape('firecrawl.dev')\n```\n\n**cURL**\n```bash\ncurl -X POST 'https:\u002F\u002Fapi.firecrawl.dev\u002Fv2\u002Fscrape' \\\n-H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n-H 'Content-Type: application\u002Fjson' \\\n-d '{\n  \"url\": \"firecrawl.dev\"\n}'\n```\n\n**CLI**\n```bash\nfirecrawl scrape https:\u002F\u002Ffirecrawl.dev\nfirecrawl https:\u002F\u002Ffirecrawl.dev --only-main-content\n```\n\u003C\u002Fdetails>\n\nOutput:\n```\n# Firecrawl\n\nFirecrawl helps AI systems search, scrape, and interact with the web.\n\n## Features\n- Search: Find information across the web\n- Scrape: Clean data from any page\n- Interact: Click, navigate, and operate pages\n- Agent: Autonomous data gathering\n```\n\n### Interact\n\nScrape a page, then interact with it using AI prompts or code.\n\n```python\nfrom firecrawl import Firecrawl\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\nresult = app.scrape(\"https:\u002F\u002Famazon.com\")\nscrape_id = result.metadata.scrape_id\n\napp.interact(scrape_id, prompt=\"Search for 'mechanical keyboard'\")\napp.interact(scrape_id, prompt=\"Click the first result\")\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Node.js \u002F cURL \u002F CLI\u003C\u002Fb>\u003C\u002Fsummary>\n\n**Node.js**\n```javascript\nimport Firecrawl from '@mendable\u002Ffirecrawl-js';\n\nconst app = new Firecrawl({apiKey: \"fc-YOUR_API_KEY\"});\n\nconst result = await app.scrape(\"https:\u002F\u002Famazon.com\");\n\nawait app.interact(result.metadata.scrapeId, {\n  prompt: \"Search for 'mechanical keyboard'\"\n});\nawait app.interact(result.metadata.scrapeId, {\n  prompt: \"Click the first result\"\n});\n```\n\n**cURL**\n```bash\n# 1. Scrape the page\ncurl -X POST 'https:\u002F\u002Fapi.firecrawl.dev\u002Fv2\u002Fscrape' \\\n-H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n-H 'Content-Type: application\u002Fjson' \\\n-d '{\"url\": \"https:\u002F\u002Famazon.com\"}'\n\n# 2. Interact with the page (use scrapeId from step 1)\ncurl -X POST 'https:\u002F\u002Fapi.firecrawl.dev\u002Fv2\u002Fscrape\u002FSCRAPE_ID\u002Finteract' \\\n-H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n-H 'Content-Type: application\u002Fjson' \\\n-d '{\"prompt\": \"Search for mechanical keyboard\"}'\n```\n\n**CLI**\n```bash\nfirecrawl scrape https:\u002F\u002Famazon.com\nfirecrawl interact exec --prompt \"Search for 'mechanical keyboard'\"\nfirecrawl interact exec --prompt \"Click the first result\"\n```\n\u003C\u002Fdetails>\n\nOutput:\n```json\n{\n  \"success\": true,\n  \"output\": \"Keyboard available at $100\",\n  \"liveViewUrl\": \"https:\u002F\u002Fliveview.firecrawl.dev\u002F...\"\n}\n```\n\n---\n\n## Power Your Agent\n\nConnect Firecrawl to any AI agent or MCP client in minutes.\n\n### Skill\n\nGive your agent easy access to real-time web data with one command.\n\n```bash\nnpx -y firecrawl-cli@latest init --all --browser\n```\n\nRestart your agent after installing. Works with [Claude Code](https:\u002F\u002Fclaude.ai\u002Fcode), [Antigravity](https:\u002F\u002Fantigravity.google), [OpenCode](https:\u002F\u002Fopencode.ai), and more.\n\n### MCP\n\nConnect any MCP-compatible client to the web in seconds.\n\n```json\n{\n  \"mcpServers\": {\n    \"firecrawl-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"firecrawl-mcp\"],\n      \"env\": {\n        \"FIRECRAWL_API_KEY\": \"fc-YOUR_API_KEY\"\n      }\n    }\n  }\n}\n```\n\n### Agent Onboarding\n\nAre you an AI agent? Fetch this skill to sign up your user, get an API key, and start building with Firecrawl.\n\n```bash\ncurl -s https:\u002F\u002Ffirecrawl.dev\u002Fagent-onboarding\u002FSKILL.md\n```\n\nSee the [Skill + CLI documentation](https:\u002F\u002Fdocs.firecrawl.dev\u002Fsdks\u002Fcli) for all available commands. For MCP, see [firecrawl-mcp-server](https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Ffirecrawl-mcp-server).\n\n---\n\n## More Endpoints\n\n### Agent\n\n**The easiest way to get data from the web.** Describe what you need, and our AI agent searches, navigates, and retrieves it. No URLs required.\n\nAgent is the evolution of our `\u002Fextract` endpoint: faster, more reliable, and doesn't require you to know the URLs upfront.\n```bash\ncurl -X POST 'https:\u002F\u002Fapi.firecrawl.dev\u002Fv2\u002Fagent' \\\n  -H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\n    \"prompt\": \"Find the pricing plans for Notion\"\n  }'\n```\n\nResponse:\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"result\": \"Notion offers the following pricing plans:\\n\\n1. Free - $0\u002Fmonth...\\n2. Plus - $10\u002Fseat\u002Fmonth...\\n3. Business - $18\u002Fseat\u002Fmonth...\",\n    \"sources\": [\"https:\u002F\u002Fwww.notion.so\u002Fpricing\"]\n  }\n}\n```\n\n#### Agent with Structured Output\n\nUse a schema to get structured data:\n```python\nfrom firecrawl import Firecrawl\nfrom pydantic import BaseModel, Field\nfrom typing import List, Optional\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\nclass Founder(BaseModel):\n    name: str = Field(description=\"Full name of the founder\")\n    role: Optional[str] = Field(None, description=\"Role or position\")\n\nclass FoundersSchema(BaseModel):\n    founders: List[Founder] = Field(description=\"List of founders\")\n\nresult = app.agent(\n    prompt=\"Find the founders of Firecrawl\",\n    schema=FoundersSchema\n)\n\nprint(result.data)\n```\n```json\n{\n  \"founders\": [\n    {\"name\": \"Eric Ciarla\", \"role\": \"Co-founder\"},\n    {\"name\": \"Nicolas Camara\", \"role\": \"Co-founder\"},\n    {\"name\": \"Caleb Peffer\", \"role\": \"Co-founder\"}\n  ]\n}\n```\n\n#### Agent with URLs (Optional)\n\nFocus the agent on specific pages:\n```python\nresult = app.agent(\n    urls=[\"https:\u002F\u002Fdocs.firecrawl.dev\", \"https:\u002F\u002Ffirecrawl.dev\u002Fpricing\"],\n    prompt=\"Compare the features and pricing information\"\n)\n```\n\n#### Model Selection\n\nChoose between two models based on your needs:\n\n| Model | Cost | Best For |\n|-------|------|----------|\n| `spark-1-mini` (default) | 60% cheaper | Most tasks |\n| `spark-1-pro` | Standard | Complex research, critical data gathering |\n```python\nresult = app.agent(\n    prompt=\"Compare enterprise features across Firecrawl, Apify, and ScrapingBee\",\n    model=\"spark-1-pro\"\n)\n```\n\n\n**When to use Pro:**\n- Comparing data across multiple websites\n- Extracting from sites with complex navigation or auth\n- Research tasks where the agent needs to explore multiple paths\n- Critical data where accuracy is paramount\n\nLearn more about Spark models in our [Agent documentation](https:\u002F\u002Fdocs.firecrawl.dev\u002Ffeatures\u002Fagent).\n\n### Crawl\n\nCrawl an entire website and get content from all pages.\n```bash\ncurl -X POST 'https:\u002F\u002Fapi.firecrawl.dev\u002Fv2\u002Fcrawl' \\\n  -H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fdocs.firecrawl.dev\",\n    \"limit\": 100,\n    \"scrapeOptions\": {\n      \"formats\": [\"markdown\"]\n    }\n  }'\n```\n\nReturns a job ID:\n```json\n{\n  \"success\": true,\n  \"id\": \"123-456-789\",\n  \"url\": \"https:\u002F\u002Fapi.firecrawl.dev\u002Fv2\u002Fcrawl\u002F123-456-789\"\n}\n```\n\n#### Check Crawl Status\n```bash\ncurl -X GET 'https:\u002F\u002Fapi.firecrawl.dev\u002Fv2\u002Fcrawl\u002F123-456-789' \\\n  -H 'Authorization: Bearer fc-YOUR_API_KEY'\n```\n```json\n{\n  \"status\": \"completed\",\n  \"total\": 50,\n  \"completed\": 50,\n  \"creditsUsed\": 50,\n  \"data\": [\n    {\n      \"markdown\": \"# Page Title\\n\\nContent...\",\n      \"metadata\": {\"title\": \"Page Title\", \"sourceURL\": \"https:\u002F\u002F...\"}\n    }\n  ]\n}\n```\n\n**Note:** The [SDKs](#sdks) handle polling automatically for a better developer experience.\n\n### Map\n\nDiscover all URLs on a website instantly.\n```bash\ncurl -X POST 'https:\u002F\u002Fapi.firecrawl.dev\u002Fv2\u002Fmap' \\\n  -H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"url\": \"https:\u002F\u002Ffirecrawl.dev\"}'\n```\n\nResponse:\n```json\n{\n  \"success\": true,\n  \"links\": [\n    {\"url\": \"https:\u002F\u002Ffirecrawl.dev\", \"title\": \"Firecrawl\", \"description\": \"Turn websites into LLM-ready data\"},\n    {\"url\": \"https:\u002F\u002Ffirecrawl.dev\u002Fpricing\", \"title\": \"Pricing\", \"description\": \"Firecrawl pricing plans\"},\n    {\"url\": \"https:\u002F\u002Ffirecrawl.dev\u002Fblog\", \"title\": \"Blog\", \"description\": \"Firecrawl blog\"}\n  ]\n}\n```\n\n#### Map with Search\n\nFind specific URLs within a site:\n```python\nfrom firecrawl import Firecrawl\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\nresult = app.map(\"https:\u002F\u002Ffirecrawl.dev\", search=\"pricing\")\n# Returns URLs ordered by relevance to \"pricing\"\n```\n\n### Batch Scrape\n\nScrape multiple URLs at once:\n```python\nfrom firecrawl import Firecrawl\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\njob = app.batch_scrape([\n    \"https:\u002F\u002Ffirecrawl.dev\",\n    \"https:\u002F\u002Fdocs.firecrawl.dev\",\n    \"https:\u002F\u002Ffirecrawl.dev\u002Fpricing\"\n], formats=[\"markdown\"])\n\nfor doc in job.data:\n    print(doc.metadata.source_url)\n```\n\n---\n\n## SDKs\n\nOur SDKs provide a convenient way to use all Firecrawl features and automatically handle polling for async operations.\n\n### Python\n\nInstall the SDK:\n```bash\npip install firecrawl-py\n```\n```python\nfrom firecrawl import Firecrawl\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\n# Scrape a single URL\ndoc = app.scrape(\"https:\u002F\u002Ffirecrawl.dev\", formats=[\"markdown\"])\nprint(doc.markdown)\n\n# Use the Agent for autonomous data gathering\nresult = app.agent(prompt=\"Find the founders of Stripe\")\nprint(result.data)\n\n# Crawl a website (automatically waits for completion)\ndocs = app.crawl(\"https:\u002F\u002Fdocs.firecrawl.dev\", limit=50)\nfor doc in docs.data:\n    print(doc.metadata.source_url, doc.markdown[:100])\n\n# Search the web\nresults = app.search(\"best AI data tools 2024\", limit=10)\nprint(results)\n```\n\n### Node.js\n\nInstall the SDK:\n```bash\nnpm install @mendable\u002Ffirecrawl-js\n```\n```javascript\nimport Firecrawl from '@mendable\u002Ffirecrawl-js';\n\nconst app = new Firecrawl({ apiKey: 'fc-YOUR_API_KEY' });\n\n\u002F\u002F Scrape a single URL\nconst doc = await app.scrape('https:\u002F\u002Ffirecrawl.dev', { formats: ['markdown'] });\nconsole.log(doc.markdown);\n\n\u002F\u002F Use the Agent for autonomous data gathering\nconst result = await app.agent({ prompt: 'Find the founders of Stripe' });\nconsole.log(result.data);\n\n\u002F\u002F Crawl a website (automatically waits for completion)\nconst docs = await app.crawl('https:\u002F\u002Fdocs.firecrawl.dev', { limit: 50 });\ndocs.data.forEach(doc => {\n    console.log(doc.metadata.sourceURL, doc.markdown.substring(0, 100));\n});\n\n\u002F\u002F Search the web\nconst results = await app.search('best AI data tools 2024', { limit: 10 });\nresults.data.web.forEach(result => {\n    console.log(`${result.title}: ${result.url}`);\n});\n```\n\n### Java\n\nAdd the dependency ([Gradle\u002FMaven](https:\u002F\u002Fdocs.firecrawl.dev\u002Fsdks\u002Fjava#installation)):\n```groovy\nrepositories {\n    mavenCentral()\n    maven { url 'https:\u002F\u002Fjitpack.io' }\n}\n\ndependencies {\n    implementation 'com.github.firecrawl:firecrawl-java-sdk:2.0'\n}\n```\n```java\nimport dev.firecrawl.client.FirecrawlClient;\nimport dev.firecrawl.model.*;\n\nFirecrawlClient client = new FirecrawlClient(\n    System.getenv(\"FIRECRAWL_API_KEY\"), null, null\n);\n\n\u002F\u002F Scrape a single URL\nScrapeParams scrapeParams = new ScrapeParams();\nscrapeParams.setFormats(new String[]{\"markdown\"});\nFirecrawlDocument doc = client.scrapeURL(\"https:\u002F\u002Ffirecrawl.dev\", scrapeParams);\nSystem.out.println(doc.getMarkdown());\n\n\u002F\u002F Use the Agent for autonomous data gathering\nAgentParams agentParams = new AgentParams(\"Find the founders of Stripe\");\nAgentResponse start = client.createAgent(agentParams);\nAgentStatusResponse result = client.getAgentStatus(start.getId());\nSystem.out.println(result.getData());\n\n\u002F\u002F Crawl a website (polls until completion)\nCrawlParams crawlParams = new CrawlParams();\ncrawlParams.setLimit(50);\nCrawlStatusResponse job = client.crawlURL(\"https:\u002F\u002Fdocs.firecrawl.dev\", crawlParams, null, 10);\nfor (FirecrawlDocument page : job.getData()) {\n    System.out.println(page.getMetadata().get(\"sourceURL\"));\n}\n\n\u002F\u002F Search the web\nSearchParams searchParams = new SearchParams(\"best AI data tools 2024\");\nsearchParams.setLimit(10);\nSearchResponse results = client.search(searchParams);\nfor (SearchResult r : results.getResults()) {\n    System.out.println(r.getTitle() + \": \" + r.getUrl());\n}\n```\n\n### Elixir\n\nAdd the dependency:\n```elixir\ndef deps do\n  [\n    {:firecrawl, \"~> 1.0\"}\n  ]\nend\n```\n```elixir\n# Scrape a URL\n{:ok, response} = Firecrawl.scrape_and_extract_from_url(\n  url: \"https:\u002F\u002Ffirecrawl.dev\",\n  formats: [\"markdown\"]\n)\n\n# Crawl a website\n{:ok, response} = Firecrawl.crawl_urls(\n  url: \"https:\u002F\u002Fdocs.firecrawl.dev\",\n  limit: 50\n)\n\n# Search the web\n{:ok, response} = Firecrawl.search_and_scrape(\n  query: \"best AI data tools 2024\",\n  limit: 10\n)\n\n# Map URLs\n{:ok, response} = Firecrawl.map_urls(url: \"https:\u002F\u002Fexample.com\")\n```\n\n### Rust\n\nAdd the dependency:\n```toml\n[dependencies]\nfirecrawl = \"2\"\ntokio = { version = \"1\", features = [\"macros\", \"rt-multi-thread\"] }\n```\n```rust\nuse firecrawl::{Client, ScrapeOptions, Format, CrawlOptions};\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    let client = Client::new(\"fc-YOUR_API_KEY\")?;\n\n    \u002F\u002F Scrape a URL\n    let document = client.scrape(\"https:\u002F\u002Ffirecrawl.dev\", None).await?;\n    println!(\"{:?}\", document.markdown);\n\n    \u002F\u002F Crawl a website\n    let options = CrawlOptions {\n        limit: Some(50),\n        ..Default::default()\n    };\n    let result = client.crawl(\"https:\u002F\u002Fdocs.firecrawl.dev\", options).await?;\n    println!(\"Crawled {} pages\", result.data.len());\n\n    \u002F\u002F Search the web\n    let response = client.search(\"best web scraping tools 2024\", None).await?;\n    println!(\"{:?}\", response.data);\n\n    Ok(())\n}\n```\n\n### Community SDKs\n\n- [Go SDK](https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Ffirecrawl\u002Ftree\u002Fmain\u002Fapps\u002Fgo-sdk)\n\n---\n\n## Integrations\n\n**Agents & AI Tools**\n- [Firecrawl Skill](https:\u002F\u002Fdocs.firecrawl.dev\u002Fsdks\u002Fcli)\n- [Firecrawl MCP](https:\u002F\u002Fgithub.com\u002Fmendableai\u002Ffirecrawl-mcp-server)\n\n**Platforms**\n- [Lovable](https:\u002F\u002Fdocs.lovable.dev\u002Fintegrations\u002Ffirecrawl)\n- [Zapier](https:\u002F\u002Fzapier.com\u002Fapps\u002Ffirecrawl\u002Fintegrations)\n- [n8n](https:\u002F\u002Fn8n.io\u002Fintegrations\u002Ffirecrawl\u002F)\n\n[View all integrations →](https:\u002F\u002Fwww.firecrawl.dev\u002Fintegrations)\n\n**Missing your favorite tool?** [Open an issue](https:\u002F\u002Fgithub.com\u002Fmendableai\u002Ffirecrawl\u002Fissues) and let us know!\n\n---\n\n## Resources\n\n- [Documentation](https:\u002F\u002Fdocs.firecrawl.dev)\n- [API Reference](https:\u002F\u002Fdocs.firecrawl.dev\u002Fapi-reference\u002Fintroduction)\n- [Playground](https:\u002F\u002Ffirecrawl.dev\u002Fplayground)\n- [Changelog](https:\u002F\u002Ffirecrawl.dev\u002Fchangelog)\n\n---\n\n## Open Source vs Cloud\n\nFirecrawl is open source under the AGPL-3.0 license. The cloud version at [firecrawl.dev](https:\u002F\u002Ffirecrawl.dev) includes additional features:\n\n![Open Source vs Cloud](https:\u002F\u002Fraw.githubusercontent.com\u002Ffirecrawl\u002Ffirecrawl\u002Fmain\u002Fimg\u002Fopen-source-cloud.png)\n\nTo run locally, see the [Contributing Guide](https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Ffirecrawl\u002Fblob\u002Fmain\u002FCONTRIBUTING.md). To self-host, see [Self-Hosting Guide](https:\u002F\u002Fdocs.firecrawl.dev\u002Fcontributing\u002Fself-host).\n\n---\n\n## Contributing\n\nWe love contributions! Please read our [Contributing Guide](https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Ffirecrawl\u002Fblob\u002Fmain\u002FCONTRIBUTING.md) before submitting a pull request.\n\n### Contributors\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Ffirecrawl\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg alt=\"contributors\" src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=firecrawl\u002Ffirecrawl\"\u002F>\n\u003C\u002Fa>\n\n---\n\n## License\n\nThis project is primarily licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). The SDKs and some UI components are licensed under the MIT License. See the LICENSE files in specific directories for details.\n\n---\n\n**It is the sole responsibility of end users to respect websites' policies when scraping.** Users are advised to adhere to applicable privacy policies and terms of use. By default, Firecrawl respects robots.txt directives. By using Firecrawl, you agree to comply with these conditions.\n\n\u003Cp align=\"right\" style=\"font-size: 14px; color: #555; margin-top: 20px;\">\n  \u003Ca href=\"#readme-top\" style=\"text-decoration: none; color: #007bff; font-weight: bold;\">\n    ↑ Back to Top ↑\n  \u003C\u002Fa>\n\u003C\u002Fp>\n","Firecrawl 是一个用于搜索、抓取和与网页交互的API，专为AI应用设计。它使用TypeScript开发，支持从网页中提取干净的数据，并能够处理包括JavaScript渲染内容在内的复杂页面。该工具提供高可靠性（覆盖96%的网络）、低延迟（P95延迟3.4秒）以及适合大语言模型使用的输出格式如Markdown和JSON等。此外，Firecrawl还具备媒体解析能力，可以直接从PDF或DOCX文档中提取信息，并允许执行点击、滚动等操作后再进行数据抓取。此项目非常适合需要大规模高质量Web数据来训练或增强AI代理的应用场景。",2,"2026-06-17 02:33:41","top_all"]