DDOAJ Metadata Studio

DOAJ API search: query syntax and fields

Updated:

DOAJ API search runs on Elasticsearch and takes queries in Lucene syntax. The DOAJ documentation covers it briefly, and some behaviour you only discover by trial and error. This page collects everything you need to query articles and journals, with examples tested against the live API.

Endpoints and parameters

GET https://doaj.org/api/v4/search/articles/{query}?page=1&pageSize=100&sort=…
GET https://doaj.org/api/v4/search/journals/{query}?page=1&pageSize=100&sort=…

Syntax basics

What you needExample
Search all fieldsmetamaterial
Search one fieldbibjson.title:"phase demodulator"
Boolean logic and parenthesesbibjson.keywords:"open access" OR bibjson.keywords:"open science"
Exclusionissn:1810-3189 AND NOT _exists_:index.doi
Rangebibjson.year:[2022 TO 2024]
Field present / missing_exists_:bibjson.abstract, NOT _exists_:bibjson.keywords
Exact match of the whole valuebibjson.journal.title.exact:"Journal of Physics"
All records*

Fields use dot notation, as in the record JSON: bibjson.author.name, bibjson.journal.volume. Without .exact the search matches words: bibjson.journal.title:"Journal of Science" also finds “Journal of Science and Technology”.

Short names

DOAJ accepts short names for common fields — but only for searching by value; .exact and _exists_ do not work with them.

ArticlesJournals
title: abstract: doi: issn: publisher:title: issn: publisher: license: username:

You can search a DOI as is — DOAJ escapes the slash itself — but quoting it is safer: doi:"10.18469/1810-3189.2022.25.4.122-128".

Sorting

sort=created_date:desc        — newest in DOAJ first
sort=last_updated:desc        — recently updated
sort=title:asc                — by title
sort=bibjson.year.exact:desc  — by publication year
sort=issn:asc                 — journals by ISSN

To sort by year you must use bibjson.year.exact: sort=bibjson.year:desc returns an error.

What is not allowed

To protect the server, DOAJ rejects:

Non-obvious pitfalls

PitfallDo this instead
_exists_:doi is always false — doi is a short name, not a field_exists_:index.doi or bibjson.identifier.type:doi
Pages are uploaded as bibjson.journal.start_page, but searching that field finds nothingSearch bibjson.start_page and bibjson.end_page
index.country:RU and index.language:RU find nothingindex.* fields hold English names: index.country:"Russian Federation", index.language:Russian. Codes live in bibjson.journal.country, bibjson.language
Booleans and flags use different formatsbibjson.apc.has_apc:false, but index.has_apc:No
A journal is not found by its English titleThe main title may be in the national language; the English one is in bibjson.alternative_title (journals)
publisher: and license: often find nothing for journalsbibjson.publisher.name:… and index.license:"CC BY"
_exists_:bibjson.author.orcid_id is true if at least one author has an ORCID“Is any author missing an ORCID” cannot be queried — export the records and check them

Useful queries

issn:1234-5678 AND bibjson.year:2024
issn:1234-5678 AND NOT _exists_:index.doi
bibjson.abstract:metamaterial AND bibjson.year:[2022 TO 2024]
bibjson.author.orcid_id:"https://orcid.org/0000-0002-1825-0097"
bibjson.link.url:"journal.example.org"
index.country:"Russian Federation" AND index.subject:Physics     (journals)
bibjson.apc.has_apc:false AND index.language:Russian              (journals)

The query builder has all 54 article fields and 83 journal fields with descriptions and examples — click to insert a condition.

Open an example query