SEC filings API

AIR, from your own code.

A stock research API: AIR scores, Discovery Gap reads and SEC filing facts as JSON. Sign in, create a key, call.

What the API covers

Every 8-K, 10-Q and 10-K on a covered company's timeline, with its form, its items and whether AIR classed it as material — an 8-K API and a material events API in one call. AIR scores, Discovery Gap reads and the Discover ranking come from the same key.

Use it as an SEC EDGAR API alternative for research: filings arrive already tied to a company and to AIR's read, so there is no EDGAR parsing on your side. Coverage is the ~1,800 companies AIR follows, not all of EDGAR.

The Free plan costs nothing, and paid plans are priced for independent developers — an affordable financial data API for filings and research reads. It serves no stock prices.

Quickstart

  1. Sign in, open Account → API and create a key. It is shown once — copy it then.
  2. Check the key and your plan:
export AIR_API_KEY=air_live_… curl -H "Authorization: Bearer $AIR_API_KEY" https://beta.aistockradars.com/api/v1/me

List companies, then read one by its ticker:

curl -H "Authorization: Bearer $AIR_API_KEY" "https://beta.aistockradars.com/api/v1/companies?per_page=5" curl -H "Authorization: Bearer $AIR_API_KEY" https://beta.aistockradars.com/api/v1/companies/TICKER

Every response is JSON with data and a disclaimer (“Research, not investment advice.”). The full description is at /api/v1/openapi.json (OpenAPI 3.1).

Attribution

On the Free plan, every public use of AIR data from the API must show this line, linked to www.aistockradars.com where the medium allows links:

Source: AIR Stock Discovery — www.aistockradars.com

Free-plan responses carry it as attribution, with attribution_required: true. Builder and Pro waive the requirement while the subscription is active. If a paid plan ends, it applies again from the end of the paid period.

Plans

PlanMonthlyYearlyCalls a dayActive keysAttribution
FreeFree—1001Required
Builder€35.09/monthEU price incl. VAT€29/month excl. VAT€350.90/yearEU price incl. VAT€290/year excl. VAT10,0003Not required
Pro€119.79/monthEU price incl. VAT€99/month excl. VAT€1,197.90/yearEU price incl. VAT€990/year excl. VAT25,00010Not required
  • Daily limits are per account: all of your keys share one limit. Three keys on Builder share 10,000 calls a day between them — not 10,000 each.
  • Every plan: up to 10 calls a second. The day resets at 00:00 UTC. Refused calls are not counted.
  • Pro adds month-end Discover rankings for closed months and email support.
  • Yearly is two months free.
  • Prices marked “EU price incl. VAT” include 21% Spanish VAT, charged to consumers in the EU.
  • Businesses: the price excl. VAT applies. EU businesses with a valid VAT ID are reverse-charged.
  • Outside the EU, you pay the price excl. VAT. Checkout shows your exact total before you pay.

Endpoints

Base URL https://beta.aistockradars.com/api/v1. Send Authorization: Bearer <key> with every call.

GET /companies

The companies AIR currently covers

Ticker, name, sector and cap-size label (small, mid or large) for every company in AIR's universe, ordered by ticker. The cap label is null for a company without a current scored snapshot.

page
(query) Page number, from 1.
per_page
(query) Items per page.
Response fields
ticker
string
name
string
sector
Sector
cap_band
CapBand — Cap-size label only; AIR does not publish market-cap figures.

GET /companies/{ticker}

A company's current AIR read

The AIR score, the five perspectives as rating words, overall confidence and the Discovery Gap, exactly as the company page shows them. A company outside AIR's current universe, or whose last score is out of date, returns `status: not_current` with the site's notice and no scores.

ticker
(path, required) Ticker symbol, case-insensitive.
Response fields
ticker
string
name
string
sector
Sector
status
"current" | "not_current"
notice
string or null — Set when status is not_current.
as_of
date or null
air_score
integer or null
overall_confidence
integer or null
perspectives
array of Perspective or null
discovery_gap
DiscoveryGap or null

GET /companies/{ticker}/evidence

