Open Access Books Scraper — DOAB Metadata, ISBN & DOI avatar

Open Access Books Scraper — DOAB Metadata, ISBN & DOI

Pricing

from $6.00 / 1,000 book scrapeds

Go to Apify Store
Open Access Books Scraper — DOAB Metadata, ISBN & DOI

Open Access Books Scraper — DOAB Metadata, ISBN & DOI

Export open access books from the Directory of Open Access Books (DOAB): titles, authors, ISBNs, DOIs and PDF links for libraries. $9 per 1,000 books.

Pricing

from $6.00 / 1,000 book scrapeds

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Categories

Share

Open Access Books Scraper exports scholarly open access books from the Directory of Open Access Books (DOAB) as clean records with title, authors, publisher, year, subjects, languages, ISBNs, DOI, DOAB handle, and a full-text link when DOAB lists one. It is built for librarians, researchers, and data teams, and costs $9.00 per 1,000 books on the FREE tier plus a $0.005 start fee.

What data does the open access books scraper return?

It returns one dataset record per unique DOAB book, with the fields below. Values that DOAB does not provide stay null or an empty list; nothing is guessed.

FieldWhat it contains
title, subtitleBook title and subtitle
authorsAuthors and editors, as listed by DOAB
publisherPublishing house, for example Beltz Juventa or Taylor & Francis
publicationYearFour-digit publication year
descriptionAbstract or blurb
subjectsSubject keywords and classifications
languagesLanguage codes such as eng or ger
isbnAll ISBNs DOAB lists for the book
doiBook DOI when present
handleDOAB handle, for example 20.500.12854/175637
licenseLicence text or URL when the record provides one
recordUrlDOAB record page
fullTextUrlOpen access PDF or landing page when DOAB lists one
source, scrapedAtAlways DOAB, plus the retrieval timestamp

How does it search the Directory of Open Access Books?

It first queries DOAB's REST search; if that endpoint refuses access (HTTP 403, 404, 410, or 429), it reads DOAB's official public JSON metadata feed instead and filters it record by record. In October 2026 the REST search returned HTTP 403 ("address not allowed") to public networks, cloud runs included, so runs use the feed.

  • REST mode supports DOAB's full query syntax, such as history AND migration or dc.title:"open science", with paging by maxPages and pageSize.
  • Feed mode supports case-insensitive words, quoted phrases, AND/OR/NOT, and the fields dc.title, dc.creator, dc.contributor.author, dc.publisher, dc.subject, dc.language.iso, dc.identifier.isbn, dc.identifier.doi, dc.date.issued, dc.rights, and handle. Ranges, wildcards, and parentheses are rejected with a clear message instead of being approximated.
  • Feed mode scans the whole catalog (about 97,000 books in October 2026; a full no-match scan took about 2.5 minutes at the default 256 MB) and stops early once maxResults or maxPages × pageSize matches are found. Results follow the feed's export order, not relevance. A rare term that matches nothing ends with status: empty after a full scan; status: limited appears only if a scan is cut short by the runtime guard.

Every run writes a SUMMARY record with status, accessMode (rest or metadata_feed), stopReason, feedRecordsExamined, counts, and warnings.

When should I use it, and when not?

Use it when you need:

  • a list of open access books on a subject, from a publisher, or in a language, with ISBN and DOI for library catalog work;
  • a book's DOAB record and full-text link from its handle;
  • structured open access book metadata for a bibliography, a reading list, or an AI or RAG pipeline.

Do not use it when you need:

How do I run it?

Search by keyword or DOAB syntax:

{
"query": "migration",
"maxResults": 25,
"maxPages": 3,
"pageSize": 25,
"includeMetadata": true
}

Fetch one exact book by handle:

{
"handle": "20.500.12854/175637",
"maxResults": 1
}

maxResults (1–500) caps the books returned and billed. maxPages (1–25) and pageSize (1–50) bound how far the search goes; in feed mode, maxPages × pageSize caps the number of matching books examined. Set includeMetadata to false for title, handle, and record URL only.

JavaScript (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/doab-open-access-books-scraper').call({
query: 'migration',
maxResults: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((book) => [book.title, book.isbn, book.fullTextUrl]));

Python (apify-client 3.x)

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/doab-open-access-books-scraper").call(
run_input={"query": "migration", "maxResults": 25}
)
for book in client.dataset(run.default_dataset_id).iterate_items():
print(book["title"], book["isbn"], book["fullTextUrl"])

Use it from an AI assistant

