# Scraping más rápido (/es/features/fast-scraping)

<!-- agent-signals: reading_time_min: 5 · est_tokens: 2176 · updated: 2026-07-30 -->
Related: [Búsqueda](/es/features/search.md), [Highlights de búsqueda](/es/features/search-highlights.md), [Índice de investigación](/es/features/research.md), [scraping](/es/features/scrape.md), [Raspado en lote](/es/features/batch-scrape.md), [Modo JSON - Resultado estructurado](/es/features/llm-extract.md)

<div id="how-it-works">
  ## Cómo funciona [#cómo-funciona]
</div>

Firecrawl guarda en caché las páginas previamente extraídas y, de forma predeterminada, devuelve una copia reciente cuando está disponible.

* **Frescura predeterminada**: `maxAge = 172800000` ms (2 días). Si la copia en caché es más reciente que ese valor, se devuelve al instante; de lo contrario, Firecrawl vuelve a extraer y actualiza la caché.
* **Forzar datos frescos**: configura `maxAge: 0` para extraer siempre. Ten en cuenta que esto omite por completo la caché, por lo que cada solicitud pasa por todo el pipeline de scraping; esto hará que tarde más en completarse y tenga más probabilidades de fallar. Usa un `maxAge` distinto de cero si no necesitas contenido en tiempo real en cada solicitud.
* **Omitir caché**: configura `storeInCache: false` si no quieres almacenar los resultados de una solicitud.

Obtén tus resultados **hasta un 500% más rápido** cuando no necesites los datos más recientes. Controla la frescura con `maxAge`:

1. **Devuelve al instante** si tenemos una versión reciente de la página
2. **Extrae de nuevo** solo si nuestra versión es más antigua que la edad que especifiques
3. **Ahorra tiempo**: los resultados llegan en milisegundos en lugar de segundos

<div id="when-to-use-this">
  ## Cuándo usarlo [#cuándo-usarlo]
</div>

**Ideal para:**

* Documentación, artículos, páginas de producto
* Procesamiento por lotes
* Desarrollo y pruebas
* Creación de bases de conocimiento

**Evitar en:**

* Datos en tiempo real (precios de acciones, resultados en vivo, noticias de última hora)
* Contenido que se actualiza con frecuencia
* Aplicaciones sensibles al tiempo

<div id="usage">
  ## Uso [#uso]
</div>

