Skip to main content

Basic paging

Use page and per_page to navigate results:
ParameterDefaultRangeDescription
page11-500Page number
per_page251-100Results per page
# Page 2 with 100 results per page
https://api.openalex.org/works?page=2&per_page=100
Basic paging limit: You can only access the first 10,000 results (page * per_page must not exceed 10,000). Use cursor paging for more.

Cursor paging

Cursor paging lets you access any number of results: Step 1: Start with cursor=*
https://api.openalex.org/works?filter=publication_year:2020&per_page=100&cursor=*
Step 2: Get the next_cursor from the response:
{
  "meta": {
    "count": 8695857,
    "per_page": 100,
    "next_cursor": "IlsxNjA5MzcyODAwMDAwLCAnaHR0cHM..."
  },
  "results": ["..."]
}
Step 3: Use next_cursor for the next page:
https://api.openalex.org/works?filter=publication_year:2020&per_page=100&cursor=IlsxNjA5MzcyODAwMDAwLCAnaHR0cHM...
Repeat until next_cursor is null and results is empty.
Don’t use cursor paging to download the entire dataset.
  • It takes days to page through /works or /authors
  • It puts heavy load on our servers
Instead, use the OpenAlex snapshot for bulk downloads. It’s free, fast, and gives you the same data format.

Jupyter notebook

See this community notebook for executable paging examples.