What each operation costs in credits, how credits are bought and spent, what is never charged, and how browser concurrency is priced.
Expand runs on prepaid credits. You buy credits up front, and delivered work draws them down. 1,000 credits cost $1, so one credit is $0.001. One successful Fetch costs 1 credit.
Your tier sets how many browsers you can run at once. Provisioned browsers add more, at $1 per browser per month.
Your balance and the Buy credits button are in your dashboard under Settings, Billing. Request activity over time is in your dashboard under Usage. How tiers are reached is on Concurrency tiers.
Every priced operation is quoted in credits.
| Operation | Credits | Definition |
|---|---|---|
| Fetch | 1 | One delivered page, file, or video. The base unit. Every other row is added on top of it. |
| Highlights | 1 | One Highlights request, inline with a Fetch or on a Snapshot you already have. See Two ways to highlight. |
| Converted document page |
$1 per browser per month on your card. See Browser concurrency.Expand bills per delivered output, not per token. For a committed monthly allowance, bulk rates, or enterprise terms, email support@expand.ai.
Your organization holds one prepaid credit balance. Delivered work draws it down, and buying credits tops it up.
Your first organization starts with 10,000 welcome credits, worth $10. Welcome credits expire 365 days after they are granted. Purchased credits stay on your balance until you spend them.
Billing shows your balance as two numbers:
Buy more with Buy credits. Choose a number of credits, any multiple of 1,000 up to 10,000,000, and pay by card in a hosted checkout. The credits land on your balance as soon as the payment is confirmed.
A Fetch costs 1 credit. Highlights on the same request add 1 more. If the URL serves a file rather than a page, the pages it converts are added on top.
Fetch request
Expand checks your balance covers it.
Credit hold
Credits are held up front.
Delivered outputs
Each output you asked for and got is counted.
Credits settled
You pay for what was delivered. The rest of the hold is released.
Each requested output is charged on its own:
| What you fetch | Credits |
|---|---|
| A page | 1 |
| A page with Highlights | 2 |
| An office file, ebook, CSV, JSON, XML, or text file | 1. These convert without a page count. |
| A PDF with a text layer | , plus per converted page |
Document conversion is charged only on a delivered result. A Fetch refused for exceeding a limit, for an unconvertible format, or because the origin returned no file is charged nothing.
documentConfig.maxPages to cap the pages a Fetch may convert, and documentConfig.ocr to "never" to skip the vision model. There is no default page limit. See Limiting what gets converted.The JSON object reports what each Fetch was charged for in data.usage: documentPages, ocrPages, audioSeconds, and videos. The Usage view in your dashboard shows request activity over time.
You pay for delivered content, not for attempts. Every Fetch holds credits up front and releases the hold when the request settles, so a request that produced nothing costs nothing.
| Outcome | Charged | Why |
|---|---|---|
| The page was captured | Yes | Content was delivered. |
The origin answered with an HTTP error status (400 and above) and the page was captured | Yes | Error pages are still content, such as a soft 404, a maintenance notice, or a status page. You receive the page plus originError with the status. |
| The origin could not be reached |
404 or 500 page is a real capture, so it costs 1 credit like any other page. Check originError before you treat the content as the page you asked for.Highlights are charged on the same basis. Delivered snippets cost 1 credit, and a request that never produced a capture costs nothing. Which errors are charged, and which to retry, is on Errors & retries.
Browser concurrency is how many browser captures your organization can run at once. It has two parts:
Total browser concurrency = tier concurrency + provisioned browsersYour tier sets the browsers included with your account, from 2 at Tier 0 to 100 at Tier 5. Tiers rise on their own as you spend credits and time passes. The table, and how tiers are reached, is on Concurrency tiers.
If you need more browsers before your next tier, add provisioned browsers in Billing. Each one costs $1 per month, billed to the card on file. The price is a fixed subscription, not a credit cost, and the browsers are added on top of your tier. You can provision up to 1,000.
| Change | When it takes effect | What you pay |
|---|---|---|
| Adding browsers | Immediately | A prorated charge for the rest of the current month right away, then $1 per browser per month |
| Removing browsers | At the end of the month you paid for | Nothing more. The browsers you paid for stay until the month ends, and nothing is refunded |
| Setting the count to zero | At the end of the month you paid for |
At your limit, a single Fetch is refused with 429 FetchConcurrencyLimitExceeded and Batched Fetch queues instead. See Limits.
Enterprise organizations get their browser concurrency from their contract and do not buy browsers here.
Expand checks your balance before it admits a request. With credits on your balance, the request runs. With none, the request is refused before any work starts, so you are never charged for a request Expand declined to run. Buying credits clears the block immediately.
1 per page |
| Every page a PDF or other file converts. An image counts as one page. |
| Vision-model page | 5 per page | A page read by a vision model instead of a text layer, such as a scanned PDF or any image. On top of the converted page. |
| Video | 5 per video | A YouTube video that delivered a transcript, whatever its length. |
| Transcribed audio | 10 per minute | Audio files, and videos with no caption track. Rounded up, one-minute minimum. |
| Crawl page render | 1 per page | A page Crawl renders in a browser. A freshness check that does not render is free. |
| Failed, blocked, or empty work | 0 | Nothing was delivered, so nothing is charged. |
11| A scanned PDF, or any image | 1, plus 1 per page, plus 5 per vision-model page |
| An audio file | 1, plus 10 per transcribed minute |
| A YouTube video with captions | 6, the Fetch plus the video |
| A YouTube video with no captions | 6, plus 10 per transcribed minute |
| No |
No page was delivered. The response is 200 with a FetchOriginError in place of content. |
| The origin refused the file, or it was missing or removed | No | No file was delivered. The error is FetchOriginHttpError at 404 or 410 for a missing or removed file, and 502 otherwise. |
The page blocked the capture (403 FetchBlocked) | No | Expand did not deliver the page. |
The page exceeded a size limit (413 FetchPageTooLarge) | No | Expand did not deliver the page. |
Expand failed (500, 503) | No | Our problem, not your charge. |
| A crawl freshness check that did not render | No | An internal check, never a delivered page. |
| Nothing more |