arXiv API
⚠️ E-prints need the copyright holder's permission to redistribute
arXiv's Terms of Use for arXiv APIs make the descriptive metadata CC0, but say this about the e-prints themselves (the second line is from their list of things you must not do):
“The redistribution of e-prints requires permission from the copyright holder, which may be the author(s) or publisher.”
“Store and serve arXiv e-prints (PDFs, source files, or other content) from your servers, unless you have the permission of the copyright holder or are permitted to do so by the license with which the e-print was submitted.”
Source: Terms of Use for arXiv APIs (checked Nov 3, 2026). This isn't legal advice.
Catalog entries with openly reusable metadata about papers, including preprints, include:
Each source has its own terms; read its licence note before you use it.
arXiv API
arXiv's public API returns search results and metadata for arXiv e-prints as an Atom XML feed: titles, abstracts, authors, categories, identifiers, dates and links to each abstract page and PDF. Queries can target fields with prefixes such as ti (title), au (author), abs (abstract) and cat (category), be sorted by date and paged; no key is needed. arXiv also offers OAI-PMH, RSS feeds and bulk data downloads under the same API terms.
Required Attribution:
arXiv asks API users to show: "Thank you to arXiv for use of its open access interoperability."
Coverage
E-prints posted to arXiv across its subject categories, for example q-fin (quantitative finance) and econ (economics). A query returns at most 2,000 results per call and 30,000 in total. Publication delay: Not stated.
Verdict
Use it to follow new preprints in a field, for example quantitative finance or economics, and to build discovery tools that link back to arXiv. The descriptive metadata is CC0, but the e-prints stay under their authors' or publishers' copyright: arXiv's API terms say not to store and serve e-prints from your own servers unless the copyright holder or the e-print's licence permits it, and to direct users to arXiv.org for the content. Keep to one request every three seconds on a single connection, and do not brand a project with arXiv's names in a way that implies its endorsement.
Get the free weekly email
Free weekly email of newly verified free data. Unsubscribe by emailing us.
By entering your email and clicking Subscribe, you agree to receive the Signal Lab weekly email from Quantum Data Technologies Ltd., 3200-650 West Georgia Street, Vancouver, BC V6B 4P7, Canada (signal-lab@qdt.ai). You can unsubscribe at any time: reply "unsubscribe" to any email or write to signal-lab@qdt.ai. See our Privacy Policy.
Use in your agent
Load recent arXiv preprints in a category into pandas and Parquet. Checked against the provider's documentation on Nov 3, 2026.
Access
- No key or account.
- Endpoint https://export.arxiv.org/api/query with search_query, start, max_results, sortBy and sortOrder.
Request
curl 'https://export.arxiv.org/api/query?search_query=cat:q-fin.TR&start=0&max_results=100&sortBy=submittedDate&sortOrder=descending'Format
Atom 1.0 XML feed: opensearch totalResults, startIndex and itemsPerPage, then one entry per e-print with id (abstract URL), title, summary, published, updated, author names, arxiv:primary_category, category terms and links (abstract page and PDF).
Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
"""arXiv API (Atom feed) -> pandas -> Parquet. No key; at most one request every three seconds."""
import xml.etree.ElementTree as ET
import requests
import pandas as pd
NS = {"a": "http://www.w3.org/2005/Atom", "arxiv": "http://arxiv.org/schemas/atom"}
params = {"search_query": "cat:q-fin.TR", "start": 0, "max_results": 100,
"sortBy": "submittedDate", "sortOrder": "descending"}
r = requests.get("https://export.arxiv.org/api/query", params=params, timeout=60)
r.raise_for_status()
root = ET.fromstring(r.content)
rows = []
for e in root.findall("a:entry", NS):
rows.append({
"arxiv_id": e.findtext("a:id", namespaces=NS).rsplit("/abs/", 1)[-1],
"title": " ".join(e.findtext("a:title", namespaces=NS).split()),
"published": e.findtext("a:published", namespaces=NS),
"primary_category": e.find("arxiv:primary_category", NS).get("term"),
"authors": "; ".join(a.findtext("a:name", namespaces=NS) for a in e.findall("a:author", NS)),
"abs_url": e.findtext("a:id", namespaces=NS),
})
df = pd.DataFrame(rows)
df.to_parquet("arxiv_qfin_tr.parquet", index=False)
total = root.findtext("{http://a9.com/-/spec/opensearch/1.1/}totalResults")
print(len(df), "q-fin.TR entries of", total, "; newest:", df["published"].max())Run by us on 2026-11-03 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 100 q-fin.TR entries of 2453 ; newest: 2026-11-01T11:08:08Z
Limits
- No more than one request every three seconds, one connection at a time, across all your machines.
- At most 2,000 results per call and 30,000 per query; larger requests return HTTP 400.
Quirks
- Titles and abstracts contain line breaks and repeated spaces; normalise whitespace.
- The entry id is the abstract URL; the arXiv identifier is the part after /abs/ and includes the version (for example v1).
Terms and attribution
- Descriptive metadata is CC0; e-prints keep their authors' or publishers' copyright and should not be stored and served from your servers without permission or a permitting licence.
- Direct users to arXiv.org for e-print content, and do not imply arXiv's endorsement.
Sources
- https://info.arxiv.org/help/api/tou.html: “When using the legacy APIs (including OAI-PMH, RSS, and the arXiv API), make no more than one request every three seconds, and limit requests to a single connection at a time.”
- https://info.arxiv.org/help/api/tou.html: “Direct users to arXiv.org to retrieve e-print content (PDF, source files, etc). We encourage you to link to the abstract page.”
- https://info.arxiv.org/help/api/index.html: “Acknowledge arXiv data usage with this statement on your product: “Thank you to arXiv for use of its open access interoperability.””
Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer