Documentation Index Fetch the complete documentation index at: https://firecrawl-mog-search-exclude-include-domains.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Firecrawl funciona com Go por meio da API REST. Use net/http para fazer requisições diretamente.
package main
import (
" bytes "
" encoding/json "
" fmt "
" io "
" net/http "
" os "
)
func main () {
apiKey := os . Getenv ( "FIRECRAWL_API_KEY" )
body , _ := json . Marshal ( map [ string ] interface {}{
"query" : "firecrawl web scraping" ,
"limit" : 5 ,
})
req , _ := http . NewRequest ( "POST" , "https://api.firecrawl.dev/v2/search" , bytes . NewReader ( body ))
req . Header . Set ( "Authorization" , "Bearer " + apiKey )
req . Header . Set ( "Content-Type" , "application/json" )
resp , err := http . DefaultClient . Do ( req )
if err != nil {
fmt . Fprintf ( os . Stderr , "requisição falhou: %v \n " , err )
os . Exit ( 1 )
}
defer resp . Body . Close ()
result , _ := io . ReadAll ( resp . Body )
fmt . Println ( string ( result ))
}
{
"success" : true ,
"data" : {
"web" : [
{
"url" : "https://docs.firecrawl.dev" ,
"title" : "Firecrawl Documentation" ,
"markdown" : "# Firecrawl \n\n Firecrawl is a web scraping API..."
}
]
}
}
Fazer scraping de uma página
body , _ := json . Marshal ( map [ string ] string {
"url" : "https://example.com" ,
})
req , _ := http . NewRequest ( "POST" , "https://api.firecrawl.dev/v2/scrape" , bytes . NewReader ( body ))
req . Header . Set ( "Authorization" , "Bearer " + apiKey )
req . Header . Set ( "Content-Type" , "application/json" )
resp , err := http . DefaultClient . Do ( req )
if err != nil {
fmt . Fprintf ( os . Stderr , "request failed: %v \n " , err )
os . Exit ( 1 )
}
defer resp . Body . Close ()
result , _ := io . ReadAll ( resp . Body )
fmt . Println ( string ( result ))
{
"success" : true ,
"data" : {
"markdown" : "# Example Domain \n\n This domain is for use in illustrative examples..." ,
"metadata" : {
"title" : "Example Domain" ,
"sourceURL" : "https://example.com"
}
}
}
Inicie uma sessão no navegador, interaja com a página usando prompts em linguagem natural e, em seguida, encerre a sessão.
Etapa 1 — Faça o scraping para iniciar uma sessão
body , _ := json . Marshal ( map [ string ] interface {}{
"url" : "https://www.amazon.com" ,
"formats" : [] string { "markdown" },
})
req , _ := http . NewRequest ( "POST" , "https://api.firecrawl.dev/v2/scrape" , bytes . NewReader ( body ))
req . Header . Set ( "Authorization" , "Bearer " + apiKey )
req . Header . Set ( "Content-Type" , "application/json" )
resp , err := http . DefaultClient . Do ( req )
if err != nil {
fmt . Fprintf ( os . Stderr , "request failed: %v \n " , err )
os . Exit ( 1 )
}
defer resp . Body . Close ()
var scrapeResult map [ string ] interface {}
json . NewDecoder ( resp . Body ). Decode ( & scrapeResult )
data := scrapeResult [ "data" ].( map [ string ] interface {})
metadata := data [ "metadata" ].( map [ string ] interface {})
scrapeId := metadata [ "scrapeId" ].( string )
fmt . Println ( "scrapeId:" , scrapeId )
Etapa 2 — Enviar interações
// Buscar um produto
interactBody , _ := json . Marshal ( map [ string ] string {
"prompt" : "Search for iPhone 16 Pro Max" ,
})
interactURL := fmt . Sprintf ( "https://api.firecrawl.dev/v2/scrape/ %s /interact" , scrapeId )
req , _ = http . NewRequest ( "POST" , interactURL , bytes . NewReader ( interactBody ))
req . Header . Set ( "Authorization" , "Bearer " + apiKey )
req . Header . Set ( "Content-Type" , "application/json" )
resp , err = http . DefaultClient . Do ( req )
if err != nil {
fmt . Fprintf ( os . Stderr , "interact failed: %v \n " , err )
os . Exit ( 1 )
}
defer resp . Body . Close ()
result , _ := io . ReadAll ( resp . Body )
fmt . Println ( string ( result ))
// Clicar no primeiro resultado
interactBody , _ = json . Marshal ( map [ string ] string {
"prompt" : "Click on the first result and tell me the price" ,
})
req , _ = http . NewRequest ( "POST" , interactURL , bytes . NewReader ( interactBody ))
req . Header . Set ( "Authorization" , "Bearer " + apiKey )
req . Header . Set ( "Content-Type" , "application/json" )
resp , err = http . DefaultClient . Do ( req )
if err != nil {
fmt . Fprintf ( os . Stderr , "interact failed: %v \n " , err )
os . Exit ( 1 )
}
defer resp . Body . Close ()
result , _ = io . ReadAll ( resp . Body )
fmt . Println ( string ( result ))
Etapa 3 — Encerre a sessão
req , _ = http . NewRequest ( "DELETE" , interactURL , nil )
req . Header . Set ( "Authorization" , "Bearer " + apiKey )
resp , err = http . DefaultClient . Do ( req )
if err != nil {
fmt . Fprintf ( os . Stderr , "falha ao deletar: %v \n " , err )
os . Exit ( 1 )
}
defer resp . Body . Close ()
fmt . Println ( "Sessão encerrada" )
Para reutilizar, encapsule a API em um pequeno helper:
type FirecrawlClient struct {
APIKey string
BaseURL string
Client * http . Client
}
func NewFirecrawlClient ( apiKey string ) * FirecrawlClient {
return & FirecrawlClient {
APIKey : apiKey ,
BaseURL : "https://api.firecrawl.dev/v2" ,
Client : & http . Client {},
}
}
func ( fc * FirecrawlClient ) post ( endpoint string , payload interface {}) ([] byte , error ) {
body , err := json . Marshal ( payload )
if err != nil {
return nil , err
}
req , err := http . NewRequest ( "POST" , fc . BaseURL + endpoint , bytes . NewReader ( body ))
if err != nil {
return nil , err
}
req . Header . Set ( "Authorization" , "Bearer " + fc . APIKey )
req . Header . Set ( "Content-Type" , "application/json" )
resp , err := fc . Client . Do ( req )
if err != nil {
return nil , err
}
defer resp . Body . Close ()
return io . ReadAll ( resp . Body )
}
func ( fc * FirecrawlClient ) Scrape ( url string ) ([] byte , error ) {
return fc . post ( "/scrape" , map [ string ] string { "url" : url })
}
func ( fc * FirecrawlClient ) Search ( query string , limit int ) ([] byte , error ) {
return fc . post ( "/search" , map [ string ] interface {}{ "query" : query , "limit" : limit })
}
Docs de busca Faça uma busca na web e obtenha o conteúdo completo da página
Docs de scraping Todas as opções de scraping, incluindo formatos, ações e proxies
Docs de interação Clique, preencha formulários e extraia conteúdo dinâmico
Referência da API Documentação completa da API REST