*** September 2026 Major Release ***Read and watch
Document type

Extracting data from SAT score reports

The College Board issues one score report per SAT administration. The layout is the same for every student. Admissions offices and scholarship programs read thousands in a single cycle, arriving as student-forwarded PDFs and as bulk transfers from the College Board.

A reader needs the total, the two section scores, the percentiles and the eight Knowledge and Skills bands. Admissions systems rank applicants on those, and a district reports them upward as evidence of how a cohort performed.

Page 1 of a sample SAT Score Report, with extracted values outlined
2,117Markdown characters
6parse blocks
59fields extracted
The problem

What makes SAT score reports hard

The same number in four roles

A score, its range, a percentile and a three-year average sit in one panel in four type sizes: 1470, 1430-1510, 96 and 1030.

Values stack inside one small block

Beside the total score the scale label is stacked as "400-" over "1600", with the percentile pill squeezed in to its right.

Repeated panels have to stay attributed

Two section panels are built identically and eight content domains repeat across two columns. Every value has to carry which section it came from.

How it works

Parse, extract, verify

1

Parse

Parse turns the document into reading-order Markdown and a hierarchy of blocks (text, tables, figures), and grounds each block to its exact location on the page.

2

Extract

You define the fields in a JSON schema, and Extract returns their values in a consistent, structured format, each linked back to where it appears in the Markdown.

3

Verify

Each value links back to where it appears, down to the character range in the Markdown, and the page and bounding box in the source document, so every result can be verified.

Worked example

One SAT score report, end to end

About this document: A College Board SAT score report for a single test administration. One portrait page, with the score panels stacked down the left and the Knowledge and Skills bands in two columns beside them. This is a real student's report, obtained from a third-party upload. The name and record locator were replaced with obviously fake equivalents before publication, and the PDF metadata was cleared.

Processing objective: The objective is to capture one student's outcome and the date it was earned. The two section scores sum to the total, 680 and 790 making 1470, so the four boxes read as a single result.

Demonstration fields: Total score, Reading and Writing score, Math score, Test date

The document

1 page
  • Page 1 of the sample SAT Score ReportPage 1shown below

Where each value came from

Page 1 of the sample SAT Score Report, with every featured field outlined
Total scoretotal_score.score
1,470
The region of the sample SAT Score Report containing Total score, with the extracted value outlined
extraction_metadata["total_score.score"]
{
  "value": 1470,
  "page": 1,
  "range": {
    "end": 177,
    "start": 173
  },
  "box": {
    "xmin": 0.08268,
    "ymin": 0.2432,
    "xmax": 0.15807,
    "ymax": 0.26603
  }
}
Reading and Writing scoresection_scores[0].score
680
The region of the sample SAT Score Report containing Reading and Writing score, with the extracted value outlined
extraction_metadata["section_scores[0].score"]
{
  "value": 680,
  "page": 1,
  "range": {
    "end": 309,
    "start": 306
  },
  "box": {
    "xmin": 0.08174,
    "ymin": 0.33028,
    "xmax": 0.12167,
    "ymax": 0.34482
  }
}
Math scoresection_scores[1].score
790
The region of the sample SAT Score Report containing Math score, with the extracted value outlined
extraction_metadata["section_scores[1].score"]
{
  "value": 790,
  "page": 1,
  "range": {
    "end": 398,
    "start": 395
  },
  "box": {
    "xmin": 0.08064,
    "ymin": 0.39074,
    "xmax": 0.18776,
    "ymax": 0.40698
  }
}
Test datetest.test_date
Jun 7, 2025
The region of the sample SAT Score Report containing Test date, with the extracted value outlined
extraction_metadata["test.test_date"]
{
  "value": "Jun 7, 2025",
  "page": 1,
  "range": {
    "end": 117,
    "start": 94
  },
  "box": {
    "xmin": 0.58374,
    "ymin": 0.09344,
    "xmax": 0.73409,
    "ymax": 0.10676
  }
}

How to try it yourself

Everything on this page is reproducible. The sample, its schema, and the Parse and Extract API outputs are published. You can repeat the same two calls from whichever surface you already build on.

  • Claude Skilldescribe the job; the agent writes it
  • CLIno code at all
  • MCPexpose ADE docs as an agent tool
  • REST APIany language
  • Pythonlandingai-ade
  • TypeScriptlandingai-ade
Why LandingAI?

Documents into data

Accurate

The best accuracy on the difficult documents other tools get wrong, such as messy scans, complicated tables, checkboxes and handwriting.

Auditable

Every answer cites its sources. Values come back with an audit trail (page, bounding box, character range) so a human can review them.

Agentic

Applies multi-step reasoning, and plans before it acts. Handles documents it has never seen before and adapts to variations.

API-first

Composable APIs that drop into any tech stack and can be called from anywhere. Easy to build on and embed in your pipelines and products.

Affordable

Cost-competitive rates with complete price transparency. Spend controls before you run, and every job reports its exact cost.

Enterprise-grade

Built for production and scale from day one. Fully observable and monitored, running securely in our cloud or yours.

Built for high-volume, high-throughput production

  • Zero data retention
  • Priority rate limits
  • Enhanced support
  • VPC and on-prem deployment

Available on Team and Enterprise plans.

Compare plans
Capabilities

SAT Score Report processing highlights

Total and section scores
Percentiles and score ranges
Three-year average scores
Knowledge and Skills bands
Question counts per domain
Domain share of section
Test date and administration
Student grade level
Repeated panel structures
Small print and footnote markers
Native PDFs and scans
Bounding box for every value
FAQs

Questions, answered

Yes. Each is its own field in the schema, and the two section panels repeat the same shape at their own scale. All 59 values extracted from this page ground to text containing them, which is the first sample in this collection where that holds for every field.

Yes. All eight content domains return, each with its section, performance band, question count and share of the section. That is 40 of the 59 values on the page, and they come from a panel drawn as horizontal bands.

Every value comes back with a page, a bounding box and a character range, so you can draw the box onto the report and see the figure it was read from. On a layout this dense that is the fastest way to confirm a score landed in the field that matches its role.

A score report is an education record, so a schema can ask for the scores and leave the student's name and record locator out of the extraction entirely. Accounts are available with zero data retention, alongside SOC 2 Type II, GDPR and HIPAA compliance.

Yes. DPT-3 Pro, the default parse model, reads scanned pages and handwriting. Coordinates come back against the page image either way, so a photographed report gives you the same evidence as this rendered one.

Start extracting SAT score report data

Reliable, structured outputs with full traceability in minutes