Step 1: Get total works by year
Usegroup_by=publication_year to count all works per year:
group_by array contains one entry per year:
Step 2: Get open access works by year
Addopen_access.is_oa:true to the filter to count only OA works:
Step 3: Combine the results
Match up the two responses by year and compute the OA percentage.Results
Data retrieved February 2026. Counts are approximate and will shift as OpenAlex continues indexing.| Year | Total | OA | Closed | OA % |
|---|---|---|---|---|
| 2015 | 9.9M | 3.1M | 6.9M | 30.8% |
| 2016 | 10.3M | 3.4M | 6.9M | 33.0% |
| 2017 | 10.1M | 3.6M | 6.5M | 35.3% |
| 2018 | 10.1M | 4.0M | 6.1M | 39.6% |
| 2019 | 10.5M | 4.4M | 6.0M | 42.5% |
| 2020 | 11.2M | 5.4M | 5.8M | 48.4% |
| 2021 | 10.2M | 5.6M | 4.7M | 54.2% |
| 2022 | 9.8M | 6.0M | 3.8M | 61.2% |
| 2023 | 10.4M | 6.5M | 4.0M | 62.0% |
| 2024 | 10.2M | 6.2M | 4.0M | 60.8% |
| 2025 | 14.0M | 9.5M | 4.5M | 67.9% |