firecrawl-otel
OpenTelemetry instrumentation for the Firecrawl Python
SDK. Trace every scrape / crawl / search / map / extract call and ship
the traces and metrics to SigNoz, or any OTLP backend,
without changing your Firecrawl call sites.
Firecrawl does not emit OpenTelemetry itself, so this package instruments it on
the client side using the standard OpenTelemetry BaseInstrumentor pattern.
Install
pip install "firecrawl-otel[instruments]"
The [instruments] extra pulls in the Firecrawl SDK (firecrawl-py); drop it
and install plain firecrawl-otel if you manage firecrawl-py yourself.
Quickstart
from firecrawl import Firecrawl
from firecrawl_otel import FirecrawlInstrumentor
FirecrawlInstrumentor().instrument() # once, at startup
app = Firecrawl(api_key="fc-...") # your normal client, unchanged
doc = app.scrape("https://example.com") # automatically traced
Point the telemetry at SigNoz with standard OpenTelemetry environment variables:
# SigNoz Cloud (region = us | us2 | eu | eu2 | in | in2)
export OTEL_SERVICE_NAME=my-app
export OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.us.signoz.cloud:443
export OTEL_EXPORTER_OTLP_HEADERS=signoz-ingestion-key=<your-key>
For self-hosted SigNoz use http://localhost:4317 and no headers.
Zero-code option
Because the package registers an opentelemetry_instrumentor entry point, the
OpenTelemetry CLI can enable it with no code change at all:
pip install "firecrawl-otel[instruments]" opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install
opentelemetry-instrument python your_app.py
What you get in SigNoz
Traces: one span per Firecrawl call:
| Span attribute | Example |
|---|---|
firecrawl.operation |
scrape, crawl, search, map |
url.full |
https://example.com |
firecrawl.query |
what is opentelemetry (search) |
firecrawl.formats |
markdown,html |
firecrawl.results |
5 |
firecrawl.credits_used |
12 |
firecrawl.status |
completed |
Metrics:
| Metric | Type | Description |
|---|---|---|
firecrawl.requests |
counter | Calls, tagged by firecrawl.operation + outcome (ok/error) |
firecrawl.request.duration |
histogram (ms) | Latency per call |
firecrawl.credits.used |
counter | Firecrawl credits consumed |
firecrawl.results.returned |
histogram | Documents/pages/results returned |
Notes
- Call
instrument()before creating theFirecrawlclient. The unified client binds its methods at construction time, so instrument at startup (as in the quickstart); clients created afterwards are traced. - This library configures no exporters. Exporter setup stays with your app
(the
OTEL_*env vars above, oropentelemetry-instrument). That keeps it composable with the rest of your OpenTelemetry setup. - Pass explicit providers if you don't use the globals:
FirecrawlInstrumentor().instrument(tracer_provider=tp, meter_provider=mp). - Disable again with
FirecrawlInstrumentor().uninstrument(). - A runnable end-to-end demo (scrape → search → crawl) lives in
examples/.
Development
pip install -e ".[dev]"
pytest
python -m build && twine check dist/*
License
Apache-2.0
Metadata
Release files for firecrawl-otel 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| firecrawl_otel-0.1.1.tar.gz | 14.0 kB | With provenance | Details for firecrawl_otel-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| firecrawl_otel-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for firecrawl_otel-0.1.1-py3-none-any.whl |
Total release size: 28.8 kB
Release files / firecrawl_otel-0.1.1.tar.gz
| Download URL | firecrawl_otel-0.1.1.tar.gz |
|---|---|
| Size | 14.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
910455cbb1e97896b5cd6626d6fc2c56ad4d3695ed575090d4cd249e38653a1e
|
|
BLAKE2b-256 checksum How to use checksums |
9bd65065042bf145873552608c555d25a6852f2dc6f939c3df5875a16785da49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logRelease files / firecrawl_otel-0.1.1-py3-none-any.whl
| Download URL | firecrawl_otel-0.1.1-py3-none-any.whl |
|---|---|
| Size | 14.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
272520b659ffa01e51f803fb8e31a4faef15b560c261334e1986bb5e0d830841
|
|
BLAKE2b-256 checksum How to use checksums |
1ecf604f0aa01cac136c852cb6133664222f1ae96af47806bb983bb015c2351c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logSecurity for firecrawl-otel 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for firecrawl_otel-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.