doaj.md
123 lines · skills/paper-lookup/references/doaj.md at 5f2bc03
Most marks come from matching words in the file, so treat them as pointers.
DOAJ (Directory of Open Access Journals)
A curated directory of open-access journals and the articles those journals have registered with DOAJ. Use it to answer "is this journal in DOAJ?" or "articles in DOAJ-listed journals matching X." It is not a general literature index and it is not Unpaywall.
Nature is not in DOAJ. A paper can be open access (hybrid, bronze, green) without its journal being listed here. For "is there a free PDF of this DOI?" use Unpaywall. For the yes/no "is this journal in DOAJ?" when you are already on OpenAlex, GET /sources/issn:{issn} returns is_in_doaj (PLoS ONE 1932-6203 is true; Nature 0028-0836 is false) — stay there. Come to DOAJ when you need APC, licence, or oa_start. For "papers on CRISPR" use PubMed / OpenAlex, then optionally restrict to DOAJ journals.
All figures below verified 2026-09-10 against API v4.
Raw lines 1 to 17Base URL
https://doaj.org/apiDocs (live): https://doaj.org/api/docs
Search URLs you write as /api/search/... are served as v4; next links in the JSON point at /api/v4/search/.... Either form works.
Authentication
Public search needs no key. API keys are for publisher submitters. Do not ask the user for a DOAJ key to look up a journal.
Raw lines 29 to 33Rate Limits
The documented rate is 2 requests/second, with a burst queue of up to five. Serialize calls. Prefer a journal ISSN lookup over paging through tens of thousands of article hits.
Raw lines 34 to 38Query syntax
The path segment is the query (Elasticsearch query string). Slash in a DOI is escaped for you.
| Goal | Query |
|---|---|
| Article title words | bibjson.title:CRISPR |
| DOI | doi:10.3389/fpsyg.2013.00479 |
| Journal ISSN | issn:1932-6203 |
| Exact journal title | bibjson.title.exact:"PLoS ONE" |
| Short names | title:, issn:, publisher:, license: (journals) |
.exact works on full field names, not on the short aliases. Wildcard, regex, fuzzy, and proximity queries are disabled; do not assume all Elasticsearch operators are available.
Key Endpoints
Raw lines 54 to 551. Search articles
GET /search/articles/{query}?page=1&pageSize=10GET /search/articles/bibjson.title:CRISPR?pageSize=2Verified: total 7777, page 1, pageSize 2, results length 2. next was https://doaj.org/api/v4/search/articles/bibjson.title:CRISPR?page=2&pageSize=2. Follow next (or increment page) rather than guessing a last page — last pointed at page 3889.
Each result has id, created_date, last_updated, bibjson. Identifiers are a list:
"identifier": [
{"id": "10.3390/v14102045", "type": "doi"},
{"id": "1999-4915", "type": "eissn"}
]Pick type == "doi". Do not take identifier[0] blindly (it may be an ISSN).
2. Search journals
GET /search/journals/{query}?page=1&pageSize=10Verified:
| Query | total | Notes |
|---|---|---|
issn:0028-0836 (Nature) | 0 | Subscription journal. Empty is the answer. |
issn:1932-6203 (PLoS ONE) | 1 | bibjson.title PLoS ONE, oa_start 2006, apc.has_apc true, APC values must be re-read for the current journal and currency |
HTTP 200 + total: 0 + results: [] means "not a DOAJ journal," not an outage. Unpaywall may still find a green or hybrid copy of a Nature paper.
Journal bibjson includes title, ISSNs, publisher, license, APC, and oa_start. That is the record to quote when someone asks "is this journal OA in DOAJ?"
Typical Workflow
- Have an ISSN or journal title →
/search/journals/issn:{issn}. - Have a DOI you believe is in a DOAJ journal →
/search/articles/doi:{doi}. - If journals search is empty, say so and check Unpaywall for the article.
- Do not page
bibjson.title:CRISPRas a substitute for PubMed.
Failure Modes
| What you did | What happens | What to do |
|---|---|---|
| ISSN of a non-DOAJ journal | 200, total: 0 | Report "not in DOAJ"; try Unpaywall |
Took identifier[0] as the DOI | You may get an eISSN | Filter type == "doi" |
| Used DOAJ as Unpaywall | Misses hybrid/green OA | Article-level OA is Unpaywall |
| Second host just for yes/no | Extra call | OpenAlex sources.is_in_doaj if you are already there |
Used short field + .exact | Query does not mean what you think | Use bibjson.title.exact |