Awesome-Agent-Skills-for-Empirical-Research openaire-api
Search EU-funded research outputs via the OpenAIRE Graph API
install
source · Clone the upstream repo
git clone https://github.com/brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/43-wentorai-research-plugins/skills/literature/search/openaire-api" ~/.claude/skills/brycewang-stanford-awesome-agent-skills-for-empirical-research-openaire-api && rm -rf "$T"
manifest:
skills/43-wentorai-research-plugins/skills/literature/search/openaire-api/SKILL.mdsource content
OpenAIRE Graph API
Overview
OpenAIRE is the European Open Science infrastructure providing programmatic access to millions of research outputs — publications, datasets, software, and other research products — linked to EU-funded projects, organizations, and researchers. The Graph API is free, requires no authentication, and returns JSON or XML. Uniquely valuable for discovering EU/Horizon-funded research and tracing connections between research outputs, projects, and institutions.
API Endpoints
Base URL
https://api.openaire.eu
Search Publications
# Search by keywords curl "https://api.openaire.eu/search/publications?keywords=climate+change+adaptation&format=json&size=10" # Filter by open access curl "https://api.openaire.eu/search/publications?keywords=machine+learning&openaccessonly=true&format=json" # Filter by date curl "https://api.openaire.eu/search/publications?keywords=CRISPR&fromDateAccepted=2023-01-01&toDateAccepted=2026-12-31&format=json" # Filter by EU project curl "https://api.openaire.eu/search/publications?projectID=corda__h2020::123456&format=json" # Search by DOI curl "https://api.openaire.eu/search/publications?doi=10.1038/s41586-023-05881-4&format=json"
Search Datasets
# Find research datasets curl "https://api.openaire.eu/search/datasets?keywords=genomics+sequencing&format=json&size=20" # Open access datasets only curl "https://api.openaire.eu/search/datasets?keywords=ocean+temperature&openaccessonly=true&format=json"
Search Projects
# Search EU-funded projects curl "https://api.openaire.eu/search/projects?keywords=artificial+intelligence&funder=EC&format=json" # Horizon 2020 projects curl "https://api.openaire.eu/search/projects?keywords=renewable+energy&fundingStream=H2020&format=json" # Horizon Europe projects curl "https://api.openaire.eu/search/projects?keywords=quantum+computing&fundingStream=HE&format=json"
Query Parameters
| Parameter | Description | Example |
|---|---|---|
| Free-text search | |
| Search by DOI | |
| Open access filter | |
| Start date | |
| End date | |
| Funding agency | (European Commission) |
| Funding program | |
| Response format | or |
| Results per page | (max 100) |
| Page number | |
| Sort order | |
Python Usage
import requests BASE_URL = "https://api.openaire.eu" def search_publications(keywords: str, open_access: bool = False, from_date: str = None, size: int = 20) -> list: """Search OpenAIRE publications.""" params = { "keywords": keywords, "format": "json", "size": size } if open_access: params["openaccessonly"] = "true" if from_date: params["fromDateAccepted"] = from_date resp = requests.get(f"{BASE_URL}/search/publications", params=params) resp.raise_for_status() data = resp.json() results = [] for item in data.get("response", {}).get("results", {}).get("result", []): metadata = item.get("metadata", {}).get("oaf:entity", {}).get("oaf:result", {}) title = metadata.get("title", {}) if isinstance(title, dict): title = title.get("$", "") results.append({ "title": title, "doi": metadata.get("pid", [{}])[0].get("$", "") if metadata.get("pid") else None, "date": metadata.get("dateofacceptance", {}).get("$", ""), "description": metadata.get("description", {}).get("$", "")[:300] if metadata.get("description") else None }) return results # Example: find recent open access papers on climate pubs = search_publications("climate resilience urban", open_access=True, from_date="2024-01-01") for p in pubs: print(f"[{p['date']}] {p['title']}")
Unique Capabilities
- Project-output linking: Trace which publications came from which EU grant
- Cross-entity relationships: Publications ↔ Datasets ↔ Software ↔ Projects ↔ Organizations
- Deduplication: OpenAIRE deduplicates records from multiple sources (Crossref, PubMed, arXiv, institutional repos)
- Open access monitoring: Track OA compliance for funded research
- 175M+ research products from 120,000+ data sources