BLOG · PRODUCT UPDATES

By Vik Paruchuri 3 mins

Segmentation is now $0.50 per 1,000 pages

We cut the price of document segmentation by 92% — and for the most common use, by 95%.

We’ve cut the price of document segmentation. The Segment processor is now $0.50 per 1,000 pages, down from $6.

The effective cut is bigger than it looks. Until now, every segmentation request ran a full document parse first, so a typical job billed Convert plus Segment — $10 per 1,000 pages all-in. Page-level segmentation no longer needs the parse at all, so it bills Segment alone: $0.50 per 1,000 pages, a 95% reduction for the most common use.

The new rates

ModeWhat you getBeforeNow
Page-level splitBoundaries between combined documents: page ranges, titles, confidence — no OCR text$10/1k pages$0.50/1k pages
Block-levelBoundaries that can fall mid-page, guided by an optional prompt, plus the full parsed markdown$10/1k pages$4.50/1k pages

Block-level still runs a Convert alongside segmentation because it returns the parsed document — its rate is Convert ($4) + Segment ($0.50).

Why the price dropped

This isn’t a promotion — we rebuilt the engine. Segmentation now works directly off the raw PDF, using the embedded text layer where one exists and falling back to page images for scans. Splitting a stack of documents doesn’t require reading every word on every page, so we stopped charging as if it did. The rebuild also made boundary detection more accurate, especially on scanned documents.

The lower price is us passing the savings through.

Iterating is cheap now too

/segment reuses previous parses automatically. If you segment a document your team has already converted — or you re-run with a tweaked schema — we detect it and bill only the segmentation delta, not a fresh parse. You can also pass a checkpoint_id from a previous /convert call explicitly.

How to use it

Send a combined PDF to /segment. For automatic document-boundary detection at page level:

import time
import requests

headers = {"X-API-Key": "YOUR_API_KEY"}

response = requests.post(
    "https://www.datalab.to/api/v1/segment",
    headers=headers,
    files={"file": open("combined_scans.pdf", "rb")},
    data={"segmentation_schema": '{"segmentation_strategy": "document_boundary"}'},
)
check_url = response.json()["request_check_url"]

while True:
    result = requests.get(check_url, headers=headers).json()
    if result["status"] == "complete":
        break
    time.sleep(2)

for segment in result["segmentation_results"]["segments"]:
    print(segment["name"], segment["pages"], segment["confidence"])

For block-level segmentation with a custom rule, pass a granularity and a prompt — boundaries can then fall mid-page, and you get the parsed markdown back:

data = {
    "segmentation_schema": '{"granularity": "block", "prompt": "start a new segment at each invoice"}',
}

See the segment API reference for the full request and response shape.

No action needed

The new rates are live and apply automatically to every request — there’s nothing to change on your side. Try it in the playground, and check the pricing page for the full rate card.

If you’re splitting large combined files — loan packages, medical records, mailroom scans, discovery productions — the economics just changed by an order of magnitude. We’d love to hear what you build: [email protected].

START

Get started in minutes.

Free tier. No credit card. SOC 2 Type II.