Older versions of Zotero did not download the complete metadata for BibTex entries. Fortunately, ~950 of the ~1,000 entries have DOI entries. The most recent Zotero version grabs much more metadata.


There are 950 entries that are missing metadata information, which would be laborious to update one at a time:

  1. Open Zotero
  2. Double-click BibTex entry
  3. Alt-Tab to switch to browser window
  4. Click Save to Zotero button
  5. Return to Zotero
  6. Highlight the duplicate entries
  7. Right-click to show context menu
  8. Merge
  9. Choose the item with full metadata

Repeating this process 950+ times would not be exciting.


Potential solutions include:

  • Zotero
  • bibby shell script
  • crossref.org
  • Shell script


Currently logged as a feature request, not yet implemeted.


Jon Herman wrote Bibby, a shell script that runs curl against https://search.crossref.org/dois to extract information. This approach doesn't quite work, for example:

./bibby.sh -q "10.1126/science.252.5013.1690"

Nothing is returned.



The latter returns:

    doi = {10.1126/science.252.5013.1690},
    url = {https://doi.org/10.1126%2Fscience.252.5013.1690},
    year = 1991,
    month = {jun},
    publisher = {American Association for the Advancement of Science ({AAAS})},
    volume = {252},
    number = {5013},
    pages = {1690--1693},
    author = {F. J.-M. R. MAURRASSE and G. SEN},
    title = {Impacts, Tsunamis, and the Haitian Cretaceous-Tertiary Boundary Layer},
    journal = {Science}

However, after following the aforementioned steps using Zotero, a much more complete entry is obtained:

  title = {Impacts, {Tsunamis}, and the {Haitian} {Cretaceous}-{Tertiary} {Boundary} {Layer}},
  volume = {252},
  copyright = {1991 by the American Association for the Advancement of Science},
  issn = {0036-8075, 1095-9203},
  url = {https://science.sciencemag.org/content/252/5013/1690},
  doi = {10.1126/science.252.5013.1690},
  abstract = {...},
  language = {en},
  number = {5013},
  urldate = {2019-11-17},
  journal = {Science},
  author = {Maurrasse, Florentin J.-M. R. and Sen, Gautam},
  month = jun,
  year = {1991},
  pmid = {17751972},
  pages = {1690--1693}

Shell script

The individual DOIs are trivial to extract:

grep "doi =" database.bib | awk '{print $3}' | sed -E 's/\{(.*)\},/\1/g'

These can then be passed into curl or similar to download the information easily enough:

for ref in $(grep "doi =" database.bib | awk '{print $3}' | sed -E 's/\{(.*)\},/\1/g')
  curl "http://api.crossref.org/v1/works/$ref/transform/application/x-bibtex"

Yet the information from the API is less than what Zotero can retrieve.


What software can update the 950+ entries to use the metadata that Zotero can obtain, automatically, without having to fix each entry separately by hand?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.