API Reference

Extract structured JSON from any URL using your schema.

Quickstart

1. Generate an API key from your dashboard. 2. Send a URL and a JSON Schema describing the data you want. 3. Get structured JSON back — no scraping code required.

curl -X POST https://api.jsonit.io/v1/extract \
  -H "Authorization: Bearer sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://github.com/trending",
    "schema": {
      "type": "object",
      "properties": {
        "repos": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "description": { "type": "string" },
              "stars": { "type": "number" },
              "language": { "type": "string" }
            }
          }
        }
      }
    }
  }'

Response

{
  "success": true,
  "url": "https://github.com/trending",
  "data": {
    "repos": [
      {
        "name": "anthropics/claude-code",
        "description": "Claude Code CLI",
        "stars": 12400,
        "language": "TypeScript"
      }
    ]
  },
  "extracted_at": "2026-07-16T00:00:00.000Z"
}

Authentication

Pass your API key as a Bearer token in the Authorization header. Keys are only shown once at creation — if you lose one, revoke it and generate a new one from the dashboard.

Authorization: Bearer sk_live_your_api_key
POST/v1/extract

Extract structured data from a URL using a JSON Schema definition.

Request body

{
  "url": "string (required) — the page to scrape",
  "schema": "object (required) — JSON Schema for the data shape you want"
}

Rate limits

PlanRequests / hourMonthly cap
Free10100
Starter1002,500
Growth50010,000
Pro2,00050,000

Rate limit headers are returned on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. When you hit the limit, back off until X-RateLimit-Reset (a unix timestamp) rather than retrying immediately.

Error codes

CodeMeaningWhat to do
400Bad requestMissing/invalid `url` or `schema`. Check the request body shape.
401Invalid or missing API keyCheck the Authorization header; regenerate the key if needed.
429Rate limit exceededWait until X-RateLimit-Reset, or upgrade your plan.
500Extraction failedNot billed. Usually a dead page or content the model couldn’t parse — retry or adjust the schema.

Schema tips

Keep schemas focused — asking for 3-5 well-named fields extracts more reliably than a huge nested schema. Use description fields inside your schema properties to disambiguate (e.g. {"type": "number", "description": "price in USD, no currency symbol"}). See /use-cases for ready-made schemas for common sites and data types.