← LeaderboardThe Skill Leaderboard

openaire-api

Search EU-funded research outputs via the OpenAIRE Graph API

Published by brycewang-stanford ↗brycewang-stanford/Auto-Empirical-Research-Skills

Try your first task

openaire-api

Start a fresh conversation. Replace the highlighted placeholders.

Use openaire-api to search for [publications, datasets, or projects] based on [keywords, DOI, or EU project ID], applying filters for [open access status, date range, funder, or funding stream] if specified, and return the results including titles, dates, and persistent identifiers.

Required inputs

  • [publications, datasets, or projects]
  • [keywords, DOI, or EU project ID]
  • [open access status, date range, funder, or funding stream]

User-approved starter prompt based on a pinned source version; check current skill requirements before running. Task evidence ↗

SKILL.md

name: openaire-apidescription: "Search EU-funded research outputs via the OpenAIRE Graph API"metadata:   openclaw:     emoji: "🇪🇺"    category: "literature"    subcategory: "search"    keywords: ["openaire", "european research", "open science", "EU funding", "research outputs", "open access"]    source: "https://develop.openaire.eu/"

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

ParameterDescriptionExample
keywordsFree-text searchkeywords=deep+learning
doiSearch by DOIdoi=10.1234/example
openaccessonlyOpen access filteropenaccessonly=true
fromDateAcceptedStart datefromDateAccepted=2023-01-01
toDateAcceptedEnd datetoDateAccepted=2026-12-31
funderFunding agencyfunder=EC (European Commission)
fundingStreamFunding programfundingStream=H2020
formatResponse formatformat=json or format=xml
sizeResults per pagesize=50 (max 100)
pagePage numberpage=2
sortBySort ordersortBy=resultdateofacceptance,descending

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

References