How to search 10 million academic papers with one curl call

Published September 26, 2026

OpenAbstracts is a paper search API: one REST endpoint that searches 10M+ papers from 100,000+ journals and returns titles, authors, DOIs, abstracts, journal quartiles and PDF links as JSON. This guide takes you from nothing to a working search in about five minutes.

1. Get an API key

Create a free account, open the API Keys page and click create. The key starts with isk_live_ and is shown once, so copy it somewhere safe. Every account includes 100 free searches per month, with no card required.

curl "https://openabstracts.com/api/references-search?q=marketing&limit=3" \
  -H "x-api-key: isk_live_YOUR_KEY"

The response contains the total number of matches and an array of results:

{
  "success": true,
  "total": 21742,
  "page": 1,
  "limit": 3,
  "mode": "papers",
  "references": [
    {
      "id": "6aafc30105cf5ce509d69aa6",
      "doi": "10.12775/EQUIL.2009.011",
      "title": "Market basket analysis in marketing research",
      "authors": ["Małgorzata Śniegocka - Łusiewicz"],
      "year": 2009,
      "journal": "Equilibrium. Quarterly Journal of Economics and Economic Policy",
      "abstract": "Market basket analysis is, to put it simply, ...",
      "category": "business",
      "pdfUrl": "https://economic-policy.pl/index.php/eq/article/download/567/531",
      "url": "https://economic-policy.pl/index.php/eq/article/view/567",
      "quartile": "",
      "score": 32.97
    }
  ]
}

Every result carries enough to cite it (authors, year, journal, DOI) and to send a reader to the source (pdfUrl and url when available).

3. Two search modes

The mode parameter picks what is searched:

ModeWhat it searchesBest for
papers (default)Titles, abstracts, keywords and authors, with fuzzy matchingFinding relevant papers on a topic
contentThe full text inside the PDFsFinding the exact passage or a rare term

Full-text searches also return highlights, short snippets with the matching words wrapped in <mark> tags, so you can show why a paper matched:

curl "https://openabstracts.com/api/references-search?q=day-of-the-week+effect&mode=content&limit=2" \
  -H "x-api-key: isk_live_YOUR_KEY"

4. Filter the results

Combine a query with any of these filters:

  • category — for example business, medicine, engineering, physics, law
  • yearFrom and yearTo — inclusive publication years
  • quartile — comma-separated journal quartiles such as Q1,Q2
  • page and limit — pagination, with a maximum of 100 results per page
curl "https://openabstracts.com/api/references-search?q=machine+learning&category=engineering&yearFrom=2020&quartile=Q1&limit=10" \
  -H "x-api-key: isk_live_YOUR_KEY"

5. Use it from code

import requests

r = requests.get(
    "https://openabstracts.com/api/references-search",
    params={"q": "supply chain resilience", "yearFrom": 2021, "limit": 5},
    headers={"x-api-key": "isk_live_YOUR_KEY"},
    timeout=30,
)
for paper in r.json()["references"]:
    print(paper["year"], paper["title"], paper["doi"])
const res = await fetch(
  "https://openabstracts.com/api/references-search?q=supply+chain+resilience&limit=5",
  { headers: { "x-api-key": process.env.OPENABSTRACTS_KEY } }
);
const { references } = await res.json();

What it costs

You get 100 free searches every month. After that, searches cost $1.50 per 1,000 requests from prepaid credit that never expires, and a search that returns no results is never billed. Full details are on the pricing section of the docs.

Next steps