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

social-stock-sentiment

v1.17.0

Published

TypeScript SDK for the Stock Sentiment API — analyze stock sentiment from Reddit, X/Twitter, and Polymarket

Readme

social-stock-sentiment

TypeScript SDK for the Stock Sentiment API — analyze stock sentiment from Reddit, X/Twitter, and Polymarket.

Installation

npm install social-stock-sentiment

Quick Start

import { StockSentimentClient } from 'social-stock-sentiment';

const client = new StockSentimentClient({ apiKey: 'sk_live_...' });

// Get trending stocks on Reddit
const trending = await client.reddit.trending({ days: 7, limit: 10 });
for (const stock of trending) {
  console.log(`${stock.ticker}: buzz=${stock.buzz_score}, sentiment=${stock.sentiment_score}`);
}

// Get detailed sentiment for a stock
const tsla = await client.reddit.stock('TSLA', { days: 14 });
console.log(`TSLA buzz: ${tsla.buzz_score}, trend: ${tsla.trend}`);

// AI-generated trend explanation
const explanation = await client.reddit.explain('TSLA');
console.log(explanation.explanation);

// Search for stocks
const results = await client.reddit.search('Tesla');

// Compare multiple stocks
const comparison = await client.reddit.compare(['TSLA', 'AAPL', 'MSFT'], { days: 7 });

X/Twitter Data

// Same interface, different data source
const xTrending = await client.x.trending({ days: 1, limit: 20 });
const nvda = await client.x.stock('NVDA');

Polymarket Data

// Prediction-market sentiment and activity
const pmTrending = await client.polymarket.trending({ days: 7, limit: 20, type: 'stock' });
const aapl = await client.polymarket.stock('AAPL');

Available Methods

client.reddit.*

| Method | Description | |--------|-------------| | trending({ days, limit, offset, type }) | Trending stocks by buzz score | | trendingSectors({ days, limit, offset }) | Trending sectors | | trendingCountries({ days, limit, offset }) | Trending countries | | stock(ticker, { days }) | Detailed sentiment for a ticker | | explain(ticker) | AI-generated trend explanation | | search(query) | Search stocks by name/ticker | | compare(tickers, { days }) | Compare up to 10 stocks |

client.x.*

| Method | Description | |--------|-------------| | trending({ days, limit, offset, type }) | Trending stocks on X/Twitter | | trendingSectors({ days, limit, offset }) | Trending sectors | | trendingCountries({ days, limit, offset }) | Trending countries | | stock(ticker, { days }) | Detailed X/Twitter sentiment | | search(query) | Search stocks | | compare(tickers, { days }) | Compare stocks |

client.polymarket.*

| Method | Description | |--------|-------------| | trending({ days, limit, offset, type }) | Trending stocks on Polymarket | | trendingSectors({ days, limit, offset }) | Trending sectors | | trendingCountries({ days, limit, offset }) | Trending countries | | stock(ticker, { days }) | Detailed Polymarket sentiment | | search(query) | Search stocks | | compare(tickers, { days }) | Compare stocks |

Error Handling

All non-2xx responses throw an ApiError:

import { StockSentimentClient, ApiError } from 'social-stock-sentiment';

try {
  const trending = await client.reddit.trending();
} catch (e) {
  if (e instanceof ApiError) {
    console.error(`API error ${e.status}: ${e.detail}`);
  }
}

Authentication

Get your API key at api.adanos.org. Free tier includes 250 requests/month.

// Custom base URL (e.g. for self-hosted instances)
const client = new StockSentimentClient({
  apiKey: 'sk_live_...',
  baseUrl: 'https://your-instance.com',
  timeout: 60_000,
});

Rate Limits

| Tier | Monthly Requests | Burst Limit | |------|-----------------|-------------| | Free | 250 | 100/min | | Paid | Unlimited | 1000/min |

Rate limit headers are included in every response.

Requirements

  • Node.js >= 18 (uses native fetch)
  • Works in Deno, Bun, and modern browsers

License

MIT