pyzotero

Interact with Zotero reference management libraries using the pyzotero Python client. Retrieve, create, update, and delete items, collections, tags, and…

INSTALLATION
npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill pyzotero
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$29

Installation

uv add pyzotero

# or with CLI support:

uv add "pyzotero[cli]"

Quick Start

from pyzotero import Zotero

zot = Zotero(library_id='123456', library_type='user', api_key='ABC1234XYZ')

# Retrieve top-level items (returns 100 by default)

items = zot.top(limit=10)

for item in items:

    print(item['data']['title'], item['data']['itemType'])

# Search by keyword

results = zot.items(q='machine learning', limit=20)

# Retrieve all items (use everything() for complete results)

all_items = zot.everything(zot.items())

Core Concepts

  • A Zotero instance is bound to a single library (user or group). All methods operate on that library.
  • Item data lives in item['data']. Access fields like item['data']['title'], item['data']['creators'].
  • Pyzotero returns 100 items by default (API default is 25). Use zot.everything(zot.items()) to get all items.
  • Write methods return True on success or raise a ZoteroError.

Reference Files

File

Contents

references/authentication.md

Credentials, library types, local mode

references/read-api.md

Retrieving items, collections, tags, groups

references/search-params.md

Filtering, sorting, search parameters

references/write-api.md

Creating, updating, deleting items

references/collections.md

Collection CRUD operations

references/tags.md

Tag retrieval and management

references/files-attachments.md

File retrieval and attachment uploads

references/exports.md

BibTeX, CSL-JSON, bibliography export

references/pagination.md

follow(), everything(), generators

references/full-text.md

Full-text content indexing and retrieval

references/saved-searches.md

Saved search management

references/cli.md

Command-line interface usage

references/error-handling.md

Errors and exception handling

Common Patterns

Fetch and modify an item

item = zot.item('ITEMKEY')

item['data']['title'] = 'New Title'

zot.update_item(item)

Create an item from a template

template = zot.item_template('journalArticle')

template['title'] = 'My Paper'

template['creators'][0] = {'creatorType': 'author', 'firstName': 'Jane', 'lastName': 'Doe'}

zot.create_items([template])

Export as BibTeX

zot.add_parameters(format='bibtex')

bibtex = zot.top(limit=50)

# bibtex is a bibtexparser BibDatabase object

print(bibtex.entries)

Local mode (read-only, no API key needed)

zot = Zotero(library_id='123456', library_type='user', local=True)

items = zot.items()
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card