# Billing

> How Firecrawl billing, credits, and plans work

## Overview

Firecrawl billing is **credit-based**. Every API call that you make consumes credits. The number of credits depends on the endpoint and the options that you use. Your plan gives you a monthly credit allotment. Pay-as-you-go adds more credits when the allotment runs out.

For current plan pricing, visit the [Firecrawl pricing page](https://www.firecrawl.dev/pricing).

<Note>
All Firecrawl invoices are billed in **US Dollars (USD)**, regardless of your billing address or payment method.
</Note>

## Credits

Credits are the unit of usage in Firecrawl. Each plan includes a monthly credit allotment that resets at the start of each billing cycle. Different API endpoints consume different amounts of credits.

### Credit costs per endpoint

| Endpoint | Credit Cost | Notes |
|----------|------------|-------|
| **Scrape** | 1 credit / page | Convert a single URL into clean markdown, HTML, or structured data. Additional credits apply when using scrape options (see below). |
| **Crawl** | 1 credit / page | Scrape an entire website by following links from a starting URL. The same per-page scrape option costs apply to each page crawled. |
| **Map** | 1 credit / call | Discover all URLs on a website without scraping their content. |
| **Search** | 2 credits / 10 results | Search the web and optionally scrape the results. Rounded up per 10 results (e.g., 11 results = 4 credits). Additional per-page scrape costs apply to each result that is scraped. See [here](/features/search#zero-data-retention-zdr) for enterprise ZDR search pricing. |
| **Interact** | 2–7 credits / browser minute | Interactive browser sandbox session, billed per browser minute with a one-minute minimum. Sessions that use a `prompt` bill at 7 credits / browser minute; sessions without a prompt (Playwright `code` only) bill at 2 credits / browser minute. |
| **Agent** | Dynamic | Autonomous web research agent. 5 daily runs free; usage-based pricing beyond that. |

### Additional credit costs for scrape options

Certain scrape options add credits on top of the base cost per page:

| Option | Additional Cost | Description |
|--------|----------------|-------------|
| PDF parsing | +1 credit / PDF page | Extract content from PDF documents |
| JSON format (LLM extraction) | +4 credits / page | Use an LLM to extract structured JSON data from the page |
| Prompt injection check | +4 credits / page | Opt-in `checkPromptInjection` guard for JSON format (see [Prompt injection detection](/features/llm-extract#prompt-injection-detection)). If the scrape fails after the check has run, 5 credits are billed instead of the usual 0 for a failed scrape. That includes a scrape blocked with a 403 because an injection was detected. |
| Zero Data Retention (ZDR) | +1 credit / page | Ensures no data is persisted beyond the request (see [Scrape ZDR](/features/scrape#zero-data-retention-zdr)) |

These modifiers stack. For example, scraping a page with both JSON format and Zero Data Retention costs **1 + 4 + 1 = 6 credits** per page. These same modifiers apply to the Crawl and Search endpoints since they use scrape internally for each page.

Requests to `x.com` and other X/Twitter URLs use the Grok API and have separate pricing. See [X (x.com) billing](#x-xcom-billing) at the bottom of this page.

### When credits are charged

Credits are charged whenever Firecrawl's infrastructure processes a request, even if the target site returns an HTTP error status code such as 403 Forbidden or 404 Not Found. This is because the scraping infrastructure (browser rendering, proxy, etc.) is fully utilized regardless of the target site's response. You can check the `metadata.statusCode` field in the API response to detect these cases and avoid retrying URLs that are consistently blocked.

For **batch scrape** and **crawl** jobs, credits are billed asynchronously as each page completes processing, not when the job is submitted. This means there can be a delay between submitting a job and seeing the full credit cost reflected on your account. If a batch contains many URLs or pages are queued during high-traffic periods, credits may continue to appear minutes or hours after submission. Polling or checking batch status does not consume credits.

<Note>
**Crawl pre-flight credit check:** Before a crawl job starts, Firecrawl verifies that your remaining credit balance can cover the full `limit` parameter you've requested. If your balance is lower than `limit`, the request returns a 402 even if the crawl would have discovered fewer pages. The default `limit` is **10,000**, so omitting it requires 10,000 credits available up front. To avoid this, pass an explicit `limit` that matches the number of pages you actually intend to crawl (e.g., `limit: 100`).
</Note>

### Tracking your usage

You can monitor your credit usage in two ways:

- **Dashboard**: View your current and historical usage at [firecrawl.dev/app](https://www.firecrawl.dev/app)
- **API**: Use the [Credit Usage](/api-reference/endpoint/credit-usage) and [Credit Usage Historical](/api-reference/endpoint/credit-usage-historical) endpoints to programmatically check your usage

<Note>
We are actively working on improvements to make credit usage easier to understand. Stay tuned for updates.
</Note>

## Plans

Subscription plans bill monthly or yearly. Paid self-serve plans can also use pay-as-you-go. Pay-as-you-go adds credits when your plan allotment runs out. See [Pay-as-you-go](#auto-reload).

### Paid plans

| Plan | Monthly Credits | Concurrent Browsers |
|------|----------------|--------------------:|
| **Hobby** | 5,000 / 6,500 / 8,000 | 5 |
| **Standard** | 100,000 / 130,000 / 160,000 | 25 |
| **Growth** | 500,000 / 650,000 | 50 |
| **Scale** | 1,000,000 | 100 |

<Note>
For needs beyond Scale, Firecrawl offers **Enterprise** plans with custom credits, dedicated support, SLAs, bulk discounts, zero-data retention, and SSO. Visit the [Enterprise page](https://www.firecrawl.dev/enterprise) for details.
</Note>

All paid plans are available with **monthly** or **yearly** billing. Yearly billing offers a discount compared to paying month-to-month. For current pricing on each plan, visit the [pricing page](https://www.firecrawl.dev/pricing).

### Billing cycle

- **Monthly plans**: Credits reset on your monthly renewal date
- **Yearly plans**: You are billed annually, but credits still reset each month on your virtual monthly renewal date
- **Unused plan credits do not roll over by default**: your monthly allotment resets each month. **Annual Scale plans roll unused plan credits over 1 month**, and **annual Enterprise plans roll them over 2 months**.

### Concurrent browsers

Concurrent browsers represent how many web pages Firecrawl can process for you simultaneously. Your plan determines this limit. If you exceed it, additional jobs wait in a queue until a slot opens. See [Rate Limits](/rate-limits) for full details on concurrency and API rate limits.

## Pay-as-you-go {#auto-reload}

Pay-as-you-go keeps your requests running when your plan credits run out. It adds credits to your account automatically.

You buy credits in increments of 5 USD. When your credit balance reaches zero, we add one increment to your account and charge your card on file.

Pay-as-you-go needs a paid self-serve plan. You cannot use pay-as-you-go on the free plan.

You can also buy credits yourself at any time. Use **Load more credits** in your [billing settings](https://www.firecrawl.dev/app/settings?tab=billing). Enter a multiple of 5 USD, and pay with your card on file. This works whether pay-as-you-go is on or off.

### Credits in an increment {#credits-in-a-batch}

The credits in an increment depend on your plan. Pay-as-you-go and manual purchases use the same rate.

| Plan | Credits per 5 USD |
|----------|-------------------|
| **Hobby** | 1,000 |
| **Standard** | 2,000 |
| **Growth** | 2,500 |
| **Scale** | 5,000 |

### Set the monthly pay-as-you-go limit {#set-the-monthly-auto-reload-limit}

Set your **Monthly pay-as-you-go limit** in either of these two places:

- In your [billing settings](https://www.firecrawl.dev/app/settings?tab=billing), on the **Billing** tab.
- On the [pricing page](https://www.firecrawl.dev/pricing), when you pick a plan.

### How the limit caps your monthly spend

Your limit is the most that pay-as-you-go can spend in one month. It rounds down to whole 5 USD increments.

For example, a limit of 25 USD allows five increments each month. A limit of 22 USD allows four increments, because 22 USD rounds down to 20 USD.

Credits that you buy manually do not count toward this limit.

## Upgrading and Downgrading

- **Upgrades** take effect immediately. You are charged the full new-plan price today (no proration), and your billing cycle resets. Your next renewal is one month or one year from the upgrade date. Any unused credits from your previous plan carry over, and your new credit allotment and concurrency limits apply right away.
- **Downgrades** are scheduled to take effect at your next renewal date. You keep your current plan's credits and limits until then, and unused time on your current plan is not credited or refunded. You can undo a scheduled downgrade from your [billing settings](https://www.firecrawl.dev/app/settings?tab=billing) any time before the effective date.

### Switching between monthly and yearly billing

- **Monthly → Yearly** at the same or higher credit tier is treated as an immediate upgrade.
- **Yearly → Monthly** is treated as an immediate upgrade only if you move to a strictly higher credit tier.

## Running Out of Credits

If your credits run out and pay-as-you-go is off, requests that consume credits return an **HTTP 402 (Payment Required)** error.

If pay-as-you-go is on, we add a new 5 USD increment of credits when your balance reaches zero. Your requests continue.

To resume usage after a hard stop, you can:

1. Set a **Monthly pay-as-you-go limit** to buy credits automatically. See [Pay-as-you-go](#auto-reload).
2. Upgrade to a higher plan manually
3. Wait for your credits to reset at the next billing cycle

## Coupons

Firecrawl supports two types of coupons:

- **Subscription coupons** apply a discount to your plan subscription (e.g. a percentage off your monthly or yearly price). These can **only** be applied during the Stripe checkout flow when you first subscribe to a paid plan or change plans. You cannot apply a subscription coupon after checkout has completed.
- **Credit coupons** add bonus credits to your account. These can be redeemed from the **Billing** section of your dashboard at [firecrawl.dev/app/billing](https://www.firecrawl.dev/app/billing). Look for the coupon input field on the billing page to apply your code. Bonus credits from credit coupons are separate from your plan's monthly allotment and persist even if you upgrade or downgrade your plan.

## FAQs

<AccordionGroup>
  <Accordion title="Do unused credits roll over to the next month?">
    **Plan credits** do not roll over by default: your monthly allotment resets each month. **Annual Scale plans roll unused plan credits over 1 month**, and **annual Enterprise plans roll them over 2 months**.
  </Accordion>
  <Accordion title="Do pay-as-you-go credits expire?">
    Credits you buy stay on your account until you use them. They expire if you cancel your subscription, so use them before you leave. The expiry lands at the end of your current billing period, and a renewal does not touch them.
  </Accordion>
  <Accordion title="How does the monthly pay-as-you-go limit work?">
    Your limit caps what pay-as-you-go spends each month. It rounds down to whole 5 USD increments. A limit of 25 USD allows five increments each month. Leave your limit blank, and pay-as-you-go has no monthly limit. Set your limit to `0`, and pay-as-you-go turns off.
  </Accordion>
  <Accordion title="How do I know how many credits I have left?">
    Check the dashboard at [firecrawl.dev/app](https://www.firecrawl.dev/app), or call the [Credit Usage API endpoint](/api-reference/endpoint/credit-usage) programmatically.
  </Accordion>
  <Accordion title="Where do I apply a coupon code?">
    It depends on the coupon type. Apply a **credit coupon** in the Billing section of your dashboard. You can apply a **subscription coupon** (a discount on your plan price) only at the Stripe checkout page, when you subscribe or change plans.
  </Accordion>
  <Accordion title="I need more concurrency or a custom plan. Who do I contact?">
    Reach out to [help@firecrawl.dev](mailto:help@firecrawl.dev), or visit the [Enterprise page](https://www.firecrawl.dev/enterprise) to learn more about custom plans.
  </Accordion>
  <Accordion title="What currency are invoices billed in?">
    All Firecrawl invoices are billed in **US Dollars (USD)**, regardless of your billing address or payment method.
  </Accordion>
  <Accordion title="How do I manage my subscription, change plans, or cancel?">
    Go to your [billing settings](https://www.firecrawl.dev/app/settings?tab=billing). Team admins can manage everything there. Click **Manage Subscription** to open the billing portal and update your payment method, billing address, company name, or VAT number.

    To change plans, click **Change Plan** and pick a new tier. Upgrades take effect immediately. Downgrades take effect at the end of your current billing period, and you can undo one until then. See [Upgrading and Downgrading](#upgrading-and-downgrading).

    To cancel, click **Cancel Subscription**. Your plan stays active until the end of your current billing period, and you can resume it before then. When your plan ends, the credits you bought expire with it, so use them before you leave.
  </Accordion>
  <Accordion title="How do I add a VAT number, company name, or billing address to my invoices?">
    Go to your [billing settings](https://www.firecrawl.dev/app/settings?tab=billing), click **Manage Subscriptions**, and update your billing address, company name, and VAT number in the Stripe portal. Future invoices will automatically include the updated details.

    To regenerate a past paid invoice with the new information:

    1. Update your billing details in the Stripe portal first (see above).
    2. Open the **Invoice history** tab in the Stripe portal and download the PDF for the invoice you want; Stripe re-renders it against your current billing info.
    3. If an invoice doesn't pick up the updated details, email [help@firecrawl.dev](mailto:help@firecrawl.dev) with the invoice numbers and we'll regenerate them for you.
  </Accordion>
</AccordionGroup>

## X (x.com) billing

Firecrawl uses the official **Grok API** from [xAI](https://x.ai/) to provide AI-powered summarization, structured extraction, and real-time access to public X content. Requests to `x.com`, `twitter.com`, and `mobile.twitter.com` profile and post URLs are handled through Grok's authorized internal tools (`x_search`, thread fetch, and web search restricted to x.com) rather than traditional web scraping.

### Credit costs

| Component | Credit Cost | Description |
|-----------|------------|-------------|
| **Base cost** | 1 credit / request | Standard scrape request processing |
| **Grok X Query** | +29 credits / request | Grok API usage (tokens + tool calls) for X content |

For example, processing a typical post or thread request costs **30 credits** (`1` base + `29` Grok X Query) and returns Grok-generated structured data, thread context, and summaries. If JSON format (LLM extraction) is also enabled, the total is **34 credits** per request.

This method complies with X's published interfaces via xAI's partnership and provides higher-quality, reasoned output instead of raw page scraping.

<Note>
**Capabilities differ from standard scraping.** Grok returns AI-processed results, which may include summaries, key metrics, thread context, and more. For raw structured data at scale, use the [official X Enterprise API](https://developer.x.com/).
</Note>
