Page through Results
Basic paging
Use page and per_page to navigate results:
| Parameter | Default | Range | Description |
|---|---|---|---|
page |
1 | 1-500 | Page number |
per_page |
25 | 1-100 | Results per page |
# Page 2 with 100 results per page
https://api.openalex.org/works?page=2&per_page=100
Warning: Basic paging limit: You can only access the first 10,000 results (
page * per_pagemust 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.
Note: Cursor paging also works with
group_by. To page through more than 200 groups, follownext_cursorexactly as shown above. Basicpage-based paging (page=2, …) is not supported for grouped results — you must use cursor paging. See Group.
Warning: 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.