Retrieve a NEET paper by year, shift, and filename
Fetch a NEET question paper filtered by year, shift, and file type. Returns structured JSON with full question metadata.
Available files per shift:
| Filename | Content | Approx. question count |
|---|---|---|
paper.json | All subjects merged | ~200 |
physics.json | Physics only | ~50 |
chemistry.json | Chemistry only | ~50 |
biology.json | Biology only | ~100 |
Available years: 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026
Authorization
BearerAuth Unkey API key. Prefix: ps_ (production) / ps_test_ (staging).
Authorization: Bearer ps_xxxxxxxxxxxxxxxxxxxxxxxx
Get your key at paperstack.qzz.io.
In: header
Path Parameters
Four-digit exam year. Must match a directory in the dataset. Range: 2006–2026
^(19|20)[0-9]{2}$Shift identifier. Accepts three formats:
1. Full shift name (precise):
Examples: 05may-s1, 23jun-s2, 13sep-s1
2. Suffix alias (recommended):
s1→ automatically resolves to the-s1shift for that years2→ automatically resolves to the-s2shift for that year
3. Date prefix (convenient):
05may→ resolves to05may-s123jun→ resolves to23jun-s2
Use GET /neet/2024 to list all available shifts for a year.
The JSON file to retrieve.
paper.json— Full exam (all subjects, ~200 questions)physics.json— Physics questions only (~50)chemistry.json— Chemistry questions only (~50)biology.json— Biology questions only (~100)
"paper.json" | "physics.json" | "chemistry.json" | "biology.json"Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/neet/2024/s1/physics.json"{
"schema": "v4",
"exam": "neet",
"year": 2024,
"shift": "05may-s1",
"paper": null,
"subjects": [
"physics",
"chemistry",
"biology"
],
"total": 50,
"duration": 200,
"marksCorrect": 4,
"marksIncorrect": -1,
"marksUnanswered": 0,
"sections": {
"a": {
"label": "section a",
"total": 100,
"required": 100,
"mandatory": true
},
"b": {
"label": "section b",
"total": 100,
"required": 100,
"mandatory": true
}
},
"scrapedAt": "2026-05-21T05:30:13.506Z",
"answerKeyFound": true,
"checksum": "59f420b312eeb4f3dcaedc20356341ddd225d8ddbb272525b4b2bd9c16daa59c",
"provenance": {
"author": "Naman",
"repo": "https://github.com/rankify-ai/PaperStack",
"license": "PolyForm-Shield License-1.0.0",
"pipelineVersion": "1.0.0",
"generatedAt": "2026-05-21T05:30:13.506Z"
},
"questions": [
{
"id": "neet-2024-05may-s1-ph-001",
"number": 1,
"subject": "physics",
"topic": "general-physics",
"section": "a",
"type": "mcq",
"text": "In a vernier calipers, $(N + 1)$ divisions of vernier scale coincide with $N$ divisions of main scale. If 1 MSD represents $0.1\\mathrm{mm}$, the vernier constant (in cm) is:",
"options": [
"1/10N",
"1/100(N + 1)",
"100N",
"10(N + 1)"
],
"answer": "(2)",
"marks": 4,
"negativeMarks": -1,
"hasDiagram": false,
"tags": [
"vernier-calipers",
"measurement"
],
"revision": 1,
"source": "official-pdf"
},
{
"id": "neet-2024-05may-s1-ph-002",
"number": 2,
"subject": "physics",
"topic": "general-physics",
"section": "a",
"type": "mcq",
"text": "If the monochromatic source in Young's double slit experiment is replaced by white light, then",
"options": [
"Interference pattern will disappear.",
"There will be a central dark fringe surrounded by a few coloured fringes.",
"There will be a central bright white fringe surrounded by a few coloured fringes.",
"All bright fringes will be of equal width."
],
"answer": "(3)",
"marks": 4,
"negativeMarks": -1,
"hasDiagram": false,
"tags": [
"interference",
"white-light"
],
"revision": 1,
"source": "official-pdf"
}
]
}{
"error": "Invalid filename. Must be one of: paper.json, physics.json, chemistry.json, biology.json"
}{
"error": "Missing API key. Include it as: Authorization: Bearer ps_xxxx"
}{
"error": "Invalid or expired API key. Get a new one at paperstack.qzz.io."
}{
"error": "Paper not found. Check the year, shift, and filename. Available years: 2006–2026."
}{
"error": "Rate limit exceeded. Max 1 request per second on your plan. Please slow down."
}{
"error": "Authentication service temporarily unavailable. Try again later."
}