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.
O Firecrawl funciona com PHP por meio da API REST com cURL.
<? php
$apiKey = getenv ( 'FIRECRAWL_API_KEY' );
$ch = curl_init ( 'https://api.firecrawl.dev/v2/search' );
curl_setopt_array ( $ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey ,
'Content-Type: application/json' ,
],
CURLOPT_POSTFIELDS => json_encode ([
'query' => 'firecrawl web scraping' ,
'limit' => 5 ,
]),
]);
$response = curl_exec ( $ch );
curl_close ( $ch );
$results = json_decode ( $response , true );
foreach ( $results [ 'data' ][ 'web' ] as $result ) {
echo $result [ 'title' ] . ' - ' . $result [ 'url' ] . " \n " ;
}
{
"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
<? php
$ch = curl_init ( 'https://api.firecrawl.dev/v2/scrape' );
curl_setopt_array ( $ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey ,
'Content-Type: application/json' ,
],
CURLOPT_POSTFIELDS => json_encode ([
'url' => 'https://example.com' ,
]),
]);
$response = curl_exec ( $ch );
curl_close ( $ch );
$data = json_decode ( $response , true );
echo $data [ 'data' ][ 'markdown' ];
{
"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 scraping para iniciar uma sessão
<? php
$ch = curl_init ( 'https://api.firecrawl.dev/v2/scrape' );
curl_setopt_array ( $ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey ,
'Content-Type: application/json' ,
],
CURLOPT_POSTFIELDS => json_encode ([
'url' => 'https://www.amazon.com' ,
'formats' => [ 'markdown' ],
]),
]);
$response = curl_exec ( $ch );
curl_close ( $ch );
$scrapeResult = json_decode ( $response , true );
$scrapeId = $scrapeResult [ 'data' ][ 'metadata' ][ 'scrapeId' ];
echo "scrapeId: $scrapeId \n " ;
Etapa 2 — Enviar as interações
<? php
$interactUrl = "https://api.firecrawl.dev/v2/scrape/ $scrapeId /interact" ;
$headers = [
'Authorization: Bearer ' . $apiKey ,
'Content-Type: application/json' ,
];
// Buscar um produto
$ch = curl_init ( $interactUrl );
curl_setopt_array ( $ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => $headers ,
CURLOPT_POSTFIELDS => json_encode ([
'prompt' => 'Search for iPhone 16 Pro Max' ,
]),
]);
$response = curl_exec ( $ch );
curl_close ( $ch );
echo $response . " \n " ;
// Clicar no primeiro resultado
$ch = curl_init ( $interactUrl );
curl_setopt_array ( $ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => $headers ,
CURLOPT_POSTFIELDS => json_encode ([
'prompt' => 'Click on the first result and tell me the price' ,
]),
]);
$response = curl_exec ( $ch );
curl_close ( $ch );
echo $response . " \n " ;
Etapa 3 — Encerre a sessão
<? php
$ch = curl_init ( $interactUrl );
curl_setopt_array ( $ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_CUSTOMREQUEST => ' DELETE ' ,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey ,
],
]);
curl_exec ( $ch );
curl_close ( $ch );
echo "Sessão encerrada \n " ;
Classe auxiliar reutilizável
Para reutilização, encapsule a API em uma classe:
<? php
class Firecrawl
{
private string $apiKey ;
private string $baseUrl = 'https://api.firecrawl.dev/v2' ;
public function __construct ( string $apiKey )
{
$this -> apiKey = $apiKey ;
}
private function post ( string $endpoint , array $payload ) : array
{
$ch = curl_init ( $this -> baseUrl . $endpoint );
curl_setopt_array ( $ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $this -> apiKey ,
'Content-Type: application/json' ,
],
CURLOPT_POSTFIELDS => json_encode ( $payload ),
]);
$response = curl_exec ( $ch );
$httpCode = curl_getinfo ( $ch , CURLINFO_HTTP_CODE );
curl_close ( $ch );
if ( $httpCode >= 400 ) {
throw new \RuntimeException ( "Firecrawl API error: HTTP $httpCode " );
}
return json_decode ( $response , true );
}
public function scrape ( string $url , array $options = []) : array
{
return $this -> post ( '/scrape' , array_merge ([ 'url' => $url ], $options ));
}
public function search ( string $query , int $limit = 5 ) : array
{
return $this -> post ( '/search' , [ 'query' => $query , 'limit' => $limit ]);
}
}
// Uso
$app = new Firecrawl ( getenv ( 'FIRECRAWL_API_KEY' ));
$result = $app -> scrape ( 'https://example.com' );
echo $result [ 'data' ][ 'markdown' ];
Docs do Search Faça uma busca na web e obtenha o conteúdo completo da página
Docs do scraping Todas as opções de scraping, incluindo formatos, ações e proxies
Docs do interagir Clique, preencha formulários e extraia conteúdo dinâmico
Referência da API Documentação completa da API REST