# LibriVox Audiobooks Scraper (`parseforge/librivox-audiobooks-scraper`) Actor

Pull free public domain audiobooks from LibriVox: title, author, narrator, language, runtime, chapter count, genre, copyright year, description, RSS feed, and MP3 download URLs. Export to JSON, CSV, or Excel for educators, podcasters, language learners, and audio content libraries.

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

## Pricing

from $10.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)

## 📚 LibriVox Audiobooks Scraper

> 🚀 **Export the world's largest public-domain audiobook library in seconds.** Browse **20,000+ free audiobooks** from LibriVox, filter by title, author, language, or genre, and pull every section's reader credit, runtime, and direct audio URL. No login, no manual catalog scrape.

> 🕒 **Last updated:** 2026-05-23 · **📊 23 fields** per record · **📚 20,000+ audiobooks** · **🎤 100k+ volunteer readings** · **🌍 multilingual catalog**

The **LibriVox Audiobooks Scraper** queries the LibriVox catalog and returns **23 structured fields per audiobook**, including the title, author list, primary author, language, copyright year, runtime in human-readable and seconds form, description, genres, translators, plus direct links to the LibriVox page, RSS podcast feed, ZIP download, Internet Archive page, and original Project Gutenberg text source. Optional extended mode adds the full sections list with per-section reader credits, individual playtimes, and per-file audio URLs.

The catalog includes **classic literature read aloud (Project Gutenberg titles), original LibriVox productions, multilingual works, and short-story collections**. Most readings are in English but the project covers dozens of other languages including French, German, Spanish, Italian, Dutch, Portuguese, Latin, Japanese, and Mandarin. This Actor turns the catalog into clean CSV, Excel, JSON, or XML in under five minutes.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Audiobook app developers, podcast networks, education and EdTech teams, accessibility specialists, public libraries, audio content curators | Stock audiobook apps with free content, classroom listening assignments, accessibility libraries for visually impaired users, podcast feed generation, language-learning audio decks |

---

### 📋 What the LibriVox Audiobooks Scraper does

Five filtering workflows in a single run:

- 🔎 **Title substring search.** Case-insensitive title match like `pride`, `monte cristo`.
- ✍️ **Author substring search.** Match by author last name or full name.
- 🌐 **Language filter.** Filter to a specific LibriVox language (English, French, German, Spanish, Japanese, etc.).
- 🎭 **Genre filter.** Pick one of 28 LibriVox genres (Romance, Crime & Mystery, Philosophy, Poetry, and more).
- 📑 **Extended mode toggle.** When enabled, each record carries the full sections list with reader credits, runtimes, and audio URLs.

Each record includes the LibriVox ID, title, full author list, primary author, language, copyright year, section count, total runtime (human-readable and seconds), full description (plain text and HTML), genres, translators when applicable, and the canonical LibriVox page, RSS podcast feed, ZIP archive URL, Project Gutenberg source link, Internet Archive page, and any other reference URLs.

> 💡 **Why it matters:** LibriVox is the canonical free audiobook archive, but its catalog page is paginated and its section structure is nested under each book. Building your own crawler means walking thousands of pages and threading section lookups. This Actor returns everything as flat structured rows ready for a database or content platform.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded audiobook catalog._

---

### ⚙️ 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>Audiobooks to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td>title</td><td>string</td><td>""</td><td>Case-insensitive title substring.</td></tr>
<tr><td>author</td><td>string</td><td>""</td><td>Author last-name substring.</td></tr>
<tr><td>language</td><td>string</td><td>""</td><td>Language name as used by LibriVox.</td></tr>
<tr><td>genre</td><td>string</td><td>""</td><td>One of 28 LibriVox genres.</td></tr>
<tr><td>extended</td><td>boolean</td><td>true</td><td>When true, include sections list with reader credits and audio URLs.</td></tr>
</tbody>
</table>

**Example: 50 Jane Austen audiobooks in English.**

