New Issue Bond Feed — SEC EDGAR (CUSIP & Terms)
Pricing
from $10.00 / 1,000 new bond issues
New Issue Bond Feed — SEC EDGAR (CUSIP & Terms)
Daily feed of new US corporate bond issues from SEC EDGAR 424B2, 424B5 and FWP filings: CUSIP/ISIN validation, coupon, maturity, size, call terms, guarantor, field-level sources. onlyChanges for daily runs.
Pricing
from $10.00 / 1,000 new bond issues
Rating
0.0
(0)
Developer
Luis Segura
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
New Issue Bond Feed — SEC EDGAR
Status: v1.0 beta. Covers US-registered corporate bond issues from SEC EDGAR only.
A daily feed of new US-registered corporate bond issues from SEC EDGAR. Every 424B2, 424B5 and FWP filed in your date range is triaged. Bank structured notes, equity offerings, ABS and shelf/program supplements are dropped. The Actor is designed to return one row per tranche with its CUSIP/ISIN and terms; tranche_index and tranches_in_document identify each tranche of a multi-tranche document. Key values come with the sentence they were taken from.
Built for pipelines that run on a schedule: a stable natural key, an incremental onlyChanges mode, a versioned schema, and runs that fail loudly instead of finishing green with an empty dataset.
Who it's for
- Fixed-income desks and analysts who check EDGAR by hand for new deals.
- Data teams that feed a database, alert or pricing tool each evening with the day's new issues.
What you get
| Field group | Fields |
|---|---|
| Identifiers | cusip, isin, cusip_check_digit_valid, isin_check_digit_valid, identifier_crosscheck |
| Issuer | issuer_legal_name, cik, sic, sic_description, guarantor |
| Instrument | instrument_name, series, instrument_kind, tranche_index, tranches_in_document |
| Coupon | coupon_rate, coupon_type (fixed, floating, fixed_to_floating, fixed_reset, step_up, zero), reference_rate, spread_bps |
| Dates | pricing_date, original_issue_date, maturity_date |
| Size & price | original_issue_amount, issue_price (% of par), denomination_min, denomination_increment, currency |
| Structure | seniority, secured_status, is_callable, first_call_date, par_call_date, make_whole_provision, make_whole_spread_bps, is_convertible |
| Provenance | source_url, accession_number, form, filing_date, supporting_documents[], provenance{...} (source and quoted text for each key value) |
| Quality | needs_review, review_reasons[], term_changes[], classification_reasons[] |
| Feed | schema_version, record_status (new / final_update / seen), natural_key, issue_id, observed_at |
Example row (shape only, placeholder values)
{"cusip": "<9-character CUSIP from the filing>","isin": "<ISIN, check digit validated>","issuer_legal_name": "<Issuer legal name>","form": "424B5","accession_number": "<EDGAR accession number>","coupon_type": "fixed","coupon_rate": 0.0,"maturity_date": "YYYY-MM-DD","original_issue_amount": 0,"is_callable": true,"first_call_date": "YYYY-MM-DD","needs_review": false,"record_status": "new","natural_key": "<cusip>|<accession_number>"}
Why the FWP ↔ 424B join matters
For benchmark deals the final prospectus supplement often prints no CUSIP. The CUSIP is in the issuer's FWP Pricing Term Sheet, filed a day or two earlier. The Actor links the two documents by issuer, maturity and coupon, then applies these rules:
- The final 424B wins for every term both documents state. Each disagreement is kept in
term_changes(field,term_sheet_value,final_value). - The FWP fills only what the 424B leaves blank, typically
cusip,isinandissue_price.provenance.cusip.source_urlthen points at the FWP. - If a term sheet was filed before your date range, the Actor looks back
termSheetLookbackDaysin that issuer's filings. - If a term sheet has no final yet, it is emitted with
document_status = "term_sheet". When the final arrives, the issue comes back once more withrecord_status = "final_update".
Data rules
- Identifiers are not invented. A CUSIP/ISIN is taken only from text that labels it as one, and its check digit must validate. A valid check digit proves the string is well-formed, not that it belongs to the bond.
provenance.cusip.supporting_textshows the exact line. - Tri-state booleans.
is_callable,make_whole_provisionandis_convertiblearetrue,falseornull.nullmeans the document does not say. - Original ≠ outstanding.
original_issue_amountis what was offered.amount_outstandingis alwaysnull, because a prospectus cannot know about later reopenings or buybacks. - Preliminary vs final. Preliminary pricing supplements are skipped unless
includePreliminaryis on. - Unattributed values stay null. If one redemption section covers several tranches, call dates and make-whole spreads are left
nullwith a warning instead of being assigned to the wrong tranche.
Natural key, dedupe and schema
natural_key=cusip|accession_number(orNO-CUSIP|accession#tranchewhen no CUSIP is printed). Upsert on it to make re-ingestion idempotent.issue_id=CUSIP:<cusip>when known: the same bond across documents. Use it to collapse the FWP-first row and the laterfinal_updaterow.schema_version="1.0". Fields are only added within 1.x. A rename or meaning change bumps the major version.
Daily use (incremental mode)
Run it on weekday evenings with onlyChanges: true. A run then returns only issues it has not seen before, plus final_update rows. Seen issues are remembered in a named key-value store (stateStoreName, default new-issue-bond-feed-state), which survives across runs. Overlapping daily windows and re-runs do not duplicate rows.
Timing: EDGAR publishes the full daily index in the evening. Run after 18:30 America/New_York. A run earlier in the day only sees filings made until that moment. The default range (previous business day → today) means a Monday run still covers Friday.
Webhook on completion: add an Actor webhook for ACTOR.RUN.SUCCEEDED (and ACTOR.RUN.FAILED, to get alerted), then fetch the run's dataset:
GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json&clean=1
Flattening arrays for CSV: supporting_documents, term_changes and review_reasons are arrays. Use the dataset API's unwind parameter for one row per element:
GET /v2/datasets/{id}/items?format=csv&unwind=term_changesGET /v2/datasets/{id}/items?format=csv&flatten=provenance
Run summary: every run writes RUN_SUMMARY to its default key-value store, with per-day sources, classification breakdown, failures by cause, rows emitted and needing review, and HTTP stats.
Input
| Field | Default | Notes |
|---|---|---|
startDate, endDate | previous business day → today (NY) | max 31 days per run |
onlyChanges | false | use true for daily runs |
issuerContains, ciks, currencies | — | filters |
includeStructuredNotes | false | emits bank structured notes with instrument_kind = structured_note |
includePreliminary | false | |
termSheetLookbackDays | 7 | |
requestsPerSecond | 8 | SEC fair access caps at 10 |
userAgent | Actor default | SEC asks for a name and contact email |
Failure behaviour
A run fails (status FAILED, with the cause in the status message) when:
- no filings exist for the range (weekend or holiday, or EDGAR has not published yet), or
- every filing failed to download or parse. Causes are counted (
rate-limited,blocked,timeout,not-found, …).
A business day where every debt filing was a structured note or a preliminary is a valid empty result. The run succeeds, and RUN_SUMMARY.classification shows why.
Quality and known limits
- Coverage: SEC-registered deals only (424B2, 424B5, FWP). 144A and Reg S deals are not filed on EDGAR and are not included. Non-US markets (e.g. FIRDS/Europe) are not included.
- Review flags: on some days a large share of rows is flagged
needs_review, mostly multi-tranche deals with term changes between the term sheet and the final. Checkreview_reasonsandterm_changesbefore using a row for trading decisions. - Shared redemption sections: call dates and make-whole spreads covering several tranches are left
nullunless a term sheet supplies them. - Step-up coupons report no single
coupon_rate. - Structured notes, when included, are identified but their payoff terms are not modelled.
- Volume: daily volume depends on what is filed that day and has not yet been measured over several days. Multi-tranche documents are under QA, so no tranche count is published yet.
Source and compliance
The only source is public SEC EDGAR data (daily form indices, the live filings feed and the filing archives). Every request is identified with a User-Agent and throttled below SEC's 10 requests/second. No third-party data providers are used.
Pricing
Pay per event plus usage. Event: new-issue, charged once per bond row that passes validation (validated CUSIP, coupon and maturity). Rows flagged needs_review are not charged. Bonds already in your state store are not charged again.
Price: US$0.01 per new-issue event.