Discover/zenodo.org API
live

zenodo.org APIzenodo.org

Search and retrieve records, files, versions, communities, and statistics from Zenodo's open science repository via 10 structured endpoints.

Endpoints
10
Updated
11d ago
Try it
Search query string.
Page number for pagination.
Number of results per page.
Sort order. Accepted values: 'bestmatch', 'mostrecent'.
Filter by resource type (e.g., 'publication', 'software').
Filter by resource subtype (e.g., 'article', 'preprint').
Filter by community slug.
Filter by access right. Accepted values: 'open', 'embargoed', 'restricted', 'closed'.
Filter by resource type (e.g., 'publication', 'dataset').
api.parse.bot/scraper/6d5c7106-d65c-4baf-8bb3-3f87a8a17925/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Use it in your codegrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/6d5c7106-d65c-4baf-8bb3-3f87a8a17925/search_records?q=climate+change&size=5' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 10 totalclick to expand

Search Zenodo records with various filters and pagination. Returns paginated results with aggregations for faceted filtering.

Input
ParamTypeDescription
qrequiredstringSearch query string.
pageintegerPage number for pagination.
sizeintegerNumber of results per page.
sortstringSort order. Accepted values: 'bestmatch', 'mostrecent'.
typestringFilter by resource type (e.g., 'publication', 'software').
subtypestringFilter by resource subtype (e.g., 'article', 'preprint').
communitiesstringFilter by community slug.
access_rightstringFilter by access right. Accepted values: 'open', 'embargoed', 'restricted', 'closed'.
resource_typestringFilter by resource type (e.g., 'publication', 'dataset').
Response
{
  "type": "object",
  "fields": {
    "hits": "object containing 'hits' array of record objects and 'total' count",
    "links": "object with pagination links (self, next)",
    "aggregations": "object with faceted filter buckets (publication_date, access_status, resource_type, subject, file_type)"
  },
  "sample": {
    "data": {
      "hits": {
        "hits": [
          {
            "id": 14611580,
            "doi": "10.5281/zenodo.14611580",
            "links": {
              "self_html": "https://zenodo.org/records/14611580"
            },
            "stats": {
              "views": 136,
              "downloads": 12
            },
            "metadata": {
              "title": "climatechange-ai-tutorials/commonpower-safe-rl",
              "creators": [
                {
                  "name": "Climate Change AI"
                }
              ],
              "resource_type": {
                "type": "software",
                "title": "Software"
              },
              "publication_date": "2025-01-07"
            }
          }
        ],
        "total": 194374
      },
      "links": {
        "next": "https://zenodo.org/api/records?page=2&q=climate+change&size=5&sort=bestmatch",
        "self": "https://zenodo.org/api/records?page=1&q=climate+change&size=5&sort=bestmatch"
      }
    },
    "status": "success"
  }
}

About the zenodo.org API

This API exposes 10 endpoints covering Zenodo's open science repository, letting you search across millions of research records, retrieve full metadata and file listings, inspect version histories, and pull per-record download and view statistics. The search_and_extract_results endpoint returns a normalized flat list — including stripped abstracts, author arrays, DOIs, and direct download links — without any post-processing on your end.

Search and Record Retrieval

The search_records endpoint accepts a free-text q parameter alongside filters for type (e.g., publication, software), subtype, access_right, and communities. Results come back as a paginated hits object with a total count, plus an aggregations object containing facet buckets for publication_date, access_status, resource_type, subject, and file_type — ready for building faceted search UIs. The get_record endpoint retrieves a single record by numeric ID and returns the full metadata object (title, DOI, publication date, creators, description), a files array with checksums and sizes, and a stats object with download and view counts.

Files, Versions, and Statistics

get_record_files returns an entries array per record with each file's key, size, mimetype, checksum, and a links object containing direct download URLs. get_record_versions lists all versions of a record as a paginated hits array, and get_latest_record_version resolves any record ID to its most current version — useful when working with non-canonical version IDs. get_record_stats gives both per-version and all-version aggregate counts: views, downloads, unique_views, unique_downloads, and their version_* counterparts.

Communities

list_communities supports q, sort (bestmatch or newest), and pagination, and returns an aggregations object with type, funder, and organization facets. get_community accepts either a community slug or UUID and returns the community's access settings (visibility, member policy) and metadata (title, curation policy). search_records_in_community scopes a full record search to a specific community, accepting the same q, sort, and pagination parameters as the global search.

Normalized Extraction

