OpenTelemetry instrumentation for the Firecrawl SDK — ship scrape/crawl/search traces and metrics to SigNoz or any OTLP backend.
Project description
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
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 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file firecrawl_otel-0.1.0.tar.gz.
File metadata
- Download URL: firecrawl_otel-0.1.0.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
619a2d726bd5bdd7c8006e6f615ad9957762451d28c4c2562dc2e7aa5cb5250d
|
|
| MD5 |
008503515705dfaf64d35793080a5dfc
|
|
| BLAKE2b-256 |
ec9cbaba8897c7588eee8463ff84909b52cc48c4addcb0e34afb1c4231a2f186
|
Provenance
The following attestation bundles were made for firecrawl_otel-0.1.0.tar.gz:
Publisher:
publish.yml on gkarthi-signoz/firecrawl-otel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firecrawl_otel-0.1.0.tar.gz -
Subject digest:
619a2d726bd5bdd7c8006e6f615ad9957762451d28c4c2562dc2e7aa5cb5250d - Sigstore transparency entry: 2170870528
- Sigstore integration time:
-
Permalink:
gkarthi-signoz/firecrawl-otel@4e3d92229e37c47425b403b35174e93d1c00d313 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/gkarthi-signoz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4e3d92229e37c47425b403b35174e93d1c00d313 -
Trigger Event:
release
-
Statement type:
File details
Details for the file firecrawl_otel-0.1.0-py3-none-any.whl.
File metadata
- Download URL: firecrawl_otel-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c4d946d101999119e2e6ffd01f61e23678285d487182deec6f368bea6490370
|
|
| MD5 |
6760e5385aefc8f0f0e74ead6076e901
|
|
| BLAKE2b-256 |
b0acf5d08095e7e70eb4284effa6c78317b991bd231c5294c78c1438c47939bd
|
Provenance
The following attestation bundles were made for firecrawl_otel-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on gkarthi-signoz/firecrawl-otel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firecrawl_otel-0.1.0-py3-none-any.whl -
Subject digest:
1c4d946d101999119e2e6ffd01f61e23678285d487182deec6f368bea6490370 - Sigstore transparency entry: 2170870546
- Sigstore integration time:
-
Permalink:
gkarthi-signoz/firecrawl-otel@4e3d92229e37c47425b403b35174e93d1c00d313 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/gkarthi-signoz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4e3d92229e37c47425b403b35174e93d1c00d313 -
Trigger Event:
release
-
Statement type: