firecrawl-build-scrape
Integrate Firecrawl `/scrape` into product code for single-page extraction. Use when an app already has a URL and needs markdown, HTML, links, screenshots, metadata, or structured page output. Prefer this skill over broader crawl patterns when the feature is page-level.
Install
npx skills add https://github.com/firecrawl/skills/tree/main/skills/build/firecrawl-build-scrape
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install firecrawl-skills@llmmart
git clone https://github.com/firecrawl/skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole firecrawl/skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Firecrawl Build Scrape
Use this when the application already has the URL and needs content from one page.
Use This When
- the feature starts from a known URL
- you need page content for retrieval, summarization, enrichment, or monitoring
- you want the default extraction primitive before considering
/interact
Default Recommendations
- Return
markdownunless the feature truly needs another format. - Use
onlyMainContentfor article-like pages where nav and chrome add noise. - Add waits or other rendering options only when the page needs them.
Freshness and Liveness
- Firecrawl reuses recently indexed content, which is what makes repeat reads of the same URL fast. Set
maxAge(milliseconds) to bound how old a reused copy may be, ormaxAge: 0to skip index reuse for a freshness-critical read. - Read
metadata.cacheStateandmetadata.cachedAtto see what you actually got. - A successful scrape reports what the page returned. Whether the thing the page describes is still active is a source-specific judgment your code makes.
- See references/freshness-and-liveness.md for the tradeoff, the metadata, and the decision rule.
Common Product Patterns
- knowledge ingestion from known URLs
- enrichment from a company, product, or docs page
- pricing, changelog, and documentation extraction
- page-level quality checks or monitoring
Escalation Rules
- If you do not have the URL yet, start with firecrawl-build-search.
- If content requires clicks, typing, or multi-step navigation, escalate to firecrawl-build-interact.
Implementation Notes
- Keep the integration narrow: one feature, one URL, one extraction contract.
- Treat
/scrapeas the default primitive for downstream LLM or indexing pipelines. - Request richer formats only when the consumer needs them, such as links, screenshots, or branding data.
Docs (Source of Truth)
Read the source-of-truth page for your project language before writing integration code:
- Node / TypeScript: docs.firecrawl.dev/agent-source-of-truth/node
- Python: docs.firecrawl.dev/agent-source-of-truth/python
- Rust: docs.firecrawl.dev/agent-source-of-truth/rust
- Java: docs.firecrawl.dev/agent-source-of-truth/java
- Elixir: docs.firecrawl.dev/agent-source-of-truth/elixir
- cURL / REST: docs.firecrawl.dev/agent-source-of-truth/curl
See Also
Files (skills)
-
references
-
freshness-and-liveness.md 2.3 KB
# Freshness and Liveness Two separate questions. Keep them separate in code: - **Freshness** — how old is this content? Controlled by `maxAge`. - **Liveness** — is the thing the page describes still active? A source-specific judgment your application makes from the content. ## `maxAge` and the Cache Tradeoff Firecrawl reuses recently indexed content, which is what makes repeat reads of the same URL fast and cheap. `maxAge` is the maximum age, in milliseconds, of an indexed copy that `/scrape` may return. - Omit `maxAge` and Firecrawl chooses the window itself, tuning it per domain. This is the right default for most reads. - Set `maxAge` explicitly when the feature has a real staleness bound. - `maxAge: 0` skips index reuse and takes the live scrape path. It costs latency, and it surfaces live-site failures that a reused copy would have masked, so spend it on reads where staleness would cause a wrong or costly decision. `/parse` is always uncached: it ignores a client `maxAge` and does not store its result, so there is no freshness knob to set there. ## Verifying What You Got From `/scrape` response metadata: - `cacheState` — `"hit"` or `"miss"`, present only when index reuse was eligible. With `maxAge: 0` the field is absent, which is itself the confirmation that no indexed copy was used. - `cachedAt` — ISO timestamp of the reused copy, present on a `"hit"`. - `sourceURL` — the URL you requested. - `url` — the URL the response came from. Differing values mean the request was redirected. Equal values are not proof that no redirect occurred, because `url` falls back to the requested URL when the engine reports none. - `statusCode` — the HTTP status of the response. ## Deciding Liveness Firecrawl supplies page evidence; your application interprets it in its own terms. `200` plus non-empty content means the fetch succeeded, not that the item described by the page is still active — plenty of sites serve a full page for a removed record. - Read the rendered content for the source's own signals. - Prefer a source-specific API or identifier where one exists. Those usually state a status that the rendered page only implies. - When the evidence is inconclusive, keep the state `unknown` and stop before an expensive or irreversible step rather than assuming active.
-
-
SKILL.md 3.7 KB
--- name: firecrawl-build-scrape description: Integrate Firecrawl `/scrape` into product code for single-page extraction. Use when an app already has a URL and needs markdown, HTML, links, screenshots, metadata, or structured page output. Prefer this skill over broader crawl patterns when the feature is page-level. license: ISC metadata: author: firecrawl version: "0.1.0" homepage: https://www.firecrawl.dev source: https://github.com/firecrawl/skills inputs: - name: FIRECRAWL_API_KEY description: Firecrawl API key for hosted Firecrawl requests. required: true - name: FIRECRAWL_API_URL description: Optional base URL for self-hosted Firecrawl deployments. required: false references: - references/freshness-and-liveness.md --- # Firecrawl Build Scrape Use this when the application already has the URL and needs content from one page. ## Use This When - the feature starts from a known URL - you need page content for retrieval, summarization, enrichment, or monitoring - you want the default extraction primitive before considering `/interact` ## Default Recommendations - Return `markdown` unless the feature truly needs another format. - Use `onlyMainContent` for article-like pages where nav and chrome add noise. - Add waits or other rendering options only when the page needs them. ## Freshness and Liveness - Firecrawl reuses recently indexed content, which is what makes repeat reads of the same URL fast. Set `maxAge` (milliseconds) to bound how old a reused copy may be, or `maxAge: 0` to skip index reuse for a freshness-critical read. - Read `metadata.cacheState` and `metadata.cachedAt` to see what you actually got. - A successful scrape reports what the page returned. Whether the thing the page describes is still active is a source-specific judgment your code makes. - See [references/freshness-and-liveness.md](references/freshness-and-liveness.md) for the tradeoff, the metadata, and the decision rule. ## Common Product Patterns - knowledge ingestion from known URLs - enrichment from a company, product, or docs page - pricing, changelog, and documentation extraction - page-level quality checks or monitoring ## Escalation Rules - If you do not have the URL yet, start with [firecrawl-build-search](../firecrawl-build-search/SKILL.md). - If content requires clicks, typing, or multi-step navigation, escalate to [firecrawl-build-interact](../firecrawl-build-interact/SKILL.md). ## Implementation Notes - Keep the integration narrow: one feature, one URL, one extraction contract. - Treat `/scrape` as the default primitive for downstream LLM or indexing pipelines. - Request richer formats only when the consumer needs them, such as links, screenshots, or branding data. ## Docs (Source of Truth) Read the source-of-truth page for your project language before writing integration code: - **Node / TypeScript**: [docs.firecrawl.dev/agent-source-of-truth/node](https://docs.firecrawl.dev/agent-source-of-truth/node) - **Python**: [docs.firecrawl.dev/agent-source-of-truth/python](https://docs.firecrawl.dev/agent-source-of-truth/python) - **Rust**: [docs.firecrawl.dev/agent-source-of-truth/rust](https://docs.firecrawl.dev/agent-source-of-truth/rust) - **Java**: [docs.firecrawl.dev/agent-source-of-truth/java](https://docs.firecrawl.dev/agent-source-of-truth/java) - **Elixir**: [docs.firecrawl.dev/agent-source-of-truth/elixir](https://docs.firecrawl.dev/agent-source-of-truth/elixir) - **cURL / REST**: [docs.firecrawl.dev/agent-source-of-truth/curl](https://docs.firecrawl.dev/agent-source-of-truth/curl) ## See Also - [firecrawl-build](../firecrawl-build/SKILL.md) - [firecrawl-build-search](../firecrawl-build-search/SKILL.md) - [firecrawl-build-interact](../firecrawl-build-interact/SKILL.md)
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.