Skip to main content
What does a funder actually invest in? How has their portfolio shifted over the past decade? This recipe maps a funder’s research output by field, detects shifting priorities, and identifies the top institutions receiving funding. We’ll use the US National Science Foundation as the example.

Step 1: Find the funder

Search by name to get the funder ID:
https://api.openalex.org/funders?search=national+science+foundation&per_page=3&select=id,display_name,works_count,awards_count
[
  {"id": "https://openalex.org/F4320306076", "display_name": "National Science Foundation", "works_count": 1483062, "awards_count": 812094},
  {"id": "https://openalex.org/F4320332161", "display_name": "National Natural Science Foundation of China", "works_count": 3567561, "awards_count": 840334}
]
NSF is F4320306076 — 1.5M funded works and 812K awards.

Step 2: Map the portfolio by field

Group funded works by research field to see where the money goes:
https://api.openalex.org/works?filter=awards.funder_id:F4320306076&group_by=primary_topic.field.id&per_page=10
[
  {"key": "https://openalex.org/fields/22", "key_display_name": "Engineering", "count": 54753},
  {"key": "https://openalex.org/fields/31", "key_display_name": "Physics and Astronomy", "count": 45894},
  {"key": "https://openalex.org/fields/17", "key_display_name": "Computer Science", "count": 36559},
  {"key": "https://openalex.org/fields/13", "key_display_name": "Biochemistry, Genetics and Molecular Biology", "count": 27962},
  {"key": "https://openalex.org/fields/23", "key_display_name": "Environmental Science", "count": 27954}
]

Step 3: Track output over time

Group by year to see overall funding trends:
https://api.openalex.org/works?filter=awards.funder_id:F4320306076,publication_year:2015-2025&group_by=publication_year
[
  {"key": "2015", "key_display_name": "2015", "count": 19636},
  {"key": "2018", "key_display_name": "2018", "count": 28959},
  {"key": "2021", "key_display_name": "2021", "count": 30387},
  {"key": "2023", "key_display_name": "2023", "count": 31144}
]
NSF-funded output grew from ~20K works in 2015 to ~31K in 2023.

Step 4: Detect shifting priorities

Run the same field breakdown for two time windows and compare the shares:
# Recent (2023–2025): 75,728 funded works
https://api.openalex.org/works?filter=awards.funder_id:F4320306076,publication_year:2023-2025&group_by=primary_topic.field.id&per_page=10

# Historical (2015–2017): 74,214 funded works
https://api.openalex.org/works?filter=awards.funder_id:F4320306076,publication_year:2015-2017&group_by=primary_topic.field.id&per_page=10
Award dollar amounts aren’t available at this grouping level, so shares are by funded work count — still a strong signal of where a funder directs effort.
Compare each field’s share of total output across the two periods:
Field2015–172023–25Change
Engineering16.9%18.0%+1.1%
Physics and Astronomy13.9%15.4%+1.5%
Computer Science11.9%12.1%+0.2%
Environmental Science9.1%8.3%-0.8%
Materials Science8.2%7.1%-1.1%
Biochemistry / Mol. Bio.8.2%7.4%-0.8%
Earth and Planetary Sciences6.7%5.8%-0.9%
Mathematics3.1%3.8%+0.7%
Social Sciences3.5%new
Physics and Engineering grew their share while Materials Science and Earth Sciences shrank. Social Sciences entered the top 10 — consistent with NSF’s expanding investment in human-centered research.

Step 5: Find top recipient institutions

Drill into a specific field to see which institutions receive the most funding:
https://api.openalex.org/works?filter=awards.funder_id:F4320306076,primary_topic.field.id:22&group_by=authorships.institutions.id&per_page=5
[
  {"key": "https://openalex.org/I130701444", "key_display_name": "Georgia Institute of Technology", "count": 1902},
  {"key": "https://openalex.org/I27837315", "key_display_name": "University of Michigan", "count": 1436},
  {"key": "https://openalex.org/I219193219", "key_display_name": "Purdue University West Lafayette", "count": 1410},
  {"key": "https://openalex.org/I157725225", "key_display_name": "University of Illinois Urbana-Champaign", "count": 1343},
  {"key": "https://openalex.org/I63966007", "key_display_name": "Massachusetts Institute of Technology", "count": 1230}
]

Full script

This script maps any funder’s portfolio, computes field share shifts, and identifies top institutions per field.
import requests

BASE = "https://api.openalex.org"
FUNDER = "F4320306076"  # NSF

def api(endpoint, params):
    return requests.get(f"{BASE}/{endpoint}", params=params).json()

# Portfolio by field — recent vs. historical
recent = api("works", {
    "filter": f"awards.funder_id:{FUNDER},publication_year:2023-2025",
    "group_by": "primary_topic.field.id",
    "per_page": 15,
})
historical = api("works", {
    "filter": f"awards.funder_id:{FUNDER},publication_year:2015-2017",
    "group_by": "primary_topic.field.id",
    "per_page": 15,
})

recent_total = recent["meta"]["count"]
historical_total = historical["meta"]["count"]

recent_shares = {g["key_display_name"]: g["count"] / recent_total
                 for g in recent["group_by"]}
historical_shares = {g["key_display_name"]: g["count"] / historical_total
                     for g in historical["group_by"]}

all_fields = sorted(set(recent_shares) | set(historical_shares),
                    key=lambda f: recent_shares.get(f, 0), reverse=True)

print(f"{'Field':<45} {'2015–17':>8} {'2023–25':>8} {'Change':>8}")
print("-" * 71)
for field in all_fields:
    old = historical_shares.get(field, 0)
    new = recent_shares.get(field, 0)
    delta = new - old
    sign = "+" if delta > 0 else ""
    print(f"  {field:<43} {old:>7.1%} {new:>7.1%} {sign}{delta:>6.1%}")