# DOAB Directory of Open Access Books Scraper (`parseforge/doabooks-directory-open-access-scraper`) Actor

Browse the Directory of Open Access Books (DOAB) with peer-reviewed academic titles. Capture title, authors, publisher, ISBN, DOI, subjects, language, publication year, abstract, and download URL. Export to JSON, CSV, or Excel for libraries, researchers, and content aggregation.

- **URL**: https://apify.com/parseforge/doabooks-directory-open-access-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Education, Other, For creators
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $11.00 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 📚 DOAB Directory of Open Access Books Scraper

> 🚀 **Export the global open-access book catalog in seconds.** Pull **70,000+ peer-reviewed academic titles** across 25+ subject areas in 50+ languages. No API key, no registration, no manual catalog scraping.

> 🕒 **Last updated:** 2026-05-23 · **📊 16 fields** per record · **📚 70,000+ books** · **🌍 50+ languages** · **🏛️ 25+ subject areas**

The **DOAB Scraper** exports the Directory of Open Access Books, a community-maintained catalog of peer-reviewed scholarly monographs and edited volumes that anyone can read, download, and redistribute. Each record carries **16 fields** with authors, publishers, subjects, licenses, ISBNs, DOIs, abstracts, and direct download links to the full text. The underlying catalog is curated by libraries and publishers worldwide and is one of the most cited open-access references in higher education.

Coverage spans the humanities, social sciences, STEM, law, and the arts across **70,000+ titles, 700+ publishers, and 50+ languages**. Every book is released under a Creative Commons or equivalent open license. This Actor turns that catalog into a CSV, Excel, JSON, or XML download in under five minutes.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Academic librarians, OER advocates, researchers, university publishers, digital humanities labs, repository managers | Library catalog enrichment, OER course design, bibliometric studies, repository ingest, open-access discovery, syllabus building |

---

### 📋 What the DOAB Scraper does

Four discovery workflows in a single run:

- 🔍 **Full-text search.** Query titles, authors, and abstracts across the entire catalog.
- 🗣️ **Language filter.** Restrict to English, German, Spanish, French, or any of 50+ languages.
- 🏛️ **Subject filter.** Narrow to philosophy, history, mathematics, sociology, and 25+ disciplines.
- 🆔 **Direct handle lookup.** Pull a single book by its DOAB handle when you already know the ID.

Each record includes UUID, DOAB handle, title, authors, publisher, language, subjects, ISBNs, DOI, abstract, license, publication date, and direct PDF/EPUB download URLs.

> 💡 **Why it matters:** open-access monographs are the backbone of modern OER programs and digital library collections. Building your own ingest pipeline means dealing with OAI-PMH, MARC, Dublin Core mappings, and inconsistent metadata. This Actor returns a clean, normalized record on every run.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to pull a subject-filtered slice into a downloadable dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td>maxItems</td><td>integer</td><td>10</td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td>searchQuery</td><td>string</td><td>"*"</td><td>Full-text query across titles, authors, abstracts. Use * for everything.</td></tr>
<tr><td>language</td><td>string</td><td>""</td><td>ISO language code (e.g. en, de, es, fr).</td></tr>
<tr><td>subject</td><td>string</td><td>""</td><td>Subject area (e.g. philosophy, mathematics, history).</td></tr>
<tr><td>publisher</td><td>string</td><td>""</td><td>Publisher name filter.</td></tr>
<tr><td>handleId</td><td>string</td><td>""</td><td>Direct lookup by DOAB handle. Overrides search.</td></tr>
</tbody>
</table>

**Example: 50 open-access philosophy books in English.**

