Skip to content

Proxy Configuration

Updated Feb 2026

Firecrawl routes all requests through proxies by default. Configure proxy type, geographic location, and language preferences to optimize scraping reliability and access geo-targeted content.

Overview

Every Firecrawl request goes through a proxy. The default behavior uses auto mode, which attempts a basic proxy first and falls back to enhanced if needed. You can override this to force a specific proxy type or target specific countries.

Proxy Types

TypeCostSpeedReliabilityDescription
basicStandard (1 credit)FastGood for most sitesStandard proxies that work for typical websites
enhanced+5 creditsSlowerHigh on protected sitesSpecialized proxies for complex sites with anti-bot protection
autoStandard or +5VariesHighest overallTries basic first, retries with enhanced on failure

How Auto Works

If no proxy parameter is specified, Firecrawl defaults to auto.

Basic Configuration

Python

python
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

# Basic proxy (fastest)
result = firecrawl.scrape(
    "https://example.com",
    formats=["markdown"],
    proxy="basic"
)

# Enhanced proxy (most reliable for protected sites)
result = firecrawl.scrape(
    "https://protected-site.com",
    formats=["markdown"],
    proxy="enhanced"
)

# Auto (recommended default)
result = firecrawl.scrape(
    "https://unknown-site.com",
    formats=["markdown"],
    proxy="auto"
)

Node.js

javascript
import Firecrawl from '@mendable/firecrawl-js';

const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

// Basic proxy
const doc = await firecrawl.scrape("https://example.com", {
  formats: ["markdown"],
  proxy: "basic"
});

// Enhanced proxy
const doc = await firecrawl.scrape("https://protected-site.com", {
  formats: ["markdown"],
  proxy: "enhanced"
});

// Auto mode
const doc = await firecrawl.scrape("https://unknown-site.com", {
  formats: ["markdown"],
  proxy: "auto"
});

cURL

bash
curl -X POST https://api.firecrawl.dev/v2/scrape \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer fc-YOUR-API-KEY' \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "proxy": "enhanced"
  }'

Geographic Targeting

Target specific countries to access geo-restricted content or get localized results. Configure the location parameter with a two-letter ISO 3166-1 alpha-2 country code.

Configuration

python
result = firecrawl.scrape(
    "https://example.com",
    formats=["markdown"],
    location={
        "country": "DE",
        "languages": ["de"]
    }
)
javascript
const doc = await firecrawl.scrape("https://example.com", {
  formats: ["markdown"],
  location: {
    country: "DE",
    languages: ["de"]
  }
});
bash
curl -X POST https://api.firecrawl.dev/v2/scrape \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer fc-YOUR-API-KEY' \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "location": {
      "country": "DE",
      "languages": ["de"]
    }
  }'

Location Parameters

ParameterTypeDefaultDescription
location.countrystring"US"ISO 3166-1 alpha-2 country code
location.languagesstring[]["en"]Preferred languages (Accept-Language header)

Supported Countries

The following countries have basic proxy support:

RegionCountries
North AmericaUS, CA, MX
EuropeGB, DE, FR, ES, IT, NL, PL, SE, NO, DK, FI, AT, CH, BE, IE, PT, CZ, RO, HU
Asia-PacificAU, JP, KR, IN, SG
South AmericaBR

Enhanced Proxy Availability

Enhanced proxies are currently only available in United States (US) and Australia (AU). If you request enhanced proxy with a country that does not support it, Firecrawl uses the closest available region (EU or US) and sets the browser location to your requested country.

Fallback Behavior

If Firecrawl does not have proxies in your requested country:

  1. The closest available region (EU or US) is used for the actual proxy
  2. The browser location is set to your requested country
  3. Language headers are set according to your languages parameter

Proxy with Batch Operations

Batch Scrape

python
results = firecrawl.batch_scrape(
    [
        "https://site-a.com",
        "https://site-b.de",
        "https://site-c.jp",
    ],
    formats=["markdown"],
    proxy="auto",
    location={"country": "US"}
)

Crawl

python
results = firecrawl.crawl(
    "https://example.com",
    limit=100,
    scrape_options={
        "formats": ["markdown"],
        "proxy": "enhanced",
        "location": {"country": "GB", "languages": ["en-GB"]}
    }
)

Cost Comparison

ConfigurationCredits per Page
Basic proxy, US (default)1
Basic proxy, any country1
Enhanced proxy1 + 5 = 6
Auto (basic succeeds)1
Auto (enhanced fallback)1 + 5 = 6

Cost Optimization

Start with basic proxy. If you encounter blocked requests (403, empty content), switch to auto mode. Only use enhanced when you know the target site actively blocks scrapers. See Enhanced Mode for detailed anti-bot strategies.

Self-Hosted Proxy Configuration

When self-hosting, bring your own proxy by setting these environment variables:

bash
PROXY_SERVER=0.1.2.3:1234
PROXY_USERNAME=your-username
PROXY_PASSWORD=your-password

Self-hosted deployments do not have access to Firecrawl's enhanced proxy infrastructure. For anti-bot bypass on self-hosted instances, consider third-party proxy services (e.g., Bright Data, Oxylabs, ScraperAPI).


Next: Extract API -->