Skip to content

Sources ​

mosaic search queries up to 22 bibliographic sources at once, eight at a time, and merges the results by DOI. A source runs when it is enabled in the config and has what it needs (an API key, a browser, a saved login); the others are skipped without a message. Pass --source SHORTHAND to query one source only, and mosaic --verbose search ... to see the warnings of sources that failed.

Source--sourceCoversAccessPDF links
arXivarxivPreprints: physics, mathematics, CS, quantitative biology, financenoneevery result
Semantic ScholarssAll disciplinesnone; key optionalwhen it lists an open copy
ScienceDirectsdElsevier journals and booksAPI key or browser sessionopen-access articles (API mode)
Springer (browser)spSpringer and Nature journals, booksPlaywright browsernone; resolved at download
Springer Nature APIspringerSpringer Nature open-access articleskey requiredwhen deposited
DOAJdoajFully open-access journalsnonewhen the journal deposits one
Europe PMCepmcBiomedical and life sciencesnonearticles with a PMC ID
CochranecochraneCochrane systematic reviews (via Europe PMC)noneopen-access reviews
OpenAlexoaAll disciplinesnone; email optionalbest open-access location
BASEbaseRepositories: theses, reports, grey literaturenoneopen PDF records
COREcoreOpen-access full text from repositorieskey requiredCORE download link
NASA ADSadsAstronomy, astrophysics, planetary science, physicskey requiredADS gateway for open articles
IEEE XploreieeeIEEE journals and conferenceskey requiredopen-access articles
ZenodozenodoPublications deposited on Zenodonone; token optionalattached PDF
CrossrefcrossrefEvery DOI registered with Crossrefnone; email optionalpublisher-deposited links
DBLPdblpComputer science venuesnonewhen the electronic edition is a PDF
HALhalFrench open archivenonedeposited file
PubMedpubmedBiomedical citations (MEDLINE)none; key optionalarticles with a PMC ID
PubMed CentralpmcFree full-text biomedical articlesnone; key optionalevery result
bioRxiv / medRxivrxivBiology and medicine preprintsnoneevery result
PEDropedroPhysiotherapy trials, reviews, guidelinesfair-use opt-innone
ScopusscopusAll disciplines (Elsevier index)API key or browser sessionnone

"PDF links" is what the source itself returns. When a result has no PDF link, mosaic get and --download still look for an open copy through Unpaywall: see Downloads.

Keys and switches live in ~/.config/mosaic/config.toml, one [sources.<name>] table per source; the configuration guide lists the mosaic config flag for each key. Turn a source off with mosaic config --disable-source NAME, where NAME is the config name (semantic_scholar, nasa_ads, ...), not the shorthand.

Notes per source ​

arXiv ​

Every arXiv result is open access with a PDF link, so --oa-only removes nothing. mosaic waits rate_limit_delay seconds (default 1.0) between two arXiv requests. arXiv's own query syntax works through --raw-query:

bash
mosaic search "" --raw-query "ti:hall AND ti:thruster AND cat:physics.plasm-ph" --source arxiv

Semantic Scholar ​

Without a key, requests share Semantic Scholar's public pool and often come back as HTTP 429 (rate limited); the source then drops out of the search, visible with --verbose. A free key gives you a private quota: request it at semanticscholar.org/product/api, then mosaic config --ss-key KEY. The key also enables Semantic Scholar recommendations in mosaic similar.

ScienceDirect and Scopus ​

Both are Elsevier services and both have two modes, chosen when the search starts:

  • with an API key (dev.elsevier.com, free), mosaic calls the Elsevier search APIs. ScienceDirect in API mode returns open-access articles only. Scopus returns partial metadata (title, first author, journal, year, DOI, citation count) unless you also set an institutional token, mosaic config --scopus-inst-token;
  • without a key, with a valid saved session (mosaic auth login), mosaic searches the website in a headless browser and sees what your institution subscribes to;
  • with neither, the source is skipped.

ScienceDirect takes its key from mosaic config --elsevier-key, Scopus from --scopus-key: one Elsevier key can be set for both. Scopus never returns PDF links. Browser sessions: Authenticated access.

Springer: two sources ​

