Bolt Protocol

The Bolt network protocol is a highly efficient, lightweight client-server protocol designed for database applications.

The protocol is statement oriented, allowing a client to send statements, each consisting of a single string and a set of typed parameters. The server responds to each request with a result message and an optional stream of result records.

This documentation describes the various versions of the Bolt Protocol, for the use by anyone implementing client or server applications. It is licensed under Creative Commons 3.0 Attribution-ShareAlike, and was originally authored by the team behind the Neo4j graph database.

The current version is Protocol Version 1.


Bolt is a non-standardized open source protocol and contributions are encouraged.

For discussion of the Bolt protocol, please join the Mailing list.

Contributions to this website and the documentation can be made via the GitHub project.


All versions of the Bolt Protocol operate over a TCP connection or WebSocket, with an optional TLS encapsulation. The recommended default port is 7687.

Protocol version negotiation

All connections will begin with protocol version negotiation, described in the handshake documentation.


This is a non-exhaustive list of known implementations:


Command Line Interface (CLI) / Shell client

Command Line Interface (CLI) / Shell client

Web-based command client and visualization

Java driver library

A Neo4j Object Graph Mapping Library for Java

Javascript driver library

Javascript library handling cypher queries as node object streams

Microsoft .NET driver library

Python driver library

Neo4j client library and toolkit for Python

A Python Object Graph Mapper (OGM)

Ruby driver library

PHP driver library

C/C++ driver library

Elixir driver library

Haskell driver library