Zenodo Scraper — Research Datasets, Papers & Software avatar

Zenodo Scraper — Research Datasets, Papers & Software

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Zenodo Scraper — Research Datasets, Papers & Software

Zenodo Scraper — Research Datasets, Papers & Software

Scrape Zenodo by keyword, record ID, or community. Extract title, DOI, authors, description, type, license, downloads, views & files. No API key, no login. Ideal for researchers, data scientists, and academic analysts.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Zenodo Scraper — Research Datasets, Papers, Software & More

Scrape Zenodo's open research repository by keyword, record ID, or community — no API key, no login. Extract full metadata, citations, download stats, and file links for any record type.

What does Zenodo Scraper do?

Zenodo Scraper connects directly to Zenodo's public REST API (https://zenodo.org/api/records) to collect structured data about research outputs — datasets, publications, software packages, images, videos, and more. It supports three modes of operation: keyword search across the full Zenodo index (210,000+ records for popular topics), bulk record fetching by ID, and community-scoped searches. The actor paginates automatically through results using Zenodo's cursor-based links.next mechanism, delivering up to 10,000 records per run without any authentication. Each record returns 16 fields including DOI, authors, stripped-HTML description, resource type, license identifier, access rights, download/view statistics, and direct file download URLs. Resource type filtering (dataset, publication, software, etc.) is available as an input parameter.

Who is it for?

  • Academic researchers building literature reviews or meta-analyses across disciplines
  • Data scientists sourcing open datasets for machine learning and training pipelines
  • Research librarians cataloguing open-access outputs and tracking citation impact
  • Science journalists monitoring newly published findings on a topic
  • Open-data engineers building pipelines that ingest peer-reviewed datasets automatically

Use cases

  • Download all open datasets tagged "climate change" with their file URLs and citation metadata
  • Monitor weekly uploads in a Zenodo community (e.g., biodiversity, neuroscience) for new content
  • Build a curated database of open-source research software with license and download statistics
  • Cross-reference DOIs from a reading list with Zenodo metadata (views, downloads, version history)
  • Export author lists from a keyword search to identify top contributors in a research niche

Why use Zenodo Scraper?

  • Keyless and loginless — Zenodo's public REST API requires zero credentials; runs out of the box
  • 16 output fields — id, DOI, title, creators, description, publication date, resource type, keywords, license, access right, download URL, views, downloads, communities, record URL, version
  • Bulk pagination — chains Zenodo's links.next cursor to retrieve hundreds or thousands of records per run
  • Type filtering — narrow results to datasets, publications, software, images, videos, lessons, or other types
  • Clean output — HTML stripped from descriptions, authors joined as semicolon-delimited strings, JSON-ready arrays
  • Export ready — one-click CSV / JSON / Excel / JSONL via Apify dataset export; pay-per-result pricing

What data can you extract?

Every record returns the following fields:

FieldTypeDescription
idstringZenodo internal record ID
doistringDigital Object Identifier (e.g. 10.5281/zenodo.1234567)
titlestringTitle of the record
creatorsstringSemicolon-delimited list of author/creator names
descriptionstringPlain-text description (HTML stripped)
publicationDatestringPublication date (ISO 8601, e.g. 2024-03-15)
resourceTypestringType: dataset, publication, software, image, video, lesson, other
keywordsstringComma-delimited keyword list
licensestringLicense identifier (e.g. cc-by-4.0, mit)
accessRightstringopen, embargoed, restricted, or closed
downloadUrlstringDirect URL to primary file or archive download
viewsnumberTotal view count
downloadsnumberTotal download count
communitiesstringComma-delimited Zenodo community slugs
recordUrlstringCanonical HTML URL to the record page
versionstringVersion string if specified by uploader

Example output record:

