Skip to main content

SEC Daily API — Python SDK

Official Python SDK for the SEC Daily API — real-time SEC EDGAR filings, company data, and news.

Using Claude, Cursor, ChatGPT, or another AI assistant? Use the sec-daily-mcp package instead — it connects your AI tool directly to the SEC Daily API with no code required.

Installation

pip install sec-daily-api

Requires Python 3.8+. No runtime dependencies.

Quick Start

import os
from sec_daily_api import SecDailyAPI

client = SecDailyAPI(api_key=os.environ["SEC_DAILY_API_KEY"])

# Get Apple's latest 10-K filings
result = client.get_filings(ticker="AAPL", form_types="10-K", limit=5)

for filing in result["filings"]:
    print(filing["filingDateInEst"], filing["formType"], filing.get("summary", ""))

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.

SecDailyAPI(api_key=None, *, timeout=30.0)

Argument Type Description
api_key str Your API key. Defaults to SEC_DAILY_API_KEY env var
timeout float Per-request socket timeout in seconds (default 30)

get_filings(**params)

Search and filter SEC EDGAR filings.

result = client.get_filings(
    ticker="AAPL",
    form_types=["10-K", "10-Q"],
    filing_date_start="2025-01-01",
    filing_date_end="2025-12-31",
    limit=50,
)
for filing in result["filings"]:
    print(filing["formType"], filing["filingDateInEst"])
Parameter Type Description
ticker str Company ticker, e.g. "AAPL"
cik str Company CIK (numeric)
accession_number str Exact SEC accession number
form_types str | list[str] e.g. "10-K", ["10-K","10-Q"], "8-K", "4"
filing_date str Exact filing date YYYY-MM-DD
filing_date_start str Date range start YYYY-MM-DD
filing_date_end str Date range end YYYY-MM-DD
fieldset "minimal" | "standard" | "full" Response size control
limit int Results per page, default 200, max 1000
cursor str Pagination cursor from a previous response

Response: dict with filings (list), count (int), pagination (dict with hasMore and optional nextCursor).


iter_filings(**params)

Auto-paginating generator that yields individual filings across all pages.

# Walk all of Apple's 10-K filings without managing cursors yourself
for filing in client.iter_filings(ticker="AAPL", form_types="10-K", limit=1000):
    print(filing["id"], filing["filingDateInEst"])

Accepts the same filters as get_filings. Each page counts against your quota — use a larger limit to minimize requests.


get_filing(id)

Fetch a single filing by its internal ID. Returns None if not found.

filing = client.get_filing("abc123...")

get_filing_by_accession(accession_number)

Fetch a single filing by its SEC accession number. Returns None if not found.

filing = client.get_filing_by_accession("0001193125-24-012345")

get_entity(*, ticker=None, cik=None)

Look up a company's SEC profile. Provide either ticker or cik.

entity = client.get_entity(ticker="AAPL")
print(entity["name"], entity["cik"], entity["sicDescription"])

Returns a dict with: cik, name, ticker, exchange, sicCode, sicDescription, stateOfIncorporation, fiscalYearEnd, businessAddress, website, formerNames, and more. Returns None if not found.


get_news(**params)

Retrieve SEC press releases and market news.

result = client.get_news(
    news_type="PressReleases",
    start_date="2026-01-01",
    end_date="2026-01-31",
    limit=40,
)
for item in result["news"]:
    print(item["date"], item["newsType"])
Parameter Type Description
news_type str News category (default: "PressReleases")
start_date str Date range start YYYY-MM-DD
end_date str Date range end YYYY-MM-DD
limit int Results, default 40, max 100

get_news_item(id)

Fetch a single news item by ID. Returns None if not found.


TypeScript / type checking

Full type stubs are included. All response shapes are described as TypedDict classes.

from sec_daily_api import Filing, Entity, NewsItem, FilingsResponse

Error handling

from sec_daily_api import SecDailyAPI, SecDailyAPIError

try:
    result = client.get_filings(ticker="AAPL")
except SecDailyAPIError as err:
    print(err.status, err)  # e.g. 403, "SecDaily API error 403: Forbidden"
Status Meaning
400 Invalid parameters
403 Invalid or missing API key
429 Rate limit exceeded — retried automatically up to 3 times
504 Request timed out — retried automatically up to 3 times
500 Server error

Resources


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. Always consult a qualified financial professional before making investment decisions.


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

Metadata

Release files for sec-daily-api 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sec-daily-api 0.4.2
File Size Uploaded Provenance
sec_daily_api-0.4.2.tar.gz 11.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for sec-daily-api 0.4.2
File Interpreter ABI Platform
sec_daily_api-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 23.8 kB

Release files / sec_daily_api-0.4.2.tar.gz

Download URL sec_daily_api-0.4.2.tar.gz
Size 11.0 kB
Tags Source
SHA-256 checksum
How to use checksums
73c99e892618ece87279c0b7cc26334ebfa23a3ee55c3666cee109e6438c59cc
BLAKE2b-256 checksum
How to use checksums
bf2523586b782da1e16fbebefb117a8a4f133e9993aac40bbd11995b0e35a23c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / sec_daily_api-0.4.2-py3-none-any.whl

Download URL sec_daily_api-0.4.2-py3-none-any.whl
Size 12.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
672b7dbb1177e42e3b3918437a652df6bfd5d011ea1e16515e751e46fa7b2708
BLAKE2b-256 checksum
How to use checksums
ed1d741eb125a0a884635c877a05ba51466d95359e3cb18a7264f2af871a0f47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Security for sec-daily-api 0.4.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page