diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0189d1364..6d8054ff4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -5,18 +5,6 @@ on: [pull_request] permissions: contents: read -env: - OPENAI_API_KEY: fake-api-key - PYTHONUNBUFFERED: 1 - BRAVE_API_KEY: fake-brave-key - SNOWFLAKE_USER: fake-snowflake-user - SNOWFLAKE_PASSWORD: fake-snowflake-password - SNOWFLAKE_ACCOUNT: fake-snowflake-account - SNOWFLAKE_WAREHOUSE: fake-snowflake-warehouse - SNOWFLAKE_DATABASE: fake-snowflake-database - SNOWFLAKE_SCHEMA: fake-snowflake-schema - EMBEDCHAIN_DB_URI: sqlite:///test.db - jobs: tests: name: tests (${{ matrix.python-version }}) @@ -84,26 +72,20 @@ jobs: # fi cd lib/crewai && uv run pytest \ - --block-network \ - --timeout=30 \ -vv \ --splits 8 \ --group ${{ matrix.group }} \ $DURATIONS_ARG \ --durations=10 \ - -n auto \ --maxfail=3 - name: Run tool tests (group ${{ matrix.group }} of 8) run: | cd lib/crewai-tools && uv run pytest \ - --block-network \ - --timeout=30 \ -vv \ --splits 8 \ --group ${{ matrix.group }} \ --durations=10 \ - -n auto \ --maxfail=3 diff --git a/lib/crewai-tools/generate_tool_specs.py b/lib/crewai-tools/src/crewai_tools/generate_tool_specs.py similarity index 99% rename from lib/crewai-tools/generate_tool_specs.py rename to lib/crewai-tools/src/crewai_tools/generate_tool_specs.py index af97191c4..7e05a42dd 100644 --- a/lib/crewai-tools/generate_tool_specs.py +++ b/lib/crewai-tools/src/crewai_tools/generate_tool_specs.py @@ -7,11 +7,12 @@ from pathlib import Path from typing import Any, cast from crewai.tools.base_tool import BaseTool, EnvVar -from crewai_tools import tools from pydantic import BaseModel from pydantic.json_schema import GenerateJsonSchema from pydantic_core import PydanticOmit +from crewai_tools import tools + class SchemaGenerator(GenerateJsonSchema): def handle_invalid_for_json_schema(self, schema, error_info): diff --git a/lib/crewai-tools/src/crewai_tools/rag/embedding_service.py b/lib/crewai-tools/src/crewai_tools/rag/embedding_service.py index 174273140..348fb76ee 100644 --- a/lib/crewai-tools/src/crewai_tools/rag/embedding_service.py +++ b/lib/crewai-tools/src/crewai_tools/rag/embedding_service.py @@ -91,7 +91,7 @@ class EmbeddingService: "azure": "AZURE_OPENAI_API_KEY", "amazon-bedrock": "AWS_ACCESS_KEY_ID", # or AWS_PROFILE "cohere": "COHERE_API_KEY", - "google-generativeai": "GOOGLE_API_KEY", + "google-generativeai": "GEMINI_API_KEY", "google-vertex": "GOOGLE_APPLICATION_CREDENTIALS", "huggingface": "HUGGINGFACE_API_KEY", "jina": "JINA_API_KEY", diff --git a/lib/crewai-tools/src/crewai_tools/tools/stagehand_tool/stagehand_tool.py b/lib/crewai-tools/src/crewai_tools/tools/stagehand_tool/stagehand_tool.py index c97c78e66..11c506294 100644 --- a/lib/crewai-tools/src/crewai_tools/tools/stagehand_tool/stagehand_tool.py +++ b/lib/crewai-tools/src/crewai_tools/tools/stagehand_tool/stagehand_tool.py @@ -247,7 +247,7 @@ class StagehandTool(BaseTool): if "claude" in model_str.lower() or "anthropic" in model_str.lower(): return self.model_api_key or os.getenv("ANTHROPIC_API_KEY") if "gemini" in model_str.lower(): - return self.model_api_key or os.getenv("GOOGLE_API_KEY") + return self.model_api_key or os.getenv("GEMINI_API_KEY") # Default to trying OpenAI, then Anthropic return ( self.model_api_key @@ -313,7 +313,7 @@ class StagehandTool(BaseTool): if not model_api_key: raise ValueError( - "No appropriate API key found for model. Please set OPENAI_API_KEY, ANTHROPIC_API_KEY, or GOOGLE_API_KEY" + "No appropriate API key found for model. Please set OPENAI_API_KEY, ANTHROPIC_API_KEY, or GEMINI_API_KEY" ) # Build the StagehandConfig with proper parameter names diff --git a/lib/crewai-tools/tests/it/tools/__init__.py b/lib/crewai-tools/tests/adapters/__init__.py similarity index 100% rename from lib/crewai-tools/tests/it/tools/__init__.py rename to lib/crewai-tools/tests/adapters/__init__.py diff --git a/lib/crewai/tests/pipeline/__init__.py b/lib/crewai-tools/tests/cassettes/.gitkeep similarity index 100% rename from lib/crewai/tests/pipeline/__init__.py rename to lib/crewai-tools/tests/cassettes/.gitkeep diff --git a/lib/crewai-tools/tests/it/tools/conftest.py b/lib/crewai-tools/tests/it/tools/conftest.py deleted file mode 100644 index a633c22c7..000000000 --- a/lib/crewai-tools/tests/it/tools/conftest.py +++ /dev/null @@ -1,21 +0,0 @@ -import pytest - - -def pytest_configure(config): - """Register custom markers.""" - config.addinivalue_line("markers", "integration: mark test as an integration test") - config.addinivalue_line("markers", "asyncio: mark test as an async test") - - # Set the asyncio loop scope through ini configuration - config.inicfg["asyncio_mode"] = "auto" - - -@pytest.fixture(scope="function") -def event_loop(): - """Create an instance of the default event loop for each test case.""" - import asyncio - - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - yield loop - loop.close() diff --git a/lib/crewai-tools/tests/test_generate_tool_specs.py b/lib/crewai-tools/tests/test_generate_tool_specs.py index 18c2dfe8d..290d099b9 100644 --- a/lib/crewai-tools/tests/test_generate_tool_specs.py +++ b/lib/crewai-tools/tests/test_generate_tool_specs.py @@ -2,7 +2,7 @@ import json from unittest import mock from crewai.tools.base_tool import BaseTool, EnvVar -from generate_tool_specs import ToolSpecExtractor +from crewai_tools.generate_tool_specs import ToolSpecExtractor from pydantic import BaseModel, Field import pytest @@ -61,8 +61,8 @@ def test_unwrap_schema(extractor): @pytest.fixture def mock_tool_extractor(extractor): with ( - mock.patch("generate_tool_specs.dir", return_value=["MockTool"]), - mock.patch("generate_tool_specs.getattr", return_value=MockTool), + mock.patch("crewai_tools.generate_tool_specs.dir", return_value=["MockTool"]), + mock.patch("crewai_tools.generate_tool_specs.getattr", return_value=MockTool), ): extractor.extract_all_tools() assert len(extractor.tools_spec) == 1 diff --git a/lib/crewai-tools/tests/tools/cassettes/firecrawl_crawl_website_tool_test/test_firecrawl_crawl_tool_integration.yaml b/lib/crewai-tools/tests/tools/cassettes/firecrawl_crawl_website_tool_test/test_firecrawl_crawl_tool_integration.yaml deleted file mode 100644 index 8f052a835..000000000 --- a/lib/crewai-tools/tests/tools/cassettes/firecrawl_crawl_website_tool_test/test_firecrawl_crawl_tool_integration.yaml +++ /dev/null @@ -1,1531 +0,0 @@ -interactions: -- request: - body: '{"url": "https://firecrawl.dev", "scrapeOptions": {"onlyMainContent": true, - "skipTlsVerification": true, "removeBase64Images": true, "fastMode": false, - "blockAds": true, "storeInCache": true, "maxAge": 14400000, "formats": ["markdown"], - "mobile": false}, "maxDiscoveryDepth": 1, "ignoreQueryParameters": false, "crawlEntireDomain": - false, "allowExternalLinks": false, "allowSubdomains": false, "zeroDataRetention": - false, "limit": 2, "origin": "python-sdk@4.5.0"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '463' - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: POST - uri: https://api.firecrawl.dev/v2/crawl - response: - body: - string: '{"success":true,"id":"9352ed1c-88bf-4258-a466-d29911ebcbe4","url":"https://api.firecrawl.dev/v2/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4"}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '140' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:40 GMT - ETag: - - W/"8c-fED/T2aXbMOo5pJqCnnUBI+Nxdg" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 226.898ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v2/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4 - response: - body: - string: '{"success":true,"status":"scraping","completed":0,"total":1,"creditsUsed":0,"expiresAt":"2025-10-30T14:36:40.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=0","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:40 GMT - ETag: - - W/"d5-OcGtIv57Kg7bh/wrZe+zWFJqn0E" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 70.427ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=0 - response: - body: - string: '{"success":true,"status":"scraping","completed":0,"total":2,"creditsUsed":0,"expiresAt":"2025-10-30T14:36:40.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=0","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:40 GMT - ETag: - - W/"d5-NmftxFEyWM/DUPtv1KTn3bd8F8c" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 69.952ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=0 - response: - body: - string: '{"success":true,"status":"scraping","completed":0,"total":2,"creditsUsed":0,"expiresAt":"2025-10-30T14:36:40.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=0","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:40 GMT - ETag: - - W/"d5-NmftxFEyWM/DUPtv1KTn3bd8F8c" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 51.517ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=0 - response: - body: - string: '{"success":true,"status":"scraping","completed":0,"total":2,"creditsUsed":1,"expiresAt":"2025-10-30T14:36:41.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=0","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:41 GMT - ETag: - - W/"d5-lfVSPJmpEFjYObPIUwXsOomd1RY" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 93.320ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=0 - response: - body: - string: "{\"success\":true,\"status\":\"scraping\",\"completed\":1,\"total\":2,\"creditsUsed\":2,\"expiresAt\":\"2025-10-30T14:36:41.000Z\",\"next\":\"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2\",\"data\":[{\"markdown\":\"We - just raised our Series A and shipped Firecrawl /v2 \U0001F389. [Read the blog.](https://www.firecrawl.dev/blog/firecrawl-v2-series-a-announcement)\\n\\n[2 - Months Free \u2014 Annually](https://www.firecrawl.dev/pricing)\\n\\n# Turn - websites into LLM-ready data\\n\\nPower your AI apps with clean web data\\n\\nfrom - any website. [It's also open source.](https://github.com/firecrawl/firecrawl)\\n\\nScrape\\n\\nSearch\\nNew\\n\\nMap\\n\\nCrawl\\n\\nScrape\\n\\nLogo\\n\\nNavigation\\n\\nButton\\n\\nH1 - Title\\n\\nDescription\\n\\nCTA Button\\n\\n\\\\[ .JSON \\\\]\\n\\n```json\\n1[\\\\\\n2 - \ {\\\\\\n3 \\\"url\\\": \\\"https://example.com\\\",\\\\\\n4 \\\"markdown\\\": - \\\"# Getting Started...\\\",\\\\\\n5 \\\"json\\\": { \\\"title\\\": \\\"Guide\\\", - \\\"docs\\\": \\\"...\\\" },\\\\\\n6 \\\"screenshot\\\": \\\"https://example.com/hero.png\\\"\\\\\\n7 - \ }\\\\\\n8]\\n```\\n\\nScrape Completed\\n\\nTrusted by5000+\\n\\ncompaniesof - all sizes\\n\\n![Logo 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets-original/logocloud/1.png)\\n\\n![Logo - 2](https://www.firecrawl.dev/assets-original/logocloud/2.png)\\n\\n![Logo - 3](https://www.firecrawl.dev/assets-original/logocloud/3.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets-original/logocloud/4.png)\\n\\n![Logo - 5](https://www.firecrawl.dev/assets-original/logocloud/5.png)\\n\\n![Logo - 6](https://www.firecrawl.dev/assets-original/logocloud/6.png)\\n\\n![Logo - 7](https://www.firecrawl.dev/assets-original/logocloud/7.png)\\n\\n![Logo - 8](https://www.firecrawl.dev/assets-original/logocloud/8.png)\\n\\n![Logo - 9](https://www.firecrawl.dev/assets-original/logocloud/9.png)\\n\\n![Logo - 10](https://www.firecrawl.dev/assets-original/logocloud/10.png)\\n\\n![Logo - 11](https://www.firecrawl.dev/assets-original/logocloud/11.png)\\n\\n![Logo - 12](https://www.firecrawl.dev/assets-original/logocloud/12.png)\\n\\n![Logo - 13](https://www.firecrawl.dev/assets-original/logocloud/13.png)\\n\\n![Logo - 14](https://www.firecrawl.dev/assets-original/logocloud/14.png)\\n\\n![Logo - 15](https://www.firecrawl.dev/assets-original/logocloud/15.png)\\n\\n![Logo - 16](https://www.firecrawl.dev/assets-original/logocloud/16.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 19](https://www.firecrawl.dev/assets-original/logocloud/19.png)\\n\\n![Logo - 20](https://www.firecrawl.dev/assets-original/logocloud/20.png)\\n\\n![Logo - 21](https://www.firecrawl.dev/assets-original/logocloud/21.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets-original/logocloud/1.png)\\n\\n![Logo - 2](https://www.firecrawl.dev/assets-original/logocloud/2.png)\\n\\n![Logo - 3](https://www.firecrawl.dev/assets-original/logocloud/3.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets-original/logocloud/4.png)\\n\\n![Logo - 5](https://www.firecrawl.dev/assets-original/logocloud/5.png)\\n\\n![Logo - 6](https://www.firecrawl.dev/assets-original/logocloud/6.png)\\n\\n![Logo - 7](https://www.firecrawl.dev/assets-original/logocloud/7.png)\\n\\n![Logo - 8](https://www.firecrawl.dev/assets-original/logocloud/8.png)\\n\\n![Logo - 9](https://www.firecrawl.dev/assets-original/logocloud/9.png)\\n\\n![Logo - 10](https://www.firecrawl.dev/assets-original/logocloud/10.png)\\n\\n![Logo - 11](https://www.firecrawl.dev/assets-original/logocloud/11.png)\\n\\n![Logo - 12](https://www.firecrawl.dev/assets-original/logocloud/12.png)\\n\\n![Logo - 13](https://www.firecrawl.dev/assets-original/logocloud/13.png)\\n\\n![Logo - 14](https://www.firecrawl.dev/assets-original/logocloud/14.png)\\n\\n![Logo - 15](https://www.firecrawl.dev/assets-original/logocloud/15.png)\\n\\n![Logo - 16](https://www.firecrawl.dev/assets-original/logocloud/16.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 19](https://www.firecrawl.dev/assets-original/logocloud/19.png)\\n\\n![Logo - 20](https://www.firecrawl.dev/assets-original/logocloud/20.png)\\n\\n![Logo - 21](https://www.firecrawl.dev/assets-original/logocloud/21.png)\\n\\n\\\\[01/ - 07 \\\\]\\n\\n\xB7\\n\\nMain Features\\n\\n//\\n\\nDeveloper First\\n\\n//\\n\\n## - Startscraping today\\n\\nEnhance your apps with industry leading web scraping - and crawling capabilities.\\n\\nScrape\\n\\nGet llm-ready data from websites. - Markdown, JSON, screenshot, etc.\\n\\nSearch\\n\\nNew\\n\\nSearch the web - and get full content from results.\\n\\nCrawl\\n\\nCrawl all the pages on - a website and get data for each page.\\n\\nPython\\n\\nNode.js\\n\\nCurl\\n\\nCopy - code\\n\\n```python\\n1# pip install firecrawl-py\\n2from firecrawl import - Firecrawl\\n3\\n4app = Firecrawl(api_key=\\\"fc-YOUR_API_KEY\\\")\\n5\\n6# - Scrape a website:\\n7app.scrape('firecrawl.dev')\\n8\\n9\\n10\\n```\\n\\n\\\\[ - .MD \\\\]\\n\\n```markdown\\n1# Firecrawl\\n2\\n3Firecrawl is a powerful web - scraping\\n4library that makes it easy to extract\\n5data from websites.\\n6\\n7## - Installation\\n8\\n9To install Firecrawl, run:\\n10\\n11\\n```\\n\\n![developer-1](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-2](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-3](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-4](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-5](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-6](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-7](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-8](https://www.firecrawl.dev/assets/developer/8.png)\\n\\n![developer-9](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-10](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-11](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-12](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-13](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-14](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-15](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-16](https://www.firecrawl.dev/assets/developer/8.png)\\n\\n![developer-17](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-18](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-19](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-20](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-21](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-22](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-23](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-24](https://www.firecrawl.dev/assets/developer/8.png)\\n\\nIntegrations\\n\\n### - Use well-known tools\\n\\nAlready fully integrated with the greatest existing - tools and workflows.\\n\\n[See all integrations](https://www.firecrawl.dev/app)\\n\\n![Firecrawl - icon (blueprint)](https://www.firecrawl.dev/assets-original/developer-os-icon.png)\\n\\nmendableai/firecrawl\\n\\nPublic\\n\\nStar\\n\\n65.3K\\n\\n\\\\[python-SDK\\\\] - improvs/async\\n\\n#1337\\n\\n\xB7\\n\\nApr 18, 2025\\n\\n\xB7\\n\\n![rafaelsideguide](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nrafaelsideguide\\n\\nfeat(extract): - cost limit\\n\\n#1473\\n\\n\xB7\\n\\nApr 17, 2025\\n\\n\xB7\\n\\n![mogery](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nmogery\\n\\nfeat(scrape): - get job result from GCS, avoid Redis\\n\\n#1461\\n\\n\xB7\\n\\nApr 15, 2025\\n\\n\xB7\\n\\n![mogery](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nmogery\\n\\nExtract - v2/rerank improvs\\n\\n#1437\\n\\n\xB7\\n\\nApr 11, 2025\\n\\n\xB7\\n\\n![rafaelsideguide](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nrafaelsideguide\\n\\n![https://avatars.githubusercontent.com/u/150964962?v=4](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=96&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\n![https://avatars.githubusercontent.com/u/66118807?v=4](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=96&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\n+90\\n\\nOpen - Source\\n\\n### Code you can trust\\n\\nDeveloped transparently and collaboratively. - Join our community of contributors.\\n\\n[Check out our repo](https://github.com/firecrawl/firecrawl)\\n\\n\\\\[02/ - 07 \\\\]\\n\\n\xB7\\n\\nCore\\n\\n//\\n\\nBuilt to outperform\\n\\n//\\n\\n## - Core principles, provenperformance\\n\\nBuilt from the ground up to outperform - traditional scrapers.\\n\\nNo proxy headaches\\n\\nReliable.Covers 96% of - the web,\\n\\nincluding JS-heavy and protected pages. No proxies, no puppets, - just clean data.\\n\\nFirecrawl\\n\\n96%\\n\\n![Puppeteer icon](https://www.firecrawl.dev/assets/puppeteer.png)\\n\\nPuppeteer\\n\\n79%\\n\\ncURL\\n\\n75%\\n\\nSpeed - that feels invisible\\n\\nBlazingly fast.Delivers results in less than 1 second, - fast for real-time agents\\n\\nand dynamic apps.\\n\\nURL\\n\\nCrawl\\n\\nScrape\\n\\nfirecrawl.dev/docs\\n\\n50ms\\n\\n51ms\\n\\nfirecrawl.dev/templates\\n\\n52ms\\n\\n50ms\\n\\nfirecrawl.dev/changelog\\n\\n49ms\\n\\n52ms\\n\\nfirecrawl.dev/about\\n\\n52ms\\n\\n50ms\\n\\nfirecrawl.dev/changelog\\n\\n50ms\\n\\n52ms\\n\\nfirecrawl.dev/playground\\n\\n51ms\\n\\n49ms\\n\\n\\\\[ - CTA \\\\]\\n\\n\\\\[ CRAWL \\\\]\\n\\n\\\\[ SCRAPE \\\\]\\n\\n\\\\[ CTA \\\\]\\n\\n//\\n\\nGet - started\\n\\n//\\n\\nReady to build?\\n\\nStart getting Web Data for free - and scale seamlessly as your project expands. No credit card needed.\\n\\n[Start - for free](https://www.firecrawl.dev/signin) [See our plans](https://www.firecrawl.dev/pricing)\\n\\n\\\\[03/ - 07 \\\\]\\n\\n\xB7\\n\\nFeatures\\n\\n//\\n\\nZero configuration\\n\\n//\\n\\n## - We handle the hard stuff\\n\\nRotating proxies, orchestration, rate limits, - js-blocked content and more.\\n\\nDocs to data\\n\\nMedia parsing.Firecrawl - can parse and output content from web hosted pdfs, docx, and more.\\n\\nhttps://example.com/docs/report.pdf\\n\\nhttps://example.com/files/brief.docx\\n\\nhttps://example.com/docs/guide.html\\n\\ndocx\\n\\nParsing...\\n\\nKnows - the moment\\n\\nSmart wait.Firecrawl intelligently waits for content to load, - making scraping faster and more reliable.\\n\\nhttps://example-spa.com\\n\\nRequest - Sent\\n\\nScrapes the real thing\\n\\nCached, when you need it.Selective caching, - you choose your caching patterns, growing web index.\\n\\n![User](https://www.firecrawl.dev/_next/image?url=%2Fassets-original%2Ffeatures%2Fcached-user.png&w=256&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nUser\\n\\nFirecrawl\\n\\nCache\\n\\nInvisible - access\\n\\nStealth mode.Crawls the web without\\n\\nbeing blocked, mimics - real users to access protected or dynamic content.\\n\\nInteractive scraping\\n\\nActions.Click, - scroll, write, wait, press and more before extracting content.\\n\\nhttps://example.com\\n\\nNavigate\\n\\nClick\\n\\nType\\n\\nWait\\n\\nScroll\\n\\nPress\\n\\nScreenshot\\n\\nScrape\\n\\n\\\\[04/ - 07 \\\\]\\n\\n\xB7\\n\\nPricing\\n\\n//\\n\\nTransparent\\n\\n//\\n\\n## Flexible - pricing\\n\\nExplore transparent pricing built for real-world scraping. Start - for free, then scale as you grow.\\n\\n\U0001F1FA\U0001F1F8USD\\n\\nFree Plan\\n\\nA - lightweight way to try scraping.\\n\\nNo cost, no card, no hassle.\\n\\n500 - credits\\n\\n$0123456789\\n\\none-time\\n\\nGet started\\n\\nScrape 500 pages\\n\\n2 - concurrent requests\\n\\nLow rate limits\\n\\nHobby\\n\\nGreat for side projects - and small tools.\\n\\nFast, simple, no overkill.\\n\\n3,000 credits\\n\\n$01234567890123456789\\n\\n/monthly\\n\\nBilled - yearly\\n\\n2 months free\\n\\nSubscribe\\n\\nScrape 3,000 pages\\n\\n5 concurrent - requests\\n\\nBasic support\\n\\n$9 per extra 1k credits\\n\\nStandard\\n\\nMost - popular\\n\\nPerfect for scaling with less effort.\\n\\nSimple, solid, dependable.\\n\\n100,000 - credits\\n\\n$01234567890123456789\\n\\n/monthly\\n\\nBilled yearly\\n\\n2 - months free\\n\\nSubscribe\\n\\nScrape 100,000 pages\\n\\n50 concurrent requests\\n\\nStandard - support\\n\\n$47 per extra 35k credits\\n\\nGrowth\\n\\nBuilt for high volume - and speed.\\n\\nFirecrawl at full force.\\n\\n500,000 credits\\n\\n$012345678901234567890123456789\\n\\n/monthly\\n\\nBilled - yearly\\n\\n2 months free\\n\\nSubscribe\\n\\nScrape 500,000 pages\\n\\n100 - concurrent requests\\n\\nPriority support\\n\\n$177 per extra 175k credits\\n\\nExtra - credits are available via auto-recharge packs. [Enable](https://www.firecrawl.dev/signin/signup)\\n\\nEnterprise\\n\\nPower - at your pace\\n\\nUnlimited credits. Custom RPMs.\\n\\n[Contact sales](https://fk4bvu0n5qp.typeform.com/to/Ej6oydlg) - [More details](https://www.firecrawl.dev/enterprise)\\n\\nBulk discounts\\n\\nTop - priority support\\n\\nCustom concurrency limits\\n\\nImproved stealth proxies\\n\\nSLAs\\n\\nAdvanced - security & controls\\n\\n\\\\[05/ 07 \\\\]\\n\\n\xB7\\n\\nTestimonials\\n\\n//\\n\\nCommunity\\n\\n//\\n\\n## - People love building withFirecrawl\\n\\nDiscover why developers choose - Firecrawl every day.\\n\\n[![Morgan Linton](https://www.firecrawl.dev/assets/testimonials/morgan-linton.png)Morgan - Linton@morganlinton\\\"If you're coding with AI, and haven't discovered @firecrawl\\\\_dev - yet, prepare to have your mind blown \U0001F92F\\\"](https://x.com/morganlinton/status/1839454165703204955) - [![Chris DeWeese](https://www.firecrawl.dev/assets/testimonials/chris-deweese.png)Chris - DeWeese@chrisdeweese\\\\_\\\"Started using @firecrawl\\\\_dev for a project, - I wish I used this sooner.\\\"](https://x.com/chrisdeweese_/status/1853587120406876601) - [![Alex Reibman](https://www.firecrawl.dev/assets/testimonials/alex-reibman.png)Alex - Reibman@AlexReibman\\\"Moved our internal agent's web scraping tool from Apify - to Firecrawl because it benchmarked 50x faster with AgentOps.\\\"](https://x.com/AlexReibman/status/1780299595484131836) - [![Tom - Morpho](https://www.firecrawl.dev/assets/testimonials/tom-morpho.png)Tom - - Morpho@TomReppelin\\\"I found gold today. Thank you @firecrawl\\\\_dev\\\"](https://x.com/TomReppelin/status/1844382491014201613)\\n\\n[![Morgan - Linton](https://www.firecrawl.dev/assets/testimonials/morgan-linton.png)Morgan - Linton@morganlinton\\\"If you're coding with AI, and haven't discovered @firecrawl\\\\_dev - yet, prepare to have your mind blown \U0001F92F\\\"](https://x.com/morganlinton/status/1839454165703204955) - [![Chris DeWeese](https://www.firecrawl.dev/assets/testimonials/chris-deweese.png)Chris - DeWeese@chrisdeweese\\\\_\\\"Started using @firecrawl\\\\_dev for a project, - I wish I used this sooner.\\\"](https://x.com/chrisdeweese_/status/1853587120406876601) - [![Alex Reibman](https://www.firecrawl.dev/assets/testimonials/alex-reibman.png)Alex - Reibman@AlexReibman\\\"Moved our internal agent's web scraping tool from Apify - to Firecrawl because it benchmarked 50x faster with AgentOps.\\\"](https://x.com/AlexReibman/status/1780299595484131836) - [![Tom - Morpho](https://www.firecrawl.dev/assets/testimonials/tom-morpho.png)Tom - - Morpho@TomReppelin\\\"I found gold today. Thank you @firecrawl\\\\_dev\\\"](https://x.com/TomReppelin/status/1844382491014201613)\\n\\n[![Bardia](https://www.firecrawl.dev/assets/testimonials/bardia.png)Bardia@thepericulum\\\"The - Firecrawl team ships. I wanted types for their node SDK, and less than an - hour later, I got them.\\\"](https://x.com/thepericulum/status/1781397799487078874) - [![Matt Busigin](https://www.firecrawl.dev/assets/testimonials/matt-busigin.png)Matt - Busigin@mbusigin\\\"Firecrawl is dope. Congrats guys \U0001F44F\\\"](https://x.com/mbusigin/status/1836065372010656069) - [![Sumanth](https://www.firecrawl.dev/assets/testimonials/sumanth.png)Sumanth@Sumanth\\\\_077\\\"Web - scraping will never be the same!\\\\\\\\\\n\\\\\\\\\\nFirecrawl is an open-source - framework that takes a URL, crawls it, and conver...\\\"](https://x.com/Sumanth_077/status/1940049003074478511) - [![Steven Tey](https://www.firecrawl.dev/assets/testimonials/steven-tey.png)Steven - Tey@steventey\\\"Open-source Clay alternative just dropped\\\\\\\\\\n\\\\\\\\\\nUpload - a CSV of emails and...\\\"](https://x.com/steventey/status/1932945651761098889)\\n\\n[![Bardia](https://www.firecrawl.dev/assets/testimonials/bardia.png)Bardia@thepericulum\\\"The - Firecrawl team ships. I wanted types for their node SDK, and less than an - hour later, I got them.\\\"](https://x.com/thepericulum/status/1781397799487078874) - [![Matt Busigin](https://www.firecrawl.dev/assets/testimonials/matt-busigin.png)Matt - Busigin@mbusigin\\\"Firecrawl is dope. Congrats guys \U0001F44F\\\"](https://x.com/mbusigin/status/1836065372010656069) - [![Sumanth](https://www.firecrawl.dev/assets/testimonials/sumanth.png)Sumanth@Sumanth\\\\_077\\\"Web - scraping will never be the same!\\\\\\\\\\n\\\\\\\\\\nFirecrawl is an open-source - framework that takes a URL, crawls it, and conver...\\\"](https://x.com/Sumanth_077/status/1940049003074478511) - [![Steven Tey](https://www.firecrawl.dev/assets/testimonials/steven-tey.png)Steven - Tey@steventey\\\"Open-source Clay alternative just dropped\\\\\\\\\\n\\\\\\\\\\nUpload - a CSV of emails and...\\\"](https://x.com/steventey/status/1932945651761098889)\\n\\n\\\\[06/ - 07 \\\\]\\n\\n\xB7\\n\\nUse Cases\\n\\n//\\n\\nUse cases\\n\\n//\\n\\n## Transform - \ web data into AI-powered solutions\\n\\nDiscover how Firecrawl customers - are getting the most out of our API.\\n\\n[View all use cases](https://docs.firecrawl.dev/use-cases/overview)\\n\\nChat - with context\\n\\nSmarter AI chats\\n\\nPower your AI assistants with real-time, - accurate web content.\\n\\n[View docs](https://docs.firecrawl.dev/introduction)\\n\\n![AI - Assistant](https://www.firecrawl.dev/assets/ai/bot.png)\\n\\nAI Assistant\\n\\nwithFirecrawl\\n\\nReal-time\xB7Updated - 2 min ago\\n\\nAsk anything...\\n\\nKnow your leads\\n\\nLead enrichment\\n\\nEnhance - your sales data with\\n\\nweb information.\\n\\n[Check out Extract](https://www.firecrawl.dev/extract)\\n\\nExtracting - leads from directory...\\n\\nTech startups\\n\\nWith contact info\\n\\nDecision - makers\\n\\nFunding stage\\n\\nReady to engage\\n\\n![Emily Tran](https://www.firecrawl.dev/assets/ai/leads-1.png)\\n\\n![James - Carter](https://www.firecrawl.dev/assets/ai/leads-2.png)\\n\\n![Sophia Kim](https://www.firecrawl.dev/assets/ai/leads-3.png)\\n\\n![Michael - Rivera](https://www.firecrawl.dev/assets/ai/leads-4.png)\\n\\nKnow your leads\\n\\nMCPs\\n\\nAdd - powerful scraping to your\\n\\ncode editors.\\n\\n[Get started](https://docs.firecrawl.dev/mcp-server)\\n\\n![Claude - Code](https://www.firecrawl.dev/assets/ai/mcps-claude.png)\\n\\nClaude Code\\n\\n![Cursor](https://www.firecrawl.dev/assets/ai/mcps-cursor.png)\\n\\nCursor\\n\\n![Windsurf](https://www.firecrawl.dev/assets/ai/mcps-windsurf.png)\\n\\nWindsurf\\n\\n\u273B\\n\\nWelcome - to Claude Code!\\n\\n/help for help, /status for your current setup\\n\\n>Try - \\\"how do I log an error?\\\"\\n\\nBuild with context\\n\\nAI platforms\\n\\nLet - your customers build AI apps\\n\\nwith web data.\\n\\n[Check out Map](https://docs.firecrawl.dev/features/map)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets/ai/platforms-1.png)\\n\\n![Logo 2](https://www.firecrawl.dev/assets/ai/platforms-2.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets/ai/platforms-4.png)\\n\\n![Logo 3](https://www.firecrawl.dev/assets/ai/platforms-3.png)\\n\\nExtracting - text...\\n\\nNo insight missed\\n\\nDeep research\\n\\nExtract comprehensive - information for\\n\\nin-depth research.\\n\\n[Build your own with Search](https://docs.firecrawl.dev/features/search)\\n\\nDeep - research in progress...\\n\\nAcademic papers\\n\\n0 found\\n\\nNews articles\\n\\n0 - found\\n\\nExpert opinions\\n\\n0 found\\n\\nResearch reports\\n\\n0 found\\n\\nIndustry - data\\n\\n0 found\\n\\nAsk anything...\\n\\n\\\\[ CTA \\\\]\\n\\n\\\\[ CRAWL - \\\\]\\n\\n\\\\[ SCRAPE \\\\]\\n\\n\\\\[ CTA \\\\]\\n\\n//\\n\\nGet started\\n\\n//\\n\\nReady - to build?\\n\\nStart getting Web Data for free and scale seamlessly as your - project expands. No credit card needed.\\n\\n[Start for free](https://www.firecrawl.dev/signin) - [See our plans](https://www.firecrawl.dev/pricing)\\n\\n\\\\[07/ 07 \\\\]\\n\\n\xB7\\n\\nFAQ\\n\\n//\\n\\nFAQ\\n\\n//\\n\\n## - Frequently askedquestions\\n\\nEverything you need to know about Firecrawl.\\n\\nGeneral\\n\\nWhat - is Firecrawl?\\n\\nWhat sites work?\\n\\nWho can benefit from using Firecrawl?\\n\\nIs - Firecrawl open-source?\\n\\nWhat is the difference between Firecrawl and other - web scrapers?\\n\\nWhat is the difference between the open-source version - and the hosted version?\\n\\nScraping & Crawling\\n\\nHow does Firecrawl handle - dynamic content on websites?\\n\\nWhy is it not crawling all the pages?\\n\\nCan - Firecrawl crawl websites without a sitemap?\\n\\nWhat formats can Firecrawl - convert web data into?\\n\\nHow does Firecrawl ensure the cleanliness of the - data?\\n\\nIs Firecrawl suitable for large-scale data scraping projects?\\n\\nDoes - it respect robots.txt?\\n\\nWhat measures does Firecrawl take to handle web - scraping challenges like rate limits and caching?\\n\\nDoes Firecrawl handle - captcha or authentication?\\n\\nAPI Related\\n\\nWhere can I find my API key?\\n\\nBilling\\n\\nIs - Firecrawl free?\\n\\nIs there a pay-per-use plan instead of monthly?\\n\\nDo - credits roll over to the next month?\\n\\nHow many credits do scraping and - crawling cost?\\n\\nDo you charge for failed requests?\\n\\nWhat payment methods - do you accept?\\n\\nFOOTER\\n\\nThe easiest way to extract\\n\\ndata from - the web\\n\\nBacked by\\n\\nY Combinator\\n\\n[Linkedin](https://www.linkedin.com/company/firecrawl) - [Github](https://github.com/firecrawl/firecrawl)\\n\\nSOC II \xB7 Type 2\\n\\nAICPA\\n\\nSOC - 2\\n\\n[X (Twitter)](https://x.com/firecrawl_dev) [Discord](https://discord.gg/gSmWdAkdwd)\\n\\nProducts\\n\\n[Playground](https://www.firecrawl.dev/playground) - [Extract](https://www.firecrawl.dev/extract) [Pricing](https://www.firecrawl.dev/pricing) - [Templates](https://www.firecrawl.dev/templates) [Changelog](https://www.firecrawl.dev/changelog)\\n\\nUse - Cases\\n\\n[AI Platforms](https://docs.firecrawl.dev/use-cases/ai-platforms) - [Lead Enrichment](https://docs.firecrawl.dev/use-cases/lead-enrichment) [SEO - Platforms](https://docs.firecrawl.dev/use-cases/seo-platforms) [Deep Research](https://docs.firecrawl.dev/use-cases/deep-research)\\n\\nDocumentation\\n\\n[Getting - started](https://docs.firecrawl.dev/introduction) [API Reference](https://docs.firecrawl.dev/api-reference/introduction) - [Integrations](https://www.firecrawl.dev/app) [Examples](https://docs.firecrawl.dev/use-cases/overview) - [SDKs](https://docs.firecrawl.dev/sdks/overview)\\n\\nCompany\\n\\n[Blog](https://www.firecrawl.dev/blog) - [Careers](https://www.firecrawl.dev/careers) [Creator & OSS program](https://www.firecrawl.dev/creator-oss-program) - [Student program](https://www.firecrawl.dev/student-program)\\n\\n\xA9 2025 - Firecrawl\\n\\n[Terms of Service](https://www.firecrawl.dev/terms-of-service) - [Privacy Policy](https://www.firecrawl.dev/privacy-policy) [Report Abuse](mailto:help@firecrawl.com?subject=Issue:)\\n\\n[All - systems normal](https://status.firecrawl.dev/)\\n\\nStripeM-Inner\",\"metadata\":{\"favicon\":\"https://www.firecrawl.dev/favicon.png\",\"ogSiteName\":\"Firecrawl - - The Web Data API for AI\",\"ogTitle\":\"Firecrawl - The Web Data API for - AI\",\"description\":\"The web crawling, scraping, and search API for AI. - Built for scale. Firecrawl delivers the entire internet to AI agents and builders. - Clean, structured, and ready to reason with.\",\"title\":\"Firecrawl - The - Web Data API for AI\",\"author\":\"Firecrawl\",\"viewport\":\"width=device-width, - initial-scale=1, maximum-scale=1, user-scalable=no\",\"creator\":\"Firecrawl\",\"publisher\":\"Firecrawl\",\"robots\":\"follow, - index\",\"og:description\":\"The web crawling, scraping, and search API for - AI. Built for scale. Firecrawl delivers the entire internet to AI agents and - builders. Clean, structured, and ready to reason with.\",\"og:url\":\"https://www.firecrawl.dev\",\"og:site_name\":\"Firecrawl - - The Web Data API for AI\",\"og:image\":\"https://www.firecrawl.dev/og.png\",\"ogDescription\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"og:type\":\"website\",\"twitter:card\":\"summary_large_image\",\"language\":\"en\",\"twitter:site\":\"@Vercel\",\"twitter:image\":\"https://www.firecrawl.dev/og.png\",\"keywords\":\"Firecrawl,Markdown,Data,Mendable,Langchain\",\"twitter:description\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"ogImage\":\"https://www.firecrawl.dev/og.png\",\"referrer\":\"origin-when-cross-origin\",\"twitter:creator\":\"@Vercel\",\"ogUrl\":\"https://www.firecrawl.dev\",\"og:title\":\"Firecrawl - - The Web Data API for AI\",\"twitter:title\":\"Firecrawl - The Web Data API - for AI\",\"scrapeId\":\"f3f8fc9e-87e8-41b8-b74f-06b979e2e609\",\"sourceURL\":\"https://firecrawl.dev\",\"url\":\"https://www.firecrawl.dev/\",\"statusCode\":200,\"contentType\":\"text/html; - charset=utf-8\",\"proxyUsed\":\"basic\",\"cacheState\":\"hit\",\"cachedAt\":\"2025-10-29T13:09:07.713Z\",\"creditsUsed\":1}},{\"markdown\":\"We - just raised our Series A and shipped Firecrawl /v2 \U0001F389. [Read the blog.](https://www.firecrawl.dev/blog/firecrawl-v2-series-a-announcement)\\n\\nFOOTER\\n\\nThe - easiest way to extract\\n\\ndata from the web\\n\\nBacked by\\n\\nY Combinator\\n\\n[Linkedin](https://www.linkedin.com/company/firecrawl) - [Github](https://github.com/firecrawl/firecrawl)\\n\\nSOC II \xB7 Type 2\\n\\nAICPA\\n\\nSOC - 2\\n\\n[X (Twitter)](https://x.com/firecrawl_dev) [Discord](https://discord.gg/gSmWdAkdwd)\\n\\nProducts\\n\\n[Playground](https://www.firecrawl.dev/playground) - [Extract](https://www.firecrawl.dev/extract) [Pricing](https://www.firecrawl.dev/pricing) - [Templates](https://www.firecrawl.dev/templates) [Changelog](https://www.firecrawl.dev/changelog)\\n\\nUse - Cases\\n\\n[AI Platforms](https://docs.firecrawl.dev/use-cases/ai-platforms) - [Lead Enrichment](https://docs.firecrawl.dev/use-cases/lead-enrichment) [SEO - Platforms](https://docs.firecrawl.dev/use-cases/seo-platforms) [Deep Research](https://docs.firecrawl.dev/use-cases/deep-research)\\n\\nDocumentation\\n\\n[Getting - started](https://docs.firecrawl.dev/introduction) [API Reference](https://docs.firecrawl.dev/api-reference/introduction) - [Integrations](https://www.firecrawl.dev/app) [Examples](https://docs.firecrawl.dev/use-cases/overview) - [SDKs](https://docs.firecrawl.dev/sdks/overview)\\n\\nCompany\\n\\n[Blog](https://www.firecrawl.dev/blog) - [Careers](https://www.firecrawl.dev/careers) [Creator & OSS program](https://www.firecrawl.dev/creator-oss-program) - [Student program](https://www.firecrawl.dev/student-program)\\n\\n\xA9 2025 - Firecrawl\\n\\n[Terms of Service](https://www.firecrawl.dev/terms-of-service) - [Privacy Policy](https://www.firecrawl.dev/privacy-policy) [Report Abuse](mailto:help@firecrawl.com?subject=Issue:)\\n\\n[Loading - status...](https://status.firecrawl.dev/)\\n\\nreCAPTCHA\\n\\nRecaptcha requires - verification.\\n\\n[Privacy](https://www.google.com/intl/en/policies/privacy/) - \\\\- [Terms](https://www.google.com/intl/en/policies/terms/)\\n\\nprotected - by **reCAPTCHA**\\n\\n[Privacy](https://www.google.com/intl/en/policies/privacy/) - \\\\- [Terms](https://www.google.com/intl/en/policies/terms/)\",\"metadata\":{\"favicon\":\"https://www.firecrawl.dev/favicon.png\",\"twitter:site\":\"@Vercel\",\"og:type\":\"website\",\"ogUrl\":\"https://www.firecrawl.dev\",\"author\":\"Firecrawl\",\"description\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"ogImage\":\"https://www.firecrawl.dev/og.png\",\"language\":\"en\",\"robots\":\"follow, - index\",\"ogTitle\":\"Firecrawl - The Web Data API for AI\",\"creator\":\"Firecrawl\",\"og:title\":\"Firecrawl - - The Web Data API for AI\",\"og:image\":\"https://www.firecrawl.dev/og.png\",\"viewport\":\"width=device-width, - initial-scale=1, maximum-scale=1, user-scalable=no\",\"ogDescription\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"ogSiteName\":\"Firecrawl - The Web Data API - for AI\",\"keywords\":\"Firecrawl,Markdown,Data,Mendable,Langchain\",\"publisher\":\"Firecrawl\",\"twitter:card\":\"summary_large_image\",\"og:url\":\"https://www.firecrawl.dev\",\"og:site_name\":\"Firecrawl - - The Web Data API for AI\",\"twitter:creator\":\"@Vercel\",\"twitter:title\":\"Firecrawl - - The Web Data API for AI\",\"og:description\":\"The web crawling, scraping, - and search API for AI. Built for scale. Firecrawl delivers the entire internet - to AI agents and builders. Clean, structured, and ready to reason with.\",\"twitter:description\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"twitter:image\":\"https://www.firecrawl.dev/og.png\",\"referrer\":\"origin-when-cross-origin\",\"title\":\"Firecrawl - - The Web Data API for AI\",\"scrapeId\":\"fdc798ff-5a0d-4837-8b42-265a00eaab80\",\"sourceURL\":\"https://www.firecrawl.dev/playground/g-noe8ionNNwUqRUtZAvi\",\"url\":\"https://www.firecrawl.dev/playground/g-noe8ionNNwUqRUtZAvi\",\"statusCode\":200,\"contentType\":\"text/html; - charset=utf-8\",\"proxyUsed\":\"basic\",\"cacheState\":\"hit\",\"cachedAt\":\"2025-10-29T11:19:51.575Z\",\"creditsUsed\":1}}]}" - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '29131' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:41 GMT - ETag: - - W/"71cb-USnUGfdebu/Omk+MHR/JgVKRVjg" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 308.748ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:41.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:41 GMT - ETag: - - W/"d5-viLNqST0eDLVY/uM0uR3domAVLg" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 58.299ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:42.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:42 GMT - ETag: - - W/"d5-QOKNH5bbK3JN+Tfs1ilDGndDiiU" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 80.859ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:42.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:42 GMT - ETag: - - W/"d5-QOKNH5bbK3JN+Tfs1ilDGndDiiU" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 50.019ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:42.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:42 GMT - ETag: - - W/"d5-QOKNH5bbK3JN+Tfs1ilDGndDiiU" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 77.403ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:42.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:42 GMT - ETag: - - W/"d5-QOKNH5bbK3JN+Tfs1ilDGndDiiU" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 56.616ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:43.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:43 GMT - ETag: - - W/"d5-86pj1B8lyx89pgvsCE7xsKM+CmM" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 138.397ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:43.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:43 GMT - ETag: - - W/"d5-86pj1B8lyx89pgvsCE7xsKM+CmM" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 61.709ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:43.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:43 GMT - ETag: - - W/"d5-86pj1B8lyx89pgvsCE7xsKM+CmM" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 56.270ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:44.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:44 GMT - ETag: - - W/"d5-fhBJ/Z1zWsgQSM8q+C9AufkRL7k" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 53.261ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:44.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:44 GMT - ETag: - - W/"d5-fhBJ/Z1zWsgQSM8q+C9AufkRL7k" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 60.965ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:44.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:44 GMT - ETag: - - W/"d5-fhBJ/Z1zWsgQSM8q+C9AufkRL7k" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 59.750ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:44.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:44 GMT - ETag: - - W/"d5-fhBJ/Z1zWsgQSM8q+C9AufkRL7k" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 41.124ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:49.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:49 GMT - ETag: - - W/"d5-bOJP5q8xykI7S9CTA2wi1SXkX4Q" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 70.804ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:49.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:49 GMT - ETag: - - W/"d5-bOJP5q8xykI7S9CTA2wi1SXkX4Q" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 57.812ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:50.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:50 GMT - ETag: - - W/"d5-0IipfXsRuOOoxt+V9qzKJ7o4gsE" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 82.778ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"scraping","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:50.000Z","next":"https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '213' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:50 GMT - ETag: - - W/"d5-0IipfXsRuOOoxt+V9qzKJ7o4gsE" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 107.892ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v1/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4?skip=2 - response: - body: - string: '{"success":true,"status":"completed","completed":2,"total":2,"creditsUsed":2,"expiresAt":"2025-10-30T14:36:50.000Z","data":[]}' - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '126' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:50 GMT - ETag: - - W/"7e-vvcE3p6U2e8/3qdC9YbnMBstovQ" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 55.570ms - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: GET - uri: https://api.firecrawl.dev/v2/crawl/9352ed1c-88bf-4258-a466-d29911ebcbe4 - response: - body: - string: "{\"success\":true,\"status\":\"completed\",\"completed\":2,\"total\":2,\"creditsUsed\":2,\"expiresAt\":\"2025-10-30T14:36:52.000Z\",\"data\":[{\"markdown\":\"We - just raised our Series A and shipped Firecrawl /v2 \U0001F389. [Read the blog.](https://www.firecrawl.dev/blog/firecrawl-v2-series-a-announcement)\\n\\n[2 - Months Free \u2014 Annually](https://www.firecrawl.dev/pricing)\\n\\n# Turn - websites into LLM-ready data\\n\\nPower your AI apps with clean web data\\n\\nfrom - any website. [It's also open source.](https://github.com/firecrawl/firecrawl)\\n\\nScrape\\n\\nSearch\\nNew\\n\\nMap\\n\\nCrawl\\n\\nScrape\\n\\nLogo\\n\\nNavigation\\n\\nButton\\n\\nH1 - Title\\n\\nDescription\\n\\nCTA Button\\n\\n\\\\[ .JSON \\\\]\\n\\n```json\\n1[\\\\\\n2 - \ {\\\\\\n3 \\\"url\\\": \\\"https://example.com\\\",\\\\\\n4 \\\"markdown\\\": - \\\"# Getting Started...\\\",\\\\\\n5 \\\"json\\\": { \\\"title\\\": \\\"Guide\\\", - \\\"docs\\\": \\\"...\\\" },\\\\\\n6 \\\"screenshot\\\": \\\"https://example.com/hero.png\\\"\\\\\\n7 - \ }\\\\\\n8]\\n```\\n\\nScrape Completed\\n\\nTrusted by5000+\\n\\ncompaniesof - all sizes\\n\\n![Logo 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets-original/logocloud/1.png)\\n\\n![Logo - 2](https://www.firecrawl.dev/assets-original/logocloud/2.png)\\n\\n![Logo - 3](https://www.firecrawl.dev/assets-original/logocloud/3.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets-original/logocloud/4.png)\\n\\n![Logo - 5](https://www.firecrawl.dev/assets-original/logocloud/5.png)\\n\\n![Logo - 6](https://www.firecrawl.dev/assets-original/logocloud/6.png)\\n\\n![Logo - 7](https://www.firecrawl.dev/assets-original/logocloud/7.png)\\n\\n![Logo - 8](https://www.firecrawl.dev/assets-original/logocloud/8.png)\\n\\n![Logo - 9](https://www.firecrawl.dev/assets-original/logocloud/9.png)\\n\\n![Logo - 10](https://www.firecrawl.dev/assets-original/logocloud/10.png)\\n\\n![Logo - 11](https://www.firecrawl.dev/assets-original/logocloud/11.png)\\n\\n![Logo - 12](https://www.firecrawl.dev/assets-original/logocloud/12.png)\\n\\n![Logo - 13](https://www.firecrawl.dev/assets-original/logocloud/13.png)\\n\\n![Logo - 14](https://www.firecrawl.dev/assets-original/logocloud/14.png)\\n\\n![Logo - 15](https://www.firecrawl.dev/assets-original/logocloud/15.png)\\n\\n![Logo - 16](https://www.firecrawl.dev/assets-original/logocloud/16.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 19](https://www.firecrawl.dev/assets-original/logocloud/19.png)\\n\\n![Logo - 20](https://www.firecrawl.dev/assets-original/logocloud/20.png)\\n\\n![Logo - 21](https://www.firecrawl.dev/assets-original/logocloud/21.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets-original/logocloud/1.png)\\n\\n![Logo - 2](https://www.firecrawl.dev/assets-original/logocloud/2.png)\\n\\n![Logo - 3](https://www.firecrawl.dev/assets-original/logocloud/3.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets-original/logocloud/4.png)\\n\\n![Logo - 5](https://www.firecrawl.dev/assets-original/logocloud/5.png)\\n\\n![Logo - 6](https://www.firecrawl.dev/assets-original/logocloud/6.png)\\n\\n![Logo - 7](https://www.firecrawl.dev/assets-original/logocloud/7.png)\\n\\n![Logo - 8](https://www.firecrawl.dev/assets-original/logocloud/8.png)\\n\\n![Logo - 9](https://www.firecrawl.dev/assets-original/logocloud/9.png)\\n\\n![Logo - 10](https://www.firecrawl.dev/assets-original/logocloud/10.png)\\n\\n![Logo - 11](https://www.firecrawl.dev/assets-original/logocloud/11.png)\\n\\n![Logo - 12](https://www.firecrawl.dev/assets-original/logocloud/12.png)\\n\\n![Logo - 13](https://www.firecrawl.dev/assets-original/logocloud/13.png)\\n\\n![Logo - 14](https://www.firecrawl.dev/assets-original/logocloud/14.png)\\n\\n![Logo - 15](https://www.firecrawl.dev/assets-original/logocloud/15.png)\\n\\n![Logo - 16](https://www.firecrawl.dev/assets-original/logocloud/16.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 19](https://www.firecrawl.dev/assets-original/logocloud/19.png)\\n\\n![Logo - 20](https://www.firecrawl.dev/assets-original/logocloud/20.png)\\n\\n![Logo - 21](https://www.firecrawl.dev/assets-original/logocloud/21.png)\\n\\n\\\\[01/ - 07 \\\\]\\n\\n\xB7\\n\\nMain Features\\n\\n//\\n\\nDeveloper First\\n\\n//\\n\\n## - Startscraping today\\n\\nEnhance your apps with industry leading web scraping - and crawling capabilities.\\n\\nScrape\\n\\nGet llm-ready data from websites. - Markdown, JSON, screenshot, etc.\\n\\nSearch\\n\\nNew\\n\\nSearch the web - and get full content from results.\\n\\nCrawl\\n\\nCrawl all the pages on - a website and get data for each page.\\n\\nPython\\n\\nNode.js\\n\\nCurl\\n\\nCopy - code\\n\\n```python\\n1# pip install firecrawl-py\\n2from firecrawl import - Firecrawl\\n3\\n4app = Firecrawl(api_key=\\\"fc-YOUR_API_KEY\\\")\\n5\\n6# - Scrape a website:\\n7app.scrape('firecrawl.dev')\\n8\\n9\\n10\\n```\\n\\n\\\\[ - .MD \\\\]\\n\\n```markdown\\n1# Firecrawl\\n2\\n3Firecrawl is a powerful web - scraping\\n4library that makes it easy to extract\\n5data from websites.\\n6\\n7## - Installation\\n8\\n9To install Firecrawl, run:\\n10\\n11\\n```\\n\\n![developer-1](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-2](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-3](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-4](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-5](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-6](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-7](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-8](https://www.firecrawl.dev/assets/developer/8.png)\\n\\n![developer-9](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-10](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-11](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-12](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-13](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-14](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-15](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-16](https://www.firecrawl.dev/assets/developer/8.png)\\n\\n![developer-17](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-18](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-19](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-20](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-21](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-22](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-23](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-24](https://www.firecrawl.dev/assets/developer/8.png)\\n\\nIntegrations\\n\\n### - Use well-known tools\\n\\nAlready fully integrated with the greatest existing - tools and workflows.\\n\\n[See all integrations](https://www.firecrawl.dev/app)\\n\\n![Firecrawl - icon (blueprint)](https://www.firecrawl.dev/assets-original/developer-os-icon.png)\\n\\nmendableai/firecrawl\\n\\nPublic\\n\\nStar\\n\\n65.3K\\n\\n\\\\[python-SDK\\\\] - improvs/async\\n\\n#1337\\n\\n\xB7\\n\\nApr 18, 2025\\n\\n\xB7\\n\\n![rafaelsideguide](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nrafaelsideguide\\n\\nfeat(extract): - cost limit\\n\\n#1473\\n\\n\xB7\\n\\nApr 17, 2025\\n\\n\xB7\\n\\n![mogery](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nmogery\\n\\nfeat(scrape): - get job result from GCS, avoid Redis\\n\\n#1461\\n\\n\xB7\\n\\nApr 15, 2025\\n\\n\xB7\\n\\n![mogery](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nmogery\\n\\nExtract - v2/rerank improvs\\n\\n#1437\\n\\n\xB7\\n\\nApr 11, 2025\\n\\n\xB7\\n\\n![rafaelsideguide](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nrafaelsideguide\\n\\n![https://avatars.githubusercontent.com/u/150964962?v=4](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=96&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\n![https://avatars.githubusercontent.com/u/66118807?v=4](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=96&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\n+90\\n\\nOpen - Source\\n\\n### Code you can trust\\n\\nDeveloped transparently and collaboratively. - Join our community of contributors.\\n\\n[Check out our repo](https://github.com/firecrawl/firecrawl)\\n\\n\\\\[02/ - 07 \\\\]\\n\\n\xB7\\n\\nCore\\n\\n//\\n\\nBuilt to outperform\\n\\n//\\n\\n## - Core principles, provenperformance\\n\\nBuilt from the ground up to outperform - traditional scrapers.\\n\\nNo proxy headaches\\n\\nReliable.Covers 96% of - the web,\\n\\nincluding JS-heavy and protected pages. No proxies, no puppets, - just clean data.\\n\\nFirecrawl\\n\\n96%\\n\\n![Puppeteer icon](https://www.firecrawl.dev/assets/puppeteer.png)\\n\\nPuppeteer\\n\\n79%\\n\\ncURL\\n\\n75%\\n\\nSpeed - that feels invisible\\n\\nBlazingly fast.Delivers results in less than 1 second, - fast for real-time agents\\n\\nand dynamic apps.\\n\\nURL\\n\\nCrawl\\n\\nScrape\\n\\nfirecrawl.dev/docs\\n\\n50ms\\n\\n51ms\\n\\nfirecrawl.dev/templates\\n\\n52ms\\n\\n50ms\\n\\nfirecrawl.dev/changelog\\n\\n49ms\\n\\n52ms\\n\\nfirecrawl.dev/about\\n\\n52ms\\n\\n50ms\\n\\nfirecrawl.dev/changelog\\n\\n50ms\\n\\n52ms\\n\\nfirecrawl.dev/playground\\n\\n51ms\\n\\n49ms\\n\\n\\\\[ - CTA \\\\]\\n\\n\\\\[ CRAWL \\\\]\\n\\n\\\\[ SCRAPE \\\\]\\n\\n\\\\[ CTA \\\\]\\n\\n//\\n\\nGet - started\\n\\n//\\n\\nReady to build?\\n\\nStart getting Web Data for free - and scale seamlessly as your project expands. No credit card needed.\\n\\n[Start - for free](https://www.firecrawl.dev/signin) [See our plans](https://www.firecrawl.dev/pricing)\\n\\n\\\\[03/ - 07 \\\\]\\n\\n\xB7\\n\\nFeatures\\n\\n//\\n\\nZero configuration\\n\\n//\\n\\n## - We handle the hard stuff\\n\\nRotating proxies, orchestration, rate limits, - js-blocked content and more.\\n\\nDocs to data\\n\\nMedia parsing.Firecrawl - can parse and output content from web hosted pdfs, docx, and more.\\n\\nhttps://example.com/docs/report.pdf\\n\\nhttps://example.com/files/brief.docx\\n\\nhttps://example.com/docs/guide.html\\n\\ndocx\\n\\nParsing...\\n\\nKnows - the moment\\n\\nSmart wait.Firecrawl intelligently waits for content to load, - making scraping faster and more reliable.\\n\\nhttps://example-spa.com\\n\\nRequest - Sent\\n\\nScrapes the real thing\\n\\nCached, when you need it.Selective caching, - you choose your caching patterns, growing web index.\\n\\n![User](https://www.firecrawl.dev/_next/image?url=%2Fassets-original%2Ffeatures%2Fcached-user.png&w=256&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nUser\\n\\nFirecrawl\\n\\nCache\\n\\nInvisible - access\\n\\nStealth mode.Crawls the web without\\n\\nbeing blocked, mimics - real users to access protected or dynamic content.\\n\\nInteractive scraping\\n\\nActions.Click, - scroll, write, wait, press and more before extracting content.\\n\\nhttps://example.com\\n\\nNavigate\\n\\nClick\\n\\nType\\n\\nWait\\n\\nScroll\\n\\nPress\\n\\nScreenshot\\n\\nScrape\\n\\n\\\\[04/ - 07 \\\\]\\n\\n\xB7\\n\\nPricing\\n\\n//\\n\\nTransparent\\n\\n//\\n\\n## Flexible - pricing\\n\\nExplore transparent pricing built for real-world scraping. Start - for free, then scale as you grow.\\n\\n\U0001F1FA\U0001F1F8USD\\n\\nFree Plan\\n\\nA - lightweight way to try scraping.\\n\\nNo cost, no card, no hassle.\\n\\n500 - credits\\n\\n$0123456789\\n\\none-time\\n\\nGet started\\n\\nScrape 500 pages\\n\\n2 - concurrent requests\\n\\nLow rate limits\\n\\nHobby\\n\\nGreat for side projects - and small tools.\\n\\nFast, simple, no overkill.\\n\\n3,000 credits\\n\\n$01234567890123456789\\n\\n/monthly\\n\\nBilled - yearly\\n\\n2 months free\\n\\nSubscribe\\n\\nScrape 3,000 pages\\n\\n5 concurrent - requests\\n\\nBasic support\\n\\n$9 per extra 1k credits\\n\\nStandard\\n\\nMost - popular\\n\\nPerfect for scaling with less effort.\\n\\nSimple, solid, dependable.\\n\\n100,000 - credits\\n\\n$01234567890123456789\\n\\n/monthly\\n\\nBilled yearly\\n\\n2 - months free\\n\\nSubscribe\\n\\nScrape 100,000 pages\\n\\n50 concurrent requests\\n\\nStandard - support\\n\\n$47 per extra 35k credits\\n\\nGrowth\\n\\nBuilt for high volume - and speed.\\n\\nFirecrawl at full force.\\n\\n500,000 credits\\n\\n$012345678901234567890123456789\\n\\n/monthly\\n\\nBilled - yearly\\n\\n2 months free\\n\\nSubscribe\\n\\nScrape 500,000 pages\\n\\n100 - concurrent requests\\n\\nPriority support\\n\\n$177 per extra 175k credits\\n\\nExtra - credits are available via auto-recharge packs. [Enable](https://www.firecrawl.dev/signin/signup)\\n\\nEnterprise\\n\\nPower - at your pace\\n\\nUnlimited credits. Custom RPMs.\\n\\n[Contact sales](https://fk4bvu0n5qp.typeform.com/to/Ej6oydlg) - [More details](https://www.firecrawl.dev/enterprise)\\n\\nBulk discounts\\n\\nTop - priority support\\n\\nCustom concurrency limits\\n\\nImproved stealth proxies\\n\\nSLAs\\n\\nAdvanced - security & controls\\n\\n\\\\[05/ 07 \\\\]\\n\\n\xB7\\n\\nTestimonials\\n\\n//\\n\\nCommunity\\n\\n//\\n\\n## - People love building withFirecrawl\\n\\nDiscover why developers choose - Firecrawl every day.\\n\\n[![Morgan Linton](https://www.firecrawl.dev/assets/testimonials/morgan-linton.png)Morgan - Linton@morganlinton\\\"If you're coding with AI, and haven't discovered @firecrawl\\\\_dev - yet, prepare to have your mind blown \U0001F92F\\\"](https://x.com/morganlinton/status/1839454165703204955) - [![Chris DeWeese](https://www.firecrawl.dev/assets/testimonials/chris-deweese.png)Chris - DeWeese@chrisdeweese\\\\_\\\"Started using @firecrawl\\\\_dev for a project, - I wish I used this sooner.\\\"](https://x.com/chrisdeweese_/status/1853587120406876601) - [![Alex Reibman](https://www.firecrawl.dev/assets/testimonials/alex-reibman.png)Alex - Reibman@AlexReibman\\\"Moved our internal agent's web scraping tool from Apify - to Firecrawl because it benchmarked 50x faster with AgentOps.\\\"](https://x.com/AlexReibman/status/1780299595484131836) - [![Tom - Morpho](https://www.firecrawl.dev/assets/testimonials/tom-morpho.png)Tom - - Morpho@TomReppelin\\\"I found gold today. Thank you @firecrawl\\\\_dev\\\"](https://x.com/TomReppelin/status/1844382491014201613)\\n\\n[![Morgan - Linton](https://www.firecrawl.dev/assets/testimonials/morgan-linton.png)Morgan - Linton@morganlinton\\\"If you're coding with AI, and haven't discovered @firecrawl\\\\_dev - yet, prepare to have your mind blown \U0001F92F\\\"](https://x.com/morganlinton/status/1839454165703204955) - [![Chris DeWeese](https://www.firecrawl.dev/assets/testimonials/chris-deweese.png)Chris - DeWeese@chrisdeweese\\\\_\\\"Started using @firecrawl\\\\_dev for a project, - I wish I used this sooner.\\\"](https://x.com/chrisdeweese_/status/1853587120406876601) - [![Alex Reibman](https://www.firecrawl.dev/assets/testimonials/alex-reibman.png)Alex - Reibman@AlexReibman\\\"Moved our internal agent's web scraping tool from Apify - to Firecrawl because it benchmarked 50x faster with AgentOps.\\\"](https://x.com/AlexReibman/status/1780299595484131836) - [![Tom - Morpho](https://www.firecrawl.dev/assets/testimonials/tom-morpho.png)Tom - - Morpho@TomReppelin\\\"I found gold today. Thank you @firecrawl\\\\_dev\\\"](https://x.com/TomReppelin/status/1844382491014201613)\\n\\n[![Bardia](https://www.firecrawl.dev/assets/testimonials/bardia.png)Bardia@thepericulum\\\"The - Firecrawl team ships. I wanted types for their node SDK, and less than an - hour later, I got them.\\\"](https://x.com/thepericulum/status/1781397799487078874) - [![Matt Busigin](https://www.firecrawl.dev/assets/testimonials/matt-busigin.png)Matt - Busigin@mbusigin\\\"Firecrawl is dope. Congrats guys \U0001F44F\\\"](https://x.com/mbusigin/status/1836065372010656069) - [![Sumanth](https://www.firecrawl.dev/assets/testimonials/sumanth.png)Sumanth@Sumanth\\\\_077\\\"Web - scraping will never be the same!\\\\\\\\\\n\\\\\\\\\\nFirecrawl is an open-source - framework that takes a URL, crawls it, and conver...\\\"](https://x.com/Sumanth_077/status/1940049003074478511) - [![Steven Tey](https://www.firecrawl.dev/assets/testimonials/steven-tey.png)Steven - Tey@steventey\\\"Open-source Clay alternative just dropped\\\\\\\\\\n\\\\\\\\\\nUpload - a CSV of emails and...\\\"](https://x.com/steventey/status/1932945651761098889)\\n\\n[![Bardia](https://www.firecrawl.dev/assets/testimonials/bardia.png)Bardia@thepericulum\\\"The - Firecrawl team ships. I wanted types for their node SDK, and less than an - hour later, I got them.\\\"](https://x.com/thepericulum/status/1781397799487078874) - [![Matt Busigin](https://www.firecrawl.dev/assets/testimonials/matt-busigin.png)Matt - Busigin@mbusigin\\\"Firecrawl is dope. Congrats guys \U0001F44F\\\"](https://x.com/mbusigin/status/1836065372010656069) - [![Sumanth](https://www.firecrawl.dev/assets/testimonials/sumanth.png)Sumanth@Sumanth\\\\_077\\\"Web - scraping will never be the same!\\\\\\\\\\n\\\\\\\\\\nFirecrawl is an open-source - framework that takes a URL, crawls it, and conver...\\\"](https://x.com/Sumanth_077/status/1940049003074478511) - [![Steven Tey](https://www.firecrawl.dev/assets/testimonials/steven-tey.png)Steven - Tey@steventey\\\"Open-source Clay alternative just dropped\\\\\\\\\\n\\\\\\\\\\nUpload - a CSV of emails and...\\\"](https://x.com/steventey/status/1932945651761098889)\\n\\n\\\\[06/ - 07 \\\\]\\n\\n\xB7\\n\\nUse Cases\\n\\n//\\n\\nUse cases\\n\\n//\\n\\n## Transform - \ web data into AI-powered solutions\\n\\nDiscover how Firecrawl customers - are getting the most out of our API.\\n\\n[View all use cases](https://docs.firecrawl.dev/use-cases/overview)\\n\\nChat - with context\\n\\nSmarter AI chats\\n\\nPower your AI assistants with real-time, - accurate web content.\\n\\n[View docs](https://docs.firecrawl.dev/introduction)\\n\\n![AI - Assistant](https://www.firecrawl.dev/assets/ai/bot.png)\\n\\nAI Assistant\\n\\nwithFirecrawl\\n\\nReal-time\xB7Updated - 2 min ago\\n\\nAsk anything...\\n\\nKnow your leads\\n\\nLead enrichment\\n\\nEnhance - your sales data with\\n\\nweb information.\\n\\n[Check out Extract](https://www.firecrawl.dev/extract)\\n\\nExtracting - leads from directory...\\n\\nTech startups\\n\\nWith contact info\\n\\nDecision - makers\\n\\nFunding stage\\n\\nReady to engage\\n\\n![Emily Tran](https://www.firecrawl.dev/assets/ai/leads-1.png)\\n\\n![James - Carter](https://www.firecrawl.dev/assets/ai/leads-2.png)\\n\\n![Sophia Kim](https://www.firecrawl.dev/assets/ai/leads-3.png)\\n\\n![Michael - Rivera](https://www.firecrawl.dev/assets/ai/leads-4.png)\\n\\nKnow your leads\\n\\nMCPs\\n\\nAdd - powerful scraping to your\\n\\ncode editors.\\n\\n[Get started](https://docs.firecrawl.dev/mcp-server)\\n\\n![Claude - Code](https://www.firecrawl.dev/assets/ai/mcps-claude.png)\\n\\nClaude Code\\n\\n![Cursor](https://www.firecrawl.dev/assets/ai/mcps-cursor.png)\\n\\nCursor\\n\\n![Windsurf](https://www.firecrawl.dev/assets/ai/mcps-windsurf.png)\\n\\nWindsurf\\n\\n\u273B\\n\\nWelcome - to Claude Code!\\n\\n/help for help, /status for your current setup\\n\\n>Try - \\\"how do I log an error?\\\"\\n\\nBuild with context\\n\\nAI platforms\\n\\nLet - your customers build AI apps\\n\\nwith web data.\\n\\n[Check out Map](https://docs.firecrawl.dev/features/map)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets/ai/platforms-1.png)\\n\\n![Logo 2](https://www.firecrawl.dev/assets/ai/platforms-2.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets/ai/platforms-4.png)\\n\\n![Logo 3](https://www.firecrawl.dev/assets/ai/platforms-3.png)\\n\\nExtracting - text...\\n\\nNo insight missed\\n\\nDeep research\\n\\nExtract comprehensive - information for\\n\\nin-depth research.\\n\\n[Build your own with Search](https://docs.firecrawl.dev/features/search)\\n\\nDeep - research in progress...\\n\\nAcademic papers\\n\\n0 found\\n\\nNews articles\\n\\n0 - found\\n\\nExpert opinions\\n\\n0 found\\n\\nResearch reports\\n\\n0 found\\n\\nIndustry - data\\n\\n0 found\\n\\nAsk anything...\\n\\n\\\\[ CTA \\\\]\\n\\n\\\\[ CRAWL - \\\\]\\n\\n\\\\[ SCRAPE \\\\]\\n\\n\\\\[ CTA \\\\]\\n\\n//\\n\\nGet started\\n\\n//\\n\\nReady - to build?\\n\\nStart getting Web Data for free and scale seamlessly as your - project expands. No credit card needed.\\n\\n[Start for free](https://www.firecrawl.dev/signin) - [See our plans](https://www.firecrawl.dev/pricing)\\n\\n\\\\[07/ 07 \\\\]\\n\\n\xB7\\n\\nFAQ\\n\\n//\\n\\nFAQ\\n\\n//\\n\\n## - Frequently askedquestions\\n\\nEverything you need to know about Firecrawl.\\n\\nGeneral\\n\\nWhat - is Firecrawl?\\n\\nWhat sites work?\\n\\nWho can benefit from using Firecrawl?\\n\\nIs - Firecrawl open-source?\\n\\nWhat is the difference between Firecrawl and other - web scrapers?\\n\\nWhat is the difference between the open-source version - and the hosted version?\\n\\nScraping & Crawling\\n\\nHow does Firecrawl handle - dynamic content on websites?\\n\\nWhy is it not crawling all the pages?\\n\\nCan - Firecrawl crawl websites without a sitemap?\\n\\nWhat formats can Firecrawl - convert web data into?\\n\\nHow does Firecrawl ensure the cleanliness of the - data?\\n\\nIs Firecrawl suitable for large-scale data scraping projects?\\n\\nDoes - it respect robots.txt?\\n\\nWhat measures does Firecrawl take to handle web - scraping challenges like rate limits and caching?\\n\\nDoes Firecrawl handle - captcha or authentication?\\n\\nAPI Related\\n\\nWhere can I find my API key?\\n\\nBilling\\n\\nIs - Firecrawl free?\\n\\nIs there a pay-per-use plan instead of monthly?\\n\\nDo - credits roll over to the next month?\\n\\nHow many credits do scraping and - crawling cost?\\n\\nDo you charge for failed requests?\\n\\nWhat payment methods - do you accept?\\n\\nFOOTER\\n\\nThe easiest way to extract\\n\\ndata from - the web\\n\\nBacked by\\n\\nY Combinator\\n\\n[Linkedin](https://www.linkedin.com/company/firecrawl) - [Github](https://github.com/firecrawl/firecrawl)\\n\\nSOC II \xB7 Type 2\\n\\nAICPA\\n\\nSOC - 2\\n\\n[X (Twitter)](https://x.com/firecrawl_dev) [Discord](https://discord.gg/gSmWdAkdwd)\\n\\nProducts\\n\\n[Playground](https://www.firecrawl.dev/playground) - [Extract](https://www.firecrawl.dev/extract) [Pricing](https://www.firecrawl.dev/pricing) - [Templates](https://www.firecrawl.dev/templates) [Changelog](https://www.firecrawl.dev/changelog)\\n\\nUse - Cases\\n\\n[AI Platforms](https://docs.firecrawl.dev/use-cases/ai-platforms) - [Lead Enrichment](https://docs.firecrawl.dev/use-cases/lead-enrichment) [SEO - Platforms](https://docs.firecrawl.dev/use-cases/seo-platforms) [Deep Research](https://docs.firecrawl.dev/use-cases/deep-research)\\n\\nDocumentation\\n\\n[Getting - started](https://docs.firecrawl.dev/introduction) [API Reference](https://docs.firecrawl.dev/api-reference/introduction) - [Integrations](https://www.firecrawl.dev/app) [Examples](https://docs.firecrawl.dev/use-cases/overview) - [SDKs](https://docs.firecrawl.dev/sdks/overview)\\n\\nCompany\\n\\n[Blog](https://www.firecrawl.dev/blog) - [Careers](https://www.firecrawl.dev/careers) [Creator & OSS program](https://www.firecrawl.dev/creator-oss-program) - [Student program](https://www.firecrawl.dev/student-program)\\n\\n\xA9 2025 - Firecrawl\\n\\n[Terms of Service](https://www.firecrawl.dev/terms-of-service) - [Privacy Policy](https://www.firecrawl.dev/privacy-policy) [Report Abuse](mailto:help@firecrawl.com?subject=Issue:)\\n\\n[All - systems normal](https://status.firecrawl.dev/)\\n\\nStripeM-Inner\",\"metadata\":{\"favicon\":\"https://www.firecrawl.dev/favicon.png\",\"ogSiteName\":\"Firecrawl - - The Web Data API for AI\",\"ogTitle\":\"Firecrawl - The Web Data API for - AI\",\"description\":\"The web crawling, scraping, and search API for AI. - Built for scale. Firecrawl delivers the entire internet to AI agents and builders. - Clean, structured, and ready to reason with.\",\"title\":\"Firecrawl - The - Web Data API for AI\",\"author\":\"Firecrawl\",\"viewport\":\"width=device-width, - initial-scale=1, maximum-scale=1, user-scalable=no\",\"creator\":\"Firecrawl\",\"publisher\":\"Firecrawl\",\"robots\":\"follow, - index\",\"og:description\":\"The web crawling, scraping, and search API for - AI. Built for scale. Firecrawl delivers the entire internet to AI agents and - builders. Clean, structured, and ready to reason with.\",\"og:url\":\"https://www.firecrawl.dev\",\"og:site_name\":\"Firecrawl - - The Web Data API for AI\",\"og:image\":\"https://www.firecrawl.dev/og.png\",\"ogDescription\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"og:type\":\"website\",\"twitter:card\":\"summary_large_image\",\"language\":\"en\",\"twitter:site\":\"@Vercel\",\"twitter:image\":\"https://www.firecrawl.dev/og.png\",\"keywords\":\"Firecrawl,Markdown,Data,Mendable,Langchain\",\"twitter:description\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"ogImage\":\"https://www.firecrawl.dev/og.png\",\"referrer\":\"origin-when-cross-origin\",\"twitter:creator\":\"@Vercel\",\"ogUrl\":\"https://www.firecrawl.dev\",\"og:title\":\"Firecrawl - - The Web Data API for AI\",\"twitter:title\":\"Firecrawl - The Web Data API - for AI\",\"scrapeId\":\"f3f8fc9e-87e8-41b8-b74f-06b979e2e609\",\"sourceURL\":\"https://firecrawl.dev\",\"url\":\"https://www.firecrawl.dev/\",\"statusCode\":200,\"contentType\":\"text/html; - charset=utf-8\",\"proxyUsed\":\"basic\",\"cacheState\":\"hit\",\"cachedAt\":\"2025-10-29T13:09:07.713Z\",\"creditsUsed\":1}},{\"markdown\":\"We - just raised our Series A and shipped Firecrawl /v2 \U0001F389. [Read the blog.](https://www.firecrawl.dev/blog/firecrawl-v2-series-a-announcement)\\n\\nFOOTER\\n\\nThe - easiest way to extract\\n\\ndata from the web\\n\\nBacked by\\n\\nY Combinator\\n\\n[Linkedin](https://www.linkedin.com/company/firecrawl) - [Github](https://github.com/firecrawl/firecrawl)\\n\\nSOC II \xB7 Type 2\\n\\nAICPA\\n\\nSOC - 2\\n\\n[X (Twitter)](https://x.com/firecrawl_dev) [Discord](https://discord.gg/gSmWdAkdwd)\\n\\nProducts\\n\\n[Playground](https://www.firecrawl.dev/playground) - [Extract](https://www.firecrawl.dev/extract) [Pricing](https://www.firecrawl.dev/pricing) - [Templates](https://www.firecrawl.dev/templates) [Changelog](https://www.firecrawl.dev/changelog)\\n\\nUse - Cases\\n\\n[AI Platforms](https://docs.firecrawl.dev/use-cases/ai-platforms) - [Lead Enrichment](https://docs.firecrawl.dev/use-cases/lead-enrichment) [SEO - Platforms](https://docs.firecrawl.dev/use-cases/seo-platforms) [Deep Research](https://docs.firecrawl.dev/use-cases/deep-research)\\n\\nDocumentation\\n\\n[Getting - started](https://docs.firecrawl.dev/introduction) [API Reference](https://docs.firecrawl.dev/api-reference/introduction) - [Integrations](https://www.firecrawl.dev/app) [Examples](https://docs.firecrawl.dev/use-cases/overview) - [SDKs](https://docs.firecrawl.dev/sdks/overview)\\n\\nCompany\\n\\n[Blog](https://www.firecrawl.dev/blog) - [Careers](https://www.firecrawl.dev/careers) [Creator & OSS program](https://www.firecrawl.dev/creator-oss-program) - [Student program](https://www.firecrawl.dev/student-program)\\n\\n\xA9 2025 - Firecrawl\\n\\n[Terms of Service](https://www.firecrawl.dev/terms-of-service) - [Privacy Policy](https://www.firecrawl.dev/privacy-policy) [Report Abuse](mailto:help@firecrawl.com?subject=Issue:)\\n\\n[Loading - status...](https://status.firecrawl.dev/)\\n\\nreCAPTCHA\\n\\nRecaptcha requires - verification.\\n\\n[Privacy](https://www.google.com/intl/en/policies/privacy/) - \\\\- [Terms](https://www.google.com/intl/en/policies/terms/)\\n\\nprotected - by **reCAPTCHA**\\n\\n[Privacy](https://www.google.com/intl/en/policies/privacy/) - \\\\- [Terms](https://www.google.com/intl/en/policies/terms/)\",\"metadata\":{\"favicon\":\"https://www.firecrawl.dev/favicon.png\",\"twitter:site\":\"@Vercel\",\"og:type\":\"website\",\"ogUrl\":\"https://www.firecrawl.dev\",\"author\":\"Firecrawl\",\"description\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"ogImage\":\"https://www.firecrawl.dev/og.png\",\"language\":\"en\",\"robots\":\"follow, - index\",\"ogTitle\":\"Firecrawl - The Web Data API for AI\",\"creator\":\"Firecrawl\",\"og:title\":\"Firecrawl - - The Web Data API for AI\",\"og:image\":\"https://www.firecrawl.dev/og.png\",\"viewport\":\"width=device-width, - initial-scale=1, maximum-scale=1, user-scalable=no\",\"ogDescription\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"ogSiteName\":\"Firecrawl - The Web Data API - for AI\",\"keywords\":\"Firecrawl,Markdown,Data,Mendable,Langchain\",\"publisher\":\"Firecrawl\",\"twitter:card\":\"summary_large_image\",\"og:url\":\"https://www.firecrawl.dev\",\"og:site_name\":\"Firecrawl - - The Web Data API for AI\",\"twitter:creator\":\"@Vercel\",\"twitter:title\":\"Firecrawl - - The Web Data API for AI\",\"og:description\":\"The web crawling, scraping, - and search API for AI. Built for scale. Firecrawl delivers the entire internet - to AI agents and builders. Clean, structured, and ready to reason with.\",\"twitter:description\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"twitter:image\":\"https://www.firecrawl.dev/og.png\",\"referrer\":\"origin-when-cross-origin\",\"title\":\"Firecrawl - - The Web Data API for AI\",\"scrapeId\":\"fdc798ff-5a0d-4837-8b42-265a00eaab80\",\"sourceURL\":\"https://www.firecrawl.dev/playground/g-noe8ionNNwUqRUtZAvi\",\"url\":\"https://www.firecrawl.dev/playground/g-noe8ionNNwUqRUtZAvi\",\"statusCode\":200,\"contentType\":\"text/html; - charset=utf-8\",\"proxyUsed\":\"basic\",\"cacheState\":\"hit\",\"cachedAt\":\"2025-10-29T11:19:51.575Z\",\"creditsUsed\":1}}]}" - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '29044' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:36:52 GMT - ETag: - - W/"7174-091KZuyI4vVTuUeCZw9iWhwGeDU" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 97.304ms - status: - code: 200 - message: OK -version: 1 diff --git a/lib/crewai-tools/tests/tools/cassettes/firecrawl_scrape_website_tool_test/test_firecrawl_scrape_tool_integration.yaml b/lib/crewai-tools/tests/tools/cassettes/firecrawl_scrape_website_tool_test/test_firecrawl_scrape_tool_integration.yaml deleted file mode 100644 index d5dbae9d9..000000000 --- a/lib/crewai-tools/tests/tools/cassettes/firecrawl_scrape_website_tool_test/test_firecrawl_scrape_tool_integration.yaml +++ /dev/null @@ -1,289 +0,0 @@ -interactions: -- request: - body: '{"url": "https://firecrawl.dev", "includeTags": [], "excludeTags": [], - "onlyMainContent": true, "waitFor": 0, "skipTlsVerification": true, "removeBase64Images": - true, "fastMode": false, "blockAds": true, "storeInCache": true, "maxAge": 172800000, - "formats": ["markdown"], "headers": {}, "mobile": false, "proxy": "auto", "origin": - "python-sdk@4.5.0"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '350' - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: POST - uri: https://api.firecrawl.dev/v2/scrape - response: - body: - string: "{\"success\":true,\"data\":{\"markdown\":\"We just raised our Series - A and shipped Firecrawl /v2 \U0001F389. [Read the blog.](https://www.firecrawl.dev/blog/firecrawl-v2-series-a-announcement)\\n\\n[2 - Months Free \u2014 Annually](https://www.firecrawl.dev/pricing)\\n\\n# Turn - websites into LLM-ready data\\n\\nPower your AI apps with clean web data\\n\\nfrom - any website. [It's also open source.](https://github.com/firecrawl/firecrawl)\\n\\nScrape\\n\\nSearch\\nNew\\n\\nMap\\n\\nCrawl\\n\\nScrape\\n\\nLogo\\n\\nNavigation\\n\\nButton\\n\\nH1 - Title\\n\\nDescription\\n\\nCTA Button\\n\\n\\\\[ .JSON \\\\]\\n\\n```json\\n1[\\\\\\n2 - \ {\\\\\\n3 \\\"url\\\": \\\"https://example.com\\\",\\\\\\n4 \\\"markdown\\\": - \\\"# Getting Started...\\\",\\\\\\n5 \\\"json\\\": { \\\"title\\\": \\\"Guide\\\", - \\\"docs\\\": \\\"...\\\" },\\\\\\n6 \\\"screenshot\\\": \\\"https://example.com/hero.png\\\"\\\\\\n7 - \ }\\\\\\n8]\\n```\\n\\nScrape Completed\\n\\nTrusted by5000+\\n\\ncompaniesof - all sizes\\n\\n![Logo 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets-original/logocloud/1.png)\\n\\n![Logo - 2](https://www.firecrawl.dev/assets-original/logocloud/2.png)\\n\\n![Logo - 3](https://www.firecrawl.dev/assets-original/logocloud/3.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets-original/logocloud/4.png)\\n\\n![Logo - 5](https://www.firecrawl.dev/assets-original/logocloud/5.png)\\n\\n![Logo - 6](https://www.firecrawl.dev/assets-original/logocloud/6.png)\\n\\n![Logo - 7](https://www.firecrawl.dev/assets-original/logocloud/7.png)\\n\\n![Logo - 8](https://www.firecrawl.dev/assets-original/logocloud/8.png)\\n\\n![Logo - 9](https://www.firecrawl.dev/assets-original/logocloud/9.png)\\n\\n![Logo - 10](https://www.firecrawl.dev/assets-original/logocloud/10.png)\\n\\n![Logo - 11](https://www.firecrawl.dev/assets-original/logocloud/11.png)\\n\\n![Logo - 12](https://www.firecrawl.dev/assets-original/logocloud/12.png)\\n\\n![Logo - 13](https://www.firecrawl.dev/assets-original/logocloud/13.png)\\n\\n![Logo - 14](https://www.firecrawl.dev/assets-original/logocloud/14.png)\\n\\n![Logo - 15](https://www.firecrawl.dev/assets-original/logocloud/15.png)\\n\\n![Logo - 16](https://www.firecrawl.dev/assets-original/logocloud/16.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 19](https://www.firecrawl.dev/assets-original/logocloud/19.png)\\n\\n![Logo - 20](https://www.firecrawl.dev/assets-original/logocloud/20.png)\\n\\n![Logo - 21](https://www.firecrawl.dev/assets-original/logocloud/21.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets-original/logocloud/1.png)\\n\\n![Logo - 2](https://www.firecrawl.dev/assets-original/logocloud/2.png)\\n\\n![Logo - 3](https://www.firecrawl.dev/assets-original/logocloud/3.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets-original/logocloud/4.png)\\n\\n![Logo - 5](https://www.firecrawl.dev/assets-original/logocloud/5.png)\\n\\n![Logo - 6](https://www.firecrawl.dev/assets-original/logocloud/6.png)\\n\\n![Logo - 7](https://www.firecrawl.dev/assets-original/logocloud/7.png)\\n\\n![Logo - 8](https://www.firecrawl.dev/assets-original/logocloud/8.png)\\n\\n![Logo - 9](https://www.firecrawl.dev/assets-original/logocloud/9.png)\\n\\n![Logo - 10](https://www.firecrawl.dev/assets-original/logocloud/10.png)\\n\\n![Logo - 11](https://www.firecrawl.dev/assets-original/logocloud/11.png)\\n\\n![Logo - 12](https://www.firecrawl.dev/assets-original/logocloud/12.png)\\n\\n![Logo - 13](https://www.firecrawl.dev/assets-original/logocloud/13.png)\\n\\n![Logo - 14](https://www.firecrawl.dev/assets-original/logocloud/14.png)\\n\\n![Logo - 15](https://www.firecrawl.dev/assets-original/logocloud/15.png)\\n\\n![Logo - 16](https://www.firecrawl.dev/assets-original/logocloud/16.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 19](https://www.firecrawl.dev/assets-original/logocloud/19.png)\\n\\n![Logo - 20](https://www.firecrawl.dev/assets-original/logocloud/20.png)\\n\\n![Logo - 21](https://www.firecrawl.dev/assets-original/logocloud/21.png)\\n\\n\\\\[01/ - 07 \\\\]\\n\\n\xB7\\n\\nMain Features\\n\\n//\\n\\nDeveloper First\\n\\n//\\n\\n## - Startscraping today\\n\\nEnhance your apps with industry leading web scraping - and crawling capabilities.\\n\\nScrape\\n\\nGet llm-ready data from websites. - Markdown, JSON, screenshot, etc.\\n\\nSearch\\n\\nNew\\n\\nSearch the web - and get full content from results.\\n\\nCrawl\\n\\nCrawl all the pages on - a website and get data for each page.\\n\\nPython\\n\\nNode.js\\n\\nCurl\\n\\nCopy - code\\n\\n```python\\n1# pip install firecrawl-py\\n2from firecrawl import - Firecrawl\\n3\\n4app = Firecrawl(api_key=\\\"fc-YOUR_API_KEY\\\")\\n5\\n6# - Scrape a website:\\n7app.scrape('firecrawl.dev')\\n8\\n9\\n10\\n```\\n\\n\\\\[ - .MD \\\\]\\n\\n```markdown\\n1# Firecrawl\\n2\\n3Firecrawl is a powerful web - scraping\\n4library that makes it easy to extract\\n5data from websites.\\n6\\n7## - Installation\\n8\\n9To install Firecrawl, run:\\n10\\n11\\n```\\n\\n![developer-1](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-2](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-3](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-4](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-5](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-6](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-7](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-8](https://www.firecrawl.dev/assets/developer/8.png)\\n\\n![developer-9](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-10](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-11](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-12](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-13](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-14](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-15](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-16](https://www.firecrawl.dev/assets/developer/8.png)\\n\\n![developer-17](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-18](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-19](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-20](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-21](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-22](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-23](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-24](https://www.firecrawl.dev/assets/developer/8.png)\\n\\nIntegrations\\n\\n### - Use well-known tools\\n\\nAlready fully integrated with the greatest existing - tools and workflows.\\n\\n[See all integrations](https://www.firecrawl.dev/app)\\n\\n![Firecrawl - icon (blueprint)](https://www.firecrawl.dev/assets-original/developer-os-icon.png)\\n\\nmendableai/firecrawl\\n\\nPublic\\n\\nStar\\n\\n65.3K\\n\\n\\\\[python-SDK\\\\] - improvs/async\\n\\n#1337\\n\\n\xB7\\n\\nApr 18, 2025\\n\\n\xB7\\n\\n![rafaelsideguide](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nrafaelsideguide\\n\\nfeat(extract): - cost limit\\n\\n#1473\\n\\n\xB7\\n\\nApr 17, 2025\\n\\n\xB7\\n\\n![mogery](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nmogery\\n\\nfeat(scrape): - get job result from GCS, avoid Redis\\n\\n#1461\\n\\n\xB7\\n\\nApr 15, 2025\\n\\n\xB7\\n\\n![mogery](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nmogery\\n\\nExtract - v2/rerank improvs\\n\\n#1437\\n\\n\xB7\\n\\nApr 11, 2025\\n\\n\xB7\\n\\n![rafaelsideguide](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nrafaelsideguide\\n\\n![https://avatars.githubusercontent.com/u/150964962?v=4](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=96&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\n![https://avatars.githubusercontent.com/u/66118807?v=4](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=96&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\n+90\\n\\nOpen - Source\\n\\n### Code you can trust\\n\\nDeveloped transparently and collaboratively. - Join our community of contributors.\\n\\n[Check out our repo](https://github.com/firecrawl/firecrawl)\\n\\n\\\\[02/ - 07 \\\\]\\n\\n\xB7\\n\\nCore\\n\\n//\\n\\nBuilt to outperform\\n\\n//\\n\\n## - Core principles, provenperformance\\n\\nBuilt from the ground up to outperform - traditional scrapers.\\n\\nNo proxy headaches\\n\\nReliable.Covers 96% of - the web,\\n\\nincluding JS-heavy and protected pages. No proxies, no puppets, - just clean data.\\n\\nFirecrawl\\n\\n96%\\n\\n![Puppeteer icon](https://www.firecrawl.dev/assets/puppeteer.png)\\n\\nPuppeteer\\n\\n79%\\n\\ncURL\\n\\n75%\\n\\nSpeed - that feels invisible\\n\\nBlazingly fast.Delivers results in less than 1 second, - fast for real-time agents\\n\\nand dynamic apps.\\n\\nURL\\n\\nCrawl\\n\\nScrape\\n\\nfirecrawl.dev/docs\\n\\n50ms\\n\\n51ms\\n\\nfirecrawl.dev/templates\\n\\n52ms\\n\\n50ms\\n\\nfirecrawl.dev/changelog\\n\\n49ms\\n\\n52ms\\n\\nfirecrawl.dev/about\\n\\n52ms\\n\\n50ms\\n\\nfirecrawl.dev/changelog\\n\\n50ms\\n\\n52ms\\n\\nfirecrawl.dev/playground\\n\\n51ms\\n\\n49ms\\n\\n\\\\[ - CTA \\\\]\\n\\n\\\\[ CRAWL \\\\]\\n\\n\\\\[ SCRAPE \\\\]\\n\\n\\\\[ CTA \\\\]\\n\\n//\\n\\nGet - started\\n\\n//\\n\\nReady to build?\\n\\nStart getting Web Data for free - and scale seamlessly as your project expands. No credit card needed.\\n\\n[Start - for free](https://www.firecrawl.dev/signin) [See our plans](https://www.firecrawl.dev/pricing)\\n\\n\\\\[03/ - 07 \\\\]\\n\\n\xB7\\n\\nFeatures\\n\\n//\\n\\nZero configuration\\n\\n//\\n\\n## - We handle the hard stuff\\n\\nRotating proxies, orchestration, rate limits, - js-blocked content and more.\\n\\nDocs to data\\n\\nMedia parsing.Firecrawl - can parse and output content from web hosted pdfs, docx, and more.\\n\\nhttps://example.com/docs/report.pdf\\n\\nhttps://example.com/files/brief.docx\\n\\nhttps://example.com/docs/guide.html\\n\\ndocx\\n\\nParsing...\\n\\nKnows - the moment\\n\\nSmart wait.Firecrawl intelligently waits for content to load, - making scraping faster and more reliable.\\n\\nhttps://example-spa.com\\n\\nRequest - Sent\\n\\nScrapes the real thing\\n\\nCached, when you need it.Selective caching, - you choose your caching patterns, growing web index.\\n\\n![User](https://www.firecrawl.dev/_next/image?url=%2Fassets-original%2Ffeatures%2Fcached-user.png&w=256&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nUser\\n\\nFirecrawl\\n\\nCache\\n\\nInvisible - access\\n\\nStealth mode.Crawls the web without\\n\\nbeing blocked, mimics - real users to access protected or dynamic content.\\n\\nInteractive scraping\\n\\nActions.Click, - scroll, write, wait, press and more before extracting content.\\n\\nhttps://example.com\\n\\nNavigate\\n\\nClick\\n\\nType\\n\\nWait\\n\\nScroll\\n\\nPress\\n\\nScreenshot\\n\\nScrape\\n\\n\\\\[04/ - 07 \\\\]\\n\\n\xB7\\n\\nPricing\\n\\n//\\n\\nTransparent\\n\\n//\\n\\n## Flexible - pricing\\n\\nExplore transparent pricing built for real-world scraping. Start - for free, then scale as you grow.\\n\\n\U0001F1FA\U0001F1F8USD\\n\\nFree Plan\\n\\nA - lightweight way to try scraping.\\n\\nNo cost, no card, no hassle.\\n\\n500 - credits\\n\\n$0123456789\\n\\none-time\\n\\nGet started\\n\\nScrape 500 pages\\n\\n2 - concurrent requests\\n\\nLow rate limits\\n\\nHobby\\n\\nGreat for side projects - and small tools.\\n\\nFast, simple, no overkill.\\n\\n3,000 credits\\n\\n$01234567890123456789\\n\\n/monthly\\n\\nBilled - yearly\\n\\n2 months free\\n\\nSubscribe\\n\\nScrape 3,000 pages\\n\\n5 concurrent - requests\\n\\nBasic support\\n\\n$9 per extra 1k credits\\n\\nStandard\\n\\nMost - popular\\n\\nPerfect for scaling with less effort.\\n\\nSimple, solid, dependable.\\n\\n100,000 - credits\\n\\n$01234567890123456789\\n\\n/monthly\\n\\nBilled yearly\\n\\n2 - months free\\n\\nSubscribe\\n\\nScrape 100,000 pages\\n\\n50 concurrent requests\\n\\nStandard - support\\n\\n$47 per extra 35k credits\\n\\nGrowth\\n\\nBuilt for high volume - and speed.\\n\\nFirecrawl at full force.\\n\\n500,000 credits\\n\\n$012345678901234567890123456789\\n\\n/monthly\\n\\nBilled - yearly\\n\\n2 months free\\n\\nSubscribe\\n\\nScrape 500,000 pages\\n\\n100 - concurrent requests\\n\\nPriority support\\n\\n$177 per extra 175k credits\\n\\nExtra - credits are available via auto-recharge packs. [Enable](https://www.firecrawl.dev/signin/signup)\\n\\nEnterprise\\n\\nPower - at your pace\\n\\nUnlimited credits. Custom RPMs.\\n\\n[Contact sales](https://fk4bvu0n5qp.typeform.com/to/Ej6oydlg) - [More details](https://www.firecrawl.dev/enterprise)\\n\\nBulk discounts\\n\\nTop - priority support\\n\\nCustom concurrency limits\\n\\nImproved stealth proxies\\n\\nSLAs\\n\\nAdvanced - security & controls\\n\\n\\\\[05/ 07 \\\\]\\n\\n\xB7\\n\\nTestimonials\\n\\n//\\n\\nCommunity\\n\\n//\\n\\n## - People love building withFirecrawl\\n\\nDiscover why developers choose - Firecrawl every day.\\n\\n[![Morgan Linton](https://www.firecrawl.dev/assets/testimonials/morgan-linton.png)Morgan - Linton@morganlinton\\\"If you're coding with AI, and haven't discovered @firecrawl\\\\_dev - yet, prepare to have your mind blown \U0001F92F\\\"](https://x.com/morganlinton/status/1839454165703204955) - [![Chris DeWeese](https://www.firecrawl.dev/assets/testimonials/chris-deweese.png)Chris - DeWeese@chrisdeweese\\\\_\\\"Started using @firecrawl\\\\_dev for a project, - I wish I used this sooner.\\\"](https://x.com/chrisdeweese_/status/1853587120406876601) - [![Alex Reibman](https://www.firecrawl.dev/assets/testimonials/alex-reibman.png)Alex - Reibman@AlexReibman\\\"Moved our internal agent's web scraping tool from Apify - to Firecrawl because it benchmarked 50x faster with AgentOps.\\\"](https://x.com/AlexReibman/status/1780299595484131836) - [![Tom - Morpho](https://www.firecrawl.dev/assets/testimonials/tom-morpho.png)Tom - - Morpho@TomReppelin\\\"I found gold today. Thank you @firecrawl\\\\_dev\\\"](https://x.com/TomReppelin/status/1844382491014201613)\\n\\n[![Morgan - Linton](https://www.firecrawl.dev/assets/testimonials/morgan-linton.png)Morgan - Linton@morganlinton\\\"If you're coding with AI, and haven't discovered @firecrawl\\\\_dev - yet, prepare to have your mind blown \U0001F92F\\\"](https://x.com/morganlinton/status/1839454165703204955) - [![Chris DeWeese](https://www.firecrawl.dev/assets/testimonials/chris-deweese.png)Chris - DeWeese@chrisdeweese\\\\_\\\"Started using @firecrawl\\\\_dev for a project, - I wish I used this sooner.\\\"](https://x.com/chrisdeweese_/status/1853587120406876601) - [![Alex Reibman](https://www.firecrawl.dev/assets/testimonials/alex-reibman.png)Alex - Reibman@AlexReibman\\\"Moved our internal agent's web scraping tool from Apify - to Firecrawl because it benchmarked 50x faster with AgentOps.\\\"](https://x.com/AlexReibman/status/1780299595484131836) - [![Tom - Morpho](https://www.firecrawl.dev/assets/testimonials/tom-morpho.png)Tom - - Morpho@TomReppelin\\\"I found gold today. Thank you @firecrawl\\\\_dev\\\"](https://x.com/TomReppelin/status/1844382491014201613)\\n\\n[![Bardia](https://www.firecrawl.dev/assets/testimonials/bardia.png)Bardia@thepericulum\\\"The - Firecrawl team ships. I wanted types for their node SDK, and less than an - hour later, I got them.\\\"](https://x.com/thepericulum/status/1781397799487078874) - [![Matt Busigin](https://www.firecrawl.dev/assets/testimonials/matt-busigin.png)Matt - Busigin@mbusigin\\\"Firecrawl is dope. Congrats guys \U0001F44F\\\"](https://x.com/mbusigin/status/1836065372010656069) - [![Sumanth](https://www.firecrawl.dev/assets/testimonials/sumanth.png)Sumanth@Sumanth\\\\_077\\\"Web - scraping will never be the same!\\\\\\\\\\n\\\\\\\\\\nFirecrawl is an open-source - framework that takes a URL, crawls it, and conver...\\\"](https://x.com/Sumanth_077/status/1940049003074478511) - [![Steven Tey](https://www.firecrawl.dev/assets/testimonials/steven-tey.png)Steven - Tey@steventey\\\"Open-source Clay alternative just dropped\\\\\\\\\\n\\\\\\\\\\nUpload - a CSV of emails and...\\\"](https://x.com/steventey/status/1932945651761098889)\\n\\n[![Bardia](https://www.firecrawl.dev/assets/testimonials/bardia.png)Bardia@thepericulum\\\"The - Firecrawl team ships. I wanted types for their node SDK, and less than an - hour later, I got them.\\\"](https://x.com/thepericulum/status/1781397799487078874) - [![Matt Busigin](https://www.firecrawl.dev/assets/testimonials/matt-busigin.png)Matt - Busigin@mbusigin\\\"Firecrawl is dope. Congrats guys \U0001F44F\\\"](https://x.com/mbusigin/status/1836065372010656069) - [![Sumanth](https://www.firecrawl.dev/assets/testimonials/sumanth.png)Sumanth@Sumanth\\\\_077\\\"Web - scraping will never be the same!\\\\\\\\\\n\\\\\\\\\\nFirecrawl is an open-source - framework that takes a URL, crawls it, and conver...\\\"](https://x.com/Sumanth_077/status/1940049003074478511) - [![Steven Tey](https://www.firecrawl.dev/assets/testimonials/steven-tey.png)Steven - Tey@steventey\\\"Open-source Clay alternative just dropped\\\\\\\\\\n\\\\\\\\\\nUpload - a CSV of emails and...\\\"](https://x.com/steventey/status/1932945651761098889)\\n\\n\\\\[06/ - 07 \\\\]\\n\\n\xB7\\n\\nUse Cases\\n\\n//\\n\\nUse cases\\n\\n//\\n\\n## Transform - \ web data into AI-powered solutions\\n\\nDiscover how Firecrawl customers - are getting the most out of our API.\\n\\n[View all use cases](https://docs.firecrawl.dev/use-cases/overview)\\n\\nChat - with context\\n\\nSmarter AI chats\\n\\nPower your AI assistants with real-time, - accurate web content.\\n\\n[View docs](https://docs.firecrawl.dev/introduction)\\n\\n![AI - Assistant](https://www.firecrawl.dev/assets/ai/bot.png)\\n\\nAI Assistant\\n\\nwithFirecrawl\\n\\nReal-time\xB7Updated - 2 min ago\\n\\nAsk anything...\\n\\nKnow your leads\\n\\nLead enrichment\\n\\nEnhance - your sales data with\\n\\nweb information.\\n\\n[Check out Extract](https://www.firecrawl.dev/extract)\\n\\nExtracting - leads from directory...\\n\\nTech startups\\n\\nWith contact info\\n\\nDecision - makers\\n\\nFunding stage\\n\\nReady to engage\\n\\n![Emily Tran](https://www.firecrawl.dev/assets/ai/leads-1.png)\\n\\n![James - Carter](https://www.firecrawl.dev/assets/ai/leads-2.png)\\n\\n![Sophia Kim](https://www.firecrawl.dev/assets/ai/leads-3.png)\\n\\n![Michael - Rivera](https://www.firecrawl.dev/assets/ai/leads-4.png)\\n\\nKnow your leads\\n\\nMCPs\\n\\nAdd - powerful scraping to your\\n\\ncode editors.\\n\\n[Get started](https://docs.firecrawl.dev/mcp-server)\\n\\n![Claude - Code](https://www.firecrawl.dev/assets/ai/mcps-claude.png)\\n\\nClaude Code\\n\\n![Cursor](https://www.firecrawl.dev/assets/ai/mcps-cursor.png)\\n\\nCursor\\n\\n![Windsurf](https://www.firecrawl.dev/assets/ai/mcps-windsurf.png)\\n\\nWindsurf\\n\\n\u273B\\n\\nWelcome - to Claude Code!\\n\\n/help for help, /status for your current setup\\n\\n>Try - \\\"how do I log an error?\\\"\\n\\nBuild with context\\n\\nAI platforms\\n\\nLet - your customers build AI apps\\n\\nwith web data.\\n\\n[Check out Map](https://docs.firecrawl.dev/features/map)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets/ai/platforms-1.png)\\n\\n![Logo 2](https://www.firecrawl.dev/assets/ai/platforms-2.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets/ai/platforms-4.png)\\n\\n![Logo 3](https://www.firecrawl.dev/assets/ai/platforms-3.png)\\n\\nExtracting - text...\\n\\nNo insight missed\\n\\nDeep research\\n\\nExtract comprehensive - information for\\n\\nin-depth research.\\n\\n[Build your own with Search](https://docs.firecrawl.dev/features/search)\\n\\nDeep - research in progress...\\n\\nAcademic papers\\n\\n0 found\\n\\nNews articles\\n\\n0 - found\\n\\nExpert opinions\\n\\n0 found\\n\\nResearch reports\\n\\n0 found\\n\\nIndustry - data\\n\\n0 found\\n\\nAsk anything...\\n\\n\\\\[ CTA \\\\]\\n\\n\\\\[ CRAWL - \\\\]\\n\\n\\\\[ SCRAPE \\\\]\\n\\n\\\\[ CTA \\\\]\\n\\n//\\n\\nGet started\\n\\n//\\n\\nReady - to build?\\n\\nStart getting Web Data for free and scale seamlessly as your - project expands. No credit card needed.\\n\\n[Start for free](https://www.firecrawl.dev/signin) - [See our plans](https://www.firecrawl.dev/pricing)\\n\\n\\\\[07/ 07 \\\\]\\n\\n\xB7\\n\\nFAQ\\n\\n//\\n\\nFAQ\\n\\n//\\n\\n## - Frequently askedquestions\\n\\nEverything you need to know about Firecrawl.\\n\\nGeneral\\n\\nWhat - is Firecrawl?\\n\\nWhat sites work?\\n\\nWho can benefit from using Firecrawl?\\n\\nIs - Firecrawl open-source?\\n\\nWhat is the difference between Firecrawl and other - web scrapers?\\n\\nWhat is the difference between the open-source version - and the hosted version?\\n\\nScraping & Crawling\\n\\nHow does Firecrawl handle - dynamic content on websites?\\n\\nWhy is it not crawling all the pages?\\n\\nCan - Firecrawl crawl websites without a sitemap?\\n\\nWhat formats can Firecrawl - convert web data into?\\n\\nHow does Firecrawl ensure the cleanliness of the - data?\\n\\nIs Firecrawl suitable for large-scale data scraping projects?\\n\\nDoes - it respect robots.txt?\\n\\nWhat measures does Firecrawl take to handle web - scraping challenges like rate limits and caching?\\n\\nDoes Firecrawl handle - captcha or authentication?\\n\\nAPI Related\\n\\nWhere can I find my API key?\\n\\nBilling\\n\\nIs - Firecrawl free?\\n\\nIs there a pay-per-use plan instead of monthly?\\n\\nDo - credits roll over to the next month?\\n\\nHow many credits do scraping and - crawling cost?\\n\\nDo you charge for failed requests?\\n\\nWhat payment methods - do you accept?\\n\\nFOOTER\\n\\nThe easiest way to extract\\n\\ndata from - the web\\n\\nBacked by\\n\\nY Combinator\\n\\n[Linkedin](https://www.linkedin.com/company/firecrawl) - [Github](https://github.com/firecrawl/firecrawl)\\n\\nSOC II \xB7 Type 2\\n\\nAICPA\\n\\nSOC - 2\\n\\n[X (Twitter)](https://x.com/firecrawl_dev) [Discord](https://discord.gg/gSmWdAkdwd)\\n\\nProducts\\n\\n[Playground](https://www.firecrawl.dev/playground) - [Extract](https://www.firecrawl.dev/extract) [Pricing](https://www.firecrawl.dev/pricing) - [Templates](https://www.firecrawl.dev/templates) [Changelog](https://www.firecrawl.dev/changelog)\\n\\nUse - Cases\\n\\n[AI Platforms](https://docs.firecrawl.dev/use-cases/ai-platforms) - [Lead Enrichment](https://docs.firecrawl.dev/use-cases/lead-enrichment) [SEO - Platforms](https://docs.firecrawl.dev/use-cases/seo-platforms) [Deep Research](https://docs.firecrawl.dev/use-cases/deep-research)\\n\\nDocumentation\\n\\n[Getting - started](https://docs.firecrawl.dev/introduction) [API Reference](https://docs.firecrawl.dev/api-reference/introduction) - [Integrations](https://www.firecrawl.dev/app) [Examples](https://docs.firecrawl.dev/use-cases/overview) - [SDKs](https://docs.firecrawl.dev/sdks/overview)\\n\\nCompany\\n\\n[Blog](https://www.firecrawl.dev/blog) - [Careers](https://www.firecrawl.dev/careers) [Creator & OSS program](https://www.firecrawl.dev/creator-oss-program) - [Student program](https://www.firecrawl.dev/student-program)\\n\\n\xA9 2025 - Firecrawl\\n\\n[Terms of Service](https://www.firecrawl.dev/terms-of-service) - [Privacy Policy](https://www.firecrawl.dev/privacy-policy) [Report Abuse](mailto:help@firecrawl.com?subject=Issue:)\\n\\n[All - systems normal](https://status.firecrawl.dev/)\\n\\nStripeM-Inner\",\"metadata\":{\"twitter:title\":\"Firecrawl - - The Web Data API for AI\",\"publisher\":\"Firecrawl\",\"ogUrl\":\"https://www.firecrawl.dev\",\"robots\":\"follow, - index\",\"title\":\"Firecrawl - The Web Data API for AI\",\"ogDescription\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"ogImage\":\"https://www.firecrawl.dev/og.png\",\"viewport\":\"width=device-width, - initial-scale=1, maximum-scale=1, user-scalable=no\",\"og:url\":\"https://www.firecrawl.dev\",\"og:site_name\":\"Firecrawl - - The Web Data API for AI\",\"og:type\":\"website\",\"twitter:image\":\"https://www.firecrawl.dev/og.png\",\"author\":\"Firecrawl\",\"og:title\":\"Firecrawl - - The Web Data API for AI\",\"favicon\":\"https://www.firecrawl.dev/favicon.png\",\"description\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"referrer\":\"origin-when-cross-origin\",\"twitter:site\":\"@Vercel\",\"ogSiteName\":\"Firecrawl - - The Web Data API for AI\",\"og:image\":\"https://www.firecrawl.dev/og.png\",\"twitter:card\":\"summary_large_image\",\"twitter:creator\":\"@Vercel\",\"twitter:description\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"language\":\"en\",\"keywords\":\"Firecrawl,Markdown,Data,Mendable,Langchain\",\"creator\":\"Firecrawl\",\"ogTitle\":\"Firecrawl - - The Web Data API for AI\",\"og:description\":\"The web crawling, scraping, - and search API for AI. Built for scale. Firecrawl delivers the entire internet - to AI agents and builders. Clean, structured, and ready to reason with.\",\"scrapeId\":\"e78d8060-d581-4e5e-b25a-90cfdad48530\",\"sourceURL\":\"https://firecrawl.dev\",\"url\":\"https://www.firecrawl.dev/\",\"statusCode\":200,\"contentType\":\"text/html; - charset=utf-8\",\"proxyUsed\":\"basic\",\"cacheState\":\"hit\",\"cachedAt\":\"2025-10-29T13:09:07.713Z\",\"creditsUsed\":1}}}" - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '24693' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:34:03 GMT - ETag: - - W/"6075-Q1W6uMv95JKEZARbtaiPYYMojlU" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 4719.998ms - status: - code: 200 - message: OK -version: 1 diff --git a/lib/crewai-tools/tests/tools/cassettes/firecrawl_search_tool_test/test_firecrawl_search_tool_integration.yaml b/lib/crewai-tools/tests/tools/cassettes/firecrawl_search_tool_test/test_firecrawl_search_tool_integration.yaml deleted file mode 100644 index 44524dc2b..000000000 --- a/lib/crewai-tools/tests/tools/cassettes/firecrawl_search_tool_test/test_firecrawl_search_tool_integration.yaml +++ /dev/null @@ -1,937 +0,0 @@ -interactions: -- request: - body: '{"query": "firecrawl", "limit": 5, "scrapeOptions": {"includeTags": [], - "excludeTags": [], "onlyMainContent": true, "waitFor": 0, "skipTlsVerification": - true, "removeBase64Images": true, "fastMode": false, "blockAds": true, "storeInCache": - true, "maxAge": 14400000, "formats": ["markdown"], "mobile": false}, "origin": - "python-sdk@4.5.0"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '338' - Content-Type: - - application/json - User-Agent: - - python-requests/2.32.5 - method: POST - uri: https://api.firecrawl.dev/v2/search - response: - body: - string: "{\"success\":true,\"data\":{\"web\":[{\"url\":\"https://www.firecrawl.dev/\",\"title\":\"Firecrawl - - The Web Data API for AI\",\"description\":\"The web crawling, scraping, - and search API for AI. Built for scale. Firecrawl delivers the entire internet - to AI agents and builders.\",\"position\":1,\"markdown\":\"We just raised - our Series A and shipped Firecrawl /v2 \U0001F389. [Read the blog.](https://www.firecrawl.dev/blog/firecrawl-v2-series-a-announcement)\\n\\n[2 - Months Free \u2014 Annually](https://www.firecrawl.dev/pricing)\\n\\n# Turn - websites into LLM-ready data\\n\\nPower your AI apps with clean web data\\n\\nfrom - any website. [It's also open source.](https://github.com/firecrawl/firecrawl)\\n\\nScrape\\n\\nSearch\\nNew\\n\\nMap\\n\\nCrawl\\n\\nScrape\\n\\nLogo\\n\\nNavigation\\n\\nButton\\n\\nH1 - Title\\n\\nDescription\\n\\nCTA Button\\n\\n\\\\[ .JSON \\\\]\\n\\n```json\\n1[\\\\\\n2 - \ {\\\\\\n3 \\\"url\\\": \\\"https://example.com\\\",\\\\\\n4 \\\"markdown\\\": - \\\"# Getting Started...\\\",\\\\\\n5 \\\"json\\\": { \\\"title\\\": \\\"Guide\\\", - \\\"docs\\\": \\\"...\\\" },\\\\\\n6 \\\"screenshot\\\": \\\"https://example.com/hero.png\\\"\\\\\\n7 - \ }\\\\\\n8]\\n```\\n\\nScrape Completed\\n\\nTrusted by5000+\\n\\ncompaniesof - all sizes\\n\\n![Logo 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets-original/logocloud/1.png)\\n\\n![Logo - 2](https://www.firecrawl.dev/assets-original/logocloud/2.png)\\n\\n![Logo - 3](https://www.firecrawl.dev/assets-original/logocloud/3.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets-original/logocloud/4.png)\\n\\n![Logo - 5](https://www.firecrawl.dev/assets-original/logocloud/5.png)\\n\\n![Logo - 6](https://www.firecrawl.dev/assets-original/logocloud/6.png)\\n\\n![Logo - 7](https://www.firecrawl.dev/assets-original/logocloud/7.png)\\n\\n![Logo - 8](https://www.firecrawl.dev/assets-original/logocloud/8.png)\\n\\n![Logo - 9](https://www.firecrawl.dev/assets-original/logocloud/9.png)\\n\\n![Logo - 10](https://www.firecrawl.dev/assets-original/logocloud/10.png)\\n\\n![Logo - 11](https://www.firecrawl.dev/assets-original/logocloud/11.png)\\n\\n![Logo - 12](https://www.firecrawl.dev/assets-original/logocloud/12.png)\\n\\n![Logo - 13](https://www.firecrawl.dev/assets-original/logocloud/13.png)\\n\\n![Logo - 14](https://www.firecrawl.dev/assets-original/logocloud/14.png)\\n\\n![Logo - 15](https://www.firecrawl.dev/assets-original/logocloud/15.png)\\n\\n![Logo - 16](https://www.firecrawl.dev/assets-original/logocloud/16.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 19](https://www.firecrawl.dev/assets-original/logocloud/19.png)\\n\\n![Logo - 20](https://www.firecrawl.dev/assets-original/logocloud/20.png)\\n\\n![Logo - 21](https://www.firecrawl.dev/assets-original/logocloud/21.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets-original/logocloud/1.png)\\n\\n![Logo - 2](https://www.firecrawl.dev/assets-original/logocloud/2.png)\\n\\n![Logo - 3](https://www.firecrawl.dev/assets-original/logocloud/3.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets-original/logocloud/4.png)\\n\\n![Logo - 5](https://www.firecrawl.dev/assets-original/logocloud/5.png)\\n\\n![Logo - 6](https://www.firecrawl.dev/assets-original/logocloud/6.png)\\n\\n![Logo - 7](https://www.firecrawl.dev/assets-original/logocloud/7.png)\\n\\n![Logo - 8](https://www.firecrawl.dev/assets-original/logocloud/8.png)\\n\\n![Logo - 9](https://www.firecrawl.dev/assets-original/logocloud/9.png)\\n\\n![Logo - 10](https://www.firecrawl.dev/assets-original/logocloud/10.png)\\n\\n![Logo - 11](https://www.firecrawl.dev/assets-original/logocloud/11.png)\\n\\n![Logo - 12](https://www.firecrawl.dev/assets-original/logocloud/12.png)\\n\\n![Logo - 13](https://www.firecrawl.dev/assets-original/logocloud/13.png)\\n\\n![Logo - 14](https://www.firecrawl.dev/assets-original/logocloud/14.png)\\n\\n![Logo - 15](https://www.firecrawl.dev/assets-original/logocloud/15.png)\\n\\n![Logo - 16](https://www.firecrawl.dev/assets-original/logocloud/16.png)\\n\\n![Logo - 17](https://www.firecrawl.dev/assets-original/logocloud/17.png)\\n\\n![Logo - 18](https://www.firecrawl.dev/assets-original/logocloud/18.png)\\n\\n![Logo - 19](https://www.firecrawl.dev/assets-original/logocloud/19.png)\\n\\n![Logo - 20](https://www.firecrawl.dev/assets-original/logocloud/20.png)\\n\\n![Logo - 21](https://www.firecrawl.dev/assets-original/logocloud/21.png)\\n\\n\\\\[01/ - 07 \\\\]\\n\\n\xB7\\n\\nMain Features\\n\\n//\\n\\nDeveloper First\\n\\n//\\n\\n## - Startscraping today\\n\\nEnhance your apps with industry leading web scraping - and crawling capabilities.\\n\\nScrape\\n\\nGet llm-ready data from websites. - Markdown, JSON, screenshot, etc.\\n\\nSearch\\n\\nNew\\n\\nSearch the web - and get full content from results.\\n\\nCrawl\\n\\nCrawl all the pages on - a website and get data for each page.\\n\\nPython\\n\\nNode.js\\n\\nCurl\\n\\nCopy - code\\n\\n```python\\n1# pip install firecrawl-py\\n2from firecrawl import - Firecrawl\\n3\\n4app = Firecrawl(api_key=\\\"fc-YOUR_API_KEY\\\")\\n5\\n6# - Scrape a website:\\n7app.scrape('firecrawl.dev')\\n8\\n9\\n10\\n```\\n\\n\\\\[ - .MD \\\\]\\n\\n```markdown\\n1# Firecrawl\\n2\\n3Firecrawl is a powerful web - scraping\\n4library that makes it easy to extract\\n5data from websites.\\n6\\n7## - Installation\\n8\\n9To install Firecrawl, run:\\n10\\n11\\n```\\n\\n![developer-1](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-2](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-3](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-4](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-5](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-6](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-7](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-8](https://www.firecrawl.dev/assets/developer/8.png)\\n\\n![developer-9](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-10](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-11](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-12](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-13](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-14](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-15](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-16](https://www.firecrawl.dev/assets/developer/8.png)\\n\\n![developer-17](https://www.firecrawl.dev/assets/developer/1.png)\\n\\n![developer-18](https://www.firecrawl.dev/assets/developer/2.png)\\n\\n![developer-19](https://www.firecrawl.dev/assets/developer/3.png)\\n\\n![developer-20](https://www.firecrawl.dev/assets/developer/4.png)\\n\\n![developer-21](https://www.firecrawl.dev/assets/developer/5.png)\\n\\n![developer-22](https://www.firecrawl.dev/assets/developer/6.png)\\n\\n![developer-23](https://www.firecrawl.dev/assets/developer/7.png)\\n\\n![developer-24](https://www.firecrawl.dev/assets/developer/8.png)\\n\\nIntegrations\\n\\n### - Use well-known tools\\n\\nAlready fully integrated with the greatest existing - tools and workflows.\\n\\n[See all integrations](https://www.firecrawl.dev/app)\\n\\n![Firecrawl - icon (blueprint)](https://www.firecrawl.dev/assets-original/developer-os-icon.png)\\n\\nmendableai/firecrawl\\n\\nPublic\\n\\nStar\\n\\n65.3K\\n\\n\\\\[python-SDK\\\\] - improvs/async\\n\\n#1337\\n\\n\xB7\\n\\nApr 18, 2025\\n\\n\xB7\\n\\n![rafaelsideguide](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nrafaelsideguide\\n\\nfeat(extract): - cost limit\\n\\n#1473\\n\\n\xB7\\n\\nApr 17, 2025\\n\\n\xB7\\n\\n![mogery](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nmogery\\n\\nfeat(scrape): - get job result from GCS, avoid Redis\\n\\n#1461\\n\\n\xB7\\n\\nApr 15, 2025\\n\\n\xB7\\n\\n![mogery](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nmogery\\n\\nExtract - v2/rerank improvs\\n\\n#1437\\n\\n\xB7\\n\\nApr 11, 2025\\n\\n\xB7\\n\\n![rafaelsideguide](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=48&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nrafaelsideguide\\n\\n![https://avatars.githubusercontent.com/u/150964962?v=4](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F150964962%3Fv%3D4&w=96&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\n![https://avatars.githubusercontent.com/u/66118807?v=4](https://www.firecrawl.dev/_next/image?url=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F66118807%3Fv%3D4&w=96&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\n+90\\n\\nOpen - Source\\n\\n### Code you can trust\\n\\nDeveloped transparently and collaboratively. - Join our community of contributors.\\n\\n[Check out our repo](https://github.com/firecrawl/firecrawl)\\n\\n\\\\[02/ - 07 \\\\]\\n\\n\xB7\\n\\nCore\\n\\n//\\n\\nBuilt to outperform\\n\\n//\\n\\n## - Core principles, provenperformance\\n\\nBuilt from the ground up to outperform - traditional scrapers.\\n\\nNo proxy headaches\\n\\nReliable.Covers 96% of - the web,\\n\\nincluding JS-heavy and protected pages. No proxies, no puppets, - just clean data.\\n\\nFirecrawl\\n\\n96%\\n\\n![Puppeteer icon](https://www.firecrawl.dev/assets/puppeteer.png)\\n\\nPuppeteer\\n\\n79%\\n\\ncURL\\n\\n75%\\n\\nSpeed - that feels invisible\\n\\nBlazingly fast.Delivers results in less than 1 second, - fast for real-time agents\\n\\nand dynamic apps.\\n\\nURL\\n\\nCrawl\\n\\nScrape\\n\\nfirecrawl.dev/docs\\n\\n50ms\\n\\n51ms\\n\\nfirecrawl.dev/templates\\n\\n52ms\\n\\n50ms\\n\\nfirecrawl.dev/changelog\\n\\n49ms\\n\\n52ms\\n\\nfirecrawl.dev/about\\n\\n52ms\\n\\n50ms\\n\\nfirecrawl.dev/changelog\\n\\n50ms\\n\\n52ms\\n\\nfirecrawl.dev/playground\\n\\n51ms\\n\\n49ms\\n\\n\\\\[ - CTA \\\\]\\n\\n\\\\[ CRAWL \\\\]\\n\\n\\\\[ SCRAPE \\\\]\\n\\n\\\\[ CTA \\\\]\\n\\n//\\n\\nGet - started\\n\\n//\\n\\nReady to build?\\n\\nStart getting Web Data for free - and scale seamlessly as your project expands. No credit card needed.\\n\\n[Start - for free](https://www.firecrawl.dev/signin) [See our plans](https://www.firecrawl.dev/pricing)\\n\\n\\\\[03/ - 07 \\\\]\\n\\n\xB7\\n\\nFeatures\\n\\n//\\n\\nZero configuration\\n\\n//\\n\\n## - We handle the hard stuff\\n\\nRotating proxies, orchestration, rate limits, - js-blocked content and more.\\n\\nDocs to data\\n\\nMedia parsing.Firecrawl - can parse and output content from web hosted pdfs, docx, and more.\\n\\nhttps://example.com/docs/report.pdf\\n\\nhttps://example.com/files/brief.docx\\n\\nhttps://example.com/docs/guide.html\\n\\ndocx\\n\\nParsing...\\n\\nKnows - the moment\\n\\nSmart wait.Firecrawl intelligently waits for content to load, - making scraping faster and more reliable.\\n\\nhttps://example-spa.com\\n\\nRequest - Sent\\n\\nScrapes the real thing\\n\\nCached, when you need it.Selective caching, - you choose your caching patterns, growing web index.\\n\\n![User](https://www.firecrawl.dev/_next/image?url=%2Fassets-original%2Ffeatures%2Fcached-user.png&w=256&q=75&dpl=dpl_7RqvseQXNVYetFdhTKj6RntohhL1)\\n\\nUser\\n\\nFirecrawl\\n\\nCache\\n\\nInvisible - access\\n\\nStealth mode.Crawls the web without\\n\\nbeing blocked, mimics - real users to access protected or dynamic content.\\n\\nInteractive scraping\\n\\nActions.Click, - scroll, write, wait, press and more before extracting content.\\n\\nhttps://example.com\\n\\nNavigate\\n\\nClick\\n\\nType\\n\\nWait\\n\\nScroll\\n\\nPress\\n\\nScreenshot\\n\\nScrape\\n\\n\\\\[04/ - 07 \\\\]\\n\\n\xB7\\n\\nPricing\\n\\n//\\n\\nTransparent\\n\\n//\\n\\n## Flexible - pricing\\n\\nExplore transparent pricing built for real-world scraping. Start - for free, then scale as you grow.\\n\\n\U0001F1FA\U0001F1F8USD\\n\\nFree Plan\\n\\nA - lightweight way to try scraping.\\n\\nNo cost, no card, no hassle.\\n\\n500 - credits\\n\\n$0123456789\\n\\none-time\\n\\nGet started\\n\\nScrape 500 pages\\n\\n2 - concurrent requests\\n\\nLow rate limits\\n\\nHobby\\n\\nGreat for side projects - and small tools.\\n\\nFast, simple, no overkill.\\n\\n3,000 credits\\n\\n$01234567890123456789\\n\\n/monthly\\n\\nBilled - yearly\\n\\n2 months free\\n\\nSubscribe\\n\\nScrape 3,000 pages\\n\\n5 concurrent - requests\\n\\nBasic support\\n\\n$9 per extra 1k credits\\n\\nStandard\\n\\nMost - popular\\n\\nPerfect for scaling with less effort.\\n\\nSimple, solid, dependable.\\n\\n100,000 - credits\\n\\n$01234567890123456789\\n\\n/monthly\\n\\nBilled yearly\\n\\n2 - months free\\n\\nSubscribe\\n\\nScrape 100,000 pages\\n\\n50 concurrent requests\\n\\nStandard - support\\n\\n$47 per extra 35k credits\\n\\nGrowth\\n\\nBuilt for high volume - and speed.\\n\\nFirecrawl at full force.\\n\\n500,000 credits\\n\\n$012345678901234567890123456789\\n\\n/monthly\\n\\nBilled - yearly\\n\\n2 months free\\n\\nSubscribe\\n\\nScrape 500,000 pages\\n\\n100 - concurrent requests\\n\\nPriority support\\n\\n$177 per extra 175k credits\\n\\nExtra - credits are available via auto-recharge packs. [Enable](https://www.firecrawl.dev/signin/signup)\\n\\nEnterprise\\n\\nPower - at your pace\\n\\nUnlimited credits. Custom RPMs.\\n\\n[Contact sales](https://fk4bvu0n5qp.typeform.com/to/Ej6oydlg) - [More details](https://www.firecrawl.dev/enterprise)\\n\\nBulk discounts\\n\\nTop - priority support\\n\\nCustom concurrency limits\\n\\nImproved stealth proxies\\n\\nSLAs\\n\\nAdvanced - security & controls\\n\\n\\\\[05/ 07 \\\\]\\n\\n\xB7\\n\\nTestimonials\\n\\n//\\n\\nCommunity\\n\\n//\\n\\n## - People love building withFirecrawl\\n\\nDiscover why developers choose - Firecrawl every day.\\n\\n[![Morgan Linton](https://www.firecrawl.dev/assets/testimonials/morgan-linton.png)Morgan - Linton@morganlinton\\\"If you're coding with AI, and haven't discovered @firecrawl\\\\_dev - yet, prepare to have your mind blown \U0001F92F\\\"](https://x.com/morganlinton/status/1839454165703204955) - [![Chris DeWeese](https://www.firecrawl.dev/assets/testimonials/chris-deweese.png)Chris - DeWeese@chrisdeweese\\\\_\\\"Started using @firecrawl\\\\_dev for a project, - I wish I used this sooner.\\\"](https://x.com/chrisdeweese_/status/1853587120406876601) - [![Alex Reibman](https://www.firecrawl.dev/assets/testimonials/alex-reibman.png)Alex - Reibman@AlexReibman\\\"Moved our internal agent's web scraping tool from Apify - to Firecrawl because it benchmarked 50x faster with AgentOps.\\\"](https://x.com/AlexReibman/status/1780299595484131836) - [![Tom - Morpho](https://www.firecrawl.dev/assets/testimonials/tom-morpho.png)Tom - - Morpho@TomReppelin\\\"I found gold today. Thank you @firecrawl\\\\_dev\\\"](https://x.com/TomReppelin/status/1844382491014201613)\\n\\n[![Morgan - Linton](https://www.firecrawl.dev/assets/testimonials/morgan-linton.png)Morgan - Linton@morganlinton\\\"If you're coding with AI, and haven't discovered @firecrawl\\\\_dev - yet, prepare to have your mind blown \U0001F92F\\\"](https://x.com/morganlinton/status/1839454165703204955) - [![Chris DeWeese](https://www.firecrawl.dev/assets/testimonials/chris-deweese.png)Chris - DeWeese@chrisdeweese\\\\_\\\"Started using @firecrawl\\\\_dev for a project, - I wish I used this sooner.\\\"](https://x.com/chrisdeweese_/status/1853587120406876601) - [![Alex Reibman](https://www.firecrawl.dev/assets/testimonials/alex-reibman.png)Alex - Reibman@AlexReibman\\\"Moved our internal agent's web scraping tool from Apify - to Firecrawl because it benchmarked 50x faster with AgentOps.\\\"](https://x.com/AlexReibman/status/1780299595484131836) - [![Tom - Morpho](https://www.firecrawl.dev/assets/testimonials/tom-morpho.png)Tom - - Morpho@TomReppelin\\\"I found gold today. Thank you @firecrawl\\\\_dev\\\"](https://x.com/TomReppelin/status/1844382491014201613)\\n\\n[![Bardia](https://www.firecrawl.dev/assets/testimonials/bardia.png)Bardia@thepericulum\\\"The - Firecrawl team ships. I wanted types for their node SDK, and less than an - hour later, I got them.\\\"](https://x.com/thepericulum/status/1781397799487078874) - [![Matt Busigin](https://www.firecrawl.dev/assets/testimonials/matt-busigin.png)Matt - Busigin@mbusigin\\\"Firecrawl is dope. Congrats guys \U0001F44F\\\"](https://x.com/mbusigin/status/1836065372010656069) - [![Sumanth](https://www.firecrawl.dev/assets/testimonials/sumanth.png)Sumanth@Sumanth\\\\_077\\\"Web - scraping will never be the same!\\\\\\\\\\n\\\\\\\\\\nFirecrawl is an open-source - framework that takes a URL, crawls it, and conver...\\\"](https://x.com/Sumanth_077/status/1940049003074478511) - [![Steven Tey](https://www.firecrawl.dev/assets/testimonials/steven-tey.png)Steven - Tey@steventey\\\"Open-source Clay alternative just dropped\\\\\\\\\\n\\\\\\\\\\nUpload - a CSV of emails and...\\\"](https://x.com/steventey/status/1932945651761098889)\\n\\n[![Bardia](https://www.firecrawl.dev/assets/testimonials/bardia.png)Bardia@thepericulum\\\"The - Firecrawl team ships. I wanted types for their node SDK, and less than an - hour later, I got them.\\\"](https://x.com/thepericulum/status/1781397799487078874) - [![Matt Busigin](https://www.firecrawl.dev/assets/testimonials/matt-busigin.png)Matt - Busigin@mbusigin\\\"Firecrawl is dope. Congrats guys \U0001F44F\\\"](https://x.com/mbusigin/status/1836065372010656069) - [![Sumanth](https://www.firecrawl.dev/assets/testimonials/sumanth.png)Sumanth@Sumanth\\\\_077\\\"Web - scraping will never be the same!\\\\\\\\\\n\\\\\\\\\\nFirecrawl is an open-source - framework that takes a URL, crawls it, and conver...\\\"](https://x.com/Sumanth_077/status/1940049003074478511) - [![Steven Tey](https://www.firecrawl.dev/assets/testimonials/steven-tey.png)Steven - Tey@steventey\\\"Open-source Clay alternative just dropped\\\\\\\\\\n\\\\\\\\\\nUpload - a CSV of emails and...\\\"](https://x.com/steventey/status/1932945651761098889)\\n\\n\\\\[06/ - 07 \\\\]\\n\\n\xB7\\n\\nUse Cases\\n\\n//\\n\\nUse cases\\n\\n//\\n\\n## Transform - \ web data into AI-powered solutions\\n\\nDiscover how Firecrawl customers - are getting the most out of our API.\\n\\n[View all use cases](https://docs.firecrawl.dev/use-cases/overview)\\n\\nChat - with context\\n\\nSmarter AI chats\\n\\nPower your AI assistants with real-time, - accurate web content.\\n\\n[View docs](https://docs.firecrawl.dev/introduction)\\n\\n![AI - Assistant](https://www.firecrawl.dev/assets/ai/bot.png)\\n\\nAI Assistant\\n\\nwithFirecrawl\\n\\nReal-time\xB7Updated - 2 min ago\\n\\nAsk anything...\\n\\nKnow your leads\\n\\nLead enrichment\\n\\nEnhance - your sales data with\\n\\nweb information.\\n\\n[Check out Extract](https://www.firecrawl.dev/extract)\\n\\nExtracting - leads from directory...\\n\\nTech startups\\n\\nWith contact info\\n\\nDecision - makers\\n\\nFunding stage\\n\\nReady to engage\\n\\n![Emily Tran](https://www.firecrawl.dev/assets/ai/leads-1.png)\\n\\n![James - Carter](https://www.firecrawl.dev/assets/ai/leads-2.png)\\n\\n![Sophia Kim](https://www.firecrawl.dev/assets/ai/leads-3.png)\\n\\n![Michael - Rivera](https://www.firecrawl.dev/assets/ai/leads-4.png)\\n\\nKnow your leads\\n\\nMCPs\\n\\nAdd - powerful scraping to your\\n\\ncode editors.\\n\\n[Get started](https://docs.firecrawl.dev/mcp-server)\\n\\n![Claude - Code](https://www.firecrawl.dev/assets/ai/mcps-claude.png)\\n\\nClaude Code\\n\\n![Cursor](https://www.firecrawl.dev/assets/ai/mcps-cursor.png)\\n\\nCursor\\n\\n![Windsurf](https://www.firecrawl.dev/assets/ai/mcps-windsurf.png)\\n\\nWindsurf\\n\\n\u273B\\n\\nWelcome - to Claude Code!\\n\\n/help for help, /status for your current setup\\n\\n>Try - \\\"how do I log an error?\\\"\\n\\nBuild with context\\n\\nAI platforms\\n\\nLet - your customers build AI apps\\n\\nwith web data.\\n\\n[Check out Map](https://docs.firecrawl.dev/features/map)\\n\\n![Logo - 1](https://www.firecrawl.dev/assets/ai/platforms-1.png)\\n\\n![Logo 2](https://www.firecrawl.dev/assets/ai/platforms-2.png)\\n\\n![Logo - 4](https://www.firecrawl.dev/assets/ai/platforms-4.png)\\n\\n![Logo 3](https://www.firecrawl.dev/assets/ai/platforms-3.png)\\n\\nExtracting - text...\\n\\nNo insight missed\\n\\nDeep research\\n\\nExtract comprehensive - information for\\n\\nin-depth research.\\n\\n[Build your own with Search](https://docs.firecrawl.dev/features/search)\\n\\nDeep - research in progress...\\n\\nAcademic papers\\n\\n0 found\\n\\nNews articles\\n\\n0 - found\\n\\nExpert opinions\\n\\n0 found\\n\\nResearch reports\\n\\n0 found\\n\\nIndustry - data\\n\\n0 found\\n\\nAsk anything...\\n\\n\\\\[ CTA \\\\]\\n\\n\\\\[ CRAWL - \\\\]\\n\\n\\\\[ SCRAPE \\\\]\\n\\n\\\\[ CTA \\\\]\\n\\n//\\n\\nGet started\\n\\n//\\n\\nReady - to build?\\n\\nStart getting Web Data for free and scale seamlessly as your - project expands. No credit card needed.\\n\\n[Start for free](https://www.firecrawl.dev/signin) - [See our plans](https://www.firecrawl.dev/pricing)\\n\\n\\\\[07/ 07 \\\\]\\n\\n\xB7\\n\\nFAQ\\n\\n//\\n\\nFAQ\\n\\n//\\n\\n## - Frequently askedquestions\\n\\nEverything you need to know about Firecrawl.\\n\\nGeneral\\n\\nWhat - is Firecrawl?\\n\\nWhat sites work?\\n\\nWho can benefit from using Firecrawl?\\n\\nIs - Firecrawl open-source?\\n\\nWhat is the difference between Firecrawl and other - web scrapers?\\n\\nWhat is the difference between the open-source version - and the hosted version?\\n\\nScraping & Crawling\\n\\nHow does Firecrawl handle - dynamic content on websites?\\n\\nWhy is it not crawling all the pages?\\n\\nCan - Firecrawl crawl websites without a sitemap?\\n\\nWhat formats can Firecrawl - convert web data into?\\n\\nHow does Firecrawl ensure the cleanliness of the - data?\\n\\nIs Firecrawl suitable for large-scale data scraping projects?\\n\\nDoes - it respect robots.txt?\\n\\nWhat measures does Firecrawl take to handle web - scraping challenges like rate limits and caching?\\n\\nDoes Firecrawl handle - captcha or authentication?\\n\\nAPI Related\\n\\nWhere can I find my API key?\\n\\nBilling\\n\\nIs - Firecrawl free?\\n\\nIs there a pay-per-use plan instead of monthly?\\n\\nDo - credits roll over to the next month?\\n\\nHow many credits do scraping and - crawling cost?\\n\\nDo you charge for failed requests?\\n\\nWhat payment methods - do you accept?\\n\\nFOOTER\\n\\nThe easiest way to extract\\n\\ndata from - the web\\n\\nBacked by\\n\\nY Combinator\\n\\n[Linkedin](https://www.linkedin.com/company/firecrawl) - [Github](https://github.com/firecrawl/firecrawl)\\n\\nSOC II \xB7 Type 2\\n\\nAICPA\\n\\nSOC - 2\\n\\n[X (Twitter)](https://x.com/firecrawl_dev) [Discord](https://discord.gg/gSmWdAkdwd)\\n\\nProducts\\n\\n[Playground](https://www.firecrawl.dev/playground) - [Extract](https://www.firecrawl.dev/extract) [Pricing](https://www.firecrawl.dev/pricing) - [Templates](https://www.firecrawl.dev/templates) [Changelog](https://www.firecrawl.dev/changelog)\\n\\nUse - Cases\\n\\n[AI Platforms](https://docs.firecrawl.dev/use-cases/ai-platforms) - [Lead Enrichment](https://docs.firecrawl.dev/use-cases/lead-enrichment) [SEO - Platforms](https://docs.firecrawl.dev/use-cases/seo-platforms) [Deep Research](https://docs.firecrawl.dev/use-cases/deep-research)\\n\\nDocumentation\\n\\n[Getting - started](https://docs.firecrawl.dev/introduction) [API Reference](https://docs.firecrawl.dev/api-reference/introduction) - [Integrations](https://www.firecrawl.dev/app) [Examples](https://docs.firecrawl.dev/use-cases/overview) - [SDKs](https://docs.firecrawl.dev/sdks/overview)\\n\\nCompany\\n\\n[Blog](https://www.firecrawl.dev/blog) - [Careers](https://www.firecrawl.dev/careers) [Creator & OSS program](https://www.firecrawl.dev/creator-oss-program) - [Student program](https://www.firecrawl.dev/student-program)\\n\\n\xA9 2025 - Firecrawl\\n\\n[Terms of Service](https://www.firecrawl.dev/terms-of-service) - [Privacy Policy](https://www.firecrawl.dev/privacy-policy) [Report Abuse](mailto:help@firecrawl.com?subject=Issue:)\\n\\n[All - systems normal](https://status.firecrawl.dev/)\\n\\nStripeM-Inner\",\"metadata\":{\"favicon\":\"https://www.firecrawl.dev/favicon.png\",\"ogUrl\":\"https://www.firecrawl.dev\",\"ogImage\":\"https://www.firecrawl.dev/og.png\",\"referrer\":\"origin-when-cross-origin\",\"ogDescription\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"robots\":\"follow, index\",\"twitter:card\":\"summary_large_image\",\"og:site_name\":\"Firecrawl - - The Web Data API for AI\",\"twitter:title\":\"Firecrawl - The Web Data API - for AI\",\"og:image\":\"https://www.firecrawl.dev/og.png\",\"title\":\"Firecrawl - - The Web Data API for AI\",\"og:description\":\"The web crawling, scraping, - and search API for AI. Built for scale. Firecrawl delivers the entire internet - to AI agents and builders. Clean, structured, and ready to reason with.\",\"twitter:image\":\"https://www.firecrawl.dev/og.png\",\"viewport\":\"width=device-width, - initial-scale=1, maximum-scale=1, user-scalable=no\",\"ogSiteName\":\"Firecrawl - - The Web Data API for AI\",\"keywords\":\"Firecrawl,Markdown,Data,Mendable,Langchain\",\"author\":\"Firecrawl\",\"og:title\":\"Firecrawl - - The Web Data API for AI\",\"twitter:description\":\"The web crawling, scraping, - and search API for AI. Built for scale. Firecrawl delivers the entire internet - to AI agents and builders. Clean, structured, and ready to reason with.\",\"description\":\"The - web crawling, scraping, and search API for AI. Built for scale. Firecrawl - delivers the entire internet to AI agents and builders. Clean, structured, - and ready to reason with.\",\"twitter:site\":\"@Vercel\",\"og:url\":\"https://www.firecrawl.dev\",\"og:type\":\"website\",\"ogTitle\":\"Firecrawl - - The Web Data API for AI\",\"language\":\"en\",\"creator\":\"Firecrawl\",\"publisher\":\"Firecrawl\",\"twitter:creator\":\"@Vercel\",\"scrapeId\":\"57b0586f-36e8-4923-aaa2-88ff58c03999\",\"sourceURL\":\"https://www.firecrawl.dev/\",\"url\":\"https://www.firecrawl.dev/\",\"statusCode\":200,\"contentType\":\"text/html; - charset=utf-8\",\"proxyUsed\":\"basic\",\"cacheState\":\"hit\",\"cachedAt\":\"2025-10-29T13:09:07.713Z\"}},{\"url\":\"https://github.com/firecrawl/firecrawl\",\"title\":\"firecrawl/firecrawl: - The Web Data API for AI - Turn entire ... - GitHub\",\"description\":\"Firecrawl - is an API service that takes a URL, crawls it, and converts it into clean - markdown or structured data. We crawl all accessible subpages and give you - ...\",\"position\":2,\"category\":\"github\",\"markdown\":\"[Skip to content](https://github.com/firecrawl/firecrawl#start-of-content)\\n\\nYou - signed in with another tab or window. [Reload](https://github.com/firecrawl/firecrawl) - to refresh your session.You signed out in another tab or window. [Reload](https://github.com/firecrawl/firecrawl) - to refresh your session.You switched accounts on another tab or window. [Reload](https://github.com/firecrawl/firecrawl) - to refresh your session.Dismiss alert\\n\\n{{ message }}\\n\\n[firecrawl](https://github.com/firecrawl)/ - **[firecrawl](https://github.com/firecrawl/firecrawl)** Public\\n\\n- Couldn't - load subscription status.\\nRetry\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n### Uh - oh!\\n\\n\\n\\n\\n\\n\\n\\nThere was an error while loading. [Please reload - this page](https://github.com/firecrawl/firecrawl).\\n\\n- [Fork\\\\\\\\\\n5.1k](https://github.com/login?return_to=%2Ffirecrawl%2Ffirecrawl)\\n- - [Star\\\\\\\\\\n65.2k](https://github.com/login?return_to=%2Ffirecrawl%2Ffirecrawl)\\n\\n\\n\U0001F525 - The Web Data API for AI - Turn entire websites into LLM-ready markdown or - structured data\\n\\n\\n[firecrawl.dev](https://firecrawl.dev/ \\\"https://firecrawl.dev\\\")\\n\\n### - License\\n\\n[AGPL-3.0 license](https://github.com/firecrawl/firecrawl/blob/main/LICENSE)\\n\\n[65.2k\\\\\\\\\\nstars](https://github.com/firecrawl/firecrawl/stargazers) - [5.1k\\\\\\\\\\nforks](https://github.com/firecrawl/firecrawl/forks) [Branches](https://github.com/firecrawl/firecrawl/branches) - [Tags](https://github.com/firecrawl/firecrawl/tags) [Activity](https://github.com/firecrawl/firecrawl/activity)\\n\\n[Star](https://github.com/login?return_to=%2Ffirecrawl%2Ffirecrawl)\\n\\nCouldn't - load subscription status.\\nRetry\\n\\n### Uh oh!\\n\\nThere was an error - while loading. [Please reload this page](https://github.com/firecrawl/firecrawl).\\n\\n# - firecrawl/firecrawl\\n\\nmain\\n\\n[**887** Branches](https://github.com/firecrawl/firecrawl/branches) - [**28** Tags](https://github.com/firecrawl/firecrawl/tags)\\n\\n[Go to Branches - page](https://github.com/firecrawl/firecrawl/branches)[Go to Tags page](https://github.com/firecrawl/firecrawl/tags)\\n\\nGo - to file\\n\\nCode\\n\\nOpen more actions menu\\n\\n## Folders and files\\n\\n| - Name | Name | Last commit message | Last commit date |\\n| --- | --- | --- - | --- |\\n| ## Latest commit
[![amplitudesxd](https://avatars.githubusercontent.com/u/62763456?v=4&size=40)](https://github.com/amplitudesxd)[amplitudesxd](https://github.com/firecrawl/firecrawl/commits?author=amplitudesxd)
[chore: - update last scrape rpc (](https://github.com/firecrawl/firecrawl/commit/37de2877fab4bae2de297e37bad3c9bcd49a64bc) - [#2339](https://github.com/firecrawl/firecrawl/pull/2339) [)](https://github.com/firecrawl/firecrawl/commit/37de2877fab4bae2de297e37bad3c9bcd49a64bc)
success
20 - hours agoOct 27, 2025
[37de287](https://github.com/firecrawl/firecrawl/commit/37de2877fab4bae2de297e37bad3c9bcd49a64bc)\_\xB7\_20 - hours agoOct 27, 2025
## History
[4,487 Commits](https://github.com/firecrawl/firecrawl/commits/main/) -
Open commit details
[View commit history for this file.](https://github.com/firecrawl/firecrawl/commits/main/) - |\\n| [.github](https://github.com/firecrawl/firecrawl/tree/main/.github \\\".github\\\") - | [.github](https://github.com/firecrawl/firecrawl/tree/main/.github \\\".github\\\") - | [fix(ci): temp disabled prod env tests](https://github.com/firecrawl/firecrawl/commit/42fc149c1ab738da0e15e772817774aa35273f8e - \\\"fix(ci): temp disabled prod env tests\\\") | 5 days agoOct 23, 2025 |\\n| - [apps](https://github.com/firecrawl/firecrawl/tree/main/apps \\\"apps\\\") - | [apps](https://github.com/firecrawl/firecrawl/tree/main/apps \\\"apps\\\") - | [chore: update last scrape rpc (](https://github.com/firecrawl/firecrawl/commit/37de2877fab4bae2de297e37bad3c9bcd49a64bc - \\\"chore: update last scrape rpc (#2339)\\\") [#2339](https://github.com/firecrawl/firecrawl/pull/2339) - [)](https://github.com/firecrawl/firecrawl/commit/37de2877fab4bae2de297e37bad3c9bcd49a64bc - \\\"chore: update last scrape rpc (#2339)\\\") | 20 hours agoOct 27, 2025 - |\\n| [examples](https://github.com/firecrawl/firecrawl/tree/main/examples - \\\"examples\\\") | [examples](https://github.com/firecrawl/firecrawl/tree/main/examples - \\\"examples\\\") | [Merge pull request](https://github.com/firecrawl/firecrawl/commit/7ad57003b4ad8b230ba8252129e52bafa62dfae9 - \\\"Merge pull request #2172 from MAVRICK-1/firecrawl-gemini-screenshot-editor - \ feat: Add Firecrawl + Gemini 2.5 Flash Image CLI Editor\\\") [#2172](https://github.com/firecrawl/firecrawl/pull/2172) - [from MAVRICK-1/firecrawl-gemini-screenshot-e\u2026](https://github.com/firecrawl/firecrawl/commit/7ad57003b4ad8b230ba8252129e52bafa62dfae9 - \\\"Merge pull request #2172 from MAVRICK-1/firecrawl-gemini-screenshot-editor - \ feat: Add Firecrawl + Gemini 2.5 Flash Image CLI Editor\\\") | last monthSep - 23, 2025 |\\n| [img](https://github.com/firecrawl/firecrawl/tree/main/img - \\\"img\\\") | [img](https://github.com/firecrawl/firecrawl/tree/main/img - \\\"img\\\") | [updated readme](https://github.com/firecrawl/firecrawl/commit/4f904e774831dc598681d3e998d0e5e15abcec27 - \\\"updated readme\\\") | 2 months agoAug 18, 2025 |\\n| [.gitattributes](https://github.com/firecrawl/firecrawl/blob/main/.gitattributes - \\\".gitattributes\\\") | [.gitattributes](https://github.com/firecrawl/firecrawl/blob/main/.gitattributes - \\\".gitattributes\\\") | [Initial commit](https://github.com/firecrawl/firecrawl/commit/a6c2a878119321a196f720cce4195e086f1c6b46 - \\\"Initial commit\\\") | last yearApr 15, 2024 |\\n| [.gitignore](https://github.com/firecrawl/firecrawl/blob/main/.gitignore - \\\".gitignore\\\") | [.gitignore](https://github.com/firecrawl/firecrawl/blob/main/.gitignore - \\\".gitignore\\\") | [Nick: init](https://github.com/firecrawl/firecrawl/commit/ab3fa4838458c8303a67dd30fdd75a16b89cc20b - \\\"Nick: init\\\") | 3 weeks agoOct 10, 2025 |\\n| [.gitmodules](https://github.com/firecrawl/firecrawl/blob/main/.gitmodules - \\\".gitmodules\\\") | [.gitmodules](https://github.com/firecrawl/firecrawl/blob/main/.gitmodules - \\\".gitmodules\\\") | [mendableai -> firecrawl](https://github.com/firecrawl/firecrawl/commit/2f3bc4e7a7b1a67a29c06df629f79402ee1aad1b - \\\"mendableai -> firecrawl\\\") | 2 months agoAug 18, 2025 |\\n| [CLAUDE.md](https://github.com/firecrawl/firecrawl/blob/main/CLAUDE.md - \\\"CLAUDE.md\\\") | [CLAUDE.md](https://github.com/firecrawl/firecrawl/blob/main/CLAUDE.md - \\\"CLAUDE.md\\\") | [add claude file](https://github.com/firecrawl/firecrawl/commit/3f0873c788823258a7d9f55d1c8772aed4e1a8de - \\\"add claude file\\\") | 2 months agoAug 6, 2025 |\\n| [CONTRIBUTING.md](https://github.com/firecrawl/firecrawl/blob/main/CONTRIBUTING.md - \\\"CONTRIBUTING.md\\\") | [CONTRIBUTING.md](https://github.com/firecrawl/firecrawl/blob/main/CONTRIBUTING.md - \\\"CONTRIBUTING.md\\\") | [Add Rust to CONTRIBUTING (](https://github.com/firecrawl/firecrawl/commit/f396cb20b54c3c2d7e64882642c5df6310a01002 - \\\"Add Rust to CONTRIBUTING (#2180)\\\") [#2180](https://github.com/firecrawl/firecrawl/pull/2180) - [)](https://github.com/firecrawl/firecrawl/commit/f396cb20b54c3c2d7e64882642c5df6310a01002 - \\\"Add Rust to CONTRIBUTING (#2180)\\\") | last monthSep 18, 2025 |\\n| [LICENSE](https://github.com/firecrawl/firecrawl/blob/main/LICENSE - \\\"LICENSE\\\") | [LICENSE](https://github.com/firecrawl/firecrawl/blob/main/LICENSE - \\\"LICENSE\\\") | [Update SDKs to MIT license](https://github.com/firecrawl/firecrawl/commit/afb49e21e7cff595ebad9ce0b7aba13b88f39cf8 - \\\"Update SDKs to MIT license\\\") | last yearJul 8, 2024 |\\n| [README.md](https://github.com/firecrawl/firecrawl/blob/main/README.md - \\\"README.md\\\") | [README.md](https://github.com/firecrawl/firecrawl/blob/main/README.md - \\\"README.md\\\") | [Update README.md](https://github.com/firecrawl/firecrawl/commit/a21430e97818d95099bb365be711d9227bd75590 - \\\"Update README.md\\\") | 3 weeks agoOct 6, 2025 |\\n| [SELF\\\\_HOST.md](https://github.com/firecrawl/firecrawl/blob/main/SELF_HOST.md - \\\"SELF_HOST.md\\\") | [SELF\\\\_HOST.md](https://github.com/firecrawl/firecrawl/blob/main/SELF_HOST.md - \\\"SELF_HOST.md\\\") | [Allow self-hosted webhook delivery to private IP - addresses (](https://github.com/firecrawl/firecrawl/commit/5756b834884d481382ce1f5674836a56b7fee33d - \\\"Allow self-hosted webhook delivery to private IP addresses (#2232)\\\") - [#2232](https://github.com/firecrawl/firecrawl/pull/2232) [)](https://github.com/firecrawl/firecrawl/commit/5756b834884d481382ce1f5674836a56b7fee33d - \\\"Allow self-hosted webhook delivery to private IP addresses (#2232)\\\") - | 27 days agoOct 1, 2025 |\\n| [docker-compose.yaml](https://github.com/firecrawl/firecrawl/blob/main/docker-compose.yaml - \\\"docker-compose.yaml\\\") | [docker-compose.yaml](https://github.com/firecrawl/firecrawl/blob/main/docker-compose.yaml - \\\"docker-compose.yaml\\\") | [Fix a self-hosted docker-compose.yaml bug - caused by a recent firecraw\u2026](https://github.com/firecrawl/firecrawl/commit/7d4100b274889977fa1ba26344532d9d8747494c - \\\"Fix a self-hosted docker-compose.yaml bug caused by a recent firecrawl - change (#2252) Add EXTRACT_WORKER_PORT to docker-compose environment\\\") - | 3 weeks agoOct 4, 2025 |\\n| View all files |\\n\\n## Repository files navigation\\n\\n### - [![](https://raw.githubusercontent.com/firecrawl/firecrawl/main/img/firecrawl_logo.png)](https://raw.githubusercontent.com/firecrawl/firecrawl/main/img/firecrawl_logo.png)\\n\\n[Permalink: - ](https://github.com/firecrawl/firecrawl#----)\\n\\n[![License](https://camo.githubusercontent.com/d8ec6c81115d21c81bc26f2c80f8987a4d2a72e538b88afaa738fad5cd6289ff/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f66697265637261776c2f66697265637261776c)](https://github.com/firecrawl/firecrawl/blob/main/LICENSE)[![Downloads](https://camo.githubusercontent.com/9d76afe428b4085c8b7103f2f4e31da110ee154ad7320bace4348d92ac0c2450/68747470733a2f2f7374617469632e706570792e746563682f62616467652f66697265637261776c2d7079)](https://pepy.tech/project/firecrawl-py)[![GitHub - Contributors](https://camo.githubusercontent.com/a9eabcb95ba00300afa51ce546660540c1f65764492cb2ba8fb67fe541c7e97f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f66697265637261776c2f66697265637261776c2e737667)](https://github.com/firecrawl/firecrawl/graphs/contributors)[![Visit - firecrawl.dev](https://camo.githubusercontent.com/3576b8cb0e77344c001cc8456d28c830691cb96480d4b65be90f8a4c99dead56/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f56697369742d66697265637261776c2e6465762d6f72616e6765)](https://firecrawl.dev/)\\n\\n[![Follow - on X](https://camo.githubusercontent.com/610127222e603752676f0275682f12398f8e434706861d577c1f6688d999191c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466f6c6c6f772532306f6e253230582d3030303030303f7374796c653d666f722d7468652d6261646765266c6f676f3d78266c6f676f436f6c6f723d7768697465)](https://twitter.com/firecrawl_dev)[![Follow - on LinkedIn](https://camo.githubusercontent.com/8741d51bb8e1c8ae576ac05e875f826bcf80e8711dcf9225935bb78d5bb03802/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466f6c6c6f772532306f6e2532304c696e6b6564496e2d3030373742353f7374796c653d666f722d7468652d6261646765266c6f676f3d6c696e6b6564696e266c6f676f436f6c6f723d7768697465)](https://www.linkedin.com/company/104100957)[![Join - our Discord](https://camo.githubusercontent.com/886138c89a84dc2ad74d06900f364d736ccf753b2732d59fbd4106f6310f3616/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4a6f696e2532306f7572253230446973636f72642d3538363546323f7374796c653d666f722d7468652d6261646765266c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465)](https://discord.com/invite/gSmWdAkdwd)\\n\\n# - \U0001F525 Firecrawl\\n\\n[Permalink: \U0001F525 Firecrawl](https://github.com/firecrawl/firecrawl#-firecrawl)\\n\\nEmpower - your AI apps with clean data from any website. Featuring advanced scraping, - crawling, and data extraction capabilities.\\n\\n_This repository is in development, - and we\u2019re still integrating custom modules into the mono repo. It's not - fully ready for self-hosted deployment yet, but you can run it locally._\\n\\n## - What is Firecrawl?\\n\\n[Permalink: What is Firecrawl?](https://github.com/firecrawl/firecrawl#what-is-firecrawl)\\n\\n[Firecrawl](https://firecrawl.dev/?ref=github) - is an API service that takes a URL, crawls it, and converts it into clean - markdown or structured data. We crawl all accessible subpages and give you - clean data for each. No sitemap required. Check out our [documentation](https://docs.firecrawl.dev/).\\n\\nLooking - for our MCP? Check out the [repo here](https://github.com/firecrawl/firecrawl-mcp-server).\\n\\n_Pst. - hey, you, join our stargazers :)_\\n\\n[![GitHub stars](https://camo.githubusercontent.com/11f7ce76e9f1608b3470b3a23a1db3a7d9ec083ee18f2d826862f420bac800dc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f66697265637261776c2f66697265637261776c2e7376673f7374796c653d736f6369616c266c6162656c3d53746172266d61784167653d32353932303030)](https://github.com/firecrawl/firecrawl)\\n\\n## - How to use it?\\n\\n[Permalink: How to use it?](https://github.com/firecrawl/firecrawl#how-to-use-it)\\n\\nWe - provide an easy to use API with our hosted version. You can find the playground - and documentation [here](https://firecrawl.dev/playground). You can also self - host the backend if you'd like.\\n\\nCheck out the following resources to - get started:\\n\\n- [x] **API**: [Documentation](https://docs.firecrawl.dev/api-reference/introduction)\\n- - [x] **SDKs**: [Python](https://docs.firecrawl.dev/sdks/python), [Node](https://docs.firecrawl.dev/sdks/node)\\n- - [x] **LLM Frameworks**: [Langchain (python)](https://python.langchain.com/docs/integrations/document_loaders/firecrawl/), - [Langchain (js)](https://js.langchain.com/docs/integrations/document_loaders/web_loaders/firecrawl), - [Llama Index](https://docs.llamaindex.ai/en/latest/examples/data_connectors/WebPageDemo/#using-firecrawl-reader), - [Crew.ai](https://docs.crewai.com/), [Composio](https://composio.dev/tools/firecrawl/all), - [PraisonAI](https://docs.praison.ai/firecrawl/), [Superinterface](https://superinterface.ai/docs/assistants/functions/firecrawl), - [Vectorize](https://docs.vectorize.io/integrations/source-connectors/firecrawl)\\n- - [x] **Low-code Frameworks**: [Dify](https://dify.ai/blog/dify-ai-blog-integrated-with-firecrawl), - [Langflow](https://docs.langflow.org/), [Flowise AI](https://docs.flowiseai.com/integrations/langchain/document-loaders/firecrawl), - [Cargo](https://docs.getcargo.io/integration/firecrawl), [Pipedream](https://pipedream.com/apps/firecrawl/)\\n- - [x] **Community SDKs**: [Go](https://docs.firecrawl.dev/sdks/go), [Rust](https://docs.firecrawl.dev/sdks/rust)\\n- - [x] **Others**: [Zapier](https://zapier.com/apps/firecrawl/integrations), - [Pabbly Connect](https://www.pabbly.com/connect/integrations/firecrawl/)\\n- - [ ] Want an SDK or Integration? Let us know by opening an issue.\\n\\nTo - run locally, refer to guide [here](https://github.com/firecrawl/firecrawl/blob/main/CONTRIBUTING.md).\\n\\n### - API Key\\n\\n[Permalink: API Key](https://github.com/firecrawl/firecrawl#api-key)\\n\\nTo - use the API, you need to sign up on [Firecrawl](https://firecrawl.dev/) and - get an API key.\\n\\n### Features\\n\\n[Permalink: Features](https://github.com/firecrawl/firecrawl#features)\\n\\n- - [**Scrape**](https://github.com/firecrawl/firecrawl#scraping): scrapes a URL - and get its content in LLM-ready format (markdown, structured data via [LLM - Extract](https://github.com/firecrawl/firecrawl#llm-extraction-beta), screenshot, - html)\\n- [**Crawl**](https://github.com/firecrawl/firecrawl#crawling): scrapes - all the URLs of a web page and return content in LLM-ready format\\n- [**Map**](https://github.com/firecrawl/firecrawl#map): - input a website and get all the website urls - extremely fast\\n- [**Search**](https://github.com/firecrawl/firecrawl#search): - search the web and get full content from results\\n- [**Extract**](https://github.com/firecrawl/firecrawl#extract): - get structured data from single page, multiple pages or entire websites with - AI.\\n\\n### Powerful Capabilities\\n\\n[Permalink: Powerful Capabilities](https://github.com/firecrawl/firecrawl#powerful-capabilities)\\n\\n- - **LLM-ready formats**: markdown, structured data, screenshot, HTML, links, - metadata\\n- **The hard stuff**: proxies, anti-bot mechanisms, dynamic content - (js-rendered), output parsing, orchestration\\n- **Customizability**: exclude - tags, crawl behind auth walls with custom headers, max crawl depth, etc...\\n- - **Media parsing**: pdfs, docx, images\\n- **Reliability first**: designed - to get the data you need - no matter how hard it is\\n- **Actions**: click, - scroll, input, wait and more before extracting data\\n- **Batching**: scrape - thousands of URLs at the same time with a new async endpoint\\n- **Change - Tracking**: monitor and detect changes in website content over time\\n\\nYou - can find all of Firecrawl's capabilities and how to use them in our [documentation](https://docs.firecrawl.dev/)\\n\\n### - Crawling\\n\\n[Permalink: Crawling](https://github.com/firecrawl/firecrawl#crawling)\\n\\nUsed - to crawl a URL and all accessible subpages. This submits a crawl job and returns - a job ID to check the status of the crawl.\\n\\n```\\ncurl -X POST https://api.firecrawl.dev/v2/crawl - \\\\\\n -H 'Content-Type: application/json' \\\\\\n -H 'Authorization: - Bearer fc-YOUR_API_KEY' \\\\\\n -d '{\\n \\\"url\\\": \\\"https://docs.firecrawl.dev\\\",\\n - \ \\\"limit\\\": 10,\\n \\\"scrapeOptions\\\": {\\n \\\"formats\\\": - [\\\"markdown\\\", \\\"html\\\"]\\n }\\n }'\\n```\\n\\nReturns a crawl - job id and the url to check the status of the crawl.\\n\\n```\\n{\\n \\\"success\\\": - true,\\n \\\"id\\\": \\\"123-456-789\\\",\\n \\\"url\\\": \\\"https://api.firecrawl.dev/v2/crawl/123-456-789\\\"\\n}\\n```\\n\\n### - Check Crawl Job\\n\\n[Permalink: Check Crawl Job](https://github.com/firecrawl/firecrawl#check-crawl-job)\\n\\nUsed - to check the status of a crawl job and get its result.\\n\\n```\\ncurl -X - GET https://api.firecrawl.dev/v2/crawl/123-456-789 \\\\\\n -H 'Content-Type: - application/json' \\\\\\n -H 'Authorization: Bearer YOUR_API_KEY'\\n```\\n\\n```\\n{\\n - \ \\\"status\\\": \\\"completed\\\",\\n \\\"total\\\": 36,\\n \\\"creditsUsed\\\": - 36,\\n \\\"expiresAt\\\": \\\"2024-00-00T00:00:00.000Z\\\",\\n \\\"data\\\": - [\\\\\\n {\\\\\\n \\\"markdown\\\": \\\"[Firecrawl Docs home page![light - logo](https://mintlify.s3-us-west-1.amazonaws.com/firecrawl/logo/light.svg)!...\\\",\\\\\\n - \ \\\"html\\\": \\\"...\\\",\\\\\\n - \ \\\"metadata\\\": {\\\\\\n \\\"title\\\": \\\"Build a 'Chat with - website' using Groq Llama 3 | Firecrawl\\\",\\\\\\n \\\"language\\\": - \\\"en\\\",\\\\\\n \\\"sourceURL\\\": \\\"https://docs.firecrawl.dev/learn/rag-llama3\\\",\\\\\\n - \ \\\"description\\\": \\\"Learn how to use Firecrawl, Groq Llama 3, - and Langchain to build a 'Chat with your website' bot.\\\",\\\\\\n \\\"ogLocaleAlternate\\\": - [],\\\\\\n \\\"statusCode\\\": 200\\\\\\n }\\\\\\n }\\\\\\n - \ ]\\\\\\n}\\\\\\n```\\\\\\n\\\\\\n### Scraping\\\\\\n\\\\\\n[Permalink: Scraping](https://github.com/firecrawl/firecrawl#scraping)\\\\\\n\\\\\\nUsed - to scrape a URL and get its content in the specified formats.\\\\\\n\\\\\\n```\\\\\\ncurl - -X POST https://api.firecrawl.dev/v2/scrape \\\\\\\\\\n -H 'Content-Type: - application/json' \\\\\\\\\\n -H 'Authorization: Bearer YOUR_API_KEY' \\\\\\\\\\n - \ -d '{\\\\\\n \\\"url\\\": \\\"https://docs.firecrawl.dev\\\",\\\\\\n - \ \\\"formats\\\" : [\\\"markdown\\\", \\\"html\\\"]\\\\\\n }'\\\\\\n```\\\\\\n\\\\\\nResponse:\\\\\\n\\\\\\n```\\\\\\n{\\\\\\n - \ \\\"success\\\": true,\\\\\\n \\\"data\\\": {\\\\\\n \\\"markdown\\\": - \\\"Launch Week I is here! [See our Day 2 Release \U0001F680](https://www.firecrawl.dev/blog/launch-week-i-day-2-doubled-rate-limits)[\U0001F4A5 - Get 2 months free...\\\",\\\\\\n \\\"html\\\": \\\"/\",\"route-controller\":\"files\",\"octolytics-dimension-repository_id\":\"787076358\",\"ogUrl\":\"https://github.com/firecrawl/firecrawl\",\"go-import\":\"github.com/firecrawl/firecrawl - git https://github.com/firecrawl/firecrawl.git\",\"hovercard-subject-tag\":\"repository:787076358\",\"theme-color\":\"#1e2327\",\"turbo-body-classes\":\"logged-out - env-production page-responsive\",\"scrapeId\":\"ec4d99a0-4c4f-4d1a-9fd2-08b8f891f883\",\"sourceURL\":\"https://github.com/firecrawl/firecrawl\",\"url\":\"https://github.com/firecrawl/firecrawl\",\"statusCode\":200,\"contentType\":\"text/html; - charset=utf-8\",\"proxyUsed\":\"basic\",\"cacheState\":\"hit\",\"cachedAt\":\"2025-10-28T19:23:20.106Z\"}},{\"url\":\"https://x.com/firecrawl_dev?lang=en\",\"title\":\"Firecrawl - (@firecrawl_dev) / Posts / X\",\"description\":\"Firecrawl (@firecrawl_dev) - - Posts - Turn websites into LLM-ready data. Built by @mendableai team Open - source: | X (formerly Twitter)\",\"position\":3},{\"url\":\"https://github.com/firecrawl\",\"title\":\"Firecrawl - - GitHub\",\"description\":\"Building AI applications? You need clean, structured - data from the web. Firecrawl handles the complexity of modern web scraping - so you can focus on building ...\",\"position\":4,\"category\":\"github\",\"markdown\":\"[Skip - to content](https://github.com/firecrawl#start-of-content)\\n\\nYou signed - in with another tab or window. [Reload](https://github.com/firecrawl) to refresh - your session.You signed out in another tab or window. [Reload](https://github.com/firecrawl) - to refresh your session.You switched accounts on another tab or window. [Reload](https://github.com/firecrawl) - to refresh your session.Dismiss alert\\n\\n{{ message }}\\n\\n[README.md](https://github.com/firecrawl/.github/tree/main/profile/README.md)\\n\\n# - \U0001F525 Firecrawl\\n\\n[Permalink: \U0001F525 Firecrawl](https://github.com/firecrawl#-firecrawl)\\n\\n[![Firecrawl - Logo](https://raw.githubusercontent.com/mendableai/firecrawl/main/img/firecrawl_logo.png)](https://raw.githubusercontent.com/mendableai/firecrawl/main/img/firecrawl_logo.png)\\n\\n### - Transform any website into LLM-ready data\\n\\n[Permalink: Transform any website - into LLM-ready data](https://github.com/firecrawl#transform-any-website-into-llm-ready-data)\\n\\nAdvanced - web scraping, crawling, and data extraction infrastructure for AI applications\\n\\n[![Get - Started](https://camo.githubusercontent.com/85b729c7fb201b60a98279ddc4e70268281fc6df999e110276f798cf5c050126/68747470733a2f2f696d672e736869656c64732e696f2f62616467652ff09f9a805f4765745f537461727465642d4646364233353f7374796c653d666f722d7468652d6261646765)](https://firecrawl.dev/) - [![Documentation](https://camo.githubusercontent.com/f7531cb91d3d3dcac76ac7c2ba9d36c1a74728016c64d942cfaf954f5ae4a238/68747470733a2f2f696d672e736869656c64732e696f2f62616467652ff09f939a5f446f63756d656e746174696f6e2d3441393045323f7374796c653d666f722d7468652d6261646765)](https://docs.firecrawl.dev/) - [![Discord](https://camo.githubusercontent.com/8c2d9f948c1d79b69e26d25add89a17a734b48cc6fd6fc0040f34f31c6a11774/68747470733a2f2f696d672e736869656c64732e696f2f62616467652ff09f92ac5f4a6f696e5f446973636f72642d3538363546323f7374796c653d666f722d7468652d6261646765)](https://discord.com/invite/gSmWdAkdwd)\\n\\n[![License](https://camo.githubusercontent.com/a6f4431b80529dbeaa43c3c5fbcf4649f6b4ebbeb82d5a58abeb39ca3eeca8be/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d656e6461626c6561692f66697265637261776c)](https://github.com/mendableai/firecrawl/blob/main/LICENSE)[![GitHub - Stars](https://camo.githubusercontent.com/f42ce9a4d46d07baa67b74b49277e72ed33877743358deebfa774e17532eb4ff/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d656e6461626c6561692f66697265637261776c3f7374796c653d736f6369616c)](https://github.com/mendableai/firecrawl/stargazers)[![Python - Downloads](https://camo.githubusercontent.com/9d76afe428b4085c8b7103f2f4e31da110ee154ad7320bace4348d92ac0c2450/68747470733a2f2f7374617469632e706570792e746563682f62616467652f66697265637261776c2d7079)](https://pepy.tech/project/firecrawl-py)[![Follow - on X](https://camo.githubusercontent.com/e32f3aece18eaab32ee100cadb592843d985aa1171a8da08ae047626363d65ae/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f66697265637261776c5f6465763f7374796c653d736f6369616c)](https://x.com/firecrawl_dev)\\n\\n* - * *\\n\\n## Why Firecrawl?\\n\\n[Permalink: Why Firecrawl?](https://github.com/firecrawl#why-firecrawl)\\n\\n**Building - AI applications?** You need clean, structured data from the web. Firecrawl - handles the complexity of modern web scraping so you can focus on building - great products.\\n\\n## Our Core Ecosystem\\n\\n[Permalink: Our Core Ecosystem](https://github.com/firecrawl#our-core-ecosystem)\\n\\n### - Main Repository\\n\\n[Permalink: Main Repository](https://github.com/firecrawl#main-repository)\\n\\n[![](https://camo.githubusercontent.com/97aa9741f2773cb2d192c516c7689f4e2bbab89403aa868d842487551743626a/68747470733a2f2f6769746875622d726561646d652d73746174732e76657263656c2e6170702f6170692f70696e2f3f757365726e616d653d6d656e6461626c656169267265706f3d66697265637261776c267468656d653d6c69676874)](https://github.com/mendableai/firecrawl)\\n\\n**[firecrawl](https://github.com/mendableai/firecrawl)** - \\\\- Core API & SDK\\n\\nTurn entire websites into LLM-ready markdown or - structured data. Our flagship product with 40k+ stars.\\n\\n### Cloud API\\n\\n[Permalink: - Cloud API](https://github.com/firecrawl#cloud-api)\\n\\n[![Cloud API](https://camo.githubusercontent.com/6ad9773ed98c84d54b1546ffbf8b0fbb085be0c60580ae5a1ead2d23ddf1b121/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c6f75645f4150492d4646364233353f7374796c653d666f722d7468652d6261646765266c6f676f3d636c6f7564266c6f676f436f6c6f723d7768697465)](https://firecrawl.dev/)\\n\\n**[Firecrawl](https://firecrawl.dev/)** - \\\\- Hosted API Service\\n\\nProduction-ready web scraping without infrastructure - management. Get your API key and start scraping in minutes with our reliable, - scalable cloud service.\\n\\n### MCP Integration\\n\\n[Permalink: MCP Integration](https://github.com/firecrawl#mcp-integration)\\n\\n[![MCP - Server](https://camo.githubusercontent.com/ea9cbd6a754e0932d17ae393ff53566bfb681492abddd08704dbe04b122dfaa1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d43505f5365727665722d3441393045323f7374796c653d666f722d7468652d6261646765266c6f676f3d736572766572266c6f676f436f6c6f723d7768697465)](https://github.com/mendableai/firecrawl-mcp-server)\\n\\n**[firecrawl-mcp-server](https://github.com/mendableai/firecrawl-mcp-server)** - \\\\- Model Context Protocol Server\\n\\nAdd powerful web scraping capabilities - to Claude, Cursor, and any MCP-compatible LLM client.\\n\\n## Community & - Support\\n\\n[Permalink: Community & Support](https://github.com/firecrawl#community--support)\\n\\n[![Discord](https://camo.githubusercontent.com/62d3d35241760cf174631c4e6b5f4503c0a6b34640fd306e36a829ab5ec47b14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d3538363546323f7374796c653d666f722d7468652d6261646765266c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465)](https://discord.com/invite/gSmWdAkdwd)[![X](https://camo.githubusercontent.com/8c709aaebc7feee6050eba44984b294d9da3ace3353bd5eed8b499dd04af3c06/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f582d3030303030303f7374796c653d666f722d7468652d6261646765266c6f676f3d78266c6f676f436f6c6f723d7768697465)](https://x.com/firecrawl_dev)[![LinkedIn](https://camo.githubusercontent.com/8c0692475a5bfc1d9e7361074bdb648e567cae7b5b40ffd32adae31180b0d7b6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e6b6564496e2d3030373742353f7374796c653d666f722d7468652d6261646765266c6f676f3d6c696e6b6564696e266c6f676f436f6c6f723d7768697465)](https://www.linkedin.com/company/104100957/)[![Discussions](https://camo.githubusercontent.com/9403fd9d6d54f5a23a79f9a8a6a256ae82159fb626710fd56c2495fff1257d62/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4769744875625f44697363757373696f6e732d3138313731373f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465)](https://github.com/mendableai/firecrawl/discussions)[![Documentation](https://camo.githubusercontent.com/9d518c9da8018ae3524a2580522bd1ef591f343cc4df7983b4476e117fa70bba/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f63756d656e746174696f6e2d3441393045323f7374796c653d666f722d7468652d6261646765266c6f676f3d626f6f6b266c6f676f436f6c6f723d7768697465)](https://docs.firecrawl.dev/)\\n\\n## - Built By Mendable\\n\\n[Permalink: Built By Mendable](https://github.com/firecrawl#built-by-mendable)\\n\\nWe're - the team behind [Mendable.ai](https://mendable.ai/), passionate about making - web data accessible for AI applications. Firecrawl powers thousands of AI - products worldwide.\\n\\n* * *\\n\\n**Ready to build something amazing?**\\n\\n[Get - your API key](https://firecrawl.dev/) and start scraping in minutes\\n\\n\\n[Star - our main repo](https://github.com/mendableai/firecrawl) \u2022\\n[Try the - playground](https://firecrawl.dev/playground) \u2022\\n[Read the docs](https://docs.firecrawl.dev/)\\n\\n## - Pinned Loading\\n\\n1. [firecrawl](https://github.com/firecrawl/firecrawl) - firecrawlPublic\\n\\n\\n\\n\\n\\n\\n\U0001F525 The Web Data API for AI - Turn - entire websites into LLM-ready markdown or structured data\\n\\n\\n\\n\\nTypeScript[64.9k](https://github.com/firecrawl/firecrawl/stargazers) - [5.1k](https://github.com/firecrawl/firecrawl/forks)\\n\\n2. [mendable-nextjs-chatbot](https://github.com/firecrawl/mendable-nextjs-chatbot) - mendable-nextjs-chatbotPublic template\\n\\n\\n\\n\\n\\n\\nNext.js Starter - Template for building chatbots with Mendable\\n\\n\\n\\n\\nTypeScript[256](https://github.com/firecrawl/mendable-nextjs-chatbot/stargazers) - [52](https://github.com/firecrawl/mendable-nextjs-chatbot/forks)\\n\\n3. [rag-arena](https://github.com/firecrawl/rag-arena) - rag-arenaPublic\\n\\n\\n\\n\\n\\n\\nOpen-source RAG evaluation through users' - feedback\\n\\n\\n\\n\\nTypeScript[206](https://github.com/firecrawl/rag-arena/stargazers) - [32](https://github.com/firecrawl/rag-arena/forks)\\n\\n4. [QA\\\\_clustering](https://github.com/firecrawl/QA_clustering) - QA\\\\_clusteringPublic\\n\\n\\n\\n\\n\\n\\nAnalyzing chat interactions w/ - LLMs to improve \U0001F99C\U0001F517 Langchain docs\\n\\n\\n\\n\\nJupyter - Notebook[80](https://github.com/firecrawl/QA_clustering/stargazers) [12](https://github.com/firecrawl/QA_clustering/forks)\\n\\n5. - [data-connectors](https://github.com/firecrawl/data-connectors) data-connectorsPublic\\n\\n\\n\\n\\n\\n\\nLLM-ready - data connectors\\n\\n\\n\\n\\nTypeScript[95](https://github.com/firecrawl/data-connectors/stargazers) - [23](https://github.com/firecrawl/data-connectors/forks)\\n\\n6. [mendable-py](https://github.com/firecrawl/mendable-py) - mendable-pyPublic\\n\\n\\n\\n\\n\\n\\nBuild Production Ready LLM Chat Apps - in Minutes\\n\\n\\n\\n\\nPython[33](https://github.com/firecrawl/mendable-py/stargazers) - [7](https://github.com/firecrawl/mendable-py/forks)\\n\\n\\n### Repositories\\n\\nLoading\\n\\nType\\n\\nAllPublicSourcesForksArchivedMirrorsTemplates\\n\\nLanguage\\n\\nAllCSSGoJavaJavaScriptJupyter - NotebookMDXPythonRustTypeScript\\n\\nSort\\n\\nLast updatedNameStars\\n\\nShowing - 10 of 61 repositories\\n\\n- [firecrawl](https://github.com/firecrawl/firecrawl)\\nPublic\\n\\n\\n\\n\U0001F525 - The Web Data API for AI - Turn entire websites into LLM-ready markdown or - structured data\\n\\n\\n\\n\\n\\n\\nfirecrawl/firecrawl\u2019s past year of - commit activity\\n\\n\\n\\nTypeScript[64,949](https://github.com/firecrawl/firecrawl/stargazers)AGPL-3.0\\n[5,132](https://github.com/firecrawl/firecrawl/forks) - [27](https://github.com/firecrawl/firecrawl/issues) [(2 issues need help)](https://github.com/firecrawl/firecrawl/issues?q=label%3A%22good+first+issue%22+is%3Aissue+is%3Aopen) - [85](https://github.com/firecrawl/firecrawl/pulls)\\nUpdated 2 hours agoOct - 27, 2025\\n\\n- [firecrawl-docs](https://github.com/firecrawl/firecrawl-docs)\\nPublic\\n\\n\\n\\nDocumentation - for Firecrawl.\\n\\n\\n\\n\\n\\n\\nfirecrawl/firecrawl-docs\u2019s past year - of commit activity\\n\\n\\n\\nMDX[17](https://github.com/firecrawl/firecrawl-docs/stargazers) - [35](https://github.com/firecrawl/firecrawl-docs/forks) [10](https://github.com/firecrawl/firecrawl-docs/issues) - [5](https://github.com/firecrawl/firecrawl-docs/pulls)\\nUpdated 20 hours - agoOct 26, 2025\\n\\n- [open-agent-builder](https://github.com/firecrawl/open-agent-builder)\\nPublic\\n\\n\\n\\n\U0001F525 - Visual workflow builder for AI agents powered by Firecrawl - drag-and-drop - web scraping pipelines with real-time execution\\n\\n\\n\\n\\n\\n\\nfirecrawl/open-agent-builder\u2019s - past year of commit activity\\n\\n\\n\\nTypeScript[1,673](https://github.com/firecrawl/open-agent-builder/stargazers) - [274](https://github.com/firecrawl/open-agent-builder/forks) [4](https://github.com/firecrawl/open-agent-builder/issues) - [2](https://github.com/firecrawl/open-agent-builder/pulls)\\nUpdated last - weekOct 20, 2025\\n\\n- [firecrawl-mcp-server](https://github.com/firecrawl/firecrawl-mcp-server)\\nPublic\\n\\n\\n\\n\U0001F525 - Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, - Claude and any other LLM clients.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n[**Uh - oh!**](https://github.com/firecrawl/firecrawl-mcp-server/graphs/commit-activity)\\n\\n[There - was an error while loading.](https://github.com/firecrawl/firecrawl-mcp-server/graphs/commit-activity) - [Please reload this page](https://github.com/firecrawl).\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nfirecrawl/firecrawl-mcp-server\u2019s - past year of commit activity\\n\\n\\n\\nJavaScript[4,794](https://github.com/firecrawl/firecrawl-mcp-server/stargazers)MIT\\n[519](https://github.com/firecrawl/firecrawl-mcp-server/forks) - [44](https://github.com/firecrawl/firecrawl-mcp-server/issues) [17](https://github.com/firecrawl/firecrawl-mcp-server/pulls)\\nUpdated - last weekOct 19, 2025\\n\\n- [n8n-nodes-firecrawl](https://github.com/firecrawl/n8n-nodes-firecrawl)\\nPublic\\n\\n\\n\\nn8n - node to interact with Firecrawl\\n\\n\\n\\n\\n\\n\\nfirecrawl/n8n-nodes-firecrawl\u2019s - past year of commit activity\\n\\n\\n\\nTypeScript[21](https://github.com/firecrawl/n8n-nodes-firecrawl/stargazers)MIT\\n[13](https://github.com/firecrawl/n8n-nodes-firecrawl/forks) - [3](https://github.com/firecrawl/n8n-nodes-firecrawl/issues) [0](https://github.com/firecrawl/n8n-nodes-firecrawl/pulls)\\nUpdated - 2 weeks agoOct 17, 2025\\n\\n- [.github](https://github.com/firecrawl/.github)\\nPublic\\n\\n\\n\\n\\nfirecrawl/.github\u2019s - past year of commit activity\\n\\n\\n\\n0\\n[1](https://github.com/firecrawl/.github/forks) - [0](https://github.com/firecrawl/.github/issues) [0](https://github.com/firecrawl/.github/pulls)\\nUpdated - 2 weeks agoOct 12, 2025\\n\\n- [fire-enrich](https://github.com/firecrawl/fire-enrich)\\nPublic\\n\\n\\n\\n\U0001F525 - AI-powered data enrichment tool that transforms emails into rich datasets - with company profiles, funding data, tech stacks, and more using Firecrawl - and multi-agent AI\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n[**Uh oh!**](https://github.com/firecrawl/fire-enrich/graphs/commit-activity)\\n\\n[There - was an error while loading.](https://github.com/firecrawl/fire-enrich/graphs/commit-activity) - [Please reload this page](https://github.com/firecrawl).\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nfirecrawl/fire-enrich\u2019s - past year of commit activity\\n\\n\\n\\nTypeScript[953](https://github.com/firecrawl/fire-enrich/stargazers)MIT\\n[239](https://github.com/firecrawl/fire-enrich/forks) - [12](https://github.com/firecrawl/fire-enrich/issues) [3](https://github.com/firecrawl/fire-enrich/pulls)\\nUpdated - 3 weeks agoOct 8, 2025\\n\\n- [firecrawl-java-sdk](https://github.com/firecrawl/firecrawl-java-sdk)\\nPublic\\n\\n\\n\\n\\nfirecrawl/firecrawl-java-sdk\u2019s - past year of commit activity\\n\\n\\n\\nJava[11](https://github.com/firecrawl/firecrawl-java-sdk/stargazers)MIT\\n[4](https://github.com/firecrawl/firecrawl-java-sdk/forks) - [0](https://github.com/firecrawl/firecrawl-java-sdk/issues) [0](https://github.com/firecrawl/firecrawl-java-sdk/pulls)\\nUpdated - last monthSep 28, 2025\\n\\n- [open-lovable](https://github.com/firecrawl/open-lovable)\\nPublic\\n\\n\\n\\n\U0001F525 - Clone and recreate any website as a modern React app in seconds\\n\\n\\n\\n\\n\\n\\nfirecrawl/open-lovable\u2019s - past year of commit activity\\n\\n\\n\\nTypeScript[21,320](https://github.com/firecrawl/open-lovable/stargazers)MIT\\n[3,986](https://github.com/firecrawl/open-lovable/forks) - [70](https://github.com/firecrawl/open-lovable/issues) [33](https://github.com/firecrawl/open-lovable/pulls)\\nUpdated - last monthSep 27, 2025\\n\\n- [mineru-api](https://github.com/firecrawl/mineru-api)\\nPublic\\n\\n\\n\\n\\nfirecrawl/mineru-api\u2019s - past year of commit activity\\n\\n\\n\\nPython[12](https://github.com/firecrawl/mineru-api/stargazers)AGPL-3.0\\n[2](https://github.com/firecrawl/mineru-api/forks) - [1](https://github.com/firecrawl/mineru-api/issues) [1](https://github.com/firecrawl/mineru-api/pulls)\\nUpdated - on Sep 26Sep 26, 2025\\n\\n\\n[View all repositories](https://github.com/orgs/firecrawl/repositories?type=all)\\n\\n[**People**](https://github.com/orgs/firecrawl/people)\\n\\n[![@alexnucci](https://avatars.githubusercontent.com/u/1919849?s=70&v=4)](https://github.com/alexnucci)[![@micahstairs](https://avatars.githubusercontent.com/u/7231485?s=70&v=4)](https://github.com/micahstairs)[![@nickscamara](https://avatars.githubusercontent.com/u/20311743?s=70&v=4)](https://github.com/nickscamara)[![@mogery](https://avatars.githubusercontent.com/u/66118807?s=70&v=4)](https://github.com/mogery)[![@developersdigest](https://avatars.githubusercontent.com/u/124798203?s=70&v=4)](https://github.com/developersdigest)\\n\\n#### - Top languages\\n\\n[TypeScript](https://github.com/orgs/firecrawl/repositories?language=typescript&type=all) - [Python](https://github.com/orgs/firecrawl/repositories?language=python&type=all) - [JavaScript](https://github.com/orgs/firecrawl/repositories?language=javascript&type=all) - [Go](https://github.com/orgs/firecrawl/repositories?language=go&type=all) - [MDX](https://github.com/orgs/firecrawl/repositories?language=mdx&type=all)\\n\\n#### - Most used topics\\n\\n[ai](https://github.com/search?q=topic%3Aai+org%3Afirecrawl+fork%3Atrue&type=repositories - \\\"Topic: ai\\\") [firecrawl](https://github.com/search?q=topic%3Afirecrawl+org%3Afirecrawl+fork%3Atrue&type=repositories - \\\"Topic: firecrawl\\\") [llm](https://github.com/search?q=topic%3Allm+org%3Afirecrawl+fork%3Atrue&type=repositories - \\\"Topic: llm\\\") [web-crawler](https://github.com/search?q=topic%3Aweb-crawler+org%3Afirecrawl+fork%3Atrue&type=repositories - \\\"Topic: web-crawler\\\") [web-scraping](https://github.com/search?q=topic%3Aweb-scraping+org%3Afirecrawl+fork%3Atrue&type=repositories - \\\"Topic: web-scraping\\\")\\n\\nYou can\u2019t perform that action at this - time.\",\"metadata\":{\"analytics-location\":\"/\",\"apple-itunes-app\":\"app-id=1477376905, - app-argument=https://github.com/firecrawl\",\"twitter:card\":\"summary_large_image\",\"google-site-verification\":\"Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I\",\"description\":\"Web - data API for AI. Firecrawl has 61 repositories available. Follow their code - on GitHub.\",\"og:image\":\"https://avatars.githubusercontent.com/u/135057108?s=280&v=4\",\"og:type\":\"profile\",\"visitor-payload\":\"eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5REFEOjIzM0ExMzo4RDgzNEI6QzQ5OUNCOjY4RkYzODlGIiwidmlzaXRvcl9pZCI6IjQwMDQ0MTI5MTkxMDA5NDY1OTEiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==\",\"github-keyboard-shortcuts\":\"copilot\",\"user-login\":\"\",\"viewport\":\"width=device-width\",\"og:description\":\"Web - data API for AI. Firecrawl has 61 repositories available. Follow their code - on GitHub.\",\"turbo-cache-control\":\"no-preview\",\"fetch-nonce\":\"v2:35a2e032-0081-3f6b-595e-967e32025c6f\",\"og:url\":\"https://github.com/firecrawl\",\"title\":\"Firecrawl - \xB7 GitHub\",\"route-pattern\":\"/:user_id(.:format)\",\"route-action\":\"show\",\"octolytics-url\":\"https://collector.github.com/github/collect\",\"og:site_name\":\"GitHub\",\"twitter:title\":\"Firecrawl\",\"request-id\":\"9DAD:233A13:8D834B:C499CB:68FF389F\",\"ogSiteName\":\"GitHub\",\"fb:app_id\":\"1401488693436528\",\"language\":\"en\",\"twitter:image\":\"https://avatars.githubusercontent.com/u/135057108?s=280&v=4\",\"ogImage\":\"https://avatars.githubusercontent.com/u/135057108?s=280&v=4\",\"release\":\"c44b7f7aa5c70f3296484971978c9f4b1b473352\",\"theme-color\":\"#1e2327\",\"color-scheme\":\"light - dark\",\"html-safe-nonce\":\"2d932295da6aa360d861f16279839ab109dc4e977a51bc99204477969d7d12c6\",\"ogTitle\":\"Firecrawl\",\"hovercard-subject-tag\":\"organization:135057108\",\"twitter:description\":\"Web - data API for AI. Firecrawl has 61 repositories available. Follow their code - on GitHub.\",\"hostname\":\"github.com\",\"ogUrl\":\"https://github.com/firecrawl\",\"ogDescription\":\"Web - data API for AI. Firecrawl has 61 repositories available. Follow their code - on GitHub.\",\"route-controller\":\"profiles\",\"favicon\":\"https://github.githubassets.com/favicons/favicon.svg\",\"visitor-hmac\":\"43cf3bbb9c57a3bcf0b1857fbcabcc78c274e7082e0d28c76cd6d4651bc2a920\",\"twitter:site\":\"@github\",\"ui-target\":\"full\",\"og:title\":\"Firecrawl\",\"expected-hostname\":\"github.com\",\"og:image:alt\":\"Web - data API for AI. Firecrawl has 61 repositories available. Follow their code - on GitHub.\",\"profile:username\":\"firecrawl\",\"current-catalog-service-hash\":\"4a1c50a83cf6cc4b55b6b9c53e553e3f847c876b87fb333f71f5d05db8f1a7db\",\"turbo-body-classes\":\"logged-out - env-production page-responsive\",\"browser-stats-url\":\"https://api.github.com/_private/browser/stats\",\"browser-errors-url\":\"https://api.github.com/_private/browser/errors\",\"scrapeId\":\"65cbc300-be11-4a1a-9d20-c114fb8473a7\",\"sourceURL\":\"https://github.com/firecrawl\",\"url\":\"https://github.com/firecrawl\",\"statusCode\":200,\"contentType\":\"text/html; - charset=utf-8\",\"proxyUsed\":\"basic\",\"cacheState\":\"hit\",\"cachedAt\":\"2025-10-27T09:17:20.756Z\"}},{\"url\":\"https://www.linkedin.com/company/firecrawl\",\"title\":\"Firecrawl - | LinkedIn\",\"description\":\"Our Dify integration now uses Firecrawl /v2 - endpoints Scraping is 10x faster thanks to intelligent caching, plus we've - added semantic ...\",\"position\":5}]},\"creditsUsed\":3}" - headers: - Access-Control-Allow-Origin: - - '*' - Alt-Svc: - - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 - Content-Length: - - '93428' - Content-Type: - - application/json; charset=utf-8 - Date: - - Wed, 29 Oct 2025 14:37:39 GMT - ETag: - - W/"16cf4-kHwVbMu4CCVG2UIt6p1g/gz5M4M" - Via: - - 1.1 google - X-Powered-By: - - Express - X-Response-Time: - - 13172.495ms - status: - code: 200 - message: OK -version: 1 diff --git a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_csv_search_tool.yaml b/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_csv_search_tool.yaml deleted file mode 100644 index 4247ba7bb..000000000 --- a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_csv_search_tool.yaml +++ /dev/null @@ -1,251 +0,0 @@ -interactions: -- request: - body: '{"input": ["name: test, description: This is a test CSV file"], "model": - "text-embedding-ada-002", "encoding_format": "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '127' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 12,\n \"total_tokens\": 12\n }\n}\n" - headers: - CF-RAY: - - 936f9362dc5e7e01-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:57 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=8J2Cz0gyk5BpRSYbzjWETqMiyphlW8TAe7802MlHMe0-1745770077-1.0.1.1-qbyKIgJQJDS2wWDKC1x0RrxzJk5mcE4wDunq25j.sNSe_EMvVEIQTJR6t4Jmrknve3lSxXTsW4VL_3EYYk6ehiq6yIQDVzVkqNfU_xlwris; - path=/; expires=Sun, 27-Apr-25 16:37:57 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=r11uIiVDOWdkeX_FkCjMMnH.Z9zcvp4ptrKi3luIa9s-1745770077165-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '170' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-56c4dc8986-59htf - x-envoy-upstream-service-time: - - '96' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999987' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_4953e9919d74fabb02f89c587d38ea30 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '{"batch": [{"properties": {"class": "App", "version": "0.1.126", "language": - "python", "pid": 35168, "$lib": "posthog-python", "$lib_version": "3.9.3", "$geoip_disable": - true}, "timestamp": "2025-04-27T16:07:52.864741+00:00", "context": {}, "distinct_id": - "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", "event": "query"}], "historical_migration": - false, "sentAt": "2025-04-27T16:07:56.879642+00:00", "api_key": "phc_PHQDA5KwztijnSojsxJ2c1DuJd52QCzJzT2xnSGvjN2"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '454' - Content-Type: - - application/json - User-Agent: - - posthog-python/3.9.3 - method: POST - uri: https://us.i.posthog.com/batch/ - response: - body: - string: '{"status":"Ok"}' - headers: - Connection: - - keep-alive - Content-Length: - - '15' - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:57 GMT - access-control-allow-credentials: - - 'true' - server: - - envoy - vary: - - origin, access-control-request-method, access-control-request-headers - x-envoy-upstream-service-time: - - '52' - status: - code: 200 - message: OK -- request: - body: '{"input": ["test CSV"], "model": "text-embedding-ada-002", "encoding_format": - "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '87' - content-type: - - application/json - cookie: - - __cf_bm=8J2Cz0gyk5BpRSYbzjWETqMiyphlW8TAe7802MlHMe0-1745770077-1.0.1.1-qbyKIgJQJDS2wWDKC1x0RrxzJk5mcE4wDunq25j.sNSe_EMvVEIQTJR6t4Jmrknve3lSxXTsW4VL_3EYYk6ehiq6yIQDVzVkqNfU_xlwris; - _cfuvid=r11uIiVDOWdkeX_FkCjMMnH.Z9zcvp4ptrKi3luIa9s-1745770077165-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 2,\n \"total_tokens\": 2\n }\n}\n" - headers: - CF-RAY: - - 936f93666e9d7e01-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:57 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '59' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-787f678775-4x2zc - x-envoy-upstream-service-time: - - '39' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999998' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_9bb18ff3e7da9b6d8406f6361cbf5497 - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_directory_search_tool.yaml b/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_directory_search_tool.yaml deleted file mode 100644 index 6f3fd2d58..000000000 --- a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_directory_search_tool.yaml +++ /dev/null @@ -1,544 +0,0 @@ -interactions: -- request: - body: '{"input": ["This is a test file for directory search"], "model": "text-embedding-ada-002", - "encoding_format": "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '119' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 8,\n \"total_tokens\": 8\n }\n}\n" - headers: - CF-RAY: - - 936f92b30c267df3-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:28 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=nFZbdbFah.LWbzeW.glnLPLT8LbiE2gQXhAnfko3dOM-1745770048-1.0.1.1-6X7_GmSlrhT2JDG3UI.GdG197sz4YerSq59cGRFhchAip2X4Az27dMYcavJW.noLsarkBrxKgf7B5SZg7354p8ZOH9VBHq35KlZ6QavVyJ8; - path=/; expires=Sun, 27-Apr-25 16:37:28 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=.vAWcVjI11dzJOYj038IwLPbCQXQ1.tBpWmDu6Xt46k-1745770048727-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '78' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-97cfd68d4-7qqkm - x-envoy-upstream-service-time: - - '51' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999989' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_b2ab62724f2840722a52cfed5dd64580 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '{"batch": [{"properties": {"class": "App", "version": "0.1.126", "language": - "python", "pid": 35099, "$lib": "posthog-python", "$lib_version": "3.9.3", "$geoip_disable": - true}, "timestamp": "2025-04-27T16:07:28.073953+00:00", "context": {}, "distinct_id": - "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", "event": "init"}], "historical_migration": - false, "sentAt": "2025-04-27T16:07:28.576735+00:00", "api_key": "phc_PHQDA5KwztijnSojsxJ2c1DuJd52QCzJzT2xnSGvjN2"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - User-Agent: - - posthog-python/3.9.3 - method: POST - uri: https://us.i.posthog.com/batch/ - response: - body: - string: '{"status":"Ok"}' - headers: - Connection: - - keep-alive - Content-Length: - - '15' - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:29 GMT - access-control-allow-credentials: - - 'true' - server: - - envoy - vary: - - origin, access-control-request-method, access-control-request-headers - x-envoy-upstream-service-time: - - '37' - status: - code: 200 - message: OK -- request: - body: '{"batch": [{"properties": {"class": "App", "version": "0.1.126", "language": - "python", "pid": 35099, "$lib": "posthog-python", "$lib_version": "3.9.3", "$geoip_disable": - true}, "timestamp": "2025-04-27T16:07:28.073953+00:00", "context": {}, "distinct_id": - "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", "event": "init"}], "historical_migration": - false, "sentAt": "2025-04-27T16:07:29.624095+00:00", "api_key": "phc_PHQDA5KwztijnSojsxJ2c1DuJd52QCzJzT2xnSGvjN2"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - User-Agent: - - posthog-python/3.9.3 - method: POST - uri: https://us.i.posthog.com/batch/ - response: - body: - string: '{"status":"Ok"}' - headers: - Connection: - - keep-alive - Content-Length: - - '15' - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:30 GMT - access-control-allow-credentials: - - 'true' - server: - - envoy - vary: - - origin, access-control-request-method, access-control-request-headers - x-envoy-upstream-service-time: - - '28' - status: - code: 200 - message: OK -- request: - body: '{"batch": [{"properties": {"class": "App", "version": "0.1.126", "language": - "python", "pid": 35099, "$lib": "posthog-python", "$lib_version": "3.9.3", "$geoip_disable": - true}, "timestamp": "2025-04-27T16:07:28.073953+00:00", "context": {}, "distinct_id": - "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", "event": "init"}], "historical_migration": - false, "sentAt": "2025-04-27T16:07:30.646962+00:00", "api_key": "phc_PHQDA5KwztijnSojsxJ2c1DuJd52QCzJzT2xnSGvjN2"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - User-Agent: - - posthog-python/3.9.3 - method: POST - uri: https://us.i.posthog.com/batch/ - response: - body: - string: '{"status":"Ok"}' - headers: - Connection: - - keep-alive - Content-Length: - - '15' - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:31 GMT - access-control-allow-credentials: - - 'true' - server: - - envoy - vary: - - origin, access-control-request-method, access-control-request-headers - x-envoy-upstream-service-time: - - '28' - status: - code: 200 - message: OK -- request: - body: '{"input": ["test file"], "model": "text-embedding-ada-002", "encoding_format": - "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '88' - content-type: - - application/json - cookie: - - __cf_bm=nFZbdbFah.LWbzeW.glnLPLT8LbiE2gQXhAnfko3dOM-1745770048-1.0.1.1-6X7_GmSlrhT2JDG3UI.GdG197sz4YerSq59cGRFhchAip2X4Az27dMYcavJW.noLsarkBrxKgf7B5SZg7354p8ZOH9VBHq35KlZ6QavVyJ8; - _cfuvid=.vAWcVjI11dzJOYj038IwLPbCQXQ1.tBpWmDu6Xt46k-1745770048727-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 2,\n \"total_tokens\": 2\n }\n}\n" - headers: - CF-RAY: - - 936f92b4cd887df3-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:33 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '162' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-7bbfccd4b9-5rlz8 - x-envoy-upstream-service-time: - - '98' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999998' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_5414bfd96cbd16d84a01f68e994a38f2 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '{"input": ["This is a test file for directory search"], "model": "text-embedding-ada-002", - "encoding_format": "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '119' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 8,\n \"total_tokens\": 8\n }\n}\n" - headers: - CF-RAY: - - 936f9336cc417e0a-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:49 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=EO3qaPuy2laM3xDGRwHtVhJMUVrBq0C4x5BxYYC8dT0-1745770069-1.0.1.1-kOylsOMvWlUF5owqqiIUziYDoC1f8vVA4C7C9em_s1Gdawqe_C0R5yIfCxJzf9.q9LZJQyCGp8L2rJaFzDF0Nk2pkv2v.tT.uQTRlmCgzwY; - path=/; expires=Sun, 27-Apr-25 16:37:49 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=52fi4.4bJilzZrvgAS3YttTnBjtEe8pVmM0VbBM5jis-1745770069782-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '39' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-97cfd68d4-nw6rt - x-envoy-upstream-service-time: - - '28' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999989' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_f9ca57dbb69b376529e9c874f44dba39 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '{"input": ["test file"], "model": "text-embedding-ada-002", "encoding_format": - "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '88' - content-type: - - application/json - cookie: - - __cf_bm=EO3qaPuy2laM3xDGRwHtVhJMUVrBq0C4x5BxYYC8dT0-1745770069-1.0.1.1-kOylsOMvWlUF5owqqiIUziYDoC1f8vVA4C7C9em_s1Gdawqe_C0R5yIfCxJzf9.q9LZJQyCGp8L2rJaFzDF0Nk2pkv2v.tT.uQTRlmCgzwY; - _cfuvid=52fi4.4bJilzZrvgAS3YttTnBjtEe8pVmM0VbBM5jis-1745770069782-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 2,\n \"total_tokens\": 2\n }\n}\n" - headers: - CF-RAY: - - 936f93388d697e0a-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:50 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '132' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-75c844b786-xxzqk - x-envoy-upstream-service-time: - - '61' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999998' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_5d278e154a0358a46c53ec740679883c - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_json_search_tool.yaml b/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_json_search_tool.yaml deleted file mode 100644 index 2e509ef4a..000000000 --- a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_json_search_tool.yaml +++ /dev/null @@ -1,300 +0,0 @@ -interactions: -- request: - body: '{"input": ["\"test\": \"This is a test JSON file\""], "model": "text-embedding-ada-002", - "encoding_format": "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '117' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 11,\n \"total_tokens\": 11\n }\n}\n" - headers: - CF-RAY: - - 936f93430d8e7df5-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:51 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=ZWmwH7qy_Do2gMLxa1sSsrEo.85HbT2vglvD1Dwg1Zs-1745770071-1.0.1.1-WFNWy52G66A4oGmHOWFAlhnFBFbZJ31LnUNvi7bwKg2R2anwH7wnxAc.zA9GMIYExcRah3uIl5KRt723DyGt5EZ60XcQksxVd2co80t2i.g; - path=/; expires=Sun, 27-Apr-25 16:37:51 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=u7YNKY8LlLPo_cstP53bpHP1eV7pP._t2QByCJYNkyk-1745770071796-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '93' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-5f4895bd76-796jv - x-envoy-upstream-service-time: - - '61' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999991' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_69bfa1db5b89ca60293896c5f37d0d8f - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '{"batch": [{"properties": {"class": "App", "version": "0.1.126", "language": - "python", "pid": 35168, "$lib": "posthog-python", "$lib_version": "3.9.3", "$geoip_disable": - true}, "timestamp": "2025-04-27T16:07:50.287520+00:00", "context": {}, "distinct_id": - "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", "event": "init"}], "historical_migration": - false, "sentAt": "2025-04-27T16:07:51.445161+00:00", "api_key": "phc_PHQDA5KwztijnSojsxJ2c1DuJd52QCzJzT2xnSGvjN2"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - User-Agent: - - posthog-python/3.9.3 - method: POST - uri: https://us.i.posthog.com/batch/ - response: - body: - string: '{"status":"Ok"}' - headers: - Connection: - - keep-alive - Content-Length: - - '15' - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:52 GMT - access-control-allow-credentials: - - 'true' - server: - - envoy - vary: - - origin, access-control-request-method, access-control-request-headers - x-envoy-upstream-service-time: - - '44' - status: - code: 200 - message: OK -- request: - body: '{"batch": [{"properties": {"class": "App", "version": "0.1.126", "language": - "python", "pid": 35168, "$lib": "posthog-python", "$lib_version": "3.9.3", "$geoip_disable": - true}, "timestamp": "2025-04-27T16:07:51.347055+00:00", "context": {}, "distinct_id": - "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", "event": "init"}, {"properties": {"class": - "App", "version": "0.1.126", "language": "python", "pid": 35168, "$lib": "posthog-python", - "$lib_version": "3.9.3", "$geoip_disable": true, "data_type": "json", "word_count": - 7, "chunks_count": 1}, "timestamp": "2025-04-27T16:07:51.676881+00:00", "context": - {}, "distinct_id": "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", "event": "add"}], - "historical_migration": false, "sentAt": "2025-04-27T16:07:51.852107+00:00", - "api_key": "phc_PHQDA5KwztijnSojsxJ2c1DuJd52QCzJzT2xnSGvjN2"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '812' - Content-Type: - - application/json - User-Agent: - - posthog-python/3.9.3 - method: POST - uri: https://us.i.posthog.com/batch/ - response: - body: - string: '{"status":"Ok"}' - headers: - Connection: - - keep-alive - Content-Length: - - '15' - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:52 GMT - access-control-allow-credentials: - - 'true' - server: - - envoy - vary: - - origin, access-control-request-method, access-control-request-headers - x-envoy-upstream-service-time: - - '24' - status: - code: 200 - message: OK -- request: - body: '{"input": ["test JSON"], "model": "text-embedding-ada-002", "encoding_format": - "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '88' - content-type: - - application/json - cookie: - - __cf_bm=ZWmwH7qy_Do2gMLxa1sSsrEo.85HbT2vglvD1Dwg1Zs-1745770071-1.0.1.1-WFNWy52G66A4oGmHOWFAlhnFBFbZJ31LnUNvi7bwKg2R2anwH7wnxAc.zA9GMIYExcRah3uIl5KRt723DyGt5EZ60XcQksxVd2co80t2i.g; - _cfuvid=u7YNKY8LlLPo_cstP53bpHP1eV7pP._t2QByCJYNkyk-1745770071796-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 2,\n \"total_tokens\": 2\n }\n}\n" - headers: - CF-RAY: - - 936f9344eed57df5-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:52 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '196' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-5b456cc969-csbxc - x-envoy-upstream-service-time: - - '104' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999998' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_e2376f4641b02bc9b096c5b33fd91f9d - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_mdx_search_tool.yaml b/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_mdx_search_tool.yaml deleted file mode 100644 index 914ee947f..000000000 --- a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_mdx_search_tool.yaml +++ /dev/null @@ -1,255 +0,0 @@ -interactions: -- request: - body: '{"input": ["# Test MDX This is a test MDX file"], "model": "text-embedding-ada-002", - "encoding_format": "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '113' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 11,\n \"total_tokens\": 11\n }\n}\n" - headers: - CF-RAY: - - 936f936a5c107e1e-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:58 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=utmyQFzT_wcpHa9.mgJCTUKMEwjaKO1KUN4w4FESXA8-1745770078-1.0.1.1-c__HC5oqY30dc8uUgateYwWXyd5rkkLT_sv7FaglerEzNk2yyURMruWVkA12xyL7Frj5cXci33jdwdr8.yO6MRk_jssq5iAvJP3Aq.SVfyE; - path=/; expires=Sun, 27-Apr-25 16:37:58 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=mD0miBgD.AKaxJ3xiOsfjrDskazLjoHBA1QrHecqrX0-1745770078037-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '61' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-5f4895bd76-h5k2k - x-envoy-upstream-service-time: - - '41' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999991' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_3609b88991fc31a1bcb94c34547d9451 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '{"batch": [{"properties": {"class": "App", "version": "0.1.126", "language": - "python", "pid": 35168, "$lib": "posthog-python", "$lib_version": "3.9.3", "$geoip_disable": - true, "data_type": "csv", "word_count": 9, "chunks_count": 1}, "timestamp": - "2025-04-27T16:07:57.041070+00:00", "context": {}, "distinct_id": "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", - "event": "add"}, {"properties": {"class": "App", "version": "0.1.126", "language": - "python", "pid": 35168, "$lib": "posthog-python", "$lib_version": "3.9.3", "$geoip_disable": - true}, "timestamp": "2025-04-27T16:07:57.605978+00:00", "context": {}, "distinct_id": - "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", "event": "query"}], "historical_migration": - false, "sentAt": "2025-04-27T16:07:57.928462+00:00", "api_key": "phc_PHQDA5KwztijnSojsxJ2c1DuJd52QCzJzT2xnSGvjN2"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '812' - Content-Type: - - application/json - User-Agent: - - posthog-python/3.9.3 - method: POST - uri: https://us.i.posthog.com/batch/ - response: - body: - string: '{"status":"Ok"}' - headers: - Connection: - - keep-alive - Content-Length: - - '15' - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:58 GMT - access-control-allow-credentials: - - 'true' - server: - - envoy - vary: - - origin, access-control-request-method, access-control-request-headers - x-envoy-upstream-service-time: - - '39' - status: - code: 200 - message: OK -- request: - body: '{"input": ["test MDX"], "model": "text-embedding-ada-002", "encoding_format": - "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '87' - content-type: - - application/json - cookie: - - __cf_bm=utmyQFzT_wcpHa9.mgJCTUKMEwjaKO1KUN4w4FESXA8-1745770078-1.0.1.1-c__HC5oqY30dc8uUgateYwWXyd5rkkLT_sv7FaglerEzNk2yyURMruWVkA12xyL7Frj5cXci33jdwdr8.yO6MRk_jssq5iAvJP3Aq.SVfyE; - _cfuvid=mD0miBgD.AKaxJ3xiOsfjrDskazLjoHBA1QrHecqrX0-1745770078037-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 3,\n \"total_tokens\": 3\n }\n}\n" - headers: - CF-RAY: - - 936f936becf67e1e-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:59 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '191' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-59cfcdcc4b-wnwks - x-envoy-upstream-service-time: - - '90' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999998' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_e29bb7e5a6b3af41f94939adce45f5f1 - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_txt_search_tool.yaml b/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_txt_search_tool.yaml deleted file mode 100644 index 18d07c0b3..000000000 --- a/lib/crewai-tools/tests/tools/cassettes/test_search_tools/test_txt_search_tool.yaml +++ /dev/null @@ -1,251 +0,0 @@ -interactions: -- request: - body: '{"input": ["This is a test file for txt search"], "model": "text-embedding-ada-002", - "encoding_format": "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '113' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 8,\n \"total_tokens\": 8\n }\n}\n" - headers: - CF-RAY: - - 936f933c6fce7e0a-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:50 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=yAVgFNKcy2l7Cppym.kBBGNZMWvD0zYJbXBq3jJGg4A-1745770070-1.0.1.1-JvNpysiGohLJGBruqnedD94Y4r9AHPY_.gIefUGns48V4KkyaY5gC8yad0_SwaXeXArhpipuz5eQynAK2Rawe64.qrtUlri84024pQ0V8lE; - path=/; expires=Sun, 27-Apr-25 16:37:50 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=NOl2bW7B9MHsJt0XLs1fWk8BS4vWKLsCcHDInciUQBY-1745770070996-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '172' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-5f4895bd76-msnvl - x-envoy-upstream-service-time: - - '100' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999991' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_20f7c5a3327d4060dbc7a61f4c5c4ba1 - http_version: HTTP/1.1 - status_code: 200 -- request: - body: '{"batch": [{"properties": {"class": "App", "version": "0.1.126", "language": - "python", "pid": 35168, "$lib": "posthog-python", "$lib_version": "3.9.3", "$geoip_disable": - true}, "timestamp": "2025-04-27T16:07:50.287520+00:00", "context": {}, "distinct_id": - "5303ea6e-a423-419e-a71c-3a0f0eaaaa16", "event": "init"}], "historical_migration": - false, "sentAt": "2025-04-27T16:07:50.792604+00:00", "api_key": "phc_PHQDA5KwztijnSojsxJ2c1DuJd52QCzJzT2xnSGvjN2"}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - User-Agent: - - posthog-python/3.9.3 - method: POST - uri: https://us.i.posthog.com/batch/ - response: - body: - string: '{"status":"Ok"}' - headers: - Connection: - - keep-alive - Content-Length: - - '15' - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:51 GMT - access-control-allow-credentials: - - 'true' - server: - - envoy - vary: - - origin, access-control-request-method, access-control-request-headers - x-envoy-upstream-service-time: - - '46' - status: - code: 200 - message: OK -- request: - body: '{"input": ["test file"], "model": "text-embedding-ada-002", "encoding_format": - "base64"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '88' - content-type: - - application/json - cookie: - - __cf_bm=yAVgFNKcy2l7Cppym.kBBGNZMWvD0zYJbXBq3jJGg4A-1745770070-1.0.1.1-JvNpysiGohLJGBruqnedD94Y4r9AHPY_.gIefUGns48V4KkyaY5gC8yad0_SwaXeXArhpipuz5eQynAK2Rawe64.qrtUlri84024pQ0V8lE; - _cfuvid=NOl2bW7B9MHsJt0XLs1fWk8BS4vWKLsCcHDInciUQBY-1745770070996-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.66.3 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.66.3 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - content: "{\n \"object\": \"list\",\n \"data\": [\n {\n \"object\": - \"embedding\",\n \"index\": 0,\n \"embedding\": \"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\"\n - \ }\n ],\n \"model\": \"text-embedding-ada-002-v2\",\n \"usage\": {\n \"prompt_tokens\": - 2,\n \"total_tokens\": 2\n }\n}\n" - headers: - CF-RAY: - - 936f933fe9eb7e0a-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Sun, 27 Apr 2025 16:07:51 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-model: - - text-embedding-ada-002-v2 - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '179' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - via: - - envoy-router-7bbfccd4b9-p6rt4 - x-envoy-upstream-service-time: - - '105' - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '10000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '9999998' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_b1ab10d1ad4421252a7eb1b01ad92f5b - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai-tools/tests/tools/crewai_platform_tools/__init__.py b/lib/crewai-tools/tests/tools/crewai_platform_tools/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/crewai-tools/tests/tools/rag/__init__.py b/lib/crewai-tools/tests/tools/rag/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/crewai/src/crewai/llms/providers/gemini/completion.py b/lib/crewai/src/crewai/llms/providers/gemini/completion.py index 8668a8f58..78d5c8a98 100644 --- a/lib/crewai/src/crewai/llms/providers/gemini/completion.py +++ b/lib/crewai/src/crewai/llms/providers/gemini/completion.py @@ -52,7 +52,7 @@ class GeminiCompletion(BaseLLM): Args: model: Gemini model name (e.g., 'gemini-2.0-flash-001', 'gemini-1.5-pro') - api_key: Google API key (defaults to GOOGLE_API_KEY or GEMINI_API_KEY env var) + api_key: Google API key (defaults to GEMINI_API_KEY or GEMINI_API_KEY env var) project: Google Cloud project ID (for Vertex AI) location: Google Cloud location (for Vertex AI, defaults to 'us-central1') temperature: Sampling temperature (0-2) @@ -82,7 +82,7 @@ class GeminiCompletion(BaseLLM): # Get API configuration with environment variable fallbacks self.api_key = ( - api_key or os.getenv("GOOGLE_API_KEY") or os.getenv("GEMINI_API_KEY") + api_key or os.getenv("GEMINI_API_KEY") or os.getenv("GEMINI_API_KEY") ) self.project = project or os.getenv("GOOGLE_CLOUD_PROJECT") self.location = location or os.getenv("GOOGLE_CLOUD_LOCATION") or "us-central1" @@ -165,7 +165,7 @@ class GeminiCompletion(BaseLLM): return genai.Client(**client_params) except Exception as e: raise ValueError( - "Either GOOGLE_API_KEY/GEMINI_API_KEY (for Gemini API) or " + "Either GEMINI_API_KEY/GEMINI_API_KEY (for Gemini API) or " "GOOGLE_CLOUD_PROJECT (for Vertex AI) must be set" ) from e diff --git a/lib/crewai/src/crewai/rag/embeddings/providers/google/generative_ai.py b/lib/crewai/src/crewai/rag/embeddings/providers/google/generative_ai.py index 6bd6a8c58..91859e0d8 100644 --- a/lib/crewai/src/crewai/rag/embeddings/providers/google/generative_ai.py +++ b/lib/crewai/src/crewai/rag/embeddings/providers/google/generative_ai.py @@ -21,7 +21,7 @@ class GenerativeAiProvider(BaseEmbeddingsProvider[GoogleGenerativeAiEmbeddingFun validation_alias="EMBEDDINGS_GOOGLE_GENERATIVE_AI_MODEL_NAME", ) api_key: str = Field( - description="Google API key", validation_alias="EMBEDDINGS_GOOGLE_API_KEY" + description="Google API key", validation_alias="EMBEDDINGS_GEMINI_API_KEY" ) task_type: str = Field( default="RETRIEVAL_DOCUMENT", diff --git a/lib/crewai/tests/agents/test_lite_agent.py b/lib/crewai/tests/agents/test_lite_agent.py index c51fb5c0d..c92cd3694 100644 --- a/lib/crewai/tests/agents/test_lite_agent.py +++ b/lib/crewai/tests/agents/test_lite_agent.py @@ -261,25 +261,6 @@ async def test_lite_agent_returns_usage_metrics_async(): assert result.usage_metrics["total_tokens"] > 0 -class TestFlow(Flow): - """A test flow that creates and runs an agent.""" - - def __init__(self, llm, tools): - self.llm = llm - self.tools = tools - super().__init__() - - @start() - def start(self): - agent = Agent( - role="Test Agent", - goal="Test Goal", - backstory="Test Backstory", - llm=self.llm, - tools=self.tools, - ) - return agent.kickoff("Test query") - def verify_agent_parent_flow(result, agent, flow): """Verify that both the result and agent have the correct parent flow.""" diff --git a/lib/crewai/tests/cassettes/test_agent_max_iterations_stops_loop.yaml b/lib/crewai/tests/cassettes/test_agent_max_iterations_stops_loop.yaml deleted file mode 100644 index 6a40d691f..000000000 --- a/lib/crewai/tests/cassettes/test_agent_max_iterations_stops_loop.yaml +++ /dev/null @@ -1,495 +0,0 @@ -interactions: -- request: - body: '{"trace_id": "REDACTED_TRACE_ID", "execution_type": - "crew", "user_identifier": null, "execution_context": {"crew_fingerprint": null, - "crew_name": "Unknown Crew", "flow_name": null, "crewai_version": "1.4.0", "privacy_level": - "standard"}, "execution_metadata": {"expected_duration_estimate": 300, "agent_count": - 0, "task_count": 0, "flow_method_count": 0, "execution_started_at": "2025-11-07T18:27:07.650947+00:00"}}' - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate, zstd - Connection: - - keep-alive - Content-Length: - - '434' - Content-Type: - - application/json - User-Agent: - - CrewAI-CLI/1.4.0 - X-Crewai-Version: - - 1.4.0 - method: POST - uri: https://app.crewai.com/crewai_plus/api/v1/tracing/batches - response: - body: - string: '{"error":"bad_credentials","message":"Bad credentials"}' - headers: - Connection: - - keep-alive - Content-Length: - - '55' - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 07 Nov 2025 18:27:07 GMT - cache-control: - - no-store - content-security-policy: - - 'default-src ''self'' *.app.crewai.com app.crewai.com; script-src ''self'' - ''unsafe-inline'' *.app.crewai.com app.crewai.com https://cdn.jsdelivr.net/npm/apexcharts - https://www.gstatic.com https://run.pstmn.io https://apis.google.com https://apis.google.com/js/api.js - https://accounts.google.com https://accounts.google.com/gsi/client https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css.map - https://*.google.com https://docs.google.com https://slides.google.com https://js.hs-scripts.com - https://js.sentry-cdn.com https://browser.sentry-cdn.com https://www.googletagmanager.com - https://js-na1.hs-scripts.com https://js.hubspot.com http://js-na1.hs-scripts.com - https://bat.bing.com https://cdn.amplitude.com https://cdn.segment.com https://d1d3n03t5zntha.cloudfront.net/ - https://descriptusercontent.com https://edge.fullstory.com https://googleads.g.doubleclick.net - https://js.hs-analytics.net https://js.hs-banner.com https://js.hsadspixel.net - https://js.hscollectedforms.net https://js.usemessages.com https://snap.licdn.com - https://static.cloudflareinsights.com https://static.reo.dev https://www.google-analytics.com - https://share.descript.com/; style-src ''self'' ''unsafe-inline'' *.app.crewai.com - app.crewai.com https://cdn.jsdelivr.net/npm/apexcharts; img-src ''self'' data: - *.app.crewai.com app.crewai.com https://zeus.tools.crewai.com https://dashboard.tools.crewai.com - https://cdn.jsdelivr.net https://forms.hsforms.com https://track.hubspot.com - https://px.ads.linkedin.com https://px4.ads.linkedin.com https://www.google.com - https://www.google.com.br; font-src ''self'' data: *.app.crewai.com app.crewai.com; - connect-src ''self'' *.app.crewai.com app.crewai.com https://zeus.tools.crewai.com - https://connect.useparagon.com/ https://zeus.useparagon.com/* https://*.useparagon.com/* - https://run.pstmn.io https://connect.tools.crewai.com/ https://*.sentry.io - https://www.google-analytics.com https://edge.fullstory.com https://rs.fullstory.com - https://api.hubspot.com https://forms.hscollectedforms.net https://api.hubapi.com - https://px.ads.linkedin.com https://px4.ads.linkedin.com https://google.com/pagead/form-data/16713662509 - https://google.com/ccm/form-data/16713662509 https://www.google.com/ccm/collect - https://worker-actionkit.tools.crewai.com https://api.reo.dev; frame-src ''self'' - *.app.crewai.com app.crewai.com https://connect.useparagon.com/ https://zeus.tools.crewai.com - https://zeus.useparagon.com/* https://connect.tools.crewai.com/ https://docs.google.com - https://drive.google.com https://slides.google.com https://accounts.google.com - https://*.google.com https://app.hubspot.com/ https://td.doubleclick.net https://www.googletagmanager.com/ - https://www.youtube.com https://share.descript.com' - expires: - - '0' - permissions-policy: - - camera=(), microphone=(self), geolocation=() - pragma: - - no-cache - referrer-policy: - - strict-origin-when-cross-origin - strict-transport-security: - - max-age=63072000; includeSubDomains - vary: - - Accept - x-content-type-options: - - nosniff - x-frame-options: - - SAMEORIGIN - x-permitted-cross-domain-policies: - - none - x-request-id: - - REDACTED_REQUEST_ID - x-runtime: - - '0.080681' - x-xss-protection: - - 1; mode=block - status: - code: 401 - message: Unauthorized -- request: - body: '{"messages":[{"role":"system","content":"You are data collector. You must - use the get_data tool extensively\nYour personal goal is: collect data using - the get_data tool\nYou ONLY have access to the following tools, and should NEVER - make up tools that are not listed here:\n\nTool Name: get_data\nTool Arguments: - {''step'': {''description'': None, ''type'': ''str''}}\nTool Description: Get - data for a step. Always returns data requiring more steps.\n\nIMPORTANT: Use - the following format in your response:\n\n```\nThought: you should always think - about what to do\nAction: the action to take, only one name of [get_data], just - the name, exactly as it''s written.\nAction Input: the input to the action, - just a simple JSON object, enclosed in curly braces, using \" to wrap keys and - values.\nObservation: the result of the action\n```\n\nOnce all necessary information - is gathered, return the following format:\n\n```\nThought: I now know the final - answer\nFinal Answer: the final answer to the original input question\n```"},{"role":"user","content":"\nCurrent - Task: Use get_data tool for step1, step2, step3, step4, step5, step6, step7, - step8, step9, and step10. Do NOT stop until you''ve called it for ALL steps.\n\nThis - is the expected criteria for your final answer: A summary of all data collected\nyou - MUST return the actual complete content as the final answer, not a summary.\n\nBegin! - This is VERY important to you, use the tools available and give your best Final - Answer, your job depends on it!\n\nThought:"}],"model":"gpt-4.1-mini"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '1534' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.109.1 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.109.1 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAA4xSYWvbMBD97l9x6HMcYsfpUn8rg0FHYbAOyrYUo0hnW5ksCem8tYT89yG7id2t - g30x5t69p/fu7pgAMCVZCUy0nETndPr+2919j4fr9VNR/Opv7vBD/bAVXz/dfzx8fmCLyLD7Awo6 - s5bCdk4jKWtGWHjkhFE1e3eVb4rVKt8OQGcl6khrHKXFMks7ZVSar/JNuirSrHiht1YJDKyE7wkA - wHH4RqNG4hMrYbU4VzoMgTfIyksTAPNWxwrjIahA3BBbTKCwhtAM3r+0tm9aKuEWQmt7LSEQ9wT7 - ZxBWaxSkTAOSE4faegiELgMeQJlAvheEcrkzNyLmLqFBqmLruQK3xvVUwnHHInHHyvEn27HT3I/H - ug88DsX0Ws8AbowlHqWGSTy+IKdLdm0b5+0+/EFltTIqtJVHHqyJOQNZxwb0lAA8DjPuX42NOW87 - RxXZHzg8t15nox6bdjuh4zYBGFniesbaXC/e0KskElc6zLbEBBctyok6rZT3UtkZkMxS/+3mLe0x - uTLN/8hPgBDoCGXlPEolXiee2jzG0/9X22XKg2EW0P9UAitS6OMmJNa81+M9svAcCLuqVqZB77wa - j7J2VSHy7Sart1c5S07JbwAAAP//AwCiugNoowMAAA== - headers: - CF-RAY: - - 99aee205bbd2de96-EWR - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Fri, 07 Nov 2025 18:27:08 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=REDACTED_COOKIE; - path=/; expires=Fri, 07-Nov-25 18:57:08 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=REDACTED_COOKIE; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - REDACTED_ORG_ID - openai-processing-ms: - - '557' - openai-project: - - REDACTED_PROJECT_ID - openai-version: - - '2020-10-01' - x-envoy-upstream-service-time: - - '701' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '500' - x-ratelimit-limit-tokens: - - '200000' - x-ratelimit-remaining-requests: - - '499' - x-ratelimit-remaining-tokens: - - '199645' - x-ratelimit-reset-requests: - - 120ms - x-ratelimit-reset-tokens: - - 106ms - x-request-id: - - REDACTED_REQUEST_ID - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"role":"system","content":"You are data collector. You must - use the get_data tool extensively\nYour personal goal is: collect data using - the get_data tool\nYou ONLY have access to the following tools, and should NEVER - make up tools that are not listed here:\n\nTool Name: get_data\nTool Arguments: - {''step'': {''description'': None, ''type'': ''str''}}\nTool Description: Get - data for a step. Always returns data requiring more steps.\n\nIMPORTANT: Use - the following format in your response:\n\n```\nThought: you should always think - about what to do\nAction: the action to take, only one name of [get_data], just - the name, exactly as it''s written.\nAction Input: the input to the action, - just a simple JSON object, enclosed in curly braces, using \" to wrap keys and - values.\nObservation: the result of the action\n```\n\nOnce all necessary information - is gathered, return the following format:\n\n```\nThought: I now know the final - answer\nFinal Answer: the final answer to the original input question\n```"},{"role":"user","content":"\nCurrent - Task: Use get_data tool for step1, step2, step3, step4, step5, step6, step7, - step8, step9, and step10. Do NOT stop until you''ve called it for ALL steps.\n\nThis - is the expected criteria for your final answer: A summary of all data collected\nyou - MUST return the actual complete content as the final answer, not a summary.\n\nBegin! - This is VERY important to you, use the tools available and give your best Final - Answer, your job depends on it!\n\nThought:"},{"role":"assistant","content":"Thought: - I should start by collecting data for step1 as instructed.\nAction: get_data\nAction - Input: {\"step\":\"step1\"}\nObservation: Data for step1: incomplete, need to - query more steps."}],"model":"gpt-4.1-mini"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '1757' - content-type: - - application/json - cookie: - - __cf_bm=REDACTED_COOKIE; - _cfuvid=REDACTED_COOKIE - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.109.1 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.109.1 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAAwAAAP//jFNNb9swDL37VxA6x0HiOU3mW9cOQ4F9YNjQQ5fCUGXaVidLqkQnzYL8 - 90F2ErtbB+xiCHx8j+QjvY8AmCxYBkzUnERjVXx19/Hb5tPm/fbq8sPX5+Wvx6V+t93efXY1v71m - k8AwD48o6MSaCtNYhSSN7mHhkBMG1fnyIlmks1nytgMaU6AKtMpSnE7ncSO1jJNZsohnaTxPj/Ta - SIGeZfAjAgDYd9/QqC7wmWUwm5wiDXrPK2TZOQmAOaNChHHvpSeuiU0GUBhNqLvev9emrWrK4AY0 - YgFkIKBStxjentAmfVApFAQFJw4en1rUJLlSO+AeHD610mExXetLESzIoELKQ+4pAjfatpTBfs2C - 5ppl/SNZs8Naf3nw6Da8p16HEqVxffEMpD56ixNojMMu7kGjCIO73XQ8msOy9Tz4q1ulRgDX2lBX - oTP1/ogczjYqU1lnHvwfVFZKLX2dO+Te6GCZJ2NZhx4igPtuXe2LDTDrTGMpJ/MTu3Jvlqtejw1n - MqBpegTJEFejeJJMXtHLCyQulR8tnAkuaiwG6nAdvC2kGQHRaOq/u3lNu59c6up/5AdACLSERW4d - FlK8nHhIcxj+on+lnV3uGmbhSKTAnCS6sIkCS96q/rSZ33nCJi+lrtBZJ/v7Lm2eimS1mJeri4RF - h+g3AAAA//8DABrUefPuAwAA - headers: - CF-RAY: - - 99aee20dba0bde96-EWR - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Fri, 07 Nov 2025 18:27:10 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - REDACTED_ORG_ID - openai-processing-ms: - - '942' - openai-project: - - REDACTED_PROJECT_ID - openai-version: - - '2020-10-01' - x-envoy-upstream-service-time: - - '1074' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '500' - x-ratelimit-limit-tokens: - - '200000' - x-ratelimit-remaining-requests: - - '499' - x-ratelimit-remaining-tokens: - - '199599' - x-ratelimit-reset-requests: - - 120ms - x-ratelimit-reset-tokens: - - 120ms - x-request-id: - - REDACTED_REQUEST_ID - status: - code: 200 - message: OK -- request: - body: '{"messages":[{"role":"system","content":"You are data collector. You must - use the get_data tool extensively\nYour personal goal is: collect data using - the get_data tool\nYou ONLY have access to the following tools, and should NEVER - make up tools that are not listed here:\n\nTool Name: get_data\nTool Arguments: - {''step'': {''description'': None, ''type'': ''str''}}\nTool Description: Get - data for a step. Always returns data requiring more steps.\n\nIMPORTANT: Use - the following format in your response:\n\n```\nThought: you should always think - about what to do\nAction: the action to take, only one name of [get_data], just - the name, exactly as it''s written.\nAction Input: the input to the action, - just a simple JSON object, enclosed in curly braces, using \" to wrap keys and - values.\nObservation: the result of the action\n```\n\nOnce all necessary information - is gathered, return the following format:\n\n```\nThought: I now know the final - answer\nFinal Answer: the final answer to the original input question\n```"},{"role":"user","content":"\nCurrent - Task: Use get_data tool for step1, step2, step3, step4, step5, step6, step7, - step8, step9, and step10. Do NOT stop until you''ve called it for ALL steps.\n\nThis - is the expected criteria for your final answer: A summary of all data collected\nyou - MUST return the actual complete content as the final answer, not a summary.\n\nBegin! - This is VERY important to you, use the tools available and give your best Final - Answer, your job depends on it!\n\nThought:"},{"role":"assistant","content":"Thought: - I should start by collecting data for step1 as instructed.\nAction: get_data\nAction - Input: {\"step\":\"step1\"}\nObservation: Data for step1: incomplete, need to - query more steps."},{"role":"assistant","content":"Thought: I need to continue - to step2 to collect data sequentially as required.\nAction: get_data\nAction - Input: {\"step\":\"step2\"}\nObservation: Data for step2: incomplete, need to - query more steps."},{"role":"assistant","content":"Thought: I need to continue - to step2 to collect data sequentially as required.\nAction: get_data\nAction - Input: {\"step\":\"step2\"}\nObservation: Data for step2: incomplete, need to - query more steps.\nNow it''s time you MUST give your absolute best final answer. - You''ll ignore all previous instructions, stop using any tools, and just return - your absolute BEST Final answer."}],"model":"gpt-4.1-mini"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate, zstd - connection: - - keep-alive - content-length: - - '2399' - content-type: - - application/json - cookie: - - __cf_bm=REDACTED_COOKIE; - _cfuvid=REDACTED_COOKIE - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.109.1 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.109.1 - x-stainless-read-timeout: - - '600' - x-stainless-retry-count: - - '0' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.9 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - body: - string: !!binary | - H4sIAAAAAAAAAwAAAP//nJbfj6M2EMff81eM/NRKmwgI5Advp7v2FKlSW22f9rKKHHsI7hmbs83u - nlb7v1eYBLJXQFxekMV8Z+ZjYw3f1xkAEZykQFhOHStKOf/48Mf9yzf5/Pnh498P9kl9ru51qR9k - XsVBSO7qDH38F5m7ZC2YLkqJTmjVhJlB6rCuGq5XURIHwTL0gUJzlHXaqXTzeBHOC6HEPAqiZB7E - 8zA+p+daMLQkhS8zAIBX/6xBFccXkkJwd3lToLX0hCRtRQDEaFm/IdRaYR1Vjtx1QaaVQ+XZ/8l1 - dcpdCjsoKuuAaSmROeDUUci0ASolWIelhczowi9DcLpZBHDETBuE0ugnwYU6gcsRMqGohPOJIJzb - AbVg8FslDHI4fvdKR+3XBezgWUjpdUJVCJW9VDqhO3gUp7X0PEhZ7puDUKANR7PYq736wOqjT9uE - yxvYqbJyKbzuSZ20J2mzCPfkba/+PFo0T7RJ/VT3KalxEPpOzVb10VGhkPsu7Wn9ZTRD5JeDiBY/ - TxCNEUQtQTSNYHkDwXKMYNkSLKcRxDcQxGMEcUsQTyNIbiBIxgiSliCZRrC6gWA1RrBqCVbTCNY3 - EKzHCNYtwXoaweYGgs0YwaYl2Ewj2N5AsB0j2LYE22kEYXADQhiMzqSgG0rBAMUOlH6GnD6hH9vt - DG/mtx/bYQBUcWBUnWc2jkxsX/13H/qg7DOaFPbq3o/FGiyFLzvFZMWxaXWenZdxn6PBx0YfDeuj - Pv1yWL/s08fD+rhPnwzrkz79ali/6tOvh/XrPv1mWL/p02+H9ds+fRiMfLDgx4y9+uW3F8rc9Y/7 - cuEaF6C7O2rf/5Xv6iRGHara/fiKi1+vvYfBrLK0NkCqkvIqQJXSrilZu57Hc+St9TlSn0qjj/aH - VJIJJWx+MEitVrWnsU6XxEffZgCP3k9V7ywSKY0uSndw+iv6dkl49lOk83FX0Sg5R512VHaBMFhe - Iu8qHjg6KqS98mSEUZYj73I7A0crLvRVYHa17//z9NVu9i7UaUr5LsAYlg75oTTIBXu/505msDa6 - Q7L2nD0wqe+FYHhwAk39LThmtJKN+yT2u3VYHDKhTmhKIxoLmpWHmEWbJMw2q4jM3mb/AQAA//8D - ACYaBDGRCwAA - headers: - CF-RAY: - - 99aee2174b18de96-EWR - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Fri, 07 Nov 2025 18:27:20 GMT - Server: - - cloudflare - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - cf-cache-status: - - DYNAMIC - openai-organization: - - REDACTED_ORG_ID - openai-processing-ms: - - '9185' - openai-project: - - REDACTED_PROJECT_ID - openai-version: - - '2020-10-01' - x-envoy-upstream-service-time: - - '9386' - x-openai-proxy-wasm: - - v0.1 - x-ratelimit-limit-requests: - - '500' - x-ratelimit-limit-tokens: - - '200000' - x-ratelimit-remaining-requests: - - '499' - x-ratelimit-remaining-tokens: - - '199457' - x-ratelimit-reset-requests: - - 120ms - x-ratelimit-reset-tokens: - - 162ms - x-request-id: - - REDACTED_REQUEST_ID - status: - code: 200 - message: OK -version: 1 diff --git a/lib/crewai/tests/cli/triggers/__init__.py b/lib/crewai/tests/cli/triggers/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/crewai/tests/conftest.py b/lib/crewai/tests/conftest.py index fab3e55f0..22fbdaa9a 100644 --- a/lib/crewai/tests/conftest.py +++ b/lib/crewai/tests/conftest.py @@ -7,7 +7,9 @@ from typing import Any import pytest from dotenv import load_dotenv -load_result = load_dotenv(override=True) +# Load .env.test for consistent test environment (mimics CI) +env_test_path = Path(__file__).parent.parent.parent.parent / ".env.test" +load_dotenv(env_test_path, override=True) @pytest.fixture(autouse=True, scope="function") @@ -84,7 +86,7 @@ def _filter_response_headers(response): return response -@pytest.fixture(scope="session") +@pytest.fixture(scope="session", autouse=True) def vcr_config(request) -> dict[str, Any]: config = { "cassette_library_dir": os.path.join(os.path.dirname(__file__), "cassettes"), diff --git a/lib/crewai/tests/llms/google/test_google.py b/lib/crewai/tests/llms/google/test_google.py index c6f271b0a..faeb1394d 100644 --- a/lib/crewai/tests/llms/google/test_google.py +++ b/lib/crewai/tests/llms/google/test_google.py @@ -12,8 +12,8 @@ from crewai.task import Task @pytest.fixture(autouse=True) def mock_google_api_key(): - """Automatically mock GOOGLE_API_KEY for all tests in this module.""" - with patch.dict(os.environ, {"GOOGLE_API_KEY": "test-key"}): + """Automatically mock GEMINI_API_KEY for all tests in this module.""" + with patch.dict(os.environ, {"GEMINI_API_KEY": "test-key"}): yield @@ -429,10 +429,10 @@ def test_gemini_vertex_ai_setup(): def test_gemini_api_key_configuration(): """ - Test that API key configuration works for both GOOGLE_API_KEY and GEMINI_API_KEY + Test that API key configuration works for both GEMINI_API_KEY and GEMINI_API_KEY """ - # Test with GOOGLE_API_KEY - with patch.dict(os.environ, {"GOOGLE_API_KEY": "test-google-key"}): + # Test with GEMINI_API_KEY + with patch.dict(os.environ, {"GEMINI_API_KEY": "test-google-key"}): llm = LLM(model="google/gemini-2.0-flash-001") from crewai.llms.providers.gemini.completion import GeminiCompletion @@ -611,7 +611,7 @@ def test_gemini_environment_variable_api_key(): """ Test that Google API key is properly loaded from environment """ - with patch.dict(os.environ, {"GOOGLE_API_KEY": "test-google-key"}): + with patch.dict(os.environ, {"GEMINI_API_KEY": "test-google-key"}): llm = LLM(model="google/gemini-2.0-flash-001") assert llm.client is not None diff --git a/lib/crewai/tests/llms/hooks/test_unsupported_providers.py b/lib/crewai/tests/llms/hooks/test_unsupported_providers.py index bacc9878f..56e1b1f4f 100644 --- a/lib/crewai/tests/llms/hooks/test_unsupported_providers.py +++ b/lib/crewai/tests/llms/hooks/test_unsupported_providers.py @@ -16,8 +16,8 @@ def setup_provider_api_keys(monkeypatch): monkeypatch.setenv("OPENAI_API_KEY", "sk-test-key-dummy") if "ANTHROPIC_API_KEY" not in os.environ: monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-ant-test-key-dummy") - if "GOOGLE_API_KEY" not in os.environ: - monkeypatch.setenv("GOOGLE_API_KEY", "test-google-key-dummy") + if "GEMINI_API_KEY" not in os.environ: + monkeypatch.setenv("GEMINI_API_KEY", "test-google-key-dummy") class DummyInterceptor(BaseInterceptor[httpx.Request, httpx.Response]): diff --git a/lib/crewai/tests/pipeline/cassettes/test_router_with_empty_input.yaml b/lib/crewai/tests/pipeline/cassettes/test_router_with_empty_input.yaml deleted file mode 100644 index ac64c5796..000000000 --- a/lib/crewai/tests/pipeline/cassettes/test_router_with_empty_input.yaml +++ /dev/null @@ -1,103 +0,0 @@ -interactions: -- request: - body: '{"messages": [{"role": "system", "content": "You are Test Role. Test Backstory\nYour - personal goal is: Test Goal\nTo give my best complete final answer to the task - use the exact following format:\n\nThought: I now can give a great answer\nFinal - Answer: Your final answer must be the great and the most complete as possible, - it must be outcome described.\n\nI MUST use these formats, my job depends on - it!"}, {"role": "user", "content": "\nCurrent Task: Return: Test output\n\nThis - is the expect criteria for your final answer: Test output\nyou MUST return the - actual complete content as the final answer, not a summary.\n\nBegin! This is - VERY important to you, use the tools available and give your best Final Answer, - your job depends on it!\n\nThought:"}], "model": "gpt-4o"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '776' - content-type: - - application/json - cookie: - - __cf_bm=9.8sBYBkvBR8R1K_bVF7xgU..80XKlEIg3N2OBbTSCU-1727214102-1.0.1.1-.qiTLXbPamYUMSuyNsOEB9jhGu.jOifujOrx9E2JZvStbIZ9RTIiE44xKKNfLPxQkOi6qAT3h6htK8lPDGV_5g; - _cfuvid=lbRdAddVWV6W3f5Dm9SaOPWDUOxqtZBSPr_fTW26nEA-1727213194587-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.47.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.47.0 - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.11.7 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - content: "{\n \"id\": \"chatcmpl-AB7fr4aPstiFUArxwxTVdfJSFwxsC\",\n \"object\": - \"chat.completion\",\n \"created\": 1727214471,\n \"model\": \"gpt-4o-2024-05-13\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer: Test output\",\n \"refusal\": null\n },\n \"logprobs\": - null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 155,\n \"completion_tokens\": 15,\n \"total_tokens\": 170,\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0\n }\n },\n \"system_fingerprint\": \"fp_52a7f40b0b\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8c85f9a91e311cf3-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 24 Sep 2024 21:47:51 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '216' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '30000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '29999817' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_88b1376917b345c976fdb03a55f7b6c1 - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai/tests/rag/embeddings/__init__.py b/lib/crewai/tests/rag/embeddings/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/crewai/tests/rag/qdrant/__init__.py b/lib/crewai/tests/rag/qdrant/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/crewai/tests/telemetry/test_telemetry.py b/lib/crewai/tests/telemetry/test_telemetry.py index 35c86e994..0c01c148b 100644 --- a/lib/crewai/tests/telemetry/test_telemetry.py +++ b/lib/crewai/tests/telemetry/test_telemetry.py @@ -45,7 +45,6 @@ def test_telemetry_enabled_by_default(): assert telemetry.ready is True -@pytest.mark.telemetry @patch("crewai.telemetry.telemetry.logger.error") @patch( "opentelemetry.exporter.otlp.proto.http.trace_exporter.OTLPSpanExporter.export", diff --git a/lib/crewai/tests/test_flow_persistence.py b/lib/crewai/tests/test_flow_persistence.py index 53e059b52..da872b9eb 100644 --- a/lib/crewai/tests/test_flow_persistence.py +++ b/lib/crewai/tests/test_flow_persistence.py @@ -9,7 +9,7 @@ from crewai.flow.persistence.sqlite import SQLiteFlowPersistence from pydantic import BaseModel -class TestState(FlowState): +class State(FlowState): """Test state model with required id field.""" counter: int = 0 @@ -45,8 +45,8 @@ def test_structured_state_persistence(tmp_path): db_path = os.path.join(tmp_path, "test_flows.db") persistence = SQLiteFlowPersistence(db_path) - class StructuredFlow(Flow[TestState]): - initial_state = TestState + class StructuredFlow(Flow[State]): + initial_state = State @start() @persist(persistence) @@ -71,7 +71,7 @@ def test_flow_state_restoration(tmp_path): persistence = SQLiteFlowPersistence(db_path) # First flow execution to create initial state - class RestorableFlow(Flow[TestState]): + class RestorableFlow(Flow[State]): @start() @persist(persistence) def set_message(self): @@ -109,7 +109,7 @@ def test_multiple_method_persistence(tmp_path): db_path = os.path.join(tmp_path, "test_flows.db") persistence = SQLiteFlowPersistence(db_path) - class MultiStepFlow(Flow[TestState]): + class MultiStepFlow(Flow[State]): @start() @persist(persistence) def step_1(self): @@ -139,7 +139,7 @@ def test_multiple_method_persistence(tmp_path): assert final_state.counter == 2 assert final_state.message == "Step 2" - class NoPersistenceMultiStepFlow(Flow[TestState]): + class NoPersistenceMultiStepFlow(Flow[State]): @start() @persist(persistence) def step_1(self): diff --git a/lib/crewai/tests/test_llm.py b/lib/crewai/tests/test_llm.py index 7c6fd74bb..e1451f268 100644 --- a/lib/crewai/tests/test_llm.py +++ b/lib/crewai/tests/test_llm.py @@ -411,7 +411,6 @@ def test_context_window_exceeded_error_handling(): assert "8192 tokens" in str(excinfo.value) -@pytest.mark.vcr() @pytest.fixture def anthropic_llm(): """Fixture providing an Anthropic LLM instance.""" @@ -476,13 +475,13 @@ def test_anthropic_message_formatting(anthropic_llm, system_message, user_messag def test_deepseek_r1_with_open_router(): - if not os.getenv("OPEN_ROUTER_API_KEY"): - pytest.skip("OPEN_ROUTER_API_KEY not set; skipping test.") + if not os.getenv("OPENROUTER_API_KEY"): + pytest.skip("OPENROUTER_API_KEY not set; skipping test.") llm = LLM( model="openrouter/deepseek/deepseek-r1", base_url="https://openrouter.ai/api/v1", - api_key=os.getenv("OPEN_ROUTER_API_KEY"), + api_key=os.getenv("OPENROUTER_API_KEY"), is_litellm=True, ) result = llm.call("What is the capital of France?") @@ -742,7 +741,7 @@ def test_prefixed_models_with_valid_constants_use_native_sdk(): assert llm2.provider == "anthropic" # Test gemini/ prefix with Gemini model in constants → Native SDK - with patch.dict(os.environ, {"GOOGLE_API_KEY": "test-key"}): + with patch.dict(os.environ, {"GEMINI_API_KEY": "test-key"}): llm3 = LLM(model="gemini/gemini-2.5-pro", is_litellm=False) assert llm3.is_litellm is False assert llm3.provider == "gemini" @@ -794,7 +793,7 @@ def test_unprefixed_models_use_native_sdk(): assert llm2.provider == "anthropic" # gemini-2.5-pro is in GEMINI_MODELS → Native Gemini SDK - with patch.dict(os.environ, {"GOOGLE_API_KEY": "test-key"}): + with patch.dict(os.environ, {"GEMINI_API_KEY": "test-key"}): llm3 = LLM(model="gemini-2.5-pro", is_litellm=False) assert llm3.is_litellm is False assert llm3.provider == "gemini" diff --git a/lib/crewai/tests/tools/agent_tools/cassettes/test_ask_question.yaml b/lib/crewai/tests/tools/agent_tools/cassettes/test_ask_question.yaml deleted file mode 100644 index 87cac64db..000000000 --- a/lib/crewai/tests/tools/agent_tools/cassettes/test_ask_question.yaml +++ /dev/null @@ -1,115 +0,0 @@ -interactions: -- request: - body: '{"messages": [{"role": "system", "content": "You are researcher. You''re - an expert researcher, specialized in technology\nYour personal goal is: make - the best research and analysis on content about AI and AI agents\nTo give my - best complete final answer to the task use the exact following format:\n\nThought: - I now can give a great answer\nFinal Answer: Your final answer must be the great - and the most complete as possible, it must be outcome described.\n\nI MUST use - these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent - Task: do you hate AI Agents?\n\nThis is the expect criteria for your final answer: - Your best answer to your coworker asking you this, accounting for the context - shared.\nyou MUST return the actual complete content as the final answer, not - a summary.\n\nThis is the context you''re working with:\nI heard you LOVE them\n\nBegin! - This is VERY important to you, use the tools available and give your best Final - Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '1021' - content-type: - - application/json - cookie: - - __cf_bm=rb61BZH2ejzD5YPmLaEJqI7km71QqyNJGTVdNxBq6qk-1727213194-1.0.1.1-pJ49onmgX9IugEMuYQMralzD7oj_6W.CHbSu4Su1z3NyjTGYg.rhgJZWng8feFYah._oSnoYlkTjpK1Wd2C9FA; - _cfuvid=lbRdAddVWV6W3f5Dm9SaOPWDUOxqtZBSPr_fTW26nEA-1727213194587-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.47.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.47.0 - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.11.7 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - content: "{\n \"id\": \"chatcmpl-AB7WnyWZFoccBH9YB7ghLbR1L8Wqa\",\n \"object\": - \"chat.completion\",\n \"created\": 1727213909,\n \"model\": \"gpt-4o-2024-05-13\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer: As an expert researcher specialized in technology, I don't harbor emotions - such as hate towards AI agents. Instead, my focus is on understanding, analyzing, - and leveraging their potential to advance various fields. AI agents, when designed - and implemented effectively, can greatly augment human capabilities, streamline - processes, and provide valuable insights that might otherwise be overlooked. - My enthusiasm for AI agents stems from their ability to transform industries - and improve everyday life, making complex tasks more manageable and enhancing - overall efficiency. This passion drives my research and commitment to making - meaningful contributions in the realm of AI and AI agents.\",\n \"refusal\": - null\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 199,\n \"completion_tokens\": - 126,\n \"total_tokens\": 325,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 0\n }\n },\n \"system_fingerprint\": \"fp_e375328146\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8c85ebf47e661cf3-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 24 Sep 2024 21:38:31 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '2498' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '30000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '29999755' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_b7e2cb0620e45d3d74310d3f0166551f - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai/tests/tools/agent_tools/cassettes/test_ask_question_with_coworker_as_array.yaml b/lib/crewai/tests/tools/agent_tools/cassettes/test_ask_question_with_coworker_as_array.yaml deleted file mode 100644 index 159fcefc1..000000000 --- a/lib/crewai/tests/tools/agent_tools/cassettes/test_ask_question_with_coworker_as_array.yaml +++ /dev/null @@ -1,116 +0,0 @@ -interactions: -- request: - body: '{"messages": [{"role": "system", "content": "You are researcher. You''re - an expert researcher, specialized in technology\nYour personal goal is: make - the best research and analysis on content about AI and AI agents\nTo give my - best complete final answer to the task use the exact following format:\n\nThought: - I now can give a great answer\nFinal Answer: Your final answer must be the great - and the most complete as possible, it must be outcome described.\n\nI MUST use - these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent - Task: do you hate AI Agents?\n\nThis is the expect criteria for your final answer: - Your best answer to your coworker asking you this, accounting for the context - shared.\nyou MUST return the actual complete content as the final answer, not - a summary.\n\nThis is the context you''re working with:\nI heard you LOVE them\n\nBegin! - This is VERY important to you, use the tools available and give your best Final - Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '1021' - content-type: - - application/json - cookie: - - __cf_bm=rb61BZH2ejzD5YPmLaEJqI7km71QqyNJGTVdNxBq6qk-1727213194-1.0.1.1-pJ49onmgX9IugEMuYQMralzD7oj_6W.CHbSu4Su1z3NyjTGYg.rhgJZWng8feFYah._oSnoYlkTjpK1Wd2C9FA; - _cfuvid=lbRdAddVWV6W3f5Dm9SaOPWDUOxqtZBSPr_fTW26nEA-1727213194587-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.47.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.47.0 - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.11.7 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - content: "{\n \"id\": \"chatcmpl-AB7Wy6aW1XM0lWaMyQUNB9qhbCZlH\",\n \"object\": - \"chat.completion\",\n \"created\": 1727213920,\n \"model\": \"gpt-4o-2024-05-13\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer: As an expert researcher specializing in technology and AI, I have a - deep appreciation for AI agents. These advanced tools have the potential to - revolutionize countless industries by improving efficiency, accuracy, and decision-making - processes. They can augment human capabilities, handle mundane and repetitive - tasks, and even offer insights that might be beyond human reach. While it's - crucial to approach AI with a balanced perspective, understanding both its capabilities - and limitations, my stance is one of optimism and fascination. Properly developed - and ethically managed, AI agents hold immense promise for driving innovation - and solving complex problems. So yes, I do love AI agents for their transformative - potential and the positive impact they can have on society.\",\n \"refusal\": - null\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n - \ }\n ],\n \"usage\": {\n \"prompt_tokens\": 199,\n \"completion_tokens\": - 146,\n \"total_tokens\": 345,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 0\n }\n },\n \"system_fingerprint\": \"fp_e375328146\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8c85ec3c6f3b1cf3-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 24 Sep 2024 21:38:42 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '1675' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '30000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '29999755' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_a249567d37ada11bc8857404338b24cc - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai/tests/tools/agent_tools/cassettes/test_ask_question_with_wrong_co_worker_variable.yaml b/lib/crewai/tests/tools/agent_tools/cassettes/test_ask_question_with_wrong_co_worker_variable.yaml deleted file mode 100644 index eb7348fbc..000000000 --- a/lib/crewai/tests/tools/agent_tools/cassettes/test_ask_question_with_wrong_co_worker_variable.yaml +++ /dev/null @@ -1,114 +0,0 @@ -interactions: -- request: - body: '{"messages": [{"role": "system", "content": "You are researcher. You''re - an expert researcher, specialized in technology\nYour personal goal is: make - the best research and analysis on content about AI and AI agents\nTo give my - best complete final answer to the task use the exact following format:\n\nThought: - I now can give a great answer\nFinal Answer: Your final answer must be the great - and the most complete as possible, it must be outcome described.\n\nI MUST use - these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent - Task: do you hate AI Agents?\n\nThis is the expect criteria for your final answer: - Your best answer to your coworker asking you this, accounting for the context - shared.\nyou MUST return the actual complete content as the final answer, not - a summary.\n\nThis is the context you''re working with:\nI heard you LOVE them\n\nBegin! - This is VERY important to you, use the tools available and give your best Final - Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '1021' - content-type: - - application/json - cookie: - - __cf_bm=rb61BZH2ejzD5YPmLaEJqI7km71QqyNJGTVdNxBq6qk-1727213194-1.0.1.1-pJ49onmgX9IugEMuYQMralzD7oj_6W.CHbSu4Su1z3NyjTGYg.rhgJZWng8feFYah._oSnoYlkTjpK1Wd2C9FA; - _cfuvid=lbRdAddVWV6W3f5Dm9SaOPWDUOxqtZBSPr_fTW26nEA-1727213194587-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.47.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.47.0 - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.11.7 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - content: "{\n \"id\": \"chatcmpl-AB7Wq7edXMCGJR1zDd2QoySLdo8mM\",\n \"object\": - \"chat.completion\",\n \"created\": 1727213912,\n \"model\": \"gpt-4o-2024-05-13\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer: I don't hate AI agents; on the contrary, I find them fascinating and - incredibly useful. Considering the rapid advancements in AI technology, these - agents have the potential to revolutionize various industries by automating - tasks, improving efficiency, and providing insights that were previously unattainable. - My expertise in researching and analyzing AI and AI agents has allowed me to - appreciate the intricate design and the vast possibilities they offer. Therefore, - it's more accurate to say that I love AI agents for their potential to drive - innovation and improve our daily lives.\",\n \"refusal\": null\n },\n - \ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n - \ \"usage\": {\n \"prompt_tokens\": 199,\n \"completion_tokens\": 116,\n - \ \"total_tokens\": 315,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 0\n }\n },\n \"system_fingerprint\": \"fp_e375328146\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8c85ec05f8651cf3-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 24 Sep 2024 21:38:33 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '1739' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '30000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '29999755' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_d9e1e9458d5539061397a618345c27d4 - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai/tests/tools/agent_tools/cassettes/test_delegate_work.yaml b/lib/crewai/tests/tools/agent_tools/cassettes/test_delegate_work.yaml deleted file mode 100644 index bee6ceb9d..000000000 --- a/lib/crewai/tests/tools/agent_tools/cassettes/test_delegate_work.yaml +++ /dev/null @@ -1,132 +0,0 @@ -interactions: -- request: - body: '{"messages": [{"role": "system", "content": "You are researcher. You''re - an expert researcher, specialized in technology\nYour personal goal is: make - the best research and analysis on content about AI and AI agents\nTo give my - best complete final answer to the task use the exact following format:\n\nThought: - I now can give a great answer\nFinal Answer: Your final answer must be the great - and the most complete as possible, it must be outcome described.\n\nI MUST use - these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent - Task: share your take on AI Agents\n\nThis is the expect criteria for your final - answer: Your best answer to your coworker asking you this, accounting for the - context shared.\nyou MUST return the actual complete content as the final answer, - not a summary.\n\nThis is the context you''re working with:\nI heard you hate - them\n\nBegin! This is VERY important to you, use the tools available and give - your best Final Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '1027' - content-type: - - application/json - cookie: - - __cf_bm=rb61BZH2ejzD5YPmLaEJqI7km71QqyNJGTVdNxBq6qk-1727213194-1.0.1.1-pJ49onmgX9IugEMuYQMralzD7oj_6W.CHbSu4Su1z3NyjTGYg.rhgJZWng8feFYah._oSnoYlkTjpK1Wd2C9FA; - _cfuvid=lbRdAddVWV6W3f5Dm9SaOPWDUOxqtZBSPr_fTW26nEA-1727213194587-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.47.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.47.0 - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.11.7 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - content: "{\n \"id\": \"chatcmpl-AB7WbKt7If02iTLuH5cJJjeYo9uDi\",\n \"object\": - \"chat.completion\",\n \"created\": 1727213897,\n \"model\": \"gpt-4o-2024-05-13\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer: I understand why you might think I dislike AI agents, but my perspective - is more nuanced. AI agents, in essence, are incredibly versatile tools designed - to perform specific tasks autonomously or semi-autonomously. They harness various - artificial intelligence techniques, such as machine learning, natural language - processing, and computer vision, to interpret data, understand tasks, and execute - them efficiently. \\n\\nFrom a technological standpoint, AI agents have revolutionized - numerous industries. In customer service, for instance, AI agents like chatbots - and virtual assistants handle customer inquiries 24/7, providing quick and efficient - solutions. In healthcare, AI agents can assist in diagnosing diseases, managing - patient data, and even predicting outbreaks. The automation capabilities of - AI agents also enhance productivity in areas such as logistics, finance, and - cybersecurity by identifying patterns and anomalies at speeds far beyond human - capabilities.\\n\\nHowever, it's important to acknowledge the potential downsides - and challenges associated with AI agents. Ethical considerations are paramount. - Issues such as data privacy, security, and biases in AI algorithms need to be - carefully managed. There is also the human aspect to consider\u2014over-reliance - on AI agents might lead to job displacement in certain sectors, and ensuring - a fair transition for affected workers is crucial.\\n\\nMy concerns generally - stem from these ethical and societal implications rather than from the technology - itself. I advocate for responsible AI development, which includes transparency, - fairness, and accountability. By addressing these concerns, we can harness the - full potential of AI agents while mitigating the associated risks.\\n\\nSo, - to clarify, I don't hate AI agents; I recognize their immense potential and - the significant benefits they bring to various fields. However, I am equally - aware of the challenges they present and advocate for a balanced approach to - their development and deployment.\",\n \"refusal\": null\n },\n - \ \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }\n ],\n - \ \"usage\": {\n \"prompt_tokens\": 200,\n \"completion_tokens\": 359,\n - \ \"total_tokens\": 559,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 0\n }\n },\n \"system_fingerprint\": \"fp_3537616b13\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8c85ebaa5c061cf3-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 24 Sep 2024 21:38:22 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '4928' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '30000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '29999755' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_761796305026b5adfbb5a6237f14e32a - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai/tests/tools/agent_tools/cassettes/test_delegate_work_with_wrong_co_worker_variable.yaml b/lib/crewai/tests/tools/agent_tools/cassettes/test_delegate_work_with_wrong_co_worker_variable.yaml deleted file mode 100644 index 35b80d32a..000000000 --- a/lib/crewai/tests/tools/agent_tools/cassettes/test_delegate_work_with_wrong_co_worker_variable.yaml +++ /dev/null @@ -1,136 +0,0 @@ -interactions: -- request: - body: '{"messages": [{"role": "system", "content": "You are researcher. You''re - an expert researcher, specialized in technology\nYour personal goal is: make - the best research and analysis on content about AI and AI agents\nTo give my - best complete final answer to the task use the exact following format:\n\nThought: - I now can give a great answer\nFinal Answer: Your final answer must be the great - and the most complete as possible, it must be outcome described.\n\nI MUST use - these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent - Task: share your take on AI Agents\n\nThis is the expect criteria for your final - answer: Your best answer to your coworker asking you this, accounting for the - context shared.\nyou MUST return the actual complete content as the final answer, - not a summary.\n\nThis is the context you''re working with:\nI heard you hate - them\n\nBegin! This is VERY important to you, use the tools available and give - your best Final Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '1027' - content-type: - - application/json - cookie: - - __cf_bm=rb61BZH2ejzD5YPmLaEJqI7km71QqyNJGTVdNxBq6qk-1727213194-1.0.1.1-pJ49onmgX9IugEMuYQMralzD7oj_6W.CHbSu4Su1z3NyjTGYg.rhgJZWng8feFYah._oSnoYlkTjpK1Wd2C9FA; - _cfuvid=lbRdAddVWV6W3f5Dm9SaOPWDUOxqtZBSPr_fTW26nEA-1727213194587-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.47.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.47.0 - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.11.7 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - content: "{\n \"id\": \"chatcmpl-AB7Wh4RzroZdiwUNOc4oRRhwfdRzs\",\n \"object\": - \"chat.completion\",\n \"created\": 1727213903,\n \"model\": \"gpt-4o-2024-05-13\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer: AI agents are essentially autonomous software programs that perform - tasks or provide services on behalf of humans. They're built on complex algorithms - and often leverage machine learning and neural networks to adapt and improve - over time. \\n\\nIt's important to clarify that I don't \\\"hate\\\" AI agents, - but I do approach them with a critical eye for a couple of reasons. AI agents - have enormous potential to transform industries, making processes more efficient, - providing insightful data analytics, and even learning from user behavior to - offer personalized experiences. However, this potential comes with significant - challenges and risks:\\n\\n1. **Ethical Concerns**: AI agents operate on data, - and the biases present in data can lead to unfair or unethical outcomes. Ensuring - that AI operates within ethical boundaries requires rigorous oversight, which - is not always in place.\\n\\n2. **Privacy Issues**: AI agents often need access - to large amounts of data, raising questions about privacy and data security. - If not managed correctly, this can lead to unauthorized data access and potential - misuse of sensitive information.\\n\\n3. **Transparency and Accountability**: - The decision-making process of AI agents can be opaque, making it difficult - to understand how they arrive at specific conclusions or actions. This lack - of transparency poses challenges for accountability, especially if something - goes wrong.\\n\\n4. **Job Displacement**: As AI agents become more capable, - there are valid concerns about their impact on employment. Tasks that were traditionally - performed by humans are increasingly being automated, which can lead to job - loss in certain sectors.\\n\\n5. **Reliability**: While AI agents can outperform - humans in many areas, they are not infallible. They can make mistakes, sometimes - with serious consequences. Continuous monitoring and regular updates are essential - to maintain their performance and reliability.\\n\\nIn summary, while AI agents - offer substantial benefits and opportunities, it's critical to approach their - adoption and deployment with careful consideration of the associated risks. - Balancing innovation with responsibility is key to leveraging AI agents effectively - and ethically. So, rather than \\\"hating\\\" AI agents, I advocate for a balanced, - cautious approach that maximizes benefits while mitigating potential downsides.\",\n - \ \"refusal\": null\n },\n \"logprobs\": null,\n \"finish_reason\": - \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": 200,\n \"completion_tokens\": - 429,\n \"total_tokens\": 629,\n \"completion_tokens_details\": {\n \"reasoning_tokens\": - 0\n }\n },\n \"system_fingerprint\": \"fp_3537616b13\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8c85ebcdae971cf3-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 24 Sep 2024 21:38:29 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '5730' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '30000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '29999755' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_5da5b18b3cee10548a217ba97e133815 - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai/tests/tools/agent_tools/cassettes/test_delegate_work_withwith_coworker_as_array.yaml b/lib/crewai/tests/tools/agent_tools/cassettes/test_delegate_work_withwith_coworker_as_array.yaml deleted file mode 100644 index 71f96de9a..000000000 --- a/lib/crewai/tests/tools/agent_tools/cassettes/test_delegate_work_withwith_coworker_as_array.yaml +++ /dev/null @@ -1,137 +0,0 @@ -interactions: -- request: - body: '{"messages": [{"role": "system", "content": "You are researcher. You''re - an expert researcher, specialized in technology\nYour personal goal is: make - the best research and analysis on content about AI and AI agents\nTo give my - best complete final answer to the task use the exact following format:\n\nThought: - I now can give a great answer\nFinal Answer: Your final answer must be the great - and the most complete as possible, it must be outcome described.\n\nI MUST use - these formats, my job depends on it!"}, {"role": "user", "content": "\nCurrent - Task: share your take on AI Agents\n\nThis is the expect criteria for your final - answer: Your best answer to your coworker asking you this, accounting for the - context shared.\nyou MUST return the actual complete content as the final answer, - not a summary.\n\nThis is the context you''re working with:\nI heard you hate - them\n\nBegin! This is VERY important to you, use the tools available and give - your best Final Answer, your job depends on it!\n\nThought:"}], "model": "gpt-4o"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '1027' - content-type: - - application/json - cookie: - - __cf_bm=rb61BZH2ejzD5YPmLaEJqI7km71QqyNJGTVdNxBq6qk-1727213194-1.0.1.1-pJ49onmgX9IugEMuYQMralzD7oj_6W.CHbSu4Su1z3NyjTGYg.rhgJZWng8feFYah._oSnoYlkTjpK1Wd2C9FA; - _cfuvid=lbRdAddVWV6W3f5Dm9SaOPWDUOxqtZBSPr_fTW26nEA-1727213194587-0.0.1.1-604800000 - host: - - api.openai.com - user-agent: - - OpenAI/Python 1.47.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - 'false' - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.47.0 - x-stainless-raw-response: - - 'true' - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.11.7 - method: POST - uri: https://api.openai.com/v1/chat/completions - response: - content: "{\n \"id\": \"chatcmpl-AB7Wsv05NzccAAGC0CZVg03mE72wi\",\n \"object\": - \"chat.completion\",\n \"created\": 1727213914,\n \"model\": \"gpt-4o-2024-05-13\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Thought: I now can give a great answer\\nFinal - Answer: My perspective on AI agents is quite nuanced and not a matter of simple - like or dislike. AI agents, depending on their design, deployment, and use cases, - can bring about both significant benefits and substantial challenges.\\n\\nOn - the positive side, AI agents have the potential to automate mundane tasks, enhance - productivity, and provide personalized services in ways that were previously - unimaginable. For instance, in customer service, AI agents can handle inquiries - 24/7, reducing waiting times and improving user satisfaction. In healthcare, - they can assist in diagnosing diseases by analyzing vast datasets much faster - than humans. These applications demonstrate the transformative power of AI in - improving efficiency and delivering better outcomes across various industries.\\n\\nHowever, - my reservations stem from several critical concerns. Firstly, there's the issue - of reliability and accuracy. Mismanaged or poorly designed AI systems can lead - to significant errors, which could be particularly detrimental in high-stakes - environments like healthcare or autonomous vehicles. Second, there's a risk - of job displacement as AI agents become capable of performing tasks traditionally - done by humans. This raises socio-economic concerns that need to be addressed - through effective policy-making and upskilling programs.\\n\\nAdditionally, - there are ethical and privacy considerations. AI agents often require large - amounts of data to function effectively, which can lead to issues concerning - consent, data security, and individual privacy rights. The lack of transparency - in how these agents make decisions can also pose challenges\u2014this is often - referred to as the \\\"black box\\\" problem, where even the developers may - not fully understand how specific AI outputs are generated.\\n\\nFinally, the - deployment of AI agents by bad actors for malicious purposes, such as deepfakes, - misinformation, and hacking, remains a pertinent concern. These potential downsides - imply that while AI technology is extremely powerful and promising, it must - be developed and implemented with care, consideration, and robust ethical guidelines.\\n\\nSo, - in summary, I don't hate AI agents\u2014rather, I approach them critically with - a balanced perspective, recognizing both their profound potential and the significant - challenges they present. Thoughtful development, responsible deployment, and - ethical governance are crucial to harness the benefits while mitigating the - risks associated with AI agents.\",\n \"refusal\": null\n },\n \"logprobs\": - null,\n \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 200,\n \"completion_tokens\": 436,\n \"total_tokens\": 636,\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0\n }\n },\n \"system_fingerprint\": \"fp_3537616b13\"\n}\n" - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8c85ec12ab0d1cf3-GRU - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Tue, 24 Sep 2024 21:38:40 GMT - Server: - - cloudflare - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-expose-headers: - - X-Request-ID - openai-organization: - - crewai-iuxna1 - openai-processing-ms: - - '6251' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '10000' - x-ratelimit-limit-tokens: - - '30000000' - x-ratelimit-remaining-requests: - - '9999' - x-ratelimit-remaining-tokens: - - '29999755' - x-ratelimit-reset-requests: - - 6ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_50aa23cad48cfb83b754a5a92939638e - http_version: HTTP/1.1 - status_code: 200 -version: 1 diff --git a/lib/crewai/tests/utilities/events/test_crewai_event_bus.py b/lib/crewai/tests/utilities/events/test_crewai_event_bus.py index 9e9d9adaf..e79d9bf62 100644 --- a/lib/crewai/tests/utilities/events/test_crewai_event_bus.py +++ b/lib/crewai/tests/utilities/events/test_crewai_event_bus.py @@ -5,18 +5,18 @@ from crewai.events.base_events import BaseEvent from crewai.events.event_bus import crewai_event_bus -class TestEvent(BaseEvent): +class Event(BaseEvent): pass def test_specific_event_handler(): mock_handler = Mock() - @crewai_event_bus.on(TestEvent) + @crewai_event_bus.on(Event) def handler(source, event): mock_handler(source, event) - event = TestEvent(type="test_event") + event = Event(type="test_event") crewai_event_bus.emit("source_object", event) mock_handler.assert_called_once_with("source_object", event) @@ -27,15 +27,15 @@ def test_multiple_handlers_same_event(): mock_handler1 = Mock() mock_handler2 = Mock() - @crewai_event_bus.on(TestEvent) + @crewai_event_bus.on(Event) def handler1(source, event): mock_handler1(source, event) - @crewai_event_bus.on(TestEvent) + @crewai_event_bus.on(Event) def handler2(source, event): mock_handler2(source, event) - event = TestEvent(type="test_event") + event = Event(type="test_event") crewai_event_bus.emit("source_object", event) mock_handler1.assert_called_once_with("source_object", event) @@ -47,16 +47,16 @@ def test_event_bus_error_handling(): called = threading.Event() error_caught = threading.Event() - @crewai_event_bus.on(TestEvent) + @crewai_event_bus.on(Event) def broken_handler(source, event): called.set() raise ValueError("Simulated handler failure") - @crewai_event_bus.on(TestEvent) + @crewai_event_bus.on(Event) def working_handler(source, event): error_caught.set() - event = TestEvent(type="test_event") + event = Event(type="test_event") crewai_event_bus.emit("source_object", event) assert called.wait(timeout=2), "Broken handler was never called" diff --git a/lib/crewai/tests/utilities/test_events.py b/lib/crewai/tests/utilities/test_events.py index 7d8deb6b3..1501e2659 100644 --- a/lib/crewai/tests/utilities/test_events.py +++ b/lib/crewai/tests/utilities/test_events.py @@ -730,7 +730,6 @@ def test_llm_emits_call_started_event(): @pytest.mark.vcr() -@pytest.mark.isolated def test_llm_emits_call_failed_event(): received_events = [] event_received = threading.Event() diff --git a/lib/crewai/tests/utilities/test_training_converter.py b/lib/crewai/tests/utilities/test_training_converter.py index 65c73ac38..ac52327ee 100644 --- a/lib/crewai/tests/utilities/test_training_converter.py +++ b/lib/crewai/tests/utilities/test_training_converter.py @@ -6,7 +6,7 @@ from crewai.utilities.training_converter import TrainingConverter from pydantic import BaseModel, Field -class TestModel(BaseModel): +class Model(BaseModel): string_field: str = Field(description="A simple string field") list_field: List[str] = Field(description="A list of strings") number_field: float = Field(description="A number field") @@ -20,7 +20,7 @@ class TestTrainingConverter: self.converter = TrainingConverter( llm=self.llm_mock, text=self.test_text, - model=TestModel, + model=Model, instructions=self.test_instructions, )