...

Getting Started

Begin your journey with TickCatcher by setting up authentication and making your first request.

TickCatcher is designed to be the easiest historic market data API to integrate. Whether you are building a simple trading bot in Python or a high-frequency trading application in Rust, getting started takes less than 5 minutes.

Before writing any code, you will need:

  1. An API Key: You can use either a direct TickCatcher API key or a RapidAPI account.
  2. An Application: A Node.js, Python, Go, or .NET project where you want to consume market data.
  3. An API Client: While you can use curl or fetch, we highly recommend our official SDKs for type safety and automatic error handling.
Note

[!NOTE] For more details and source code, visit our SDK GitHub Repository.

All requests to TickCatcher are authenticated via an API Key. We support both RapidAPI and TickCatcher Direct.

  1. Log in to your TickCatcher Console.
  2. Generate a new API Key.
  3. This key will be used as the X-TickCatcher-Key header.
  1. Navigate to the TickCatcher RapidAPI Page.
  2. Click "Subscribe to Test".
    • Tip: Start with the Basic plan—it is completely free and sufficient for testing integration.
  3. Copy your X-RapidAPI-Key from the Code Snippets section.
Note

[!CAUTION] Security Best Practice: Never commit your API key directly to GitHub. Use environment variables (e.g., .env files) to store sensitive credentials.

We do not believe in boilerplate. Choose your platform below to install the official TickCatcher client library.

Let's fetch the latest 1-hour candles for Bitcoin (BTCUSDT).

import { Configuration, CandlesApi } from "tickcatcher";
 
// 1. Initialize Configuration
const config = new Configuration({
    // Option A: Direct API (Default)
    apiKey: process.env.TICKCATCHER_API_KEY, 
    
    // Option B: RapidAPI
    // apiKey: process.env.RAPIDAPI_KEY,
    // basePath: "https://tickcatcher.p.rapidapi.com"
});
 
// 2. Create API Client
const candles = new CandlesApi(config);
 
async function getBitcoinData() {
    try {
        const response = await candles.basicCandles({
            symbol: "BTCUSDT",
            timeframe: "1h",
            limit: 5 // Get last 5 hours
        });
        
        console.log(`Latest Close: $${response[response.length - 1].close}`);
        console.table(response);
    } catch (error) {
        console.error("Failed to fetch data:", error);
    }
}
 
getBitcoinData();

The API returns a consistent JSON array of Candle objects. Each object represents one time interval (bucket).

[
  {
    "ts": 1734264000000,  // Unix Timestamp (ms)
    "open": 65000.50,     // Opening price
    "high": 65200.00,     // Highest price during interval
    "low": 64900.00,      // Lowest price during interval
    "close": 65100.20,    // Closing price
    "volume": 1200.5      // Volume traded
  }
]

Now that you have live data flowing, what's next?