# Enhanced Mode (/features/enhanced-mode)

<!-- agent-signals: reading_time_min: 2 · est_tokens: 872 · updated: 2026-07-30 -->
Related: [Search](/features/search.md), [Search Highlights](/features/search-highlights.md), [Research Index](/features/research.md), [Scrape](/features/scrape.md), [Faster Scraping](/features/fast-scraping.md), [Batch Scrape](/features/batch-scrape.md)

Firecrawl provides different proxy types to help you scrape websites with varying levels of complexity. Set the `proxy` parameter to control which proxy strategy is used for a request.

## Proxy types [#proxy-types]

Firecrawl supports three proxy types:

| Type       | Description                                                  | Speed  | Cost                                                        |
| ---------- | ------------------------------------------------------------ | ------ | ----------------------------------------------------------- |
| `basic`    | Standard proxies suitable for most sites                     | Fast   | 1 credit                                                    |
| `enhanced` | Enhanced proxies for complex sites                           | Slower | 5 credits per request                                       |
| `auto`     | Tries `basic` first, then retries with `enhanced` on failure | Varies | 1 credit if basic succeeds, 5 credits if enhanced is needed |

If you do not specify a proxy, Firecrawl defaults to `auto`.

## Basic usage [#basic-usage]

Set the `proxy` parameter to choose a proxy strategy. The following example uses `auto`, which lets Firecrawl decide when to escalate to enhanced proxies.

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

      <CodeBlockTabsTrigger value="Node">
        Node
      </CodeBlockTabsTrigger>

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

    <CodeBlockTab value="Python">
      ```python  
      from firecrawl import Firecrawl

      firecrawl = Firecrawl(
        # No API key needed to get started — add one for higher rate limits:
        # api_key='fc-YOUR-API-KEY',
      )

      # Choose proxy strategy: 'basic' | 'enhanced' | 'auto'
      doc = firecrawl.scrape('https://example.com', formats=['markdown'], proxy='auto')

      print(doc.warning or 'ok')
      ```
    </CodeBlockTab>

    <CodeBlockTab value="Node">
      ```js  
      import { Firecrawl } from 'firecrawl';

      const firecrawl = new Firecrawl({
        // No API key needed to get started — add one for higher rate limits:
        // apiKey: "fc-YOUR-API-KEY",
      });

      // Choose proxy strategy: 'basic' | 'enhanced' | 'auto'
      const doc = await firecrawl.scrape('https://example.com', {
        formats: ['markdown'],
        proxy: 'auto'
      });

      console.log(doc.warning || 'ok');
      ```
    </CodeBlockTab>

    <CodeBlockTab value="cURL">
      ```bash  

      // Choose proxy strategy: 'basic' | 'enhanced' | 'auto'
      # No API key needed to get started — add -H "Authorization: Bearer fc-YOUR-API-KEY" for higher rate limits:
      curl -X POST https://api.firecrawl.dev/v2/scrape \
          -H 'Content-Type: application/json' \
          -d '{
            "url": "https://example.com",
            "proxy": "auto"
          }'

      ```
    </CodeBlockTab>
  </CodeBlockTabs>
</CodeGroup>

<Info>
  Enhanced proxy requests cost **5 credits per request**. When using `auto`, the 5-credit cost only applies if the basic proxy fails and the enhanced retry succeeds.
</Info>

> Are you an AI agent that needs a Firecrawl API key? See [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) for automated onboarding instructions.
