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

sec-daily-api

v0.2.1

Published

Official JavaScript and TypeScript SDK for the SEC Daily API — real-time EDGAR filings, insider transactions, and news.

Readme

SEC Daily API — Node.js SDK

Official JavaScript and TypeScript SDK for the SEC Daily API — real-time EDGAR filings and news.

  • 7.9M+ filings indexed — 10-K, 10-Q, 8-K, 13D/G, Form 3/4/5, S-1, and more
  • 122K+ companies, funds, and insiders covered
  • Detailed entity metadata — SIC codes, addresses, former names, fiscal year, and more
  • Coverage from January 2015 to today, updated in near real-time
  • Clean, structured JSON responses

Installation

npm install sec-daily-api

Quick Start

import { SecDailyAPI } from "sec-daily-api";

const client = new SecDailyAPI({
  apiKey: process.env['SEC_DAILY_API_KEY'], // This is the default and can be omitted
});

// Look up an entity by ticker or CIK
const entity = await client.getEntity({ ticker: "AAPL" });
console.log(entity?.name, entity?.sicDescription, entity?.exchange);
// "Apple Inc."  "Electronic Computers"  "Nasdaq"

// Get recent 10-K and 10-Q filings for Apple
const { filings } = await client.getFilings({
  ticker: "AAPL",
  formTypes: ["10-K", "10-Q"],
  limit: 10,
});

// Get latest SEC news
const { news } = await client.getNews({ limit: 5 });

Get your API key at secdailyapi.com.


API Reference

For the full reference including all parameters, response schemas, and plan limits, see secdailyapi.com/docs.

new SecDailyAPI(options)

| Option | Type | Required | Description | |---|---|---|---| | apiKey | string | Yes | Your SEC Daily API key. Defaults to process.env['SEC_DAILY_API_KEY'] |


getEntity(params)

Look up a company or fund by ticker or CIK. Returns null if not found.

// By ticker (case-insensitive)
const entity = await client.getEntity({ ticker: "aapl" });

// By CIK
const entity = await client.getEntity({ cik: "320193" });

| Parameter | Type | Description | |---|---|---| | ticker | string | Ticker symbol (case-insensitive) | | cik | string | SEC CIK number |

Exactly one of ticker or cik is required.

Sample response:

{
  "cik": "320193",
  "name": "Apple Inc.",
  "ticker": "AAPL",
  "exchange": "Nasdaq",
  "entityType": "operating",
  "category": "Large accelerated filer",
  "sicCode": "3571",
  "sicDescription": "Electronic Computers",
  "stateOfIncorporation": "CA",
  "fiscalYearEnd": "0926",
  "irsNumber": "942404110",
  "phone": "(408) 996-1010",
  "businessAddress": {
    "street1": "ONE APPLE PARK WAY",
    "city": "CUPERTINO",
    "stateOrCountry": "CA",
    "stateOrCountryDescription": "CA",
    "zipCode": "95014"
  },
  "mailAddress": {
    "street1": "ONE APPLE PARK WAY",
    "city": "CUPERTINO",
    "stateOrCountry": "CA",
    "stateOrCountryDescription": "CA",
    "zipCode": "95014"
  },
  "formerNames": [
    { "name": "APPLE COMPUTER INC", "from": "1994-01-26T05:00:00.000Z", "to": "2007-01-04T05:00:00.000Z" }
  ]
}

getFilings(params?)

Retrieve SEC filings from EDGAR.

const { filings, count } = await client.getFilings({
  ticker: "MSFT",
  formTypes: ["8-K"],
  startDate: "2024-01-01",
  endDate: "2024-12-31",
  limit: 50,
});

| Parameter | Type | Description | |---|---|---| | ticker | string | Company ticker symbol | | cik | string | SEC CIK number | | formTypes | string \| string[] | Filter by form type(s), e.g. ["10-K", "10-Q"] | | filingDate | string | Single date filter (YYYY-MM-DD) | | startDate | string | Start of date range (YYYY-MM-DD) | | endDate | string | End of date range (YYYY-MM-DD) | | limit | number | Max results to return | | fieldset | "minimal" \| "standard" \| "full" | Field subset to return (default: full) | | fields | string \| string[] | Custom fields to return, e.g. ["id", "formType", "filingDateInEst"] |

Sample response:

