arxiv APIar5iv.labs.arxiv.org ↗
Extract structured text from arxiv papers via ar5iv. Get title, authors, sections, subsections, and full_text from any arxiv paper ID.
What is the arxiv API?
The ar5iv API exposes 1 endpoint — get_paper_text — that returns the complete structured text of any arxiv paper rendered on ar5iv.labs.arxiv.org. A single call yields 5 top-level response fields: title, authors, paper_id, sections (with nested subsections), and full_text. Both modern identifiers like '2412.15115' and legacy path-style identifiers like 'hep-ph/9901234' are accepted as input.
curl -X GET 'https://api.parse.bot/scraper/d7f30b55-1c17-4145-93a3-c2d392cf471c/get_paper_text?paper_id=2412.15115' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace ar5iv-labs-arxiv-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: ar5iv Paper Text API — fetch and explore a paper's structure."""
from parse_apis.ar5iv_labs_arxiv_org_api import Ar5iv, PaperNotFound
client = Ar5iv()
# Fetch a paper by its arxiv identifier
try:
paper = client.papers.get(paper_id="2412.15115")
except PaperNotFound as e:
print(f"Paper not found: {e.message}")
raise
print(f"Title: {paper.title}")
print(f"Authors: {paper.authors}")
print(f"Sections: {len(paper.sections)}")
# Walk the first few sections and print their headings
for section in paper.sections[:3]:
print(f" [{section.heading}] {section.text[:100]}...")
# Access the full concatenated text
print(f"\nFull text length: {len(paper.full_text)} characters")
print("exercised: papers.get")
Extract the complete visible text of an arxiv paper rendered on ar5iv.labs.arxiv.org. Returns the paper's title, authors, structured sections (with nested subsections), and a concatenated full_text field. Each section includes heading and text content. The references section contains all bibliography entries. Makes one HTTP request per call.
| Param | Type | Description |
|---|---|---|
| paper_idrequired | string | Arxiv paper identifier, e.g. '2412.15115' for new-style or 'hep-ph/9901234' for old-style identifiers. |
{
"type": "object",
"fields": {
"title": "string - paper title",
"authors": "string - author names",
"paper_id": "string - the arxiv identifier as provided",
"sections": "array of section objects with heading, text, and optional subsections",
"full_text": "string - complete concatenated text of the entire paper"
},
"sample": {
"data": {
"title": "Qwen2.5 Technical Report",
"authors": "Qwen Team",
"paper_id": "2412.15115",
"sections": [
{
"text": "In this report, we introduce Qwen2.5, a comprehensive series of large language models (LLMs) designed to meet diverse needs...",
"heading": "Abstract"
},
{
"text": "The sparks of artificial general intelligence (AGI) are increasingly visible through the fast development of large foundation models...",
"heading": "Introduction"
},
{
"text": "Basically, the Qwen2.5 series include dense models for opensource...",
"heading": "Architecture & Tokenizer"
},
{
"text": "Abdin et al. (2024) Marah I Abdin...",
"heading": "References"
}
],
"full_text": "Qwen2.5 Technical Report\n\nQwen Team\n\nIn this report, we introduce Qwen2.5..."
},
"status": "success"
}
}About the arxiv API
What get_paper_text Returns
Calling get_paper_text with a valid paper_id returns the complete readable content of an arxiv paper as rendered on ar5iv. The sections array mirrors the document's logical hierarchy: each section object carries a heading and text, and may contain nested subsections following the same structure. This means a paper's abstract, introduction, methodology, results, discussion, and references each surface as discrete, addressable objects rather than an undifferentiated blob.
paper_id Format
The paper_id parameter accepts both new-style numeric identifiers (e.g., 2412.15115) and old-style category-prefixed identifiers (e.g., hep-ph/9901234). The identifier is returned as-is in the paper_id response field, making it straightforward to cross-reference results against arxiv metadata from other sources.
full_text Field
In addition to the structured sections array, the response includes a full_text field containing the entire paper concatenated into a single string. This is useful for full-document text search, embedding generation, or feeding to language models without needing to traverse the section tree. The authors field returns author names as a string rather than a parsed array.
References
The references section of the paper is included within the sections array. It appears as a section with heading and text content, consistent with the rest of the document structure, so citation text is accessible alongside the main paper body.
The arxiv API is a managed, monitored endpoint for ar5iv.labs.arxiv.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ar5iv.labs.arxiv.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official ar5iv.labs.arxiv.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Building a semantic search index over arxiv papers using the full_text field for embedding generation
- Extracting structured section content to train or fine-tune summarization models on scientific literature
- Automating literature review pipelines by retrieving sections like abstract and introduction for batches of paper IDs
- Parsing reference sections to build citation graphs from arxiv paper metadata
- Feeding paper sections into RAG (retrieval-augmented generation) pipelines for domain-specific question answering
- Monitoring specific arxiv paper IDs and diffing section text for versioned preprint updates
- Aggregating author name strings from multiple paper IDs to analyze researcher output across a corpus
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.