{
"id": "3715409",
"doi": "10.5281/zenodo.3715409",
"title": "Global Surface Temperature Dataset 1880–2023",
"creators": "Hansen, James; Ruedy, Reto; Sato, Makiko",
"description": "Monthly global surface temperature anomalies relative to 1951-1980 baseline. Covers land and ocean combined. Updated annually from NASA GISS records.",
"publicationDate": "2024-01-12",
"resourceType": "dataset",
"keywords": "climate, temperature, global warming, surface temperature",
"license": "cc-by-4.0",
"accessRight": "open",
"downloadUrl": "https://zenodo.org/api/records/3715409/files-archive",
"views": 12430,
"downloads": 8712,
"communities": "copernicus-climate",
"recordUrl": "https://zenodo.org/records/3715409",
"version": "v2.1"
}

How to use

Option A — Keyword search (records mode)

Search across all Zenodo records by keyword or Zenodo query syntax.

  1. Open the actor and set Mode to Records (Keyword Search)
  2. Enter your Search Query (e.g. "machine learning" dataset)
  3. Optionally set Resource Type Filter (e.g. dataset)
  4. Set Max Results (e.g. 500)
  5. Click Run

Input JSON:

{
"mode": "records",
"query": "machine learning dataset",
"resourceType": "dataset",
"maxResults": 500
}

Option B — Fetch by record IDs (recordDetail mode)

Fetch specific records when you already know the Zenodo record IDs.

  1. Set Mode to Record Detail (by ID)
  2. Add one or more Record IDs (e.g. 3715409, 10580891)
  3. Click Run

Input JSON:

{
"mode": "recordDetail",
"ids": ["3715409", "10580891", "7025386"]
}

Option C — Community records (communityRecords mode)

Scrape all records from a specific Zenodo community.

  1. Set Mode to Community Records
  2. Enter the Community Slug (e.g. biodiversity, zenodo)
  3. Set a Search Query to further filter within the community (optional)
  4. Click Run

Input JSON:

{
"mode": "communityRecords",
"community": "biodiversity",
"query": "species occurrence",
"maxResults": 300
}

Input parameters

ParameterTypeDefaultDescription
modestringrecordsrecords, recordDetail, or communityRecords
querystringKeyword search query (supports Zenodo query syntax)
resourceTypestringFilter: dataset, publication, software, image, video, lesson, other
idsarrayRecord IDs to fetch (for recordDetail mode)
communitystringCommunity slug (for communityRecords mode)
maxResultsinteger200Maximum records to return (1–10000)
proxyobjectautoApify proxy configuration

Full input example:

{
"mode": "records",
"query": "climate change",
"resourceType": "dataset",
"maxResults": 1000,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["DATACENTER"]
}
}

Output example

{
"id": "10580891",
"doi": "10.5281/zenodo.10580891",
"title": "Microbiome Diversity Dataset — Amazon Rainforest Soil Samples 2022",
"creators": "Silva, Maria; Dos Santos, Pedro; Oliveira, Carla",
"description": "16S rRNA amplicon sequencing data from 847 soil samples collected across 12 Amazon biomes. Includes OTU tables, taxonomy assignments, and environmental metadata. Sequenced on Illumina MiSeq 2x250bp.",
"publicationDate": "2024-02-01",
"resourceType": "dataset",
"keywords": "microbiome, amazon, soil, 16S rRNA, biodiversity",
"license": "cc-by-4.0",
"accessRight": "open",
"downloadUrl": "https://zenodo.org/api/records/10580891/files/sequences.tar.gz/content",
"views": 3241,
"downloads": 1892,
"communities": "biodiversity, open-science",
"recordUrl": "https://zenodo.org/records/10580891",
"version": "1.0"
}

Tips for best results

  • Use Zenodo query syntax — combine terms with AND, OR, NOT; quote phrases; filter by creators.name:Hansen
  • Combine query + resourceTypequery: "neural network" + resourceType: software returns very targeted results
  • Set realistic maxResults — 200–500 is enough for most research workflows; 10,000 is the ceiling
  • Use communityRecords for niche domains — communities like biodiversity, astronomy, linguistics are curated and high-quality
  • Check accessRight — filter downstream for open records if you need direct file downloads
  • Download URLs — the downloadUrl field points to the primary file; some records have multiple files, use Zenodo's files API for the full list
  • Sorted by bestmatch — results are ranked by relevance; for chronological order, use Zenodo's sort=mostrecent query param via the API directly
  • Rate limits — Zenodo applies soft rate limits; the actor includes automatic back-off for 429 responses
  • Empty results — if a community search returns zero results, the community slug may not accept the communities filter; fall back to records mode with a topic query

