Source: https://databento.com/docs/faqs/differences-our-client-libraries-apis


# Client libraries vs. APIs

There are multiple ways to access data programmatically through Databento.
The easiest way is to use one of our official client libraries for the
following languages:

- [Python](https://github.com/databento/databento-python)
- [C++](https://github.com/databento/databento-cpp)
- [Rust](https://github.com/databento/databento-rs)

These client libraries reduce the amount of code you need to write and
adopt our recommended best practices.

If you are using a language that does not have an official client library,
you can still access all of our historical features through our
[HTTP API](https://databento.com/docs/api-historical.md?lang=http) and all of our live features through our
[Raw API](https://databento.com/docs/api-live.md?live=raw), which is built on a regular TCP/IP socket.

If you are still unsure, here are some considerations that can help you
decide the best choice:

- **Historical vs. live.** Our HTTP API exposes historical and delayed
  intraday data, whereas our Raw API only exposes live data.
  Our client libraries provide both historical and live data by
  implementing a common layer over both our HTTP API and Raw API.
- **Web browser support.** Most browsers do not provide support for raw
  TCP sockets. If you are writing a browser application, you should use
  our HTTP API to ensure compatibility with your end users.
- **Security.** If your organization has security policies that make it
  inconvenient for you to install or update an external client library,
  we recommend implementing your own client using our APIs directly.
- **Real-time performance.** Our Raw API uses binary-encoded data messages and
  will have the lowest overhead for live data. The Python, Rust, and C++ client
  libraries wrap the Raw API for live data, so they can't be more efficient
  than the API itself.
  See our [latency page](https://databento.com/latency) to compare their latencies
  in real conditions.
- **Similarities to REST.** Our HTTP API is a collection of RPC-style methods.
  Although it is not a REST API, you will find it familiar as it shares
  many of the standard practices adopted by HTTP-based REST APIs.
- **Pricing.** You pay the same price for the same data, regardless of the
  access method. [We only charge you based on the size of the data
  in its original binary encoding]($PLATFORM_HOSTNAME/pricing). For
  example, the same data message will be larger in our CSV encoding
  than our binary encoding, but there are no extra charges for this overhead.

You can toggle between the different client libraries and APIs anywhere in our
documentation. By default, our Python client library is selected.

![Flowchart](https://databento.com/docs/choice.svg.md)
