Skip to content

symfonic.core.capabilities.firecrawl

firecrawl

FirecrawlFetcher -- web content fetching via Firecrawl API.

FirecrawlFetcher

FirecrawlFetcher(
    api_key: str | None = None, api_url: str | None = None
)

Fetch web content via Firecrawl API.

Requires: pip install firecrawl-py (optional dependency)

Source code in src/symfonic/core/capabilities/firecrawl.py
def __init__(
    self,
    api_key: str | None = None,
    api_url: str | None = None,
) -> None:
    self._api_key = api_key
    self._api_url = api_url

fetch async

fetch(url: str, *, timeout: float = 30.0) -> str

Fetch URL content. Raises CapabilityError on failure.

Source code in src/symfonic/core/capabilities/firecrawl.py
async def fetch(self, url: str, *, timeout: float = 30.0) -> str:
    """Fetch URL content. Raises CapabilityError on failure."""
    validate_url(url)
    try:
        return await asyncio.wait_for(
            self._do_fetch(url), timeout=timeout
        )
    except TimeoutError as exc:
        raise CapabilityError(
            capability="FirecrawlFetcher",
            cause=f"Timeout after {timeout}s fetching {url}",
            code="timeout",
            metadata={"url": url},
        ) from exc
    except ImportError as exc:
        raise CapabilityError(
            capability="FirecrawlFetcher",
            cause=(
                "firecrawl-py is not installed. "
                "pip install firecrawl-py"
            ),
            code="missing_dependency",
        ) from exc
    except CapabilityError:
        raise
    except Exception as e:
        raise CapabilityError(
            capability="FirecrawlFetcher",
            cause=str(e),
            code="fetch_error",
            metadata={"url": url},
        ) from e