Appearance
Proxy Configuration
Updated Feb 2026Firecrawl 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
| Type | Cost | Speed | Reliability | Description |
|---|---|---|---|---|
basic | Standard (1 credit) | Fast | Good for most sites | Standard proxies that work for typical websites |
enhanced | +5 credits | Slower | High on protected sites | Specialized proxies for complex sites with anti-bot protection |
auto | Standard or +5 | Varies | Highest overall | Tries 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
| Parameter | Type | Default | Description |
|---|---|---|---|
location.country | string | "US" | ISO 3166-1 alpha-2 country code |
location.languages | string[] | ["en"] | Preferred languages (Accept-Language header) |
Supported Countries
The following countries have basic proxy support:
| Region | Countries |
|---|---|
| North America | US, CA, MX |
| Europe | GB, DE, FR, ES, IT, NL, PL, SE, NO, DK, FI, AT, CH, BE, IE, PT, CZ, RO, HU |
| Asia-Pacific | AU, JP, KR, IN, SG |
| South America | BR |
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:
- The closest available region (EU or US) is used for the actual proxy
- The browser location is set to your requested country
- Language headers are set according to your
languagesparameter
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
| Configuration | Credits per Page |
|---|---|
| Basic proxy, US (default) | 1 |
| Basic proxy, any country | 1 |
| Enhanced proxy | 1 + 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-passwordSelf-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).
Related Pages
- Enhanced Mode -- Anti-bot bypass strategies
- Scrape -- All scrape parameters
- Batch Scrape -- Bulk operations with proxy settings
- Self-Hosting -- Proxy configuration for self-hosted
- Pricing -- Credit cost breakdown
Next: Extract API -->