Skip to content

fix(web): use SDK-native keyless support in firecrawl-py 4.30+ - #52122

Closed
waiwaic wants to merge 1 commit into
NousResearch:mainfrom
waiwaic:fix/firecrawl-keyless-web-tools
Closed

fix(web): use SDK-native keyless support in firecrawl-py 4.30+#52122
waiwaic wants to merge 1 commit into
NousResearch:mainfrom
waiwaic:fix/firecrawl-keyless-web-tools

Conversation

@waiwaic

@waiwaic waiwaic commented Jun 24, 2026

Copy link
Copy Markdown

Summary

firecrawl-py 4.30+ natively supports keyless construction — firecrawl.Firecrawl v2 client falls back to the keyless free tier (rate-limited per IP) when no FIRECRAWL_API_KEY is set.

Changes

File +/- Description
pyproject.toml 1 Bump firecrawl-py 4.17.0 → 4.30.2
plugins/web/firecrawl/provider.py +36/−23 Use SDK-native keyless; remove custom HTTP client

What changed in provider.py

  1. check_firecrawl_api_key() — always returns True (SDK handles keyless fallback)
  2. _get_firecrawl_client() — when no credentials exist, falls back to v2 keyless client (v1 still requires API key, search/scrape are v2 methods)
  3. Removed the entire _KeylessFirecrawlClient custom HTTP client (~70 lines)
  4. Updated error messages and docstrings to mention keyless flow

Why

  • Previous implementation added a custom _KeylessFirecrawlClient using raw urllib because the old SDK (4.17.0) rejected no-key construction
  • firecrawl-py 4.30+ natively allows api_key=None for v2 methods, making the custom HTTP client redundant
  • Less code, same behavior, using upstream API correctly

firecrawl-py 4.30+ natively supports keyless construction — the v2 client
falls back to the keyless free tier (rate-limited per IP) when no
FIRECRAWL_API_KEY is set.

Changes:
- Bump firecrawl-py from 4.17.0 to 4.30.2
- check_firecrawl_api_key() always returns True (SDK handles keyless)
- _get_firecrawl_client() gracefully falls back to v2 keyless client
  when no credentials exist (v1 still requires API key)
- Remove the custom _KeylessFirecrawlClient HTTP client entirely
- Update error messages and docstrings to mention keyless flow
@waiwaic
waiwaic requested a review from a team June 24, 2026 20:12
@alt-glitch alt-glitch added type/bug Something isn't working comp/plugins Plugin system and bundled plugins tool/web Web search and extraction P3 Low — cosmetic, nice to have labels Jun 24, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Related: #49912 (the issue this implements) and competing PR #50659. Both target Firecrawl keyless mode but via different mechanisms — #50659 adds a custom _KeylessFirecrawlClient (httpx, explicit selection), while this PR bumps firecrawl-py to 4.30.2 and removes the custom client entirely in favor of the SDK's native keyless v2 fallback. Flagging the cluster so a maintainer can choose one approach.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have tool/web Web search and extraction type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants