Web scraping.
Minus the overspend.

The web is complicated. Getting your data shouldn’t be.
One API finds a cost-effective route to clean, usable content.

Pay as you goNo subscriptionNo card to sign up

One request. The right route.
YOUR REQUEST
example.com
format markdownstrategy auto
Your budget. Your boundaries.
ScrapeGoat
Direct HTTP✓
Edge fetch
Browser
Scraping API
CLEAN OUTPUT200 OK
# Example Domain

This domain is for use in
illustrative examples.
Content checks passed

Fits the stack
you already use.

PyPythonJSNode.jsGOGo◇RubyphpPHP>_cURL

The content you need.
In the format you want.

Turn public pages into inputs for your application. Keep the same request shape as your data needs change.

POST /v1/fetch
curl "$SCRAPEGOAT_URL/v1/fetch" \
  -H "Authorization: Bearer $SCRAPEGOAT_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "budget": {
      "cost_ceiling_micro_usd": 50000,
      "max_attempts": 3
    }
  }'
response.mdSample output
#

Example Domain

This domain is for use in illustrative examples in documents.

More information ↗
Readable text and links, without the page layout.
Standard HTTP. Use your existing client.Explore the request schema

JSON extraction, screenshots, and JavaScript rendering require a configured provider with that capability.

A little stubborn.
About the right things.

ScrapeGoat checks the page, controls the spend, and keeps the details. You keep building.

Your budget sets the limit.

Set a cost ceiling before the first attempt. The router reserves cost before it calls a provider and stops within the allowed budget.

Set a request budget
CONTENT CHECKS
Allowed status 200
Page content present
Challenge detection clear
Required text matched
Illustrative validation

Look beyond “200 OK.”

Reject known challenge pages and empty responses. Add checks for content type, size, and the text your application expects.

See validation options
geo: us
rendering: required

Match the page, precisely.

Require JavaScript rendering or a supported location. Only routes that meet the request’s capabilities enter the selection.

Choose your requirements

The web is your source.
What will you build?

Bring current page content into your own workflows. Here are four good places to start.

Public pagesClean contentYour application

Less page noise. More useful context.

Fetch documentation and reference pages as Markdown. Feed the result into your own chunking, embedding, and retrieval pipeline.

formats: ["markdown"]

You provide the URLs and run the agent or retrieval workflow.

No black box.
Just the full picture.

Know which route ran, what it returned, and what each attempt cost. The console connects your keys, requests, and balance in one place.

  • Per-attempt status, latency, and cost
  • Usage by time range, route, and API key
  • Account-owned history and key revocation
Take a look inside
A request, accounted for.Sample receipt
✓ Succeededexample.com
SELECTED ROUTEdirect/http
Provider cost estimated
$0.001000
ScrapeGoat service fee 20%
$0.000200
Total charge
$0.001200
Page content is returned, not saved in console history.

Clear capabilities.
No guesswork.

Know what you can ship today. ScrapeGoat uses its own API contract; it is not a drop-in replacement for another provider.

CapabilityScrapeGoat APIAvailability
Single-page scrapingPOST /v1/fetchMarkdown and HTMLAvailable
JavaScript, JSON & screenshotsPOST /v1/fetchRendering requirements, schema, or output formatProvider-dependent
Request history & cost traceGET /v1/requests/{id}Owned requests and attempt metadataAvailable
Crawl, map & web searchNo hosted endpointNot available
Browser sessions & interactionNo hosted endpointNot available
Batch jobs, schedules & scraping webhooksOrchestrate fetch requests in your applicationNo built-in workflow

Current hosted limits: 60 admitted requests per minute and 5 pending requests per account.

Read limits & errors ↗

Less overhead.
Right down to the bill.

We optimize for the lowest expected cost per valid result across eligible routes. You get the cost and the fee, in plain sight.

Pay as you go

No subscription
Provider cost + 20%

One transparent service fee. No monthly plan to outgrow.

Monthly subscription$0
Prepaid top-ups$10 · $50 · $100
Automatic top-upsNone
Spending controlPer-request budget
Get your API key

Payments use Stripe Checkout when billing is enabled.

Do the small math.

Estimate a workload using your own provider cost.

Provider cost $10.0020% fee $2.00
Estimated total$12.00

Illustrative estimate, not a quote. Uses the same per-request micro-USD rounding as billing. Include the cost of all attempts.

Lowest expected cost is an optimization target, not a market-wide price guarantee. Route availability, reliability, and latency affect selection. Failed attempts can be billable; estimated costs are labeled, and unknown costs remain pending. Charges are capped at your provider budget plus the service fee. Read the billing details.

Good questions.
Straight answers.

The details that matter before your first request.

Read the developer guide ↗
What is ScrapeGoat?

ScrapeGoat is a web scraping API and developer console. Send a public URL and your requirements. The router selects an eligible route, checks the content, and returns the result with a record of each attempt.

How does it keep scraping costs down?

Routes are ranked by expected cost per valid result, using available price estimates and past reliability and latency for that page profile. The router can choose a simpler route when it meets your needs. A 20% service fee applies. We do not claim that every request is cheaper than every direct provider plan.

Can it handle JavaScript and protected pages?

Set requirements.rendering to required for JavaScript pages. Rendering and other advanced features need a capable, configured provider. Known challenge responses can trigger fallback within your budget. No scraper can promise success on every page.

Can I replace Firecrawl or ZenRows with one change?

The hosted API supports single-page fetching, multiple output formats, and account-owned request history. It has its own request and response shape. Crawl, map, search, persistent browser interaction, and managed batch workflows are not available. Check the capability table before migrating.

Do failed requests cost money?

They can. An upstream provider may charge for a failed attempt. ScrapeGoat records that cost and the service fee, up to your reserved ceiling. Unknown costs retain their reservation until they can be resolved; they are never shown as a zero-cost request.

Do you store the pages I scrape?

Page bodies are returned to your client and are not stored in console history. The service retains account and request metadata, including route, timing, status, and cost. Target query values, cookies, and authorization header values are excluded from console history. Upstream providers process the target and supported request options.

What happens if my connection drops?

Inspect the request history before sending a new request. Admitted request IDs survive restarts and cannot be replayed. Reusing an admitted or uncertain ID returns a conflict, which helps prevent a second possibly charged exchange.

Can I try the console before signing up?

Yes. Open the sample console to explore usage, activity, keys, and billing with clearly labeled sample data. Sign in to create your own API key. Trial balance and payment availability depend on the deployment.

Go get the web.

You bring the idea. We’ll find a route to the data.