Integrations

Connect your Zenodo data to 1,500+ tools via Apify integrations:

  • Google Sheets — auto-sync scraped records to a spreadsheet for collaborative annotation
  • Slack — get notified when new records matching your query are published
  • Zapier / Make — route records to Airtable, Notion, HubSpot, or any SaaS tool
  • Webhooks — POST results to your own API endpoint in real time
  • Schedule — run weekly to monitor a community or keyword for new publications
  • Apify API — call programmatically from Python, Node.js, or any language

API usage

cURL:

curl -X POST "https://api.apify.com/v2/acts/logiover~zenodo-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"records","query":"climate change","resourceType":"dataset","maxResults":200}'

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/zenodo-scraper').call({
mode: 'records',
query: 'climate change',
resourceType: 'dataset',
maxResults: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/zenodo-scraper").call(run_input={
"mode": "records",
"query": "climate change",
"resourceType": "dataset",
"maxResults": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Use with AI agents (MCP)

Zenodo Scraper is available as an MCP (Model Context Protocol) tool, so you can drive it directly from AI agents like Claude or GPT. Example prompt: "Use Zenodo Scraper to find the top 100 open-access machine learning datasets published in 2023, and return their titles, DOIs, and download counts." The actor returns structured JSON that AI agents can parse, filter, and summarize without writing any scraping code.

FAQ

Does this require an API key or account?

No. Zenodo's search and record API is fully public. The actor works without any credentials.

What types of records does it cover?

All Zenodo record types: datasets, publications (articles, preprints, reports, theses), software, images, videos, lessons, and "other" types.

How many records can I get per run?

Up to 10,000 per run. For broader coverage, run multiple queries with different keywords or date ranges.

Why are some results returning zero records?

Zero results usually mean your query has no matches, or the community slug is incorrect. Try simplifying the query or removing the resourceType filter. Check the community slug at zenodo.org/communities/<slug>.

Some fields are empty or null — is that normal?

Yes. Not all records provide all metadata. Keywords, version, communities, and license are optional fields that some uploaders omit.

Can I export to CSV or Excel?

Yes. After the run, click Export in the dataset view and choose CSV, Excel, JSONL, or XML.

How fast does it run?

Typically 200 records in 30–60 seconds, 1,000 records in 3–5 minutes. Speed depends on Zenodo API response times and proxy latency.

Is there a rate limit on the Zenodo API?

Zenodo applies soft rate limits (HTTP 429). The actor handles these automatically with exponential back-off.

How often is Zenodo updated?

Zenodo ingests new records continuously. Hundreds of new records are published daily. The sort=bestmatch default returns the most relevant results; use sort=mostrecent for the latest uploads.

What is the pagination limit?

Zenodo's API paginates 25 records per page with no hard cap on page count (up to Zenodo's index depth). The actor chains pages automatically via links.next.

Can I filter by date range?

Yes, via Zenodo's query syntax: publication_date:[2023-01-01 TO 2024-01-01] in the query field.

What communities are available?

Search communities at zenodo.org/communities. Popular ones include zenodo, biodiversity, openaireplus, astronomy, nlp, covid-19.

Zenodo is an open-access research repository operated by CERN and funded by the European Commission. All metadata is publicly available under open licenses, and the Zenodo API is provided for programmatic access. This actor only accesses data that Zenodo makes publicly available without authentication. Usage should comply with Zenodo's Terms of Use (zenodo.org/terms). Respect rate limits, do not use the data for spam, and attribute records correctly using their DOI when citing in publications.

  • arXiv Scraper — Extract preprints and papers from arXiv by category or keyword
  • OpenAlex Scraper — Scrape the OpenAlex academic graph (200M+ works, authors, institutions)
  • GitHub Activity Scraper — Track open-source research software by stars, commits, and contributors
  • CVE Advisory Scraper — Export CVE vulnerability data for research and security analysis