Búsqueda
Busca en la web y obtén el contenido completo de los resultados
Busca en la web y obtén contenido limpio y estructurado de cada resultado en una sola llamada a la API. Envía una consulta a /search y Firecrawl devuelve títulos, descripciones y URLs. Agrega scrapeOptions para recuperar también el markdown completo de la página, HTML, links o capturas de pantalla de cada resultado.
Los resultados de búsqueda incluyen highlights relevantes para la consulta de forma predeterminada. Establece highlights en false cuando quieras en su lugar la descripción simple o el fragmento de cada sitio web.
Para ver la lista completa de parámetros, consulta la referencia de la API del endpoint Search.
Pruébalo en el Playground
Prueba buscar en el playground interactivo; no necesitas escribir código.
Se usa para realizar búsquedas en la web y, opcionalmente, obtener contenido de los resultados.
# pip install firecrawl-py
from firecrawl import Firecrawl
firecrawl = Firecrawl(
# No se necesita API key para comenzar — agrega una para límites de tasa más altos:
# api_key="fc-YOUR-API-KEY",
)from firecrawl import Firecrawl
firecrawl = Firecrawl(
# No se necesita API key para comenzar — agrega una para límites de tasa más altos:
# api_key="fc-YOUR-API-KEY",
)
results = firecrawl.search(
query="firecrawl",
limit=3,
)
print(results)Los SDKs devuelven directamente el objeto de datos. cURL devuelve la carga útil completa.
{
"success": true,
"data": {
"web": [
{
"url": "https://www.firecrawl.dev/",
"title": "Firecrawl - The Web Data API for AI",
"description": "The web crawling, scraping, and search API for AI. Built for scale. Firecrawl delivers the entire internet to AI agents and builders.",
"position": 1
},
{
"url": "https://github.com/firecrawl/firecrawl",
"title": "mendableai/firecrawl: Turn entire websites into LLM-ready ... - GitHub",
"description": "Firecrawl is an API service that takes a URL, crawls it, and converts it into clean markdown or structured data.",
"position": 2
},
...
],
"images": [
{
"title": "Quickstart | Firecrawl",
"imageUrl": "https://mintlify.s3.us-west-1.amazonaws.com/firecrawl/logo/logo.png",
"imageWidth": 5814,
"imageHeight": 1200,
"url": "https://docs.firecrawl.dev/",
"position": 1
},
...
],
"news": [
{
"title": "Y Combinator startup Firecrawl is ready to pay $1M to hire three AI agents as employees",
"url": "https://techcrunch.com/2025/05/17/y-combinator-startup-firecrawl-is-ready-to-pay-1m-to-hire-three-ai-agents-as-employees/",
"snippet": "It's now placed three new ads on YC's job board for “AI agents only” and has set aside a $1 million budget total to make it happen.",
"date": "3 months ago",
"position": 1
},
...
]
}
}Si usas los SDKs: los resultados de búsqueda se agrupan por tipo de fuente, no en un array genérico .data. Accede a los resultados web con result.web, a las noticias con result.news y a las imágenes con result.images.
result = firecrawl.search("query")
for item in result.web or []:
print(item.url, item.title)const result = await firecrawl.search("query");
for (const item of result.web ?? []) {
console.log(item.url, item.title);
}Además de los resultados web habituales, Search admite tipos de resultados especializados mediante el parámetro sources:
web: resultados web estándar (predeterminado)news: resultados enfocados en noticiasimages: resultados de búsqueda de imágenes
Puedes solicitar varias fuentes en una sola llamada (por ejemplo, sources: ["web", "news"]). Cuando lo haces, el parámetro limit se aplica por tipo de fuente; así, limit: 5 con sources: ["web", "news"] devuelve hasta 5 resultados web y hasta 5 resultados de noticias (10 en total). Si necesitas parámetros diferentes por fuente (por ejemplo, valores limit distintos o diferentes scrapeOptions), haz llamadas separadas en su lugar.
Filtra los resultados por categorías específicas usando el parámetro categories:
github: Busca en repositorios, código, issues y documentación de GitHubresearch: Busca en sitios académicos y de investigación (arXiv, Nature, IEEE, PubMed, etc.)pdf: Busca archivos PDF
Busca específicamente dentro de los repositorios de GitHub:
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-TU_API_KEY" \
-d '{
"query": "web scraping en Python",
"categories": ["github"],
"limit": 10
}'Busca en sitios web académicos y de investigación:
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-TU_API_KEY" \
-d '{
"query": "transformers de aprendizaje automático",
"categories": ["investigación"],
"limit": 10
}'Combina varias categorías en una sola búsqueda:
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "redes neuronales",
"categories": ["github", "investigación"],
"limit": 15
}'Usa includeDomains para restringir los resultados de búsqueda a dominios específicos, o excludeDomains para excluir dominios específicos de la búsqueda. Estos campos añaden internamente los operadores site: y -site: a la consulta, así que pasa únicamente los dominios, sin protocolo ni ruta.
includeDomains y excludeDomains son mutuamente excluyentes. Usa uno u otro en una misma solicitud.
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "web scraping",
"includeDomains": ["firecrawl.dev", "docs.firecrawl.dev"],
"limit": 10
}'curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "web scraping tools",
"excludeDomains": ["example.com"],
"limit": 10
}'Cada resultado de búsqueda incluye un campo category que indica su fuente:
{
"success": true,
"data": {
"web": [
{
"url": "https://github.com/example/neural-network",
"title": "Implementación de redes neuronales",
"description": "Implementación de redes neuronales en PyTorch",
"category": "github"
"category": "github",
{
"url": "https://arxiv.org/abs/2024.12345",
"title": "Avances en la arquitectura de redes neuronales",
"description": "Artículo de investigación sobre mejoras en redes neuronales",
"category": "research"
}
]
}
}Ejemplos:
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-TU_API_KEY" \
-d '{
"query": "openai",
"sources": ["news"],
"limit": 5
}'curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "jupiter",
"sources": ["images"],
"limit": 8
}'Usa los operadores de imágenes para encontrar imágenes de alta resolución:
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "atardecer imagesize:1920x1080",
"sources": ["images"],
"limit": 5
}'curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "fondo de pantalla de montaña larger:2560x1440",
"sources": ["images"],
"limit": 8
}'Resoluciones HD habituales:
imagesize:1920x1080- Full HD (1080p)imagesize:2560x1440- QHD (1440p)imagesize:3840x2160- 4K UHDlarger:1920x1080- HD o superiorlarger:2560x1440- QHD o superior
Busca y recupera contenido de los resultados de búsqueda en una sola operación.
from firecrawl import Firecrawl
firecrawl = Firecrawl(
# No se necesita API key para comenzar — agrega una para límites de tasa más altos:
# api_key="fc-YOUR_API_KEY",
)
# Buscar y hacer scraping de contenido
results = firecrawl.search(
"firecrawl web scraping",
limit=3,
scrape_options={
"formats": ["markdown", "links"]
}
)Todas las opciones del punto de conexión /scrape son compatibles con este punto de conexión de búsqueda mediante el parámetro scrapeOptions.
{
"success": true,
"data": [
{
"title": "Firecrawl - La API definitiva de web scraping",
"description": "Firecrawl es una potente API de web scraping que convierte cualquier sitio web en datos limpios y estructurados para IA y análisis.",
"url": "https://firecrawl.dev/",
"markdown": "# Firecrawl\n\nLa API definitiva de web scraping\n\n## Convierte cualquier sitio web en datos limpios y estructurados\n\nFirecrawl facilita la extracción de datos de sitios web para aplicaciones de IA, investigación de mercados, agregación de contenido y más...",
"links": [
"https://firecrawl.dev/pricing",
"https://firecrawl.dev/docs",
"https://firecrawl.dev/guides"
],
"metadata": {
"title": "Firecrawl - La API definitiva de web scraping",
"description": "Firecrawl es una potente API de web scraping que convierte cualquier sitio web en datos limpios y estructurados para IA y análisis.",
"sourceURL": "https://firecrawl.dev/",
"statusCode": 200
}
}
]
}Si necesitas filtrar o procesar los resultados de búsqueda antes de hacer scraping, usa un enfoque de dos pasos: primero busca y luego haz scraping de las URL que quieras.
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")
# Paso 1: Buscar
results = firecrawl.search("firecrawl web scraping", limit=5)
# Paso 2: Hacer scraping de la URL de cada resultado para obtener el contenido completo
for item in results.web or []:
page = firecrawl.scrape(item.url, formats=["markdown"])
print(page.markdown[:200])Cuándo usar cada enfoque:
- Un solo paso (
scrapeOptionsen search): quieres el contenido de todos los resultados. Es más simple y rápido. - Dos pasos (buscar y luego hacer scraping): quieres filtrar, ordenar o hacer scraping selectivo de los resultados. Es más flexible.
Ambos enfoques usan Firecrawl para el paso de scraping. No uses peticiones HTTP genéricas ni generes resúmenes solo a partir de fragmentos de búsqueda: el contenido completo de la página obtenido con el scraping de Firecrawl es lo que hace que los resultados sean fiables y completos.
La API de búsqueda de Firecrawl admite varios parámetros para personalizar la búsqueda:
from firecrawl import Firecrawl
firecrawl = Firecrawl(
# No se necesita API key para comenzar — añade una para límites de tasa más altos:
# api_key="fc-YOUR_API_KEY",
)
# Search with location settings (Germany)
search_result = firecrawl.search(
"web scraping tools",
limit=5,
location="Germany"
)
# Process the results
for result in search_result.data:
print(f"Title: {result['title']}")
print(f"URL: {result['url']}")Usa el parámetro tbs para filtrar resultados por periodo. Ten en cuenta que tbs solo se aplica a resultados de web — no filtra resultados de news ni de images. Si necesitas noticias filtradas por tiempo, considera usar web como origen con el operador site: para restringir la búsqueda a dominios de noticias específicos.
from firecrawl import Firecrawl
firecrawl = Firecrawl(
# No se necesita API key para comenzar — añade una para límites de tasa más altos:
# api_key="fc-YOUR-API-KEY",
)
results = firecrawl.search(
query="firecrawl",
limit=5,
tbs="qdr:d",
)
print(len(results.get('web', [])))Valores comunes de tbs:
qdr:h- Última horaqdr:d- Últimas 24 horasqdr:w- Última semanaqdr:m- Último mesqdr:y- Último añosbd:1- Ordenar por fecha (las más recientes primero)
Para un filtrado temporal más preciso, puedes especificar rangos exactos usando el formato de rango de fechas personalizado:
from firecrawl import Firecrawl
# Inicializa el cliente con tu clave de API
firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")
# Busca resultados de diciembre de 2024
search_result = firecrawl.search(
"firecrawl updates",
limit=10,
tbs="cdr:1,cd_min:12/1/2024,cd_max:12/31/2024"
)Puedes combinar sbd:1 con filtros de tiempo para obtener resultados ordenados por fecha dentro de un rango temporal. Por ejemplo, sbd:1,qdr:w devuelve resultados de la última semana ordenados de más recientes a más antiguos, y sbd:1,cdr:1,cd_min:12/1/2024,cd_max:12/31/2024 devuelve resultados de diciembre de 2024 ordenados por fecha.
Configura un tiempo de espera personalizado para las operaciones de búsqueda:
from firecrawl import Firecrawl
# Inicializa el cliente con tu clave de API
firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")
# Establece un tiempo de espera de 30 segundos
search_result = firecrawl.search(
"complex search query",
limit=10,
timeout=30000 # 30 segundos en milisegundos
)Para equipos con requisitos estrictos de tratamiento de datos, Firecrawl ofrece opciones de Retención de datos cero (ZDR) para el punto de conexión /search mediante el parámetro enterprise. La búsqueda con ZDR está disponible en los planes Enterprise — visita firecrawl.dev/enterprise para comenzar.
Esto es distinto de la opción de scrape zeroDataRetention, que controla la ZDR para las operaciones de scraping. Consulta Scrape ZDR para obtener más información. El parámetro enterprise solo se aplica a la parte de búsqueda de la solicitud.
Con ZDR de extremo a extremo, tanto Firecrawl como nuestro proveedor de búsqueda upstream aplican retención de datos cero. No se almacenan datos de consultas ni de resultados en ningún punto del pipeline.
- Costo: 10 créditos por 10 resultados
- Parámetro:
enterprise: ["zdr"]
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "sensitive topic",
"limit": 10,
"enterprise": ["zdr"]
}'Con ZDR anonimizado, Firecrawl aplica retención de datos cero completa por nuestra parte. Nuestro proveedor de búsqueda puede almacenar en caché la consulta, pero está completamente anonimizada — no se adjunta ninguna información identificativa.
- Costo: 2 créditos por 10 resultados
- Parámetro:
enterprise: ["anon"]
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "sensitive topic",
"limit": 10,
"enterprise": ["anon"]
}'Si estás usando search con scraping de contenido (scrapeOptions), el parámetro enterprise cubre la parte de búsqueda, mientras que zeroDataRetention en scrapeOptions cubre la parte de scraping. Para obtener ZDR completo en ambos, configura ambos:
curl -X POST https://api.firecrawl.dev/v2/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"query": "sensitive topic",
"limit": 5,
"enterprise": ["zdr"],
"scrapeOptions": {
"formats": ["markdown"],
"zeroDataRetention": true
}
}'El costo de una búsqueda es de 2 créditos por cada 10 resultados, redondeado hacia arriba (1–10 resultados = 2 créditos, 11–20 = 4 créditos, y así sucesivamente). Si las opciones de scraping están habilitadas, se aplican los costos estándar de scraping a cada resultado de búsqueda:
- Basic scrape: 1 crédito por página web
- PDF parsing: 1 crédito por página de PDF
- Enhanced proxy mode: 4 créditos adicionales por página web
- JSON mode: 4 créditos adicionales por página web
Para ayudar a controlar los costos:
- Establece
parsers: []si no se requiere el análisis de PDF - Usa
proxy: "basic"en lugar de"enhanced"cuando sea posible, o configúralo en"auto" - Limita la cantidad de resultados de búsqueda con el parámetro
limit
Para más detalles sobre las opciones de scraping, consulta la documentación de la función Scrape. Todo, excepto FIRE-1 (Agente) y seguimientoDeCambios, es compatible con este punto de conexión de búsqueda.
¿Eres un agente de IA que necesita una API key de Firecrawl? Consulta firecrawl.dev/agent-onboarding/SKILL.md para ver las instrucciones de incorporación automatizada.
Cuando un resultado de búsqueda es útil o le falta contenido importante, envía tus comentarios con POST /v2/search/{jobId}/feedback. El primer envío de comentarios para un trabajo de búsqueda puede reembolsar 1 crédito, según los límites del equipo, y ayuda a mejorar la calidad de búsqueda de Firecrawl. Consulta Comentarios sobre la búsqueda.