API

Search, formatting and import over plain HTTP. No key is needed, and every service on this page allows cross-origin requests (Access-Control-Allow-Origin: *).

GET /find

Sends one search to several sources at once. The answer is a single JSON array of references, grouped by source in the order listed under db. Each source has 30 seconds to answer; a source that fails or is too slow contributes nothing and the others are still returned. Nothing found is an empty array.

ParameterDescription
searchsimple (free text) or advanced (by field). Required.
textSimple search: any text, a DOI (10.3897/BDJ.1.e995, doi:…, https://doi.org/…) or a PubMed Central ID (PMC3234428). Identifiers are looked up exactly.
author, year, title, originAdvanced search; any one of them is enough. year is a four-digit year, origin the journal or publisher (published_in is accepted as another name for it).
dbOptional and repeatable: the sources to search. Simple search: crossref, openalex, datacite, pubmed, mendeley. Advanced search: the same plus bhlarticles and bhlbooks. Default: all of them. /sources returns these lists as JSON.
limitOptional: results per source, 1 to 100. Default 5.
statusOptional: with status=1 each source's results are followed by {"source", "db", "type": "status", "count", "total", "ms", "error"}. count results are in the answer out of the total the source reports for the search; error says why a source gave nothing.
moreOptional: with more=1 each source that found something adds {"source", "db", "type": "more_simple" | "more_advanced", "more": 30}, a suggested limit for a follow-up search of that source alone.

Examples:

/find?search=simple&db=crossref&db=openalex&limit=3&text=Smith /find?search=advanced&author=Penev&year=2010&origin=ZooKeys&status=1

BHL needs at least an author or a title; BHL books matches authors by last name only. The ZooBank source (db=gnub) is not searched by default because it does not currently answer requests from our servers.

A reference

Every reference in a search answer is a JSON object. Most fields are optional: a source that has no value for a field leaves it out or gives an empty string.

FieldDescription
sourceThe source that returned it, e.g. CrossRef
titleTitle; may contain simple HTML markup such as <i>
authors, firstauthor[[given, family], …] and the first of them
year, publicationDateYear of publication, and the full date where known
publishedIn, publisherJournal or book, and publisher
volume, issue, spage, epageVolume, issue, first and last page
doi, hrefDOI without prefix, and a link to the work
type, idThe source's own type and identifier(s)
abstract, infoUrl, related, scoreWhere the source has them: abstract, the source's page for the work, related identifiers (DataCite), relevance score
openAccess, citedByOpenAlex: link to free full text (or true), and the number of citing works
isParsed, fullCitationtrue for every search result; the citation as one string where the source has it

Formatting

GET /format

Formats one reference in a citation style. The answer is an HTML fragment (<div class="csl-entry">…</div>).

ParameterDescription
styleA style file name from /format/list, for example apa.csl (the .csl may be left out)
refA reference as returned by the search, as JSON. The fields used are authors, title, year, publishedIn, volume, issue, spage, epage and doi; send only these to keep the address short.
/format?style=apa.csl&ref={"authors":[["Lyubomir","Penev"]],"title":"Semantic tagging",…}
GET /format/list

All styles as {"<file>.csl": "<title>"}.

Import

POST /import

Reads the references from an EndNote XML or MODS file sent as multipart/form-data (one file, field name 0, up to 20 MB). The answer is a JSON array of references in the form above; a file that is neither EndNote XML nor MODS gives [1]. The file is not kept.

Errors

StatusWhen
400A search without search, without text or fields, or with a db that does not exist for that kind of search; a ref that is not a JSON object; an upload without a file. Search errors come as {"error": "…"}.
404A style that does not exist
500A style that cannot be applied to the reference