{
  "count": 1,
  "filings": [
    {
      "id": "6442f28eb9af27ecdcc74ec712560b9632984a817b391f130361b7ee7aff0932",
      "formType": "8-K",
      "cik": "320193",
      "accessionNumber": "0001140361-26-015711",
      "filingDateInEst": "2026-04-20",
      "filingDateInUtc": "2026-04-20",
      "filingTimeInEst": "2026-04-20T17:29:51-0400",
      "filingTimeInUtc": "2026-04-20T21:29:51Z",
      "filingMonth": "2026-04",
      "linkToFilingDetail": "https://www.sec.gov/Archives/edgar/data/320193/000114036126015711/0001140361-26-015711-index.htm",
      "linkToPrimaryDocument": "https://www.sec.gov/ix?doc=/Archives/edgar/data/320193/000114036126015711/ef20071035_8k.htm",
      "linkToSubmissionTxt": "https://www.sec.gov/Archives/edgar/data/0000320193/000114036126015711/0001140361-26-015711.txt",
      "documentFormatFiles": [
        {
          "description": "8-K",
          "type": "8-K",
          "size": "38605",
          "seq": "1",
          "url": "https://www.sec.gov/ix?doc=/Archives/edgar/data/320193/000114036126015711/ef20071035_8k.htm"
        }
      ],
      "dataFiles": [
        {
          "description": "XBRL TAXONOMY EXTENSION SCHEMA",
          "type": "EX-101.SCH",
          "size": "5320",
          "seq": "2",
          "url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126015711/aapl-20260417.xsd"
        }
      ],
      "filers": [
        {
          "cik": "0000320193",
          "name": "Apple Inc.",
          "role": "FILER"
        }
      ],
      "entity": {
        "cik": "320193",
        "name": "Apple Inc.",
        "sicCode": "3571",
        "stateOfIncorporation": "CA",
        "fiscalYearEnd": "0926",
        "businessAddress": {
          "street1": "ONE APPLE PARK WAY",
          "city": "CUPERTINO",
          "state": "CA",
          "zip": "95014",
          "phone": "(408) 996-1010"
        }
      }
    }
  ]
}

getNews(params?)

Retrieve SEC-related news.

const { news, count } = await client.getNews({
  startDate: "2024-01-01",
  endDate: "2024-01-31",
  limit: 20,
});

| Parameter | Type | Description | |---|---|---| | newsType | string | Filter by news category | | startDate | string | Start of date range (YYYY-MM-DD) | | endDate | string | End of date range (YYYY-MM-DD) | | limit | number | Max results to return | | fieldset | "minimal" \| "standard" \| "full" | Field subset to return (default: full) |

Sample response:

{
  "count": 1,
  "news": [
    {
      "id": "fa70432545234148ac61ca4721cea65048b3d6c33684f48a361ae976d34e50e5",
      "newsType": "PressReleases",
      "title": "SEC and CFTC Jointly Propose Amendments to Reduce Private Fund Reporting Burdens",
      "description": "The Securities and Exchange Commission (SEC) and the Commodity Futures Trading Commission (CFTC) jointly proposed amendments...",
      "link": "https://www.sec.gov/newsroom/press-releases/2026-40-sec-cftc-jointly-propose-amendments-reduce-private-fund-reporting-burdens",
      "publishedDateInEst": "2026-04-20T10:45:00-0400",
      "publishedDateInUtc": "2026-04-20T14:45:00Z",
      "recordedTimeInUTC": "2026-04-20T15:00:25Z"
    }
  ]
}

TypeScript

Full TypeScript support is included. All request params and responses are typed.

import type { Filing, Entity, EntityAddress, EntityFormerName, NewsItem } from "sec-daily-api";

Error Handling

When the API returns a non-success status code, an error is thrown with the status and message:

try {
  const { filings } = await client.getFilings({ ticker: "AAPL" });
} catch (err) {
  if (err instanceof Error) {
    console.error(err.message); // e.g. "SecDaily API error 401: Unauthorized"
  }
}

| Status Code | Meaning | |---|---| | 401 | Invalid or missing API key | | 403 | Plan does not include this endpoint | | 429 | Rate limit exceeded | | 500 | Server error |


Changelog

[0.2.0] - 2026-05-05

  • Added getEntity({ ticker }) and getEntity({ cik }) — look up a company or fund, returns Entity | null
  • Expanded Entity type with all known fields: exchange, SIC code, addresses, former names, and more
  • Ticker input is normalized to uppercase automatically

[0.1.0] - 2026-04-26

  • Initial release: getFilings() and getNews()

Resources


Requirements

  • Node.js 20 LTS or later
  • TypeScript 4.7 or later (if using TypeScript)

Legal Disclaimer

The data provided through this SDK is for informational purposes only and does not constitute investment advice, financial advice, trading advice, or any other type of advice. GoodTech LLC makes no representations as to the accuracy, completeness, or timeliness of the data. You are solely responsible for your use of the data. Past filings and transactions do not predict future performance. Always consult a qualified financial professional before making investment decisions.


Licensed under the Apache 2.0 License. Copyright 2026 Goodtech LLC.