BYTETOOLS

DOAJ API

Free DOAJ API with no key: search 600,000+ open access articles and 20,000+ vetted open access journals with licence and APC data. Tested curl example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the DOAJ API?

The Directory of Open Access Journals API is a free, key-free API for searching more than 20,000 vetted open access journals and 600,000+ articles, including licence terms and article processing charge information.

DOAJ is the authoritative whitelist of legitimate open access journals. Its vetting process is the reason it matters: inclusion in DOAJ is widely used as the test of whether a journal is genuine rather than predatory.

For researchers choosing where to publish, the article processing charge data is the practical payoff — you can query which journals in a field charge nothing at all, which is otherwise tedious to establish.

Quick facts

Base URL
https://doaj.org/api
Authentication
No API key for search. Submitting or editing records requires a key.
Rate limit
No published hard limit; fair use expected.
Pricing
Free, non-profit funded.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the DOAJ API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Search open access articles

GET https://doaj.org/api/search/articles/computer?pageSize=1

curl
curl 'https://doaj.org/api/search/articles/computer?pageSize=1'
JavaScript (fetch)
const res = await fetch("https://doaj.org/api/search/articles/computer?pageSize=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://doaj.org/api/search/articles/computer?pageSize=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "total": 600597,
  "page": 1,
  "pageSize": 1,
  "timestamp": "2026-08-19T21:58:01.156542Z",
  "query": "computer",
  "results": [
    {
      "last_updated": "2025-08-20T03:11:06Z",
      "bibjson": {
        "identifier": [
          {
            "id": "2577-8196",
            "type": "eissn"
          },
          {
            "id": "10.1002/eng2.13035",
            "type": "doi"
          }
        ],
        "journal": {
          "volume": "7",
          "number": "1",
          "country": "GB",
          "issns": [
            "2577-8196"
          ],
          "publisher": "Wiley",
          "language": [
            "EN"
          ],
          "title": "Engineering Reports"
        },
        "month": "01",
        "end_page": "n/a",
        "keywords": [
          "artificial intelligence",
          "classical approaches",
          "heuristic approaches",
          "multi‐robot system",
          "path planning"
        ],
        "year": "2025",
        "start_page": "n/a",
        "subject": [
          {
            "code": "TA1-2040",
            "scheme": "LCC",
            "term": "Engineering (General). Civil engineering (General)"
          },
          {
            "code": "QA75.5-76.95",
            "scheme": "LCC",
            "term": "Electronic computers. Computer science"
          }
        ],
        "author": [
          {
            "affiliation": "Department of Mechatronics and Industrial Engineering Chittagong University of Engineering and Technology Chittagong Bangladesh",
            "name": "Semonti Banik"
          },
          {

Parameters

ParameterTypeRequiredDescription
search/articles/<query>pathOptionalSearch articles. search/articles/computer
search/journals/<query>pathOptionalSearch journals. search/journals/physics
pageSizeintegerOptionalResults per page, max 100. 20
pageintegerOptionalPage number. 2
sortstringOptionalSort field and direction. created_date:desc

Response fields

totalinteger
Total matching records.
results[].bibjson.titlestring
Article or journal title.
results[].bibjson.authorarray
Authors with affiliations.
results[].bibjson.journalobject
Journal details including licence and publisher.
results[].bibjson.identifierarray
DOI, ISSN and other identifiers.
results[].bibjson.linkarray
Links to the full text.
results[].bibjson.apcobject
Article processing charge, on journal records.

What you can build with the DOAJ API

  • Verify a journal is legitimately open access rather than predatory
  • Find journals in a field that charge no publication fee
  • Search open access literature with guaranteed reuse rights
  • Build a researcher tool for choosing where to publish

Common errors and how to fix them

400 on the query

The query goes in the URL path and must be encoded.

Fix: URL-encode the search term; complex queries use Elasticsearch syntax.

Deeply nested results

Everything sits under bibjson.

Fix: Read results[].bibjson.title rather than results[].title.

Empty results

Search covers indexed metadata only.

Fix: Broaden the term; DOAJ indexes a curated subset rather than everything published.

DOAJ API — frequently asked questions

Is the DOAJ API free?

Yes, searching requires no API key. DOAJ is a non-profit and a key is only needed for submitting or editing records.

Why does DOAJ inclusion matter?

DOAJ vets journals before listing them, so presence in the directory is the standard test of whether an open access journal is legitimate rather than predatory.

Can I find journals that charge no fee?

Yes, journal records include article processing charge data, so you can filter for those with no APC — genuinely useful when choosing where to publish.

Why is everything under bibjson?

DOAJ uses the BibJSON format for bibliographic records, so titles, authors and identifiers all sit inside a bibjson object rather than at the top level.

Tools that pair with this API

DOAJ is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.