search_and_extract_results provides a simplified alternative to search_records: instead of deeply nested metadata objects, it returns a flat list where each item includes doi, url, date, lang, title, source, authors (array of name strings), abstract (HTML stripped), keywords, and download_link. This is the fastest path when you only need publication-level fields without traversing nested structures.

Common use cases
  • Building a literature discovery tool that filters Zenodo records by resource_type, access_right, and keyword using search_records aggregations
  • Tracking dataset download popularity by polling get_record_stats for version_downloads and unique_downloads across a set of record IDs
  • Resolving the latest DOI for a versioned dataset using get_latest_record_version before citing or referencing it programmatically
  • Listing all files attached to a software deposit with get_record_files to surface mimetype, size, and direct download links
  • Monitoring community growth by paginating list_communities and filtering aggregations by funder or organization
  • Extracting structured author and abstract data from open-access publications using search_and_extract_results without parsing nested metadata
  • Auditing all versions of a dataset record with get_record_versions to detect when new files or updated metadata were published
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000250 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Zenodo have an official developer API?+
Yes. Zenodo provides an official REST API documented at https://developers.zenodo.org. It supports read and write operations for authenticated users, including record deposit and community management.
What does `search_and_extract_results` return that `search_records` does not?+
search_and_extract_results returns a flat list with fields like abstract (HTML stripped), authors as a plain string array, download_link as a direct URL, and lang — all pre-extracted so you don't need to traverse the nested metadata and files structures that search_records returns.
Does `get_record_stats` include time-series or historical view/download data?+
Not currently. It returns aggregate totals — views, downloads, unique_views, unique_downloads, and their version_* equivalents — but no breakdown by date or time period. You can fork this API on Parse and revise it to add a time-windowed statistics endpoint if Zenodo's stats surface supports it.
Can I retrieve records that require authentication or are under restricted access?+
The API returns records according to their access_right field; you can filter by open, embargoed, restricted, or closed using the access_right parameter in search_records. Metadata for restricted or closed records may be limited or absent. The API currently covers publicly accessible data. You can fork it on Parse and revise to add authenticated access for restricted record content.
Is there a way to retrieve all records belonging to a specific community without searching?+
The closest option is search_records_in_community, which scopes results to a community slug and returns a paginated hits array. It requires a community_id and optionally accepts q, sort, and pagination parameters. A full unfiltered dump of all community records is not a separate endpoint currently. You can fork this API on Parse and revise to add a dedicated listing endpoint.
Page content last updated . Spec covers 10 endpoints from zenodo.org.
Related APIs in EducationSee all →
arxiv.org API
Search and discover academic research papers on arXiv using keywords, authors, titles, categories, and dates, then access detailed metadata for any paper. Browse the complete arXiv category taxonomy to explore research across different scientific disciplines.
kenpom.com API
Access comprehensive college basketball analytics and ratings including team efficiency stats, four factors, point distribution, and detailed team statistics from KenPom's renowned basketball evaluation system. Search teams and coaches, retrieve conference-specific ratings, and explore advanced metrics across Division I college basketball.
springer.com API
Search and retrieve metadata for millions of articles, books, and journals from Springer Nature's research library using DOI or ISBN lookups, with powerful filtering and pagination options. Get detailed information about academic publications including journal details, article metadata, and book information to power your research tools and discovery applications.
maxpreps.com API
Access high school sports data from MaxPreps. Search for schools, retrieve team rosters and schedules, look up athlete profiles, and browse national or state rankings across all sports.
amberstudent.com API
Search student accommodation listings across popular cities and access comprehensive property information including room types, pricing trends, and tenant reviews. Get detailed insights into student housing options to compare amenities, prices, and community feedback all in one place.
ieeexplore.ieee.org API
Search for scientific papers and retrieve their metadata, abstracts, references, and citations from IEEE Xplore's collection of journals and conferences. Look up author profiles, browse journals, and access paper details and full text sections all programmatically.
josaa.nic.in API
Access JoSAA (Joint Seat Allocation Authority) admission data for IITs, NITs, IIITs, and GFTIs. Retrieve opening and closing ranks by institute, program, category, quota, and round for the current counselling session as well as historical data from 2016 onwards. Also query seat matrices and full institute details.
ncaa.com API
Access live college sports scores, game schedules, detailed boxscores, play-by-play breakdowns, and team statistics across NCAA sports. Search for specific contests and retrieve comprehensive game information for any NCAA sport, division, or team.