ScrapeGraphAI
DEVELOPER · DEVELOPER
Scrapes, LLM-driven structured extraction, and search run on their own key.
Connecting ScrapeGraphAI in practice
ScrapeGraphAI publishes two different per-minute limits for the same account tiers — the troubleshooting page says Free 5, Starter 30 and Pro 100 requests a minute, while the pricing page says Free 10, Starter 100, Growth 500 and Pro 5,000 — and both pages defer to the dashboard, so the dashboard is the only figure worth coding against. Credits also vary twenty-five-fold per call: a markdown scrape is 1, an extract 5, a branding analysis 25.
Scopes that draw scrutiny
SGAI-APIKEY (header)One key per account, displayed in Settings and sent on every request. There are no scopes and no read-only variant, so an extraction agent holds the same key as a billing dashboard.Authorization: Payment <credential> (Agent Payments)An agent with a crypto wallet and no account can pay a 402 MPP challenge and be issued a real API key with credits. Payment replaces signup, so this path mints a durable credential with no human in the loop.
Rate limits
- Troubleshooting page, requests per minute and concurrent jobs: Free 5 / 1, Starter 30 / 5, Pro 100 / 20, Enterprise custom.
- Pricing page, for the same account tiers: Free 10 req/min with 1 concurrent crawl, Starter 100 with 3, Growth 500 with 15, Pro 5,000 with 50.
- Exceeding the limit returns HTTP 429 with {"error": "rate_limit_exceeded"}.
- Credit cost per call: scrape (markdown) 1, scrape (screenshot) 2, extract 5, search 2 per result without a prompt and 5 with one, crawl 2 plus the per-page scrape cost, monitor +5 when a change is detected.
- Proxy modifiers add credits on top: stealth +4, JS + stealth +5, auto +9 in the worst case.
Worth knowing
- Regenerating the key invalidates the old one immediately and the new one is shown once, and there is only one key per account — so rotating it breaks every other integration at the same moment.
- In the v2 SDKs a rate limit is not an exception: it comes back as res.status === "error" with res.error set, so a try/except around the call catches nothing.
- One crawl job counts as a single concurrent job no matter how many pages it visits, which is the documented way to stay under the concurrency cap.
- Failed and errored requests are not charged, so the credit ledger and the request log will not agree.
Checked against Understanding rate limiting (2026-09-29), Plans and pricing (2026-09-29), Managing your API keys (2026-09-29), Agent Payments (2026-09-29)
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
Often connected alongside
Put ScrapeGraphAI behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.