# NZQA Past Papers Archive
> Independent, free, ad-free archive of NCEA past papers, exams, answer schedules, exemplars, assessment specifications, and historical attainment rates. Official NZQA files mirrored for speed. Not affiliated with, endorsed by, or run by the New Zealand Qualifications Authority.
- Website: https://nzqa.toasting.me
- This file: https://nzqa.toasting.me/llms.txt
- Full subject index: https://nzqa.toasting.me/llms-full.txt
- Human about / FAQ: https://nzqa.toasting.me/about
- Canonical locale: en-NZ
Use this file to understand the archive, pick the right URL, then follow the link or call the API/MCP. Do not invent papers, standard numbers, years, grades, or rates. If a lookup fails, say so.
## Please do not scrape
Do not scrape this website, the API, the CDN, or the MCP endpoint. Do not bulk-download PDFs, walk every browse URL, or hammer search. This is a volunteer archive; treat the servers gently.
If you need a dump, a dataset, a list of files, or anything you were about to scrape, **ask**. Email [support@nzqa.toasting.me](mailto:support@nzqa.toasting.me) or use the [contact form](https://nzqa.toasting.me/contact) and say what you need. We would rather send it to you than watch the servers get scraped.
For a single paper or standard, use the pages below, or MCP/REST **sparingly** (one lookup, backoff on 429). That is not a licence to crawl the lot.
## What this is
nzqa.toasting.me is a volunteer archive for students, teachers, and tutors. It helps people find NCEA assessment materials by subject, NCEA level (1, 2, or 3), year, file type, or five-digit standard number.
The site currently lists **778 browseable subjects** (subjects that have files). The backing API reports on the order of 57,000 files and 6,000 standards across a slightly larger subject tree (including folders with no downloadable files). Materials are usually refreshed around January when NZQA releases a large batch, with extra updates during the year. The public dataset copy used by the website is current as of January 2026; a later 2026 update is planned.
Sponsor (does not control content): [rebuilt.nz](https://rebuilt.nz). Contact: [support@nzqa.toasting.me](mailto:support@nzqa.toasting.me) or https://nzqa.toasting.me/contact.
## What this is not
- Not NZQA and not nzqa.govt.nz. For official publications, always prefer [NZQA](https://www.nzqa.govt.nz/).
- Not a markbook, login, or student portal. There are no user accounts on the website.
- Not a complete record of every NZQA document ever published. Some papers are missing, expired, or listed under a bilingual / generic folder name.
- Attainment figures are **percentages only** (Excellence, Merit, Achieved, Not Achieved). Do not invent or infer student headcounts; v5 omits them.
- Māori Exam / Maori Resource file types (`mex` / `mre`) are omitted from search. Te Reo Māori **subject** folders are included.
## How humans use the website
1. **Home** (https://nzqa.toasting.me/): pick a subject (optionally a level) or type a five-digit standard number.
2. **Search** (https://nzqa.toasting.me/search): live results across standards, exams, and schedules. Plain English works.
3. **Browse** (https://nzqa.toasting.me/browse): every subject with files. Subject pages use the slug pattern below.
4. **Attainment** (https://nzqa.toasting.me/attainment): type a standard number to see Excellence / Merit / Achieved / Not Achieved rates.
5. Favourites and settings stay in the browser; they are not useful to crawlers.
### Browse URL pattern
`https://nzqa.toasting.me/browse/{Subject-Slug}`
Slugs replace any run of non-alphanumeric characters with a single hyphen (spaces, colons, slashes, macrons). Copy URLs from this file or llms-full.txt rather than guessing names with macrons. Examples:
- Physics → https://nzqa.toasting.me/browse/Physics
- Digital Technologies → https://nzqa.toasting.me/browse/Digital-Technologies
- Accounting: Generic → https://nzqa.toasting.me/browse/Accounting-Generic
Unknown names 404. The browse API may suggest a close match (e.g. Caclulus → Calculus).
### Search syntax
The website search box is one `q=` string. Natural language is classified into subject, level, year, file type, and standard number; leftover topic words (e.g. mechanics) are the text query. Optional operators, all valid inside `q`:
| Operator | Meaning | Example |
| --- | --- | --- |
| `subject:Physics` or `s:Physics` | Browse-folder subject | `subject:Chemistry` |
| `level:3` or `l3` | NCEA level 1–3 | `english level:3` |
| `year:2023` or `y:2023` | Four-digit year (2000–2030) | `year:2024` |
| `type:Exam` or `t:Exam` | File type | `type:schedule` |
| `standard:91524` or `std:91524` | Five-digit standard | `91524` alone also works |
| `d:mechanical` or `desc:` | Description terms | `d:algebra` |
| `-word` | Exclude | `physics -report` |
| `"exact phrase"` | Phrase match | `"mechanical systems"` |
Nicknames in `q`: `maths` / `math` → Mathematics, `chem` → Chemistry, `bio` → Biology.
Sort (query param or phrasing such as "sorted by hardest"): `relevance` (default), `date`, `name`, `level`, `hardest` (lowest overall pass rate first), `easiest`. Hardest/easiest hits include `overall_pass_rate`.
Do not use `&` or `*` as search operators in the website box. Website search calls `GET /v5/typesense` (Typesense). `GET /v5/search` is the FTS twin with the same operators.
Examples that work on https://nzqa.toasting.me/search?q=...
- `english l3 exam from 2022 and 2024 with answers`
- `physics l3 exam 2022 and 2024 with answers`
- `calculus l3 exam 2024 answers`
- `chemistry l2 answers`
- `accounting l3 hardest exams`
- `91524`
- `subject:Physics level:3 year:2023 type:exam`
### File types you will see
| Code | Label | Typical use |
| --- | --- | --- |
| `as` | Achievement Standard | The standard PDF itself |
| `exm` / `qbk` | Exam / question booklet | External exam paper |
| `ass` | Answer Schedule | Assessment schedule / expected answers |
| `exp` | Exemplar | Annotated student work |
| `spc` | Assessment Specifications | Exam specs for the year |
| `rsc` | Resource | Extra resource |
| `mp3` | Audio | Listening files |
| formulae | Formula sheets | Including Māori formulae where present |
PDFs (and some audio) are served from `https://cdn.toasting.me/direct/{file_name}`. Prefer `file.cdn_url` from the API rather than guessing names.
## Pages
- [Home](https://nzqa.toasting.me/)
- [Search](https://nzqa.toasting.me/search)
- [Browse](https://nzqa.toasting.me/browse)
- [Attainment](https://nzqa.toasting.me/attainment)
- [About](https://nzqa.toasting.me/about)
- [Contact](https://nzqa.toasting.me/contact)
- [Updates](https://nzqa.toasting.me/updates) — consumer changelog
- [Privacy](https://nzqa.toasting.me/privacy)
- [Terms](https://nzqa.toasting.me/terms)
- [Sitemap](https://nzqa.toasting.me/sitemap.xml)
- [llms-full.txt](https://nzqa.toasting.me/llms-full.txt) — every subject URL (778 subjects)
- [robots.txt](https://nzqa.toasting.me/robots.txt)
Do not send people to /favorites, /settings, or /updates/roadmap (private or noindex). /simple is a legacy alias of Browse (canonical https://nzqa.toasting.me/browse).
## Popular subjects
- [Physics](https://nzqa.toasting.me/browse/Physics): NCEA Levels 1, 2, 3, 1067 files
- [Chemistry](https://nzqa.toasting.me/browse/Chemistry): NCEA Levels 1, 2, 3, 758 files
- [Biology](https://nzqa.toasting.me/browse/Biology): NCEA Levels 1, 2, 3, 4, 722 files
- [English](https://nzqa.toasting.me/browse/English): NCEA Levels 1, 2, 3, 4, 999 files
- [Calculus](https://nzqa.toasting.me/browse/Calculus): NCEA Levels 2, 3, 548 files
- [Mathematics](https://nzqa.toasting.me/browse/Mathematics): NCEA Levels 1, 2, 3, 1281 files
- [History](https://nzqa.toasting.me/browse/History): NCEA Levels 1, 2, 3, 872 files
- [Geography](https://nzqa.toasting.me/browse/Geography): NCEA Levels 1, 2, 3, 995 files
- [Accounting](https://nzqa.toasting.me/browse/Accounting): NCEA Levels 1, 2, 3, 914 files
- [Digital Technologies](https://nzqa.toasting.me/browse/Digital-Technologies): NCEA Levels 1, 2, 3, 567 files
- [Economics](https://nzqa.toasting.me/browse/Economics): NCEA Levels 1, 2, 3, 582 files
- [Statistics](https://nzqa.toasting.me/browse/Statistics): NCEA Levels 1, 2, 3, 316 files
- [Media Studies](https://nzqa.toasting.me/browse/Media-Studies): NCEA Levels 1, 2, 3, 666 files
Full list: https://nzqa.toasting.me/llms-full.txt
## For AI agents
Do not scrape. Email [support@nzqa.toasting.me](mailto:support@nzqa.toasting.me) or use https://nzqa.toasting.me/contact if you need bulk data. MCP and REST are for looking up a paper or standard, not for mirroring the archive.
### MCP (recommended for assistants)
- Endpoint: https://api-v5-nzqa.toasting.me/mcp (Streamable HTTP, protocol 2025-06-18)
- Discovery: `` on the website, https://nzqa.toasting.me/.well-known/mcp.json
- Interactive REST docs: https://api-v5-nzqa.toasting.me/docs
- OpenAPI 3.1: https://api-v5-nzqa.toasting.me/openapi.json (API v5.1.x)
- REST twin: https://api-v5-nzqa.toasting.me/v5
Auth is optional. Tools work without credentials (public tier, about 300 requests/minute). The website opens an anonymous session-tier token (about 500 requests/minute, 30-day TTL) and reuses it across refreshes via first-party storage plus `Authorization: Bearer`. Agents calling the API directly may `POST https://api-v5-nzqa.toasting.me/v5/auth/session` with `{"tier":"session","device_name":"your-client","device_fingerprint":""}` and then send the JWT as `Authorization: Bearer` (the JSON body does not include the JWT; it is on the `nzqa_session` Set-Cookie, which is HttpOnly). `POST https://api-v5-nzqa.toasting.me/v5/auth/refresh` with `{"extend_expiry":true}` rotates the cookie. Do not hammer session create — there is a tight per-device cap.
MCP instructions (from the server): discover with typesense_search first; hits include `file.cdn_url`. Use typesense_autocomplete if a prefix is unclear. Open a five-digit standard with get_standard; related_standards for what else to study. Exhaustive files: list_files (requires standard_number or subject). Read a paper with pdf_text(url=) — **plain text only, never markdown**. Default 15 pages, max 30 on MCP (REST pdf_text default 50, max 200). Text may truncate around 80k characters. Difficulty: attainment_rates — rates only, no student counts. list_standards requires both subject and NCEA level 1–3. MCP search default limit 10, max 20; offsets max 20. Use subject names exactly as returned. If Typesense is down, say so.
#### MCP tools
1. **typesense_search** — find papers and standards. Args: q, subject, level, year, file_type, standard_number, sort_by (relevance\|date\|name\|level\|hardest\|easiest), limit, offset.
2. **typesense_autocomplete** — prefix completions (subjects, types, standards — not PDF filenames). Args: q (required), subject, limit.
3. **get_standard** — title, credits, assessment. Args: standard_number (required, five digits).
4. **related_standards** — what else to study (max 10). Args: standard_number, limit.
5. **list_standards** — catalog. Requires subject **and** level.
6. **list_files** — exam/schedule rows with cdn_url. Requires standard_number or subject.
7. **attainment_rates** — E/M/A/NA percentages. Prefer standard_number; else subject+level.
8. **pdf_text** — plain text from a CDN PDF URL. Args: url (required), max_pages.
Browsers that implement WebMCP register those tools on https://nzqa.toasting.me while the page is open.
### REST (v5)
Base: https://api-v5-nzqa.toasting.me/v5
Standard envelope: `{ status, status_code, message, data, meta }`. Paginate with `limit` + `offset`. Check totals on the payload (`total_files`, `total_standards`, `total_results`, `total_subjects`).
Useful GET paths:
- `/typesense?q=` — primary search used by the website (same operators as above)
- `/typesense/autocomplete?q=`
- `/search?q=` — FTS5 twin
- `/browse/{subject}?level=&include_attainment=true` — standards + files + rates-only attainment in one call
- `/files?standard_number=91524&limit=500`
- `/standards/91524` and `/standards/91524,91525?fields=number,description,subject,level,credits`
- `/standards/{n}/related`
- `/subjects?limit=1000&include=levels,years`
- `/attainment?subject=Physics&level=3&year=2023`
- `/pdf/text?url=https://cdn.toasting.me/direct/91524-exm-2023.pdf&max_pages=5` (`as_markdown=true` → HTTP 415)
- `/health` — liveness
- `/auth/status` — public; does not require a session
Do not use disabled v5 analytics/combination bulk toys (HTTP 410). Do not call admin routes. v3 paths exist for compatibility; prefer v5.
Subject on results is the **browse folder** (Physics), not NZQA Field / primary_subject (Sciences). Duplicate copies of the same exam under bilingual or Generic folders are collapsed in search.
### Citation rules
- Cite the **five-digit standard number**, **year**, **file type**, and **subject folder** returned by the API/MCP.
- Link the website page (`https://nzqa.toasting.me/browse/{Slug}` or `https://nzqa.toasting.me/search?q={standard}`) and/or the `cdn_url`.
- Quote pdf_text only from extracted pages; never fabricate questions or schedules.
- If the user wants official wording, point them at NZQA as well as this mirror.
- This archive is for personal study and non-commercial education.
- **Do not scrape** the site, API, CDN, or MCP. Honour 429 / Retry-After and stop.
- Need a bulk copy or a custom extract? Email [support@nzqa.toasting.me](mailto:support@nzqa.toasting.me) or https://nzqa.toasting.me/contact and we can send what you were going to scrape.
## Optional JSON
Website: https://nzqa.toasting.me/.well-known/mcp.json
OpenAPI: https://api-v5-nzqa.toasting.me/openapi.json