sp loads link.springer.com/search in a headless browser (the result pages are built by JavaScript), so it needs the browser extra and an installed browser, and is skipped otherwise. It needs no login. springer calls the Springer Nature Open Access API: open-access articles only, with a free key from dev.springernature.com (mosaic config --springer-key). Run both; duplicates merge by DOI. To exclude the browser source: mosaic config --disable-source springer.

Cochrane ​

Cochrane's APIs need OAuth credentials issued on request, and scripted access to cochranelibrary.com is blocked. The cochrane source is a Europe PMC search restricted to the Cochrane Database of Systematic Reviews (ISSN 1469-493X); results link to the review on cochranelibrary.com. Every Europe PMC filter works.

OpenAlex and Crossref ​

Both work without credentials. When you set an Unpaywall email (mosaic config --unpaywall-email), mosaic sends it to OpenAlex and Crossref too, which puts your requests in their "polite pool" with higher limits. OpenAlex stores abstracts as inverted indexes; mosaic rebuilds the text. Many Crossref records have no abstract.

CORE, NASA ADS, IEEE Xplore ​

Each needs a free key and is skipped without one:

SourceGet a keySet itFree quota
COREcore.ac.uk/services/apimosaic config --core-key KEYper CORE tier
NASA ADSui.adsabs.harvard.edu, Settings, API Tokenmosaic config --ads-key KEY5 000 requests/day
IEEE Xploredeveloper.ieee.orgmosaic config --ieee-key KEY200 requests/day

Zenodo ​

mosaic asks Zenodo for publications only (resource_type.type:publication), leaving out datasets and software. Every record is open access. A personal token (mosaic config --zenodo-key) raises the anonymous rate limit.

DBLP ​

DBLP has no abstracts. Combine it with arXiv or Semantic Scholar for computer science: the same paper from two sources merges into one record that keeps the abstract.

PubMed and PubMed Central ​

Both use the NCBI E-utilities, two requests per search. PubMed's summaries carry no abstract, so pair it with Europe PMC for abstracts. Every PubMed Central record has a PDF link. One NCBI key serves both: mosaic config --ncbi-key KEY sets it for PubMed and PubMed Central and raises NCBI's limit from 3 to 10 requests per second.

bioRxiv / medRxiv ​

mosaic searches both servers through their website search, then fetches each preprint's metadata, abstract and PDF link from api.biorxiv.org. Every result is open access.

PEDro ​

PEDro's fair-use policy forbids automated bulk downloading, so the source stays off until you accept it:

bash
mosaic config --pedro-fair-use

mosaic then waits 3 seconds between PEDro requests (--pedro-rate-limit-delay to change it). A search result carries the title, the study type (in the journal field) and the PEDro scale score; authors, year, DOI and abstract need one more request per result, which --pedro-fetch-details enables (per search, or mosaic config --pedro-fetch-details for every search). With details, a 25-result search makes about 25 extra requests: about 75 seconds at the default delay.

bash
mosaic search "chronic low back pain" --source pedro --field title --pedro-fetch-details

Rate limits and quotas ​

The HTTP sources send their requests through a retry layer (RetryTransport in mosaic/sources/base.py); the exceptions are the ScienceDirect and Scopus APIs, the browser-based sources and custom sources. When a server answers HTTP 429 (too many requests) or 503 (service unavailable), mosaic waits and tries again, at most twice. The wait is the server's Retry-After header when it sends one, otherwise 1 second and then 2. When the server asks for more than 10 seconds (a daily quota, for example), mosaic does not wait: that source fails at once and the search goes on with the others.

A failed source is reported in one line with --verbose:

Warning: IEEE Xplore: API quota exhausted (HTTP 403); try again later or tomorrow
Warning: Semantic Scholar: rate limited (HTTP 429); retry in ~60s
Warning: CORE: access denied (HTTP 401); check the API key / credentials

An HTTP 401 or 403 whose body mentions a quota or rate limit reads "quota exhausted"; any other 401 or 403 reads "access denied", which usually means a wrong or not yet active key (new Elsevier keys take a few minutes to activate).

See also: tutorial: narrowing the results, searching recipes, configuration, custom sources, mosaic search.

Released under GPL-3.0-or-later, BSD-2-Clause, BSD-3-Clause or MIT, at your choice.