Lock-up expiration calendar: when insider and pre-offering shares become

Lock-up expiration calendar: when insider and pre-offering shares become eligible for sale after a US IPO or follow-on offering, past and UPCOMING, with the size of the locked block versus the offering float.

One row per lock-up tranche per offering, sourced from the final prospectus (SEC Form 424B4 / 424B1) filed the day after pricing. date (also served as expiration_date) = the lock-up anchor (normally the prospectus date) plus the lock-up length in calendar days; shares_sellable_from is the first NYSE session on or after it. A plain 180-day lock-up is one row (tranche_seq 1 of 1); a staggered release is several rows sharing accession_no with tranche_pct. lockup_type separates operating-company IPOs (typically 180 days) from follow-on offerings by already-public issuers (typically 60-90 days). Blank-check (SPAC) IPOs are excluded. History from 2021.

Sizing: locked_shares is the prospectus-stated locked count where given, otherwise shares outstanding after the offering minus shares offered. float_shares_at_offering = shares sold in the offering (plus the over-allotment when its exercise is stated); locked_to_float_ratio = locked / float, so 3.0 means three times the offering float unlocks on date. locked_pct_of_outstanding is the same block as a share of total shares outstanding.

Requires an Alphanume Pro API key. There is no date clamp on this route: a Pro key sees full history and the forward calendar.

Honest limits, stated plainly. Early-release clauses are common in recent IPOs (a release tied to the first earnings announcement, a price-based release, or staged tranches); the row carries early_release_type and the verbatim early_release_terms, but v1 does not compute the earlier date -- treat date as the contractual outside date when early_release_type is not 'none'. The over-allotment exercise is unknown at prospectus time, so the float can be understated by up to 15%. ticker may be NULL for a few days on a brand-new IPO; first_trade_date is IPO-only (NULL on follow-ons); market_cap_at_offering is NULL until the cap history covers the ticker; rows are never dropped for missing enrichment. confidence (0-1) is a per-row quality signal for the extracted terms; 0.9 means every term was resolved by the deterministic parser. first_seen_at is when our pull first observed the prospectus (synthetic = filing time for rows backfilled before launch).

Default order: upcoming expirations first, nearest to today first, then already-expired rows most recent first -- so the first page is the calendar of what happens next.

Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's cursor_date, cursor_ticker and cursor_id back to fetch the next page.

get/v1/capital/lockup-expirations

Request

  • Base URL: https://api.alphanume.com
  • URL: https://api.alphanume.com/v1/capital/lockup-expirations
  • Auth: one of:
    • API key in header X-API-Key
    • HTTP bearer

Query parameters

tickerstring

Ticker symbol filter, e.g. 'AAPL'. Case-insensitive.

datestring

Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters.

date_gtestring

Start of date range, inclusive (YYYY-MM-DD).

date_ltestring

End of date range, inclusive (YYYY-MM-DD).

date_gtstring

Start of date range, exclusive (YYYY-MM-DD).

date_ltstring

End of date range, exclusive (YYYY-MM-DD).

upcomingstring

'true' = only lock-ups expiring today or later (the forward calendar); 'false' = only already-expired lock-ups. Omit for both.

lockup_type'ipo' | 'follow_on'

'ipo' = operating-company initial public offerings (typically 180-day lock-ups); 'follow_on' = offerings by already-public issuers (typically 60-90 days).

status'upcoming' | 'expired'

Row status as of the last nightly sweep (ET).

early_releasestring

'true' = only lock-ups with an early-release clause (earnings-, price-based or staggered); 'false' = plain fixed-period lock-ups only.

min_locked_to_floatnumber

Only rows whose locked block is at least this multiple of the shares sold in the offering (e.g. 2 = locked shares >= 2x the offering float).

min_confidencenumber

Only rows with extraction confidence >= this value (0-1). Regex-resolved rows carry 0.9; LLM-assisted rows carry the model's own estimate.

updated_sincestring

Only rows updated at or after this date/datetime (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) -- for incremental syncs.

cursor_datestring

Pagination: the 'cursor_date' value from the previous response's next_cursor. Send with cursor_ticker and cursor_id.

cursor_tickerstring

Pagination: the 'cursor_ticker' value from the previous response's next_cursor (may be an empty string).

cursor_idinteger

Pagination: the 'cursor_id' value from the previous response's next_cursor.

Response

Matching rows.

countinteger required
dataobject[] required
has_moreboolean required
next_cursorobject nullable required

Keyset cursor: pass its fields back as the cursor_* query parameters to fetch the next page.

Changes

No recorded changes to this operation across all 1 revision of this API.