SEC filings on the company's timeline

Newest first. The last twelve months by default; `all=true` for the full history on file. `summary` is AIR's one-paragraph reading of the filing where the site shows one, otherwise null.

ticker
(path, required) Ticker symbol, case-insensitive.
all
(query) `true` for the full history instead of the last twelve months.
Response fields
kind
string
accession
string
form
string
filed_at
date
title
string
summary
string or null
material
boolean
sec_url
string or null

GET /companies/{ticker}/capital-events

Dividend and buyback facts from SEC filings

Each event is one plain sentence (`line`) as stated in the company's 8-K, with the filing it came from. `current` is the latest dividend change and the latest buyback still running; it is null for a company outside the universe. `upcoming_investor_days` lists investor days the company announced in a filing.

ticker
(path, required) Ticker symbol, case-insensitive.
all
(query) `true` for the full history instead of the last twelve months.
Response fields
current
object or null
events
array of CapitalEvent
upcoming_investor_days
array of InvestorDay

GET /discover

The Discover ranking

The current ranked list as /discover shows it: companies with overall confidence of at least `min_confidence`, ordered by Discovery Gap (or by AIR score with `sort=air`), ties broken by confidence. Pro plan: `month=YYYY-MM` returns the ranking at a closed month's month-end snapshot.

page
(query) Page number, from 1.
per_page
(query) Items per page.
sort
(query) Rank by Discovery Gap (`gap`, default) or AIR score (`air`).
sector
(query) Only this sector.
month
(query) Pro plan only. A closed calendar month, YYYY-MM. Other plans receive 403 forbidden_tier.
Response fields
rank
integer
ticker
string
name
string
sector
Sector
cap_band
CapBand — Cap-size label only; AIR does not publish market-cap figures.
air_score
integer or null
air_word
"Attractive" | "Constructive" | "Neutral" | "Cautious" | "Weak" | "High risk" | null
confidence
integer or null
gap_band
"Very high" | "High" | "Medium" | "Low" | "Very low" | null
gap_score
integer or null
new_this_month
boolean — First month in the ranking. Always false for a past month.

GET /ledger

The forward ledger

For each closed month, the five companies with the widest Discovery Gap at that month's end (overall confidence of at least 40), the read when they surfaced and the read now, and the filing categories since. The same record as /paper-trail; it is never rewritten.

month
(query) One closed month, YYYY-MM.
Response fields
month
string
month_end_as_of
date or null
notice
string or null — A note on that month's snapshot, when there is one.
surfaced
array of LedgerEntry

GET /me

Your plan, today's usage and limits

`usage_today` counts this call. The day resets at 00:00 UTC.

Response fields
tier
"free" | "builder" | "pro"
tier_label
string
attribution_required
boolean
usage_today
integer — Accepted calls today across all of your keys.
limits
object
active_keys
integer
day_resets_at
string

Errors

Errors are JSON: {"error": {"code", "message"}}. A refused call (401, 403, 429) is not counted. On 429 wait for the Retry-After seconds. Codes:

missing_key · invalid_key · revoked_key · rate_limited · daily_limit · not_found · bad_request · forbidden_tier · metering_unavailable · internal_error

API stability & versioning

  • v1 is additive-only. We may add fields, endpoints and enum values at any time without notice. Your client must ignore fields it does not know and handle enum values it does not know.
  • We will never remove or rename an existing v1 field or change what it means. Anything that would break a v1 client ships as a new version, /v2.
  • When /v2 ships, v1 keeps running for at least 6 months. We announce the deprecation on the Developers page and by email to every active key owner, and from then on every v1 response carries Deprecation and Sunset headers and a deprecation field.
  • Methodology changes — how scores are computed — do not change the API's shape. They are listed in the changelog with the date of their decision record.

Changelog

Version 1.0.0

  • First release: companies, company read, SEC filings, capital events, Discover ranking, forward ledger and usage.
  • Pro: month-end Discover rankings for closed months.

Use of the API is covered by the API Terms. AIR provides research, not investment advice.

End-of-day market data by Tiingo