npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@graphtracks/client

v1.2.2

Published

GraphTracks API Bluesky Analytics client for TypeScript

Readme

Graphtracks client

TypeScript SDK for Bluesky Social Media Analytics - analytics client library that enables developers to access detailed Bluesky social network statistics, user engagement metrics, and growth analytics through the GraphTracks API.

Features

  • Get stats for a given account by DID
  • Growth Stats are available for the following metrics:
    • Followers
    • Replies
    • Reposts
    • Likes
  • Growth Stats available per post:
    • replies
    • reposts
    • likes
  • Account interactions API
  • Top posts by engagement API

Requirements

  • Node.js 22+

This TypeScript/JavaScript client utilizes axios.

Node module can be used in the following environments:

Environment

  • Node.js
  • Webpack
  • Browserify
  • Vite

Language level

  • ES6

Module system

  • CommonJS
  • ES6 module system

It can be used in both TypeScript and JavaScript. In TypeScript, the definition will be automatically resolved via package.json. (Reference)

Getting started

To get started, create account on <www.graphtracks.com>.

Create new API key https://www.graphtracks.com/dashboard/developer/apikeys

Installing

npm install @graphtracks/client --save

Usage

Create a file get-stats.ts with the following content:

import { BlueSkyAnalyticsApi } from "@graphtracks/client";
import { Configuration } from "@graphtracks/client";
import { Metric, Network, Timeframe } from "@graphtracks/client";

const did = process.argv[2];

// Initialize API client
const api = new BlueSkyAnalyticsApi(new Configuration({
    apiKey: process.env.GRAPHTRACKS_API_KEY,
}));

// Get followers stats for a given account
api.getGlobalStatsForAccount({
    network: Network.BlueSky, // Only Bluesky is supported 
    accountId: did, // atproto account did
    metric: Metric.Followers, // Metric to query
    from: '2025-05-01', // Start date in UTC
    timeframe: Timeframe._7d, // relative amount of time since `from` to get metric
    // to: '2025-05-07', // End date in UTC. Cannot be passed together with timeframe
    bucket: 3600 * 24, // Interval between datapoints. It is recommended to keep datapoints count low both for UX and performance
}).then((res) => {
    console.log(res.data);
});

Run the script:

npx ts-node get-stats.ts did:plc:z72i7hdynmk6r22z27h6tvur #bsky.app

Example output:

[
  { time: '2025-05-01 00:00:00', value: 30898 },
  { time: '2025-05-02 00:00:00', value: 27199 },
  { time: '2025-05-03 00:00:00', value: 26890 },
  { time: '2025-05-04 00:00:00', value: 27511 },
  { time: '2025-05-05 00:00:00', value: 28753 },
  { time: '2025-05-06 00:00:00', value: 28346 },
  { time: '2025-05-07 00:00:00', value: 27372 }
]

Examples

Pleas check our [./example] folder for more detailed examples.

Documentation for API Endpoints

All URIs are relative to https://api.graphtracks.com

Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- BlueSkyAnalyticsApi | createNetworkAccount | POST /v1/api/networks/account | Create a network account BlueSkyAnalyticsApi | deleteNetworkAccount | DELETE /v1/api/networks/accounts/{account_id} | Delete a network account BlueSkyAnalyticsApi | getGlobalStatsForAccount | GET /v1/api/networks/{network}/accounts/{account_id}/stats/{metric} | Growth rate statistics for account BlueSkyAnalyticsApi | getNetworkAccount | GET /v1/api/networks/accounts/{account_id} | Get a network account BlueSkyAnalyticsApi | getNetworkAccounts | GET /v1/api/networks/accounts | Get network accounts for current user BlueSkyAnalyticsApi | getPostInteractions | GET /v1/api/networks/{network}/accounts/{account_id}/posts/{post_id}/interactions/{metric} | Get post interactions BlueSkyAnalyticsApi | getPostStats | GET /v1/api/networks/{network}/accounts/{account_id}/posts/{post_id}/stats | Get post statistics BlueSkyAnalyticsApi | getTopPostsForAccount | GET /v1/api/networks/{network}/accounts/{account_id}/top-posts | Get top posts for an account

Documentation For Models

Documentation For Authorization

Authentication schemes defined for the API:

apiKeyAuth

  • Type: API key
  • API key parameter name: X-API-Key
  • Location: HTTP header

[!WARNING] This project, analytics-sdk-ts, is an independent, open-source software development kit designed to interact with Graphtracks API. It is not affiliated with, endorsed by, or sponsored by Bluesky PBC or any of its subsidiaries.

"Bluesky" and related marks are trademarks of their respective owners. Use of these names is solely for descriptive purposes to indicate compatibility and does not imply any official endorsement.

All trademarks and registered trademarks are the property of their respective owners.