Skip to content

Your first page

One key, one call. Every request answers with what it cost and what is left, and a page you did not get costs you nothing, unless your own script ran in it first: then only our own failures stay free.

1 · Get a key

Create an account and mint a key in the console. It starts with sc_ and is shown once. Store it like a password. The free plan recurs every month and carries the whole product: both engines, your own proxy, MCP, and no card.

console.scrapa.app

2 · Read a page

POST /v1/scrape
curl -X POST https://api.scrapa.app/v1/scrape \
  -H "authorization: Bearer sc_live_your_key" \
  -H "content-type: application/json" \
  -d '{"url": "https://example.com"}'

The answer is the page as markdown, plus where it finally was, which engine replied, and what it cost.

200 OK
{
  "data": {
    "url": "https://example.com",
    "finalUrl": "https://example.com/",
    "status": 200,
    "engine": "fetch",
    "pool": "residential",
    "bytes": 1256,
    "cached": false,
    "markdown": "# Example Domain\n\nThis domain is for use in…",
    "metadata": { "title": "Example Domain", "needsJs": false, … }
  },
  "meta": { "cost": 1, "creditsRemaining": 987, "requestId": "0f3c…" }
}

The GET form is the same call, shaped for a shell.

GET /v1/scrape
curl "https://api.scrapa.app/v1/scrape?url=https://example.com&format=text,links" \
  -H "authorization: Bearer sc_live_your_key"

3 · Read the answer

formats
{
  "url": "https://example.com",
  "formats": ["markdown", "links", "screenshot"]
}

Ask for more than one format in a single call and pay for the page once. markdown is the default, and html, text, links, screenshot and pdf are the rest.

markdown, text and extract hold only the page's main content, without the menus, ads and related links around it. Send onlyMainContent: false for the whole page, or pick the parts yourself with CSS selectors in includeTags and excludeTags.

includeTags
{ "url": "https://shop.example.com/item/42", "includeTags": ["h1", ".price"] }

4 · Know what it cost

Every metered answer carries x-request-cost and x-credits-remaining, and the same numbers in meta. Price a call before making it with the quote endpoint. That one is free.

What it would cost, without making the call
curl -X POST https://api.scrapa.app/v1/scrape/quote \
  -H "authorization: Bearer sc_live_your_key" \
  -H "content-type: application/json" \
  -d '{"url": "https://example.com"}'

{"data":{"engine":"fetch","pool":"residential","formats":["markdown"],
         "cost":1,"maxCost":5,"freeMb":1,"perMb":10}}

Where to go next