Appearance
Quickstart
Five minutes from zero to your first extracted JSON.
1. Create an Account
Sign in with Google to create your account. New accounts land on the free tier (500 requests/month, 1 request/min).
2. Create an API Key
In the dashboard → API Keys → Create API Key. You'll choose between:
| Type | Prefix | Schema Lives In… | Best For |
|---|---|---|---|
| Dynamic | sk_live_ | Each request body | Ad-hoc extraction, varying shapes |
| Static | sk_static_ | The key itself (bound at creation) | Production |
The full key is shown only once at creation. Copy and save it as soon as possible.
3. Make Your First Call
Set up your environment:
bash
export RUNO_API_KEY="sk_live_..."Send a request:
bash
curl -X POST https://api.scrapewithruno.com/v1/extract \
-H "X-API-Key: $RUNO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://news.ycombinator.com/item?id=1",
"schema": [
{ "field": "title", "type": "string", "example": "Y Combinator" },
{ "field": "author", "type": "string", "example": "pg" },
{ "field": "points", "type": "integer", "example": 57 }
]
}'js
const res = await fetch('https://api.scrapewithruno.com/v1/extract', {
method: 'POST',
headers: {
'X-API-Key': process.env.RUNO_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://news.ycombinator.com/item?id=1',
schema: [
{ field: 'title', type: 'string', example: 'Y Combinator' },
{ field: 'author', type: 'string', example: 'pg' },
{ field: 'points', type: 'integer', example: 57 },
],
}),
})
const json = await res.json()
console.log(json.data)py
import os, requests
res = requests.post(
"https://api.scrapewithruno.com/v1/extract",
headers={"X-API-Key": os.environ["RUNO_API_KEY"]},
json={
"url": "https://news.ycombinator.com/item?id=1",
"schema": [
{"field": "title", "type": "string", "example": "Y Combinator"},
{"field": "author", "type": "string", "example": "pg"},
{"field": "points", "type": "integer", "example": 57},
],
},
)
print(res.json()["data"])4. Read the Response
json
{
"url": "https://news.ycombinator.com/item?id=1",
"status": "success",
"render_mode": "fetch",
"data": {
"title": "Y Combinator",
"author": "pg",
"points": 57
}
}statusis"success"or"error".render_modetells you which path served the request:fetch,headless,structured, orcache.datais the extracted record. Keys match thefieldnames in your schema, values are coerced to the declaredtype.- Missing values come back as
null.
5. What to Read Next
- Core Concepts - keys, schemas, the null sentinel, type coercion.
- Defining a Schema - every field type, hints, worked examples.
- Errors & Retries - error envelope and which codes are retryable.
- Plans, Rate Limits & Overage - quotas and how overage works on Pro/Scale.