```json
{
    "maxItems": 50,
    "searchQuery": "*",
    "language": "en",
    "subject": "philosophy"
}
````

**Example: every recent title from a specific publisher.**

```json
{
    "maxItems": 200,
    "publisher": "Cambridge University Press"
}
```

> ⚠️ **Good to Know:** DOAB indexes peer-reviewed open-access scholarly books only. Conference proceedings, working papers, and trade titles fall outside the scope. License terms vary by title, so always check the per-record license field before redistribution.

***

### 📊 Output

Each book record contains **16 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🆔 `uuid` | string | `"3c2f7e91-4b88-..."` |
| 🔗 `handle` | string | `"20.500.12854/12345"` |
| 📖 `title` | string | `"Open Science by Design"` |
| 👤 `authors` | array | `["Smith, Jane", "Doe, John"]` |
| 🏢 `publisher` | string | `"National Academies Press"` |
| 🗣️ `language` | string | `"English"` |
| 🏛️ `subjects` | array | `["Open science", "Research policy"]` |
| 🔖 `isbn` | array | `["978-0-309-31441-1"]` |
| 🆔 `doi` | string | null | `"10.17226/25116"` |
| 📝 `abstract` | string | `"This report explores..."` |
| ⚖️ `license` | string | `"CC BY 4.0"` |
| 📅 `publicationDate` | string | `"2018-07-19"` |
| ⬇️ `downloadUrls` | array | `["https://library.oapen.org/..."]` |
| 🔗 `detailUrl` | string | `"https://directory.doabooks.org/handle/..."` |
| 🕒 `lastModified` | ISO 8601 | `"2024-11-02T00:00:00.000Z"` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-23T00:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>📚 Peer-reviewed monograph (English, philosophy)</strong></summary>

```json
{
    "uuid": "3c2f7e91-4b88-49c1-a85d-1f2d3b4c5e6f",
    "handle": "20.500.12854/82344",
    "title": "Ethics in the Age of Information",
    "authors": ["Bauman, Ada"],
    "publisher": "Open Book Publishers",
    "language": "English",
    "subjects": ["Philosophy", "Ethics", "Information science"],
    "isbn": ["978-1-80064-512-7"],
    "doi": "10.11647/OBP.0289",
    "abstract": "A peer-reviewed analysis of contemporary ethics in digital society...",
    "license": "CC BY 4.0",
    "publicationDate": "2024-03-15",
    "downloadUrls": [
        "https://library.oapen.org/bitstream/handle/20.500.12854/82344/ethics.pdf"
    ],
    "detailUrl": "https://directory.doabooks.org/handle/20.500.12854/82344",
    "lastModified": "2024-11-02T00:00:00.000Z",
    "scrapedAt": "2026-05-23T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🌐 Multilingual edited volume (Spanish, history)</strong></summary>

```json
{
    "uuid": "8a9b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d",
    "handle": "20.500.12854/71902",
    "title": "Historia abierta de América Latina",
    "authors": ["García, Miguel", "Rodríguez, Lucía"],
    "publisher": "CLACSO",
    "language": "Spanish",
    "subjects": ["History", "Latin American studies"],
    "isbn": ["978-987-722-555-1"],
    "doi": null,
    "abstract": "Una historia social abierta y de acceso libre...",
    "license": "CC BY-NC-SA 4.0",
    "publicationDate": "2023-08-01",
    "downloadUrls": ["https://www.clacso.org.ar/libreria-latinoamericana/..."],
    "detailUrl": "https://directory.doabooks.org/handle/20.500.12854/71902",
    "lastModified": "2024-09-18T00:00:00.000Z",
    "scrapedAt": "2026-05-23T00:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 📚 | **Comprehensive coverage.** 70,000+ peer-reviewed open-access books from 700+ publishers. |
| 🔍 | **Flexible discovery.** Search, language, subject, publisher, and handle lookups combine in a single run. |
| ⚖️ | **License-aware.** Every record carries an explicit Creative Commons (or equivalent) license string. |
| 🔗 | **Persistent identifiers.** DOAB handle, DOI, ISBN, and UUID for downstream cataloging and citation. |
| ⚡ | **Fast.** 10 books in under 5 seconds, 10,000 records in a few minutes. |
| 🔁 | **Always fresh.** Pulls live catalog data, so new accessions appear in the next run. |
| 🚫 | **No authentication.** Works against the public DOAB catalog. No login or key needed. |

> 📊 Open-access monographs are reshaping how universities build reading lists, fund publishing, and measure impact. This Actor turns that catalog into a queryable dataset.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ DOAB Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **70,000+** open-access books | **Live per run** | search, language, subject, publisher, handle | ⚡ 2 min |
| Manual catalog browsing | Free | Full | Live | Limited UI | 🐢 Hours per query |
| OAI-PMH harvest scripts | Free | Full | Custom | Build your own | ⏳ Days |
| Generic library APIs | Varies | Mixed | Varies | Mixed schema | 🕒 Variable |

Pick this Actor when you want clean DOAB records on demand without writing a harvester.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the DOAB Directory of Open Access Books Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick a subject, language, or publisher (or leave defaults for a wide pull) and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🏛️ Academic Libraries

- Bulk catalog ingest for open-access monographs
- Subject-curated reading lists for faculty
- Discovery layer enrichment with DOIs and ISBNs
- Collection gap analysis by language and discipline

</td>
<td width="50%" valign="top">

#### 🎓 OER Programs

- Course-aligned open textbook discovery
- License-filtered reading packs for syllabi
- Cost-savings reporting for adoption committees
- Faculty alerting on new subject releases

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 📊 Bibliometrics & Research

- Open-access publishing trends by subject
- Publisher market-share analyses
- Multilingual scholarship mapping
- Funder open-access compliance audits

</td>
<td width="50%" valign="top">

#### 📰 Publishers & Repositories

- Competitive benchmarking against peers
- Title-level metadata QA against canonical DOAB
- Repository mirror builds with curated subsets
- Marketing reports for OA-program funders

</td>
</tr>
</table>

***

### 🔌 Automating DOAB Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Daily or weekly refreshes keep downstream library catalogs in sync automatically.

***

### 🌟 Beyond business use cases

Open scholarship has reach well beyond commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Reproducible bibliographies for peer-reviewed papers
- Digital humanities corpora with permissive licenses
- Multilingual scholarship surveys across decades
- Open-data exercises for library and information science

</td>
<td width="50%">

#### 🎨 Personal and creative

- Hobbyist reading queues sorted by subject and license
- Indie publishing benchmarking and inspiration
- Personal Zotero / Calibre library ingest
- Travel-and-learn itineraries with regional reading lists

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Community college reading rooms with zero-cost texts
- Prison-education and refugee-learning curricula
- Civic literacy projects with public-domain anchors
- Translator-volunteer pipelines for under-served languages

</td>
<td width="50%">

#### 🧪 Experimentation

- Train NLP models on permissively licensed long-form text
- Prototype recommender systems for OA discovery
- Build LLM tools that cite real, open scholarly sources
- Test catalog-merging algorithms against canonical metadata

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20DOAB%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20DOAB%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20DOAB%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20DOAB%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Configure your search, language, subject, or publisher filters in the input form, click Start, and the Actor queries the DOAB catalog and emits a clean structured record per book. No browser automation, no captchas, no setup.

#### 📏 How complete are the records?

Most records include title, authors, publisher, language, subjects, ISBN, and a download URL. Abstracts, DOIs, and license strings depend on what the contributing publisher submitted to DOAB. Older records can have sparser metadata than recent accessions.

#### 🔁 How often is the catalog refreshed?

DOAB receives new and updated records continuously from contributing publishers. Every run of this Actor fetches live data, so new accessions appear automatically.

#### 🗣️ Which languages are covered?

DOAB indexes books in 50+ languages, with strong representation in English, German, Spanish, French, Italian, Portuguese, and Dutch. Pass an ISO code to the language input to filter.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval (hourly, daily, weekly) and keep a downstream catalog in sync.

#### ⚖️ Is this data legal to use?

DOAB metadata is openly available, and every indexed book carries an explicit open license (typically Creative Commons). Always check the per-record license string before redistributing the full-text downloads.

#### 💼 Can I use this data commercially?

Yes for metadata. For the underlying book content, check the license field on each record. Most CC BY licenses permit commercial use with attribution.

#### 💳 Do I need a paid Apify plan to use this Actor?

No. The free Apify plan is enough for testing and small runs (10 records per run). A paid plan lifts the limit and gives you access to scheduling, higher concurrency, and larger datasets.

#### 🔁 What happens if a run fails or gets interrupted?

Apify automatically retries transient errors. If a run still fails, inspect the log in the Runs tab, fix the input, and re-run. Partial datasets from failed runs are preserved.

#### 📚 Does it return the full book PDF?

The dataset returns direct download URLs per record. You can follow those URLs to fetch the PDF or EPUB files.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

DOAB Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe book metadata into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh book records into your library system, or alert your team in Slack.

***

### 🔗 Recommended Actors

- [**📖 arXiv Scraper**](https://apify.com/parseforge/arxiv-scraper) - Open-access preprints across physics, math, and computer science
- [**🧪 OSF Scraper**](https://apify.com/parseforge/osf-scraper) - Open Science Framework projects and registrations
- [**📊 Figshare Scraper**](https://apify.com/parseforge/figshare-scraper) - Research data and figures with DOIs
- [**🌍 GBIF Biodiversity Scraper**](https://apify.com/parseforge/gbif-biodiversity-scraper) - Global biodiversity occurrence records
- [**🩺 ClinicalTrials.gov Scraper**](https://apify.com/parseforge/clinicaltrials-gov-scraper) - Registered clinical trials worldwide

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more open-data and research scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by DOAB, OAPEN, or any of its contributing publishers. All trademarks mentioned are the property of their respective owners. Only publicly available open-access catalog data is collected.

# Actor input Schema

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

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

Search across titles, authors, abstracts. Use \* for everything. Supports field-qualified queries (e.g. title:democracy).

## `language` (type: `string`):

Optional ISO language code or name (e.g. en, de, es, fr).

## `subject` (type: `string`):

Optional subject filter (e.g. philosophy, mathematics, history).

## `publisher` (type: `string`):

Optional publisher name filter.

## `handleId` (type: `string`):

Optional. Look up a single book by its DOAB handle (e.g. 20.500.12854/12345). Overrides search.

## Actor input object example

```json
{
  "maxItems": 10,
  "searchQuery": "*"
}
```

# Actor output Schema

## `overview` (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 = {
    "maxItems": 10,
    "searchQuery": "*"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/doabooks-directory-open-access-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 = {
    "maxItems": 10,
    "searchQuery": "*",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/doabooks-directory-open-access-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "searchQuery": "*"
}' |
apify call parseforge/doabooks-directory-open-access-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/doabooks-directory-open-access-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "DOAB Directory of Open Access Books Scraper",
        "description": "Browse the Directory of Open Access Books (DOAB) with peer-reviewed academic titles. Capture title, authors, publisher, ISBN, DOI, subjects, language, publication year, abstract, and download URL. Export to JSON, CSV, or Excel for libraries, researchers, and content aggregation.",
        "version": "1.0",
        "x-build-id": "84mzf5fCmEAFrQDJN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~doabooks-directory-open-access-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-doabooks-directory-open-access-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~doabooks-directory-open-access-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-doabooks-directory-open-access-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~doabooks-directory-open-access-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-doabooks-directory-open-access-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search across titles, authors, abstracts. Use * for everything. Supports field-qualified queries (e.g. title:democracy)."
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Optional ISO language code or name (e.g. en, de, es, fr)."
                    },
                    "subject": {
                        "title": "Subject",
                        "type": "string",
                        "description": "Optional subject filter (e.g. philosophy, mathematics, history)."
                    },
                    "publisher": {
                        "title": "Publisher",
                        "type": "string",
                        "description": "Optional publisher name filter."
                    },
                    "handleId": {
                        "title": "Handle ID",
                        "type": "string",
                        "description": "Optional. Look up a single book by its DOAB handle (e.g. 20.500.12854/12345). Overrides search."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
