All integrations

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)

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

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.

scrapegraphai_delete_api_agent_subscriptionWRITE

Cancel your agent subscription. DELETE /api/agent/subscription. Requires SGAI-APIKEY. Stops future Inflow billing immediately. Paid access and subscription credits remain until paidThrough; top-ups and the API key do not expire with the subscription. Idempotent; no automatic refund.

api
scrapegraphai_delete_api_crawl_by_idWRITE

Delete a crawl. DELETE /api/crawl/{id}.

api
scrapegraphai_delete_api_monitor_by_idWRITE

Delete a monitor. DELETE /api/monitor/{id}.

api
scrapegraphai_getREAD

Service card. GET /. Where to find the docs, OpenAPI, and agent discovery documents.

api
scrapegraphai_get_api_agent_odp_collectionsREAD

List offering collections. GET /api/agent/odp/collections. Requires Accept: application/odp+json. Uses the ODP 1.0 response format.

api
scrapegraphai_get_api_agent_odp_collections_by_idREAD

Get a collection. GET /api/agent/odp/collections/{id}. Requires Accept: application/odp+json. Uses the ODP 1.0 response format.

api
scrapegraphai_get_api_agent_odp_collections_by_id_offeringsREAD

List offerings in a collection. GET /api/agent/odp/collections/{id}/offerings. Requires Accept: application/odp+json. Uses the ODP 1.0 response format.

api
scrapegraphai_get_api_agent_odp_offeringsREAD

List credit packs and subscriptions. GET /api/agent/odp/offerings. Requires Accept: application/odp+json. Uses the ODP 1.0 response format.

api
scrapegraphai_get_api_agent_odp_offerings_by_idREAD

Get an offering. GET /api/agent/odp/offerings/{id}. Requires Accept: application/odp+json. Uses the ODP 1.0 response format.

api
scrapegraphai_get_api_agent_odp_schemas_subscription_jsonREAD

Get the subscription attribute schema. GET /api/agent/odp/schemas/subscription.json.

api
scrapegraphai_get_api_agent_protocolsREAD

Discover agent payments, credit packs, and subscriptions. GET /api/agent/protocols. Free, unauthenticated discovery: which payment protocols this API accepts, the credit packs and monthly/yearly subscriptions on sale, and the endpoints a keyless agent uses to buy access.

api
scrapegraphai_get_api_agent_subscriptionREAD

Get your agent subscription. GET /api/agent/subscription. Requires SGAI-APIKEY. Returns Inflow status, paid-through date, and remaining subscription and top-up credits.

api
scrapegraphai_get_api_crawl_by_idREAD

Get crawl status and pages. GET /api/crawl/{id}.

api
scrapegraphai_get_api_crawl_by_id_pagesREAD

Get paginated crawl pages. GET /api/crawl/{id}/pages.

api
scrapegraphai_get_api_creditsREAD

Get credits balance. GET /api/credits. Returns remaining credits, usage, plan, and job slot usage.

api
scrapegraphai_get_api_healthREAD

Health check. GET /api/health. Returns ok if Redis and DB are reachable, degraded otherwise.

api
scrapegraphai_get_api_historyREAD

List request history. GET /api/history. Session ID filters use case-insensitive partial matching.

api
scrapegraphai_get_api_history_by_idREAD

Get a history entry. GET /api/history/{id}.

api
scrapegraphai_get_api_monitorREAD

List monitors. GET /api/monitor.

api
scrapegraphai_get_api_monitor_by_idREAD

Get a monitor. GET /api/monitor/{id}.

api
scrapegraphai_get_api_monitor_by_id_activityREAD

Get monitor tick activity. GET /api/monitor/{id}/activity.

api
scrapegraphai_get_api_validateREAD

Validate API key. GET /api/validate. Returns the email of the user owning the provided API key.

api
scrapegraphai_get_well_known_aepREAD

AEP inspect document. GET /.well-known/aep. Agent enrollment entrypoint: identity methods, grant types, and command URLs.

api
scrapegraphai_get_well_known_did_jsonREAD

Service DID document. GET /.well-known/did.json. The did:web document for did:web:sgai-api-v2.onrender.com. Carries no keys; agents check it matches the origin.

api
scrapegraphai_get_well_known_odpREAD

Get the ODP service document. GET /.well-known/odp. Requires Accept: application/odp+json. Uses the ODP 1.0 response format.

api
scrapegraphai_patch_api_monitor_by_idWRITE

Update a monitor. PATCH /api/monitor/{id}.

api
scrapegraphai_post_api_crawlWRITE

Start a crawl. POST /api/crawl.

api
scrapegraphai_post_api_crawl_by_id_resumeWRITE

Resume a paused crawl. POST /api/crawl/{id}/resume.

api
scrapegraphai_post_api_crawl_by_id_stopWRITE

Stop a running crawl. POST /api/crawl/{id}/stop.

api
scrapegraphai_post_api_credits_purchase_by_packWRITE

Buy a credit pack with USDC. SPENDS THE CONNECTED ACCOUNT'S MONEY: this BUYS a credit pack, paid in USDC over the Machine Payments Protocol, and adds the credits to the account this connection holds the key for. It is not a quote and not a dry run -- there is no preview form of this call. It cannot complete on an API key alone: an unpaid request answers 402 with a 'WWW-Authenticate: Payment' challenge that only a funded MPP wallet can settle, and this connection holds no wallet credential, so a 402 here is the EXPECTED outcome rather than a failure to retry. Never call it again on a 402, and never call it speculatively: repeated payment is repeated spending. Read the balance first with Get credits balance, which is free. POST /api/credits/purchase/{pack}. Purchase a credit pack by paying USDC over the Machine Payments Protocol (MPP). An unpaid request returns 402 with a WWW-Authenticate: Payment challenge; pay it and retry with Authorization: Payment <credential> to receive credits and a Payment-Receipt header.

api
scrapegraphai_post_api_extractWRITE

Extract structured JSON. POST /api/extract. LLM-driven extraction from a URL, HTML, or markdown input with a prompt+schema.

api
scrapegraphai_post_api_monitorWRITE

Create a monitor. POST /api/monitor.

api
scrapegraphai_post_api_monitor_by_id_pauseWRITE

Pause a monitor. POST /api/monitor/{id}/pause.

api
scrapegraphai_post_api_monitor_by_id_resumeWRITE

Resume a monitor. POST /api/monitor/{id}/resume.

api
scrapegraphai_post_api_scrapeWRITE

Scrape a URL. POST /api/scrape. Fetches a URL and returns the requested format(s): markdown, html, links, images, summary, json, branding, screenshot.

api
scrapegraphai_post_api_searchWRITE

Search + scrape top results. POST /api/search. Runs a search, scrapes the top N result URLs, optionally runs LLM extraction with prompt+schema.

api

Put ScrapeGraphAI behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.