# Dryad Research Data Repository Scraper (`ninhothedev/dryad-datasets-scraper`) Actor

$0.5/1K 🔥 Dryad Research Data! Pull curated research datasets with DOIs & metadata. No key. JSON, CSV, Excel or API in seconds. Find and cite open research data ⚡

- **URL**: https://apify.com/ninhothedev/dryad-datasets-scraper.md
- **Developed by:** [ninhothedev](https://apify.com/ninhothedev) (community)
- **Categories:** Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Dryad Research Data Repository Scraper

Scrape **curated research datasets from [Dryad](https://datadryad.org)** — the community-trusted, peer-curated data repository that is especially strong in **ecology, evolution, and medicine**. Pull authors, DOIs, abstracts, keywords, methods, licenses, related publications and file-level metadata into clean, structured JSON. **No API key required.**

Priced for volume at roughly **~$0.50 per 1,000 datasets** — ideal for meta-analysis, systematic reviews and data-availability compliance at scale.

### What it does

Dryad exposes a free, public REST API (`https://datadryad.org/api/v2`). This actor wraps it, handles the HAL/HATEOAS pagination for you, and normalises every record into a flat, analysis-ready schema.

- **Browse or search** the entire Dryad catalogue (70,000+ datasets)
- **Look up explicit DOIs** to enrich an existing list
- Compact, de-duplicated **authors** (name + affiliation + ORCID)
- Clean, HTML-stripped **abstracts, methods and usage notes**
- **Keywords, field of science, license, storage size, related works** and more

### How it differs from Figshare / Zenodo (and DANDI / OSF)

This account also ships a [Figshare scraper](https://apify.com/ninhothedev/figshare-scraper) and a [Zenodo scraper](https://apify.com/ninhothedev/zenodo-scraper). They are **not interchangeable** — pick by repository:

| Repository | Nature | Best for |
|---|---|---|
| **Dryad** (this actor) | **Curated & peer-reviewed** data publishing. Every dataset is human-checked by a curation team before release. Domain-skewed toward **ecology, evolution, and biomedical/medical** research, tightly linked to a related journal article. | High-quality, publication-linked biological/medical datasets; reproducibility & data-availability audits. |
| [Figshare](https://apify.com/ninhothedev/figshare-scraper) | General-purpose, **self-deposit** repository across all disciplines (figures, posters, datasets, media). Minimal curation. | Broad, cross-discipline discovery incl. non-dataset research outputs. |
| [Zenodo](https://apify.com/ninhothedev/zenodo-scraper) | CERN-backed, general-purpose self-deposit; strong for **software releases** and long-tail research artifacts. | Software/code archives, DOIs for any output, EU/physics-leaning coverage. |

In short: **Dryad = curated, biology/medicine-heavy, article-linked data.** Use Figshare/Zenodo for broad, self-deposited outputs. Related actors for the wider ecosystem: [DANDI datasets scraper](https://apify.com/ninhothedev/dandi-datasets-scraper) (neurophysiology) and [OSF scraper](https://apify.com/ninhothedev/osf-scraper) (open-science projects).

### Use cases

- **Research data discovery** — find every dataset on a topic across a curated corpus.
- **Meta-analysis** — assemble structured inputs (methods, sample notes, DOIs) for quantitative synthesis.
- **Systematic reviews** — screen data availability and link datasets back to primary articles.
- **Data-availability compliance** — verify that published papers actually deposited their data.

### Input

| Field | Type | Description |
|---|---|---|
| `mode` | select | `datasets` (browse/search) or `dois` (explicit lookup). Default `datasets`. |
| `searchQuery` | string | Optional full-text query (used in `datasets` mode via Dryad's `/search` endpoint). |
| `dois` | array | Dryad DOIs to resolve when `mode='dois'` (e.g. `doi:10.5061/dryad.7rh4625`). |
| `maxItems` | integer | Max datasets to scrape, 1–3000. Default 200. |

#### Example input

```json
{
  "mode": "datasets",
  "searchQuery": "coral reef",
  "maxItems": 500
}
```

```json
{
  "mode": "dois",
  "dois": ["doi:10.5061/dryad.7rh4625"]
}
```

### Output

Each item is a normalised dataset record. All fields are nullable.

```json
{
  "type": "dataset",
  "doi": "doi:10.5061/dryad.7rh4625",
  "title": "Distinct predatory behaviors in scimitar- and dirk-toothed sabertooth cats",
  "authors": [{ "name": "Borja Figueirido", "affiliation": "Universidad de Malaga", "orcid": "0000-0003-2542-3977" }],
  "author_count": 4,
  "abstract": "Over the Cenozoic, large cat-like forms have convergently evolved ...",
  "keywords": ["Paleobiology", "Finite element analysis"],
  "field_of_science": "Evolutionary Biology",
  "methods": "...",
  "usage_notes": "...",
  "publication_date": "2023-05-10T00:00:00",
  "last_modified": "2023-06-01T00:00:00",
  "version_number": 1,
  "version_status": "submitted",
  "curation_status": "Published",
  "license": "https://creativecommons.org/publicdomain/zero/1.0/",
  "related_publication_issn": "0960-9822",
  "related_works": [{ "relationship": "primary_article", "identifier": "https://doi.org/10.1016/j.cub.2023.01.001" }],
  "visibility": "public",
  "sharing_link": "https://datadryad.org/share/...",
  "url": "https://datadryad.org/dataset/doi:10.5061/dryad.7rh4625",
  "source": "dryad",
  "scraped_at": "2026-08-11T00:00:00+00:00"
}
```

### Notes

- Data comes from Dryad's **free public API — no key, no login**.
- Please respect Dryad's terms and the individual dataset licenses when reusing content.

# Actor input Schema

## `mode` (type: `string`):

Choose 'datasets' to browse/search the Dryad catalogue, or 'dois' to resolve an explicit list of Dryad DOIs to their detail records.

## `searchQuery` (type: `string`):

Optional full-text query (used in 'datasets' mode via the Dryad /search endpoint). Leave empty to browse the whole catalogue. Example: 'coral reef' or 'sabertooth'.

## `dois` (type: `array`):

List of Dryad DOIs to fetch when mode='dois'. Accepts 'doi:10.5061/dryad.xxxx', '10.5061/dryad.xxxx' or a full https://doi.org/... URL.

## `maxItems` (type: `integer`):

Maximum number of dataset records to scrape (1-3000). Pagination stops once this many are collected.

## Actor input object example

```json
{
  "mode": "datasets",
  "searchQuery": "coral reef",
  "dois": [
    "doi:10.5061/dryad.7rh4625"
  ],
  "maxItems": 200
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "dois": [
        "doi:10.5061/dryad.7rh4625"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ninhothedev/dryad-datasets-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "dois": ["doi:10.5061/dryad.7rh4625"] }

# Run the Actor and wait for it to finish
run = client.actor("ninhothedev/dryad-datasets-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "dois": [
    "doi:10.5061/dryad.7rh4625"
  ]
}' |
apify call ninhothedev/dryad-datasets-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ninhothedev/dryad-datasets-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5gsDOw6P9jymec9KE/builds/6yjJw5hGZcwBwWQSb/openapi.json
