Server-side Zotero translation based on Mozilla xpcshell
JavaScript Shell

Zotero Translation Server

Server-side Zotero translation

Currently supports import, export, and web translation


Docker (recommended)

  1. git clone --recursive

  2. cd translation-server

  3. docker build -t translation-server -f Dockerfile .

  4. docker run --rm -p 1969:1969 --name translation-server-container translation-server


  1. Install required libraries

  2. git clone --recursive

  3. cd translation-server

  4. ./fetch_sdk

  5. ./

  6. Run the server:

    $ build/ 
    zotero(3)(+0000000): HTTP server listening on *:1969

Try a query

   $ curl -d '{"url":"","sessionid":"abc123"}' \
          --header "Content-Type: application/json" \


Supported endpoints are: /web, /import, /export, and /refresh.

Read server_translation.js for more information.

Web Translators

Translates a web page

  • endpoint: /web
  • request method: POST
  • request body: JSON object containing a url and a random sessionid
  • example:
curl -X POST --header 'Content-Type: application/json' -d '{
  "url": "",
  "sessionid": "abc123"
}' 'http://localhost:1969/web'

Import Translators

Converts input in any format Zotero can import (RIS, BibTeX, etc.) to items in Zotero API JSON format

  • endpoint: /import
  • request method: POST
  • request body: item data in a supported format
  • example:
curl -X POST -d 'TY  - JOUR
TI  - Die Grundlage der allgemeinen Relativitätstheorie
AU  - Einstein, Albert
PY  - 1916
SP  - 769
EP  - 822
JO  - Annalen der Physik
VL  - 49
ER  -' 'http://localhost:1969/import'

Export Translators

Converts items in Zotero API JSON format to a supported export format (RIS, BibTeX, etc.)

  • endpoint: /export
  • request method: POST
  • query parameter: format, which must be a supported export format
  • request body: An array of items in Zotero API JSON format


To run the tests, go to the translation-server directory and run:

./build/ -test /path/to/file/output.JSON