Añade `maxAge` a tu solicitud de scraping. Los valores se expresan en milisegundos (p. ej., `3600000` = 1 hora).

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="javascript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="JavaScript">
        JavaScript
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      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",
      )

      # Usa datos en caché si tienen menos de 1 hora (3600000 ms)
      # ¡Esto puede ser hasta un 500% más rápido que hacer un scrape desde cero!
      scrape_result = firecrawl.scrape(
          'https://firecrawl.dev',
          formats=['markdown'],
          max_age=3600000  # 1 hour in milliseconds
      )

      print(scrape_result.markdown)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="JavaScript">
      ```javascript  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // No se necesita API key para empezar — añade una para límites de tasa más altos:
        // apiKey: "fc-YOUR_API_KEY",
      });

      // Usa los datos en caché si tienen menos de 1 hora (3600000 ms)
      // ¡Esto puede ser hasta un 500% más rápido que un scrape nuevo!
      const scrapeResult = await firecrawl.scrape('https://firecrawl.dev', {
        formats: ['markdown'],
        maxAge: 3600000 // 1 hora en milisegundos
      });

      console.log(scrapeResult.markdown);
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<div id="common-maxage-values">
  ## Valores comunes de maxAge [#valores-comunes-de-maxage]
</div>

Aquí tienes algunos valores de referencia útiles:

* **5 minutos**: `300000` - Para contenido semidinámico
* **1 hora**: `3600000` - Para contenido que se actualiza cada hora
* **1 día**: `86400000` - Para contenido que se actualiza a diario
* **1 semana**: `604800000` - Para contenido relativamente estático

<div id="performance-impact">
  ## Impacto en el rendimiento [#impacto-en-el-rendimiento]
</div>

Con `maxAge` habilitado:

* **Respuestas hasta 5 veces más rápidas** para contenido reciente
* **Resultados instantáneos** en lugar de esperar a nuevas extracciones

<div id="important-notes">
  ## Notas importantes [#notas-importantes]
</div>

* **Predeterminado**: `maxAge` es `172800000` (2 días)
* **Actual cuando haga falta**: Si nuestros datos son más antiguos que `maxAge`, hacemos un scraping nuevo automáticamente
* **Sin datos obsoletos**: Nunca recibirás datos más antiguos que el `maxAge` que especifiques
* **Créditos**: Los resultados almacenados en caché siguen costando 1 crédito por página. La caché mejora la velocidad y la latencia, no el consumo de créditos.

<div id="when-caching-is-bypassed">
  ### Cuando se omite la caché [#cuando-se-omite-la-caché]
</div>

La caché se omite automáticamente cuando tu solicitud incluye cualquiera de los siguientes elementos:

* `headers` personalizados
* `actions` (pasos de automatización del navegador)
* Un `profile` del navegador
* Formato `seguimientoDeCambios`
* Configuración personalizada de viewport o calidad de `screenshot`

<div id="cache-hit-matching">
  ### Coincidencia para un acierto de caché [#coincidencia-para-un-acierto-de-caché]
</div>

Para que se produzca un acierto de caché, estos parámetros deben coincidir exactamente entre la solicitud original y las posteriores: `url`, `mobile`, `location`, `waitFor`, `blockAds`, `screenshot` (habilitado/deshabilitado y de página completa) y el modo stealth del proxy.

Puedes verificar el comportamiento de la caché consultando `metadata.cacheState` en la respuesta: será `"hit"` o `"miss"`.

<div id="faster-crawling">
  ## Rastreo más rápido [#rastreo-más-rápido]
</div>

Los mismos beneficios de velocidad se aplican al rastrear varias páginas. Usa `maxAge` dentro de `scrapeOptions` para obtener resultados en caché de páginas que hemos visto recientemente.

<CodeGroup>
  <CodeBlockTabs defaultValue="Python" groupId="curl+javascript+python">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="Python">
        Python
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="JavaScript">
        JavaScript
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="cURL">
        cURL
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl
      from firecrawl.v2.types import ScrapeOptions

      firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")

      # Rastreo con scraping en caché: hasta 500% más rápido para páginas vistas recientemente
      crawl_result = firecrawl.crawl(
          'https://firecrawl.dev',
          limit=100,
          scrape_options=ScrapeOptions(
              formats=['markdown'],
              max_age=3600000  # Use cached data if less than 1 hour old
          )
      )

      for page in crawl_result.data:
          print(f"URL: {page.metadata.source_url}")
          print(f"Content: {page.markdown[:200]}...")
      ```
    </CodeBlockTab>

    <CodeBlockTab value="JavaScript">
      ```javascript  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({ apiKey: "fc-YOUR_API_KEY" });

      // Rastreo con scraping en caché: hasta 500% más rápido en páginas vistas recientemente
      const crawlResult = await firecrawl.crawl('https://firecrawl.dev', {
        limit: 100,
        scrapeOptions: {
          formats: ['markdown'],
          maxAge: 3600000 // Usar datos en caché si tienen menos de 1 hora de antigüedad
        }
      });

      crawlResult.data.forEach(page => {
        console.log(`URL: ${page.metadata.sourceURL}`);
        console.log(`Content: ${page.markdown.substring(0, 200)}...`);
      });
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  
      curl -X POST https://api.firecrawl.dev/v2/crawl \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer fc-TU_API_KEY' \
        -d '{
          "url": "https://firecrawl.dev",
          "limit": 100,
          "scrapeOptions": {
            "formats": ["markdown"],
            "maxAge": 3600000
          }
        }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

Al rastrear con `maxAge`, cada página de tu rastreo se beneficiará de una mejora de velocidad del 500% si tenemos datos recientes en caché para esa página.

¡Empieza a usar `maxAge` hoy para obtener scrapes y rastreos muchísimo más rápidos!

> ¿Eres un agente de IA que necesita una clave de API de Firecrawl? Consulta [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) para ver las instrucciones de incorporación automatizada.
