In today’s fast-moving financial markets, access to real-time and historical cryptocurrency data is essential for developers, traders, and fintech innovators. Twelve Data stands out as a powerful API platform offering seamless integration of market data across multiple assets — including cryptocurrencies, stocks, and forex. Whether you're building algorithmic trading systems, dashboards, or analytical tools, Twelve Data provides robust endpoints for both RESTful time-series queries and WebSocket-based live price streaming.
This guide explores how to use Twelve Data APIs effectively across popular programming languages, ensuring you can retrieve accurate crypto market data with minimal latency and maximum reliability.
Accessing Cryptocurrency Data via REST API
The Twelve Data REST API allows developers to pull time-series data with simple HTTP requests. You can fetch real-time or historical cryptocurrency prices at various intervals — from 1-minute ticks to daily summaries.
Python Implementation
Using the official twelvedata Python SDK simplifies integration:
from twelvedata import TDClient
td = TDClient(apikey="YOUR_API_KEY_HERE")
ts = td.time_series(
symbol="TSLA",
interval="1min",
outputsize=12,
)
print(ts.as_json())This script retrieves the last 12 minutes of Tesla (TSLA) stock data. For cryptocurrency pairs like BTC/USD, simply replace the symbol accordingly.
👉 Generate real-time crypto data streams in minutes with flexible API tools.
C++ Example Using cURL
For performance-critical applications, C++ offers direct control over network operations:
const char* REQUEST_URL = "https://api.twelvedata.com/time_series?symbol=TSLA&interval=1min&outputsize=12&apikey=YOUR_API_KEY_HERE";
std::size_t write_callback(const char* data, std::size_t size, std::size_t count, std::string* out){
const std::size_t result = size * count;
out->append(data, result);
return result;
}
int main(){
std::unique_ptr<std::string> responseData(new std::string());
CURL* curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, REQUEST_URL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, responseData.get());
curl_easy_perform(curl);
// Parse JSON response and extract symbol & closing price
cJSON* json = cJSON_Parse(responseData->c_str());
cJSON* metaField = cJSON_GetObjectItem(json, "meta");
cJSON* valuesField = cJSON_GetObjectItem(json, "values");
cJSON* symbolField = cJSON_GetObjectItem(metaField, "symbol");
cJSON* closeField = cJSON_GetObjectItem(cJSON_GetArrayItem(valuesField, 0), "close");
std::cout << "Received symbol: " << cJSON_GetStringValue(symbolField)
<< ", close: " << cJSON_GetStringValue(closeField) << std::endl;
cJSON_Delete(json);
curl_easy_cleanup(curl);
return 0;
}.NET (C#) Integration
C# developers can leverage WebClient and System.Text.Json for clean deserialization:
var response = wc.DownloadString("https://api.twelvedata.com/time_series?symbol=TSLA&interval=1min&outputsize=12&apikey=YOUR_API_KEY_HERE");
var timeSeries = JsonSerializer.Deserialize<TimeSeries>(response);
if(timeSeries.status == "ok")
{
Console.WriteLine("Received symbol: " + timeSeries.meta["symbol"] + ", close: " + timeSeries.values[0]["close"]);
}Java & R Alternatives
Java implementations use HttpURLConnection with JSON parsing libraries like org.json, while R users can employ RcppSimdJson or base jsonlite packages to parse responses efficiently.
Streaming Live Crypto Prices with WebSocket
For applications requiring real-time updates — such as trading bots or live dashboards — Twelve Data supports WebSocket connections that push price changes instantly.
C++ WebSocket Client
Using WebSocket++ and Boost.Asio:
client.set_open_handler([&client](auto hdl){
client.send(hdl, SUBSCRIBE_ACTION, websocketpp::frame::opcode::text);
});Upon connection, the client sends a subscription message to start receiving price events for specified symbols like BTC/USD.
C# with WebSocket4Net
ws.Opened += (sender, e) => {
Console.WriteLine("TDWebSocket opened!");
ws.Send("{\"action\": \"subscribe\", \"params\":{\"symbols\": \"TSLA\"}}");
};Events including price, quote, and status updates are delivered in near real-time.
Java & R WebSocket Examples
Java leverages Java-WebSocket library with URI-based connections:
WebSocketClient client = new WebSocketClient(new URI(ENDPOINT)){
@Override
public void onOpen(ServerHandshake handshake){
send("{\"action\": \"subscribe\", \"params\":{\"symbols\": \"TSLA\"}}");
}
@Override
public void onMessage(String message){
System.out.println(message); // Handle incoming price data
}
};R developers can use the websocket package:
ws <- WebSocket$new("wss://ws.twelvedata.com/v1/quotes/price?apikey=YOUR_API_KEY_HERE")
ws$onOpen(function() { cat("TDWebSocket opened!\n") })
ws$send('{"action": "subscribe", "params":{"symbols": "TSLA"}}')👉 Start streaming live cryptocurrency prices with low-latency API access.
Key Features of Twelve Data API
- Real-time & Historical Data: Retrieve intraday ticks or multi-year historical records.
- Multi-language Support: Official SDKs and examples in Python, JavaScript, Java, C#, R, and more.
- Cryptocurrency Coverage: Major pairs including BTC/USD, ETH/USD, BNB/USD supported.
- High Frequency Updates: WebSocket streams deliver sub-second latency updates.
- Flexible Intervals: Choose from 1min, 5min, hourly, daily, and custom intervals.
Frequently Asked Questions (FAQ)
Q: What types of cryptocurrency data does Twelve Data support?
A: Twelve Data offers real-time and historical pricing for major cryptocurrencies like Bitcoin (BTC), Ethereum (ETH), Binance Coin (BNB), and others against USD and other fiat pairs.
Q: Is there a free tier available for developers?
A: Yes, Twelve Data provides a free plan with limited API calls per month, ideal for testing and small-scale projects.
Q: Can I use this API for algorithmic trading?
A: Absolutely. With low-latency WebSocket feeds and precise time-series data, it's well-suited for automated trading strategies.
Q: How do I authenticate my requests?
A: All requests require an apikey parameter passed via URL query string or headers, depending on the endpoint.
Q: Are rate limits applied to API usage?
A: Yes, rate limits vary by subscription tier — ranging from a few requests per minute on free plans to thousands per second on enterprise levels.
Q: Does Twelve Data provide technical indicators through its API?
A: Yes, in addition to raw price data, you can request computed indicators such as SMA, RSI, MACD directly from the API.
Whether you're analyzing trends or executing high-speed trades, leveraging a reliable cryptocurrency API is crucial. With comprehensive documentation and multi-language support, Twelve Data empowers developers to build scalable financial applications quickly.
👉 Unlock advanced market data tools for real-time crypto analysis.