```json
{
    "maxItems": 50,
    "author": "austen",
    "language": "English",
    "extended": true
}
````

**Example: 20 French-language poetry audiobooks with full section list.**

```json
{
    "maxItems": 20,
    "language": "French",
    "genre": "Poetry",
    "extended": true
}
```

> ⚠️ **Good to Know:** LibriVox sections are individual chapters or tracks read by volunteer narrators. When `extended` is true the per-section reader credit, length, and audio file URL are exposed for every track in the book. Expect 10-100 sections per long novel.

***

### 📊 Output

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

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🆔 `librivoxId` | string | `"100"` |
| 📚 `title` | string | `"Pride and Prejudice"` |
| ✍️ `authors` | array | `[{"first_name":"Jane","last_name":"Austen"}]` |
| 👤 `primaryAuthor` | string | `"Jane Austen"` |
| 🌐 `language` | string | `"English"` |
| 📅 `copyrightYear` | string | `"1813"` |
| 🔢 `numSections` | number | `61` |
| ⏱️ `totalTime` | string | `"11:35:46"` |
| ⏲️ `totalTimeSeconds` | number | `41746` |
| 📝 `description` | string | `"Pride and Prejudice is the second novel by Jane Austen..."` |
| 📄 `descriptionHtml` | string | `"<p>Pride and Prejudice is the second novel..."` |
| 🎭 `genres` | array | `["General Fiction", "Romance"]` |
| 🌍 `translators` | array | `[]` |
| 🔗 `urlLibrivox` | string | `"https://librivox.org/pride-and-prejudice-by-jane-austen/"` |
| 📻 `urlRss` | string | `"https://librivox.org/rss/100"` |
| 📦 `urlZipFile` | string | `"https://www.archive.org/.../pride_and_prejudice_64kb_mp3.zip"` |
| 🌐 `urlProject` | string | null | `"https://www.gutenberg.org/ebooks/1342"` |
| 🔗 `urlOther` | string | null | `null` |
| 📚 `urlInternetArchive` | string | `"https://archive.org/details/pride_and_prejudice_0809_librivox"` |
| 📖 `urlTextSource` | string | null | `"https://www.gutenberg.org/files/1342/1342-h/1342-h.htm"` |
| 🔢 `sectionsCount` | number | `61` |
| 🎤 `sections` | array | `[{"chapter":"Chapter 1","reader":"Karen Savage","playtime":"00:14:23","audioUrl":"..."}]` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-23T00:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>📖 Pride and Prejudice (Jane Austen)</strong></summary>

```json
{
    "librivoxId": "100",
    "title": "Pride and Prejudice",
    "authors": [{"first_name": "Jane", "last_name": "Austen"}],
    "primaryAuthor": "Jane Austen",
    "language": "English",
    "copyrightYear": "1813",
    "numSections": 61,
    "totalTime": "11:35:46",
    "totalTimeSeconds": 41746,
    "description": "Pride and Prejudice is the second novel by Jane Austen, charting the emotional development of Elizabeth Bennet as she navigates love, class, and family expectations.",
    "genres": ["General Fiction", "Romance"],
    "translators": [],
    "urlLibrivox": "https://librivox.org/pride-and-prejudice-by-jane-austen/",
    "urlRss": "https://librivox.org/rss/100",
    "urlZipFile": "https://www.archive.org/download/pride_and_prejudice_0809_librivox/pride_and_prejudice_64kb_mp3.zip",
    "urlProject": "https://www.gutenberg.org/ebooks/1342",
    "urlInternetArchive": "https://archive.org/details/pride_and_prejudice_0809_librivox",
    "urlTextSource": "https://www.gutenberg.org/files/1342/1342-h/1342-h.htm",
    "sectionsCount": 61,
    "sections": [
        {"chapter": "Chapter 1", "reader": "Karen Savage", "playtime": "00:08:37", "audioUrl": "https://www.archive.org/download/pride_and_prejudice_0809_librivox/prideandprejudice_01_austen_64kb.mp3"}
    ],
    "scrapedAt": "2026-05-23T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🗡️ The Count of Monte Cristo (Alexandre Dumas)</strong></summary>

```json
{
    "librivoxId": "1336",
    "title": "The Count of Monte Cristo",
    "authors": [{"first_name": "Alexandre", "last_name": "Dumas"}],
    "primaryAuthor": "Alexandre Dumas",
    "language": "English",
    "copyrightYear": "1844",
    "numSections": 117,
    "totalTime": "52:41:18",
    "totalTimeSeconds": 189678,
    "description": "Edmond Dantès, wrongly imprisoned, escapes to find a vast treasure and methodically takes revenge on those who betrayed him.",
    "genres": ["Action & Adventure Fiction", "Classics", "Historical Fiction"],
    "translators": [{"first_name": "Anonymous", "last_name": ""}],
    "urlLibrivox": "https://librivox.org/the-count-of-monte-cristo-by-alexandre-dumas/",
    "urlRss": "https://librivox.org/rss/1336",
    "urlZipFile": "https://www.archive.org/download/count_montecristo_librivox/count_montecristo_64kb_mp3.zip",
    "urlInternetArchive": "https://archive.org/details/count_montecristo_librivox",
    "sectionsCount": 117,
    "scrapedAt": "2026-05-23T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>📜 Short-story collection: Aesop's Fables</strong></summary>

```json
{
    "librivoxId": "44",
    "title": "Fables of Aesop",
    "authors": [{"first_name": "Aesop", "last_name": ""}],
    "primaryAuthor": "Aesop",
    "language": "English",
    "copyrightYear": "0600",
    "numSections": 142,
    "totalTime": "04:21:33",
    "totalTimeSeconds": 15693,
    "description": "A collection of short fables attributed to Aesop, each with a moral lesson, read by community volunteers.",
    "genres": ["Myths, Legends & Fairy Tales", "Children's Fiction"],
    "urlLibrivox": "https://librivox.org/fables-of-aesop-by-aesop/",
    "urlRss": "https://librivox.org/rss/44",
    "urlInternetArchive": "https://archive.org/details/fables_of_aesop_0809_librivox",
    "sectionsCount": 142,
    "scrapedAt": "2026-05-23T00:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 📚 | **20,000+ audiobook catalog.** Every public-domain title LibriVox has produced. |
| 🎯 | **Multi-dimensional filters.** Title, author, language, and genre combine in a single run. |
| 🎤 | **Per-section reader credits.** Extended mode exposes chapter-level narrator, runtime, and audio URL. |
| 📻 | **RSS podcast feeds included.** Drop straight into a podcast player. |
| ⚡ | **Fast.** 10 audiobooks in under 5 seconds, 1,000 in under 5 minutes. |
| 🔁 | **Always fresh.** Live catalog reads on every run. |
| 🚫 | **No authentication.** Public archive, no key required. |

> 📊 LibriVox is the canonical free audiobook library and a foundation for any audio content product targeting public-domain works.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ LibriVox Audiobooks Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **20,000+** audiobooks | **Live per run** | title, author, language, genre | ⚡ 2 min |
| Commercial audiobook libraries | $14.95+/month | Curated paid catalog | Daily | Limited | 🐢 Days |
| Custom site scraper | Free engineering | Full | Cron driven | Hand built | ⏳ Weeks |
| Per-book browsing | Free | One book at a time | Manual | UI only | 🕒 Painful |

Pick this Actor when you want a clean, filterable feed of the entire LibriVox catalog with zero parser maintenance.

***

### 🚀 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 LibriVox Audiobooks Scraper page on the Apify Store.
3. 🎯 **Set input.** Add optional title, author, language, or genre filters, choose extended mode if you want per-section data.
4. 🚀 **Run it.** Click **Start** and let the Actor collect catalog records.
5. 📥 **Download.** Grab your results from 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">

#### 🎧 Audiobook Apps

- Stock a freemium audiobook app with public-domain titles
- Build a kids' audiobook section from children's fiction
- Generate themed audio libraries (romance, mystery, classics)
- Add multilingual content packs to existing apps

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

#### 🎙️ Podcast Networks

- Spin up "classic literature" podcast feeds from RSS URLs
- Curate themed reading series for syndication
- Source content for an audio newsletter or daily-listen app
- Build chaptered podcast versions of long novels

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

#### 🎓 Education & Accessibility

- Stock classroom listening assignments for literature classes
- Build accessibility libraries for visually impaired users
- Augment ESL programs with audio for graded readers
- Provide reading-along audio for early literacy programs

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

#### 📚 Library Apps & Catalogs

- Add a free audiobook collection to a digital library catalog
- Source ISBN-less audiobook records for cataloging projects
- Build a "listen-along" companion to a Gutenberg etext app
- Curate themed reading lists with audio companions

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

***

### 🔌 Automating LibriVox Audiobooks 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. Weekly refreshes keep a downstream audiobook catalog topped up with the latest LibriVox publications.

***

### 🌟 Beyond business use cases

Public-domain audiobooks power more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

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

#### 🎓 Research and academia

- Reception studies of classic literature
- Audiobook narration and voice-acting research
- Reproducible corpora citing exact dataset pulls
- Cross-language comparative literature with audio

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

#### 🎨 Personal and creative

- Curated bedtime story collections for parents
- Mood-based reading lists for hobbyist apps
- Visualization dashboards of reader hours by language
- Themed playlists for road trips or long walks

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

#### 🤝 Non-profit and civic

- Free audio libraries for under-resourced schools
- Audio access for visually impaired community members
- Senior-living center listening programs
- Language-revitalization audio packs for minority tongues

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

#### 🧪 Experimentation

- Train automatic speech recognition on volunteer narration
- Build alignment datasets pairing audio with Gutenberg text
- Prototype voice-cloning research with diverse readers
- Test podcast-publishing pipelines with real RSS feeds

</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%20LibriVox%20Audiobooks%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%20LibriVox%20Audiobooks%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%20LibriVox%20Audiobooks%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%20LibriVox%20Audiobooks%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?

Pick optional title, author, language, or genre filters and choose whether to include per-section detail. Click Start and the Actor returns clean rows with audio links, RSS feeds, ZIP archives, and reader credits.

#### 📏 How complete is the metadata?

LibriVox metadata is curated by volunteer catalogers. Most fields are populated, with the occasional gap for very old additions. The `description`, `genres`, and section reader credits are typically complete.

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

LibriVox publishes new audiobooks weekly. Every Actor run hits the live catalog, so new releases appear in your dataset right away.

#### 🌐 Which languages are supported?

Most audiobooks are in English, but LibriVox covers dozens of other languages including French, German, Spanish, Italian, Dutch, Portuguese, Latin, Japanese, Mandarin, and more. Use the `language` input to filter.

#### 🎤 Do I get per-chapter audio URLs?

Yes, when `extended` is true. Each section carries the chapter name, reader credit, playtime, and a direct MP3 URL hosted by the Internet Archive.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to trigger this Actor on any cron interval (weekly is recommended for new releases).

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

Yes. LibriVox audiobooks are public domain in the United States. Source texts are also typically Project Gutenberg public-domain works. Always verify the copyright status in your jurisdiction.

#### 💼 Can I use these audiobooks commercially?

Yes. LibriVox recordings are dedicated to the public domain worldwide. You can use, remix, and resell them freely. Attribution to the volunteer readers is a nice courtesy.

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

No. The free plan covers testing and small runs (10 records per run). A paid plan unlocks the higher cap, scheduling, and concurrency.

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

Apify retries transient errors automatically. If a run still fails, inspect the log, fix the input, and restart. Partial datasets are preserved.

#### 🆘 What if I need help?

Our support team is here. Use the Apify platform messaging or the Tally form linked below.

***

### 🔌 Integrate with any app

LibriVox Audiobooks 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 audiobook data 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 audiobook records into your catalog or alert your content team in Slack.

***

### 🔗 Recommended Actors

- [**🏛️ Library of Congress Scraper**](https://apify.com/parseforge/loc-gov-library-of-congress-scraper) - 170M+ digitized cultural records
- [**🗣️ Tatoeba Sentence Corpus Scraper**](https://apify.com/parseforge/tatoeba-sentence-corpus-scraper) - 12M+ multilingual example sentences
- [**🌐 MyMemory Translation Scraper**](https://apify.com/parseforge/mymemory-translation-scraper) - Bulk text translation across 70+ language codes
- [**📰 ArXiv Scraper**](https://apify.com/parseforge/arxiv-scraper) - Academic preprints with metadata
- [**🎨 Met Museum Scraper**](https://apify.com/parseforge/met-museum-scraper) - Open-access artworks from The Met

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more reference-data 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 the LibriVox project. All trademarks mentioned are the property of their respective owners. Only publicly available catalog data is collected. LibriVox audiobooks are dedicated to the public domain.

# Actor input Schema

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

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

## `title` (type: `string`):

Case-insensitive title substring (e.g. 'pride', 'monte cristo').

## `author` (type: `string`):

Author last-name substring (e.g. 'austen', 'dumas', 'twain').

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

Language name as used by LibriVox (e.g. English, French, German, Spanish).

## `genre` (type: `string`):

Pick a LibriVox genre.

## `extended` (type: `boolean`):

When true, each book includes full sections list with reader credits, playtimes, and audio URLs.

## Actor input object example

```json
{
  "maxItems": 10,
  "extended": true
}
```

# 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
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/librivox-audiobooks-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 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/librivox-audiobooks-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
}' |
apify call parseforge/librivox-audiobooks-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LibriVox Audiobooks Scraper",
        "description": "Pull free public domain audiobooks from LibriVox: title, author, narrator, language, runtime, chapter count, genre, copyright year, description, RSS feed, and MP3 download URLs. Export to JSON, CSV, or Excel for educators, podcasters, language learners, and audio content libraries.",
        "version": "1.0",
        "x-build-id": "Wr0IkvT8r8IdIuDAb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~librivox-audiobooks-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-librivox-audiobooks-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~librivox-audiobooks-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-librivox-audiobooks-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~librivox-audiobooks-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-librivox-audiobooks-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"
                    },
                    "title": {
                        "title": "Title (substring)",
                        "type": "string",
                        "description": "Case-insensitive title substring (e.g. 'pride', 'monte cristo')."
                    },
                    "author": {
                        "title": "Author (substring)",
                        "type": "string",
                        "description": "Author last-name substring (e.g. 'austen', 'dumas', 'twain')."
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Language name as used by LibriVox (e.g. English, French, German, Spanish)."
                    },
                    "genre": {
                        "title": "Genre",
                        "enum": [
                            "Action & Adventure",
                            "Action & Adventure Fiction",
                            "Animals & Nature",
                            "Astronomy, Physics & Mechanics",
                            "Bibles",
                            "Children's Fiction",
                            "Classics (Greek & Latin Antiquity)",
                            "Crime & Mystery Fiction",
                            "Epics",
                            "Epistolary Fiction",
                            "Family Life",
                            "General Fiction",
                            "Historical Fiction",
                            "Humorous Fiction",
                            "Literary Fiction",
                            "Myths, Legends & Fairy Tales",
                            "Nautical & Marine Fiction",
                            "Philosophy",
                            "Poetry",
                            "Psychology",
                            "Published 1800 -1900",
                            "Published 1900 onward",
                            "Religion",
                            "Romance",
                            "Satire",
                            "Travel & Geography",
                            "War & Military",
                            "Westerns"
                        ],
                        "type": "string",
                        "description": "Pick a LibriVox genre."
                    },
                    "extended": {
                        "title": "Include sections & readers",
                        "type": "boolean",
                        "description": "When true, each book includes full sections list with reader credits, playtimes, and audio URLs.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
