Open Access Trends by Year
How has open access publishing changed over the last decade? Two API calls and some simple subtraction give you a year-by-year breakdown. (Under 1¢)
Step 1: Get total works by year
Use group_by=publication_year to count all works per year:
https://api.openalex.org/works?filter=publication_year:2015-2025&group_by=publication_year
The response group_by array contains one entry per year:
[
{"key": "2015", "key_display_name": "2015", "count": 9949715},
{"key": "2016", "key_display_name": "2016", "count": 10262596},
{"key": "2017", "key_display_name": "2017", "count": 10109865}
]
Step 2: Get open access works by year
Add open_access.is_oa:true to the filter to count only OA works:
https://api.openalex.org/works?filter=publication_year:2015-2025,open_access.is_oa:true&group_by=publication_year
Same shape, smaller counts:
[
{"key": "2015", "key_display_name": "2015", "count": 3066358},
{"key": "2016", "key_display_name": "2016", "count": 3383207},
{"key": "2017", "key_display_name": "2017", "count": 3564129}
]
Step 3: Combine the results
Match up the two responses by year and compute the OA percentage.
import requests
total_resp = requests.get(
"https://api.openalex.org/works",
params={"filter": "publication_year:2015-2025", "group_by": "publication_year"}
).json()
oa_resp = requests.get(
"https://api.openalex.org/works",
params={"filter": "publication_year:2015-2025,open_access.is_oa:true", "group_by": "publication_year"}
).json()
total_by_year = {g["key"]: g["count"] for g in total_resp["group_by"]}
oa_by_year = {g["key"]: g["count"] for g in oa_resp["group_by"]}
for year in sorted(total_by_year):
total = total_by_year[year]
oa = oa_by_year.get(year, 0)
closed = total - oa
pct = 100 * oa / total
print(f"{year}: {total:>12,} total | {oa:>12,} OA | {closed:>12,} closed | {pct:.1f}%")
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% |
Open access has grown from roughly 31% to 68% of indexed works over the last decade. The crossover point — where OA works first outnumbered closed — was around 2021.