Este SDK usa actualmente la versión v1 de la API de Firecrawl, que no es la más reciente (v2 está disponible). Algunas funciones y mejoras podrían estar disponibles solo en v2.
Para instalar el SDK de Firecrawl para Go, puedes usar go get:
go get github.com/mendableai/firecrawl-go
- Obtén una clave de API en firecrawl.dev
- Define la
API key
como parámetro en la estructura FirecrawlApp
.
- Define la
API URL
y/o pásala como parámetro a la estructura FirecrawlApp
. De forma predeterminada es https://api.firecrawl.dev
.
- Define la
version
y/o pásala como parámetro a la estructura FirecrawlApp
. De forma predeterminada es v1
.
Aquí tienes un ejemplo de cómo usar el SDK con manejo de errores:
import (
"fmt"
"log"
"github.com/google/uuid"
"github.com/mendableai/firecrawl-go"
)
func ptr[T any](v T) *T {
return &v
}
func main() {
// Inicializa FirecrawlApp con tu clave de API
apiKey := "fc-YOUR_API_KEY"
apiUrl := "https://api.firecrawl.dev"
version := "v1"
app, err := firecrawl.NewFirecrawlApp(apiKey, apiUrl, version)
if err != nil {
log.Fatalf("Error al inicializar FirecrawlApp: %v", err)
}
// Realiza scraping de un sitio web
scrapeStatus, err := app.ScrapeUrl("https://firecrawl.dev", firecrawl.ScrapeParams{
Formats: []string{"markdown", "html"},
})
if err != nil {
log.Fatalf("Error al enviar la solicitud de scraping: %v", err)
}
fmt.Println(scrapeStatus)
// Realiza un rastreo (crawl) de un sitio web
idempotencyKey := uuid.New().String() // clave de idempotencia opcional
crawlParams := &firecrawl.CrawlParams{
ExcludePaths: []string{"blog/*"},
MaxDepth: ptr(2),
}
crawlStatus, err := app.CrawlUrl("https://firecrawl.dev", crawlParams, &idempotencyKey)
if err != nil {
log.Fatalf("Error al enviar la solicitud de rastreo: %v", err)
}
fmt.Println(crawlStatus)
}
Para extraer una única URL con manejo de errores, usa el método ScrapeURL
. Recibe la URL como parámetro y devuelve los datos extraídos como un diccionario.
// Extraer datos de un sitio web
scrapeResult, err := app.ScrapeUrl("https://firecrawl.dev", map[string]any{
"formats": []string{"markdown", "html"},
})
if err != nil {
log.Fatalf("Error al extraer la URL: %v", err)
}
fmt.Println(scrapeResult)
Para rastrear un sitio web, usa el método CrawlUrl
. Recibe la URL inicial y parámetros opcionales como argumentos. El argumento params
te permite especificar opciones adicionales para la tarea de rastreo, como el número máximo de páginas a rastrear, los dominios permitidos y el formato de salida.
crawlStatus, err := app.CrawlUrl("https://firecrawl.dev", map[string]any{
"limit": 100,
"scrapeOptions": map[string]any{
"formats": []string{"markdown", "html"},
},
})
if err != nil {
log.Fatalf("No se pudo enviar la solicitud de rastreo: %v", err)
}
fmt.Println(crawlStatus)
Comprobar el estado del rastreo
Para comprobar el estado de un trabajo de rastreo, usa el método CheckCrawlStatus
. Recibe el ID del trabajo como parámetro y devuelve el estado actual del rastreo.
// Obtener el estado del rastreo
crawlStatus, err := app.CheckCrawlStatus("<crawl_id>")
if err != nil {
log.Fatalf("Error al obtener el estado del rastreo: %v", err)
}
fmt.Println(crawlStatus)
Usa MapUrl
para generar una lista de URL de un sitio web. El argumento params
te permite personalizar el proceso de mapeo, incluidas opciones para excluir subdominios o utilizar el sitemap.
// Mapear un sitio web
mapResult, err := app.MapUrl("https://firecrawl.dev", nil)
if err != nil {
log.Fatalf("No se pudo mapear la URL: %v", err)
}
fmt.Println(mapResult)
El SDK gestiona los errores que devuelve la API de Firecrawl y lanza las excepciones correspondientes. Si se produce un error durante una solicitud, se lanzará una excepción con un mensaje descriptivo.