Documentation Index Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
Use this file to discover all available pages before exploring further.
pip install fastapi uvicorn firecrawl-py
Añade tu clave de API a .env:
FIRECRAWL_API_KEY = fc-YOUR-API-KEY
Crea main.py:
import os
from fastapi import FastAPI
from pydantic import BaseModel
from firecrawl import Firecrawl
app = FastAPI()
firecrawl = Firecrawl( api_key = os.environ[ "FIRECRAWL_API_KEY" ])
class SearchRequest ( BaseModel ):
query: str
limit: int = 5
class ScrapeRequest ( BaseModel ):
url: str
class InteractRequest ( BaseModel ):
scrape_id: str
prompt: str
@app.post ( "/search" )
async def search ( req : SearchRequest):
results = firecrawl.search(req.query, limit = req.limit)
return [{ "title" : r.title, "url" : r.url} for r in results.web]
@app.post ( "/scrape" )
async def scrape ( req : ScrapeRequest):
result = firecrawl.scrape(req.url)
return { "markdown" : result.markdown, "metadata" : result.metadata}
@app.post ( "/interact/start" )
async def interact_start ( req : ScrapeRequest):
result = firecrawl.scrape(req.url, formats = [ "markdown" ])
return { "scrape_id" : result.metadata.scrape_id}
@app.post ( "/interact" )
async def interact ( req : InteractRequest):
response = firecrawl.interact(req.scrape_id, prompt = req.prompt)
return { "output" : response.output}
@app.post ( "/interact/stop" )
async def interact_stop ( req : InteractRequest):
firecrawl.stop_interaction(req.scrape_id)
return { "status" : "stopped" }
uvicorn main:app --reload
# Buscar en la web
curl -X POST http://localhost:8000/search \
-H "Content-Type: application/json" \
-d '{"query": "firecrawl web scraping", "limit": 5}'
# Hacer scraping de una página
curl -X POST http://localhost:8000/scrape \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
# Iniciar una sesión interactiva y luego enviar prompts
curl -X POST http://localhost:8000/interact/start \
-H "Content-Type: application/json" \
-d '{"url": "https://www.amazon.com"}'
FastAPI genera automáticamente documentación interactiva en http://localhost:8000/docs.
Para mejorar la concurrencia con carga, usa AsyncFirecrawl:
from firecrawl import AsyncFirecrawl
async_firecrawl = AsyncFirecrawl( api_key = os.environ[ "FIRECRAWL_API_KEY" ])
@app.post ( "/scrape-async" )
async def scrape_async ( req : ScrapeRequest):
result = await async_firecrawl.scrape(req.url)
return { "markdown" : result.markdown}
Documentación de scraping Todas las opciones de scraping, incluidos los formatos, las acciones y los proxies
Documentación de Search Buscar en la web y obtener el contenido completo de la página
Documentación de Interact Haz clic, completa formularios y extrae contenido dinámico
Referencia del SDK de Python Referencia completa del SDK con crawl, map, async y más