ScrapeGraphAI uses a credit system to measure API usage. Each successful API call consumes a number of credits depending on the service and the complexity of the request.
Credit costs per service
| Service | Credits per request | Details |
|---|
| Scrape (markdown) | 1 | Basic page scrape returning markdown |
| Scrape (screenshot) | 2 | Page scrape with a screenshot |
| Scrape (branding analysis) | 25 | Full branding analysis of a page |
| Extract | 5 | Structured data extraction |
| Search (no prompt) | 2 per result | Search results without LLM processing |
| Search (with prompt) | 5 per result | Search results processed by an LLM |
| Crawl | 2 startup + per-page scrape cost | Startup fee plus scrape cost for each page |
| Monitor | +5 | Additional credits when a change is detected |
Proxy modifiers
Using a proxy adds extra credits on top of the base service cost:
| Proxy mode | Additional credits |
|---|
| Fast / JS rendering | +0 |
| Stealth | +4 |
| JS + Stealth | +5 |
| Auto (worst case) | +9 |
For a full breakdown of plans and monthly credit allowances, see Plans & Pricing.
Failed requests and requests that return an error are not charged.
Checking your credit balance
Log in to the dashboard to see:
- Remaining credits for your current billing period
- Usage history broken down by service and date
You can also query your balance programmatically:
from scrapegraph_py import ScrapeGraphAI
sgai = ScrapeGraphAI()
res = sgai.credits()
if res.status == "success":
print(f"Remaining credits: {res.data.remaining}")
import { ScrapeGraphAI } from "scrapegraph-js";
const sgai = ScrapeGraphAI();
const res = await sgai.credits();
if (res.status === "success") {
console.log(`Remaining credits: ${res.data?.remaining}`);
}
What happens when you run out of credits?
When your credits are exhausted, the API returns an HTTP 402 Payment Required response:
{
"error": "insufficient_credits",
"message": "You have run out of credits. Please upgrade your plan or wait for the next billing cycle."
}
Upgrade your plan or purchase additional credits from the dashboard.
Tips to reduce credit usage
- Cache results for URLs that don’t change frequently to avoid re-scraping.
- Use
scrape with MarkdownFormatConfig instead of extract when you only need the page content in a readable format and don’t need structured extraction — it’s 1 credit vs. 5.
- Limit crawl scope in
crawl.start by setting max_depth and max_pages to avoid accidentally crawling more pages than needed.