The Actor works from Claude, ChatGPT, Cursor, or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/doab-open-access-books-scraper as a server, then ask in plain language, for example: "Find 20 open access books about migration in DOAB and list each title with its ISBN and PDF link."

What does the output look like?

Records from the prefill run on 2026-10-26 (descriptions and subjects shortened):

[
{
"title": "Film and the Natural History of Destruction",
"subtitle": "Walter Benjamin for the Anthropocene",
"authors": ["Wright, Alan"],
"publisher": "Taylor & Francis",
"publicationYear": 2026,
"description": "Film and the Natural History of Destruction explores the interface between film, memory and ecological thought…",
"subjects": ["Environmental humanities", "Media archaeology"],
"languages": ["eng"],
"isbn": ["9781003695509", "9781040841945", "9781040844496"],
"doi": "10.4324/9781003695509",
"handle": "20.500.12854/175637",
"license": null,
"recordUrl": "https://directory.doabooks.org/handle/20.500.12854/175637",
"fullTextUrl": "https://library.oapen.org/bitstream/20.500.12657/112472/1/9781040841945.pdf",
"source": "DOAB",
"scrapedAt": "2026-10-26T06:51:26.182Z"
},
{
"title": "Politische Artikulation von Zugewanderten",
"subtitle": "Beiräte, Vereine und Biografien",
"authors": ["Freuwört, Anke"],
"publisher": "Beltz Juventa",
"publicationYear": 2026,
"subjects": ["Migration", "Demokratie", "Teilhabe"],
"languages": ["ger"],
"isbn": ["9783593464794"],
"doi": "10.12907/978-3-593-46479-4",
"handle": "20.500.12854/176141",
"recordUrl": "https://directory.doabooks.org/handle/20.500.12854/176141",
"fullTextUrl": "https://library.oapen.org/bitstream/20.500.12657/112736/1/9783593464794.pdf",
"source": "DOAB"
}
]

How much does it cost to scrape open access books?

You pay per book delivered, plus one start fee. Platform usage is included in these prices.

EventFREEBRONZESILVERGOLD, PLATINUM, DIAMOND
Book scraped (per book)$0.009$0.008$0.007$0.006
Actor start (per started GB of allocated memory)$0.005$0.005$0.005$0.005

The default memory is 256 MB, so a run normally pays one start event. Worked totals on the FREE tier:

  • Prefill run, 5 books: $0.005 + 5 × $0.009 = $0.050.
  • Default run, 25 books: $0.005 + 25 × $0.009 = $0.230 (GOLD: $0.155).

A duplicate book is never charged twice, and the run stops cleanly when your maximum charge is reached.

Limits and reliability

  • Up to 500 books per run; a 240-second search deadline keeps runs short. The 5-book prefill run finished in about 4 seconds.
  • Results are deduplicated by handle, DOI, or record URL before they are saved and charged.
  • Invalid input (a malformed handle, out-of-range limits) is rejected before any book is charged.
  • A source failure ends the run as failed with a SUMMARY diagnostic; books already delivered are kept.
  • DOAB metadata depends on what publishers submit, so licences, DOIs, and full-text links are sometimes missing.

FAQ

Can I download the open access book PDFs?

No. The Actor returns fullTextUrl, the PDF or landing page DOAB links to, often in the OAPEN library. Download the files yourself under each book's licence.

Can I fetch one book by its DOAB handle?

Yes. Put the handle, such as 20.500.12854/175637, in handle and leave query empty. Handles must start with 20.500.12854/.

Why does my search say limited?

The REST search was unavailable, so the Actor scanned DOAB's metadata feed, and the scan was cut short by the runtime guard before it covered the whole catalog. feedRecordsExamined in SUMMARY shows how far it got. More matching books may exist; run it again or narrow the query with a field such as dc.subject:.

How many books can one run return?

Up to 500. The run stops earlier if the search runs out of matches, reaches maxPages × pageSize, or hits your maximum charge.

Is DOAB metadata free to reuse?

DOAB publishes its catalog metadata openly for reuse; check DOAB's metadata page for the current terms. Each book's own licence governs the content behind fullTextUrl.

Can I export the books to CSV or Excel?

Yes. Export the run's dataset as JSON, CSV, Excel, XML, or RSS from Apify Console, or read it through the API.

Can I run it on a schedule?

Yes. Save your input as a Task and attach an Apify schedule, for example to collect newly listed books on a subject each week.

The Actor reads public DOAB catalog metadata only. It does not log in, bypass access controls, or download book files. Reuse the metadata and linked books according to DOAB's terms and each book's licence; this tool grants no rights to copyrighted content.

Last verified: 2026-10-27