Skip to content

Getting Started

Parsium extracts structured data from webpages. Use a prebuilt endpoint for a supported platform, or create a custom parser for any other page.

  1. Sign up at parseium.com.
  2. Open API Keys in the dashboard.
  3. Create a key and store it securely.

Send the key in X-API-Key (recommended). The api_key query parameter also works, but can leak through URLs and logs.

Terminal window
curl -H "X-API-Key: your_key" https://api.parseium.com/credits
{
"creditBalance": 4850,
"concurrency": 5,
"fetchConcurrency": 5,
"browserConcurrency": 2
}

creditBalance can be null before an account has ever been billed. For reserved credits, queue activity, and separate fetch/browser usage, use GET /v1/status instead.

Every prebuilt accepts query parameters with GET or the same field names as a POST JSON body. Calls cost 1 credit.

Terminal window
curl -H "X-API-Key: your_key" \
"https://api.parseium.com/v1/instagram-profile?username=natgeo"
Terminal window
curl -X POST https://api.parseium.com/v1/instagram-profile \
-H "X-API-Key: your_key" \
-H "Content-Type: application/json" \
-d '{"username":"natgeo"}'

Discover the current catalog with unauthenticated GET /v1/apis, then retrieve an endpoint’s parameters and response schema as Markdown from GET /v1/apis/{id}.

After creating a parser in the dashboard or through POST /v1/parsers:

const response = await fetch(
"https://api.parseium.com/v1/scrape/p_your_parser?url=https://example.com",
{ headers: { "X-API-Key": process.env.PARSIUM_API_KEY! } },
);
const data = await response.json();

Use POST /v1/parsers/test before saving or updating a parser. It validates selectors against the same fetch path used in production.

Set async=1 on a scrape, or submit many parser URLs/prebuilt inputs to POST /v1/batches. The API returns job and batch IDs to poll. Batches over 100 items require a database sink.

Terminal window
curl -X POST https://api.parseium.com/v1/scrape/p_your_parser \
-H "X-API-Key: your_key" -H "Content-Type: application/json" \
-d '{"url":"https://example.com","async":true}'
{ "job_id": "j_…", "batch_id": "b_…" }

See Batches and jobs for polling and cancellation. Agents can also connect through MCP.

CRUD, queue, and database endpoints use this envelope:

{ "error": "invalid selector", "field": "price", "detail": "…", "hint": "…" }

Only error is guaranteed. Two important limit responses are:

{ "error": "insufficient credits", "required": 50, "available": 20 }
{ "error": "pending limit", "pending": 1000, "limit": 1000, "accepted": 0 }
CodeMeaning
400Malformed JSON/request; parse/scrape may also report malformed HTML
401Missing or invalid API key
402Insufficient credits
404Missing or not owned parser, job, batch, cron, workflow, or database
413Legacy HTML upload exceeds 16 MB
422Invalid config, URL, sink, batch, SQL, or unsupported upstream content
429Request rate, concurrency, pending-job, or plan resource limit
502Target fetch or upstream provider failed
503A backing feature (for example datasets) is not configured or temporarily unavailable

Read Errors for retry guidance and structured upstream codes.