Home / Guides / Capital raising
Capital raising

Analyze Regulation A+ offerings from Form 1-A

Summarize Reg A+ offering statements by tier, security type and size using the structured Form 1-A data in the SecFeed API.

Regulation A lets companies raise money from the public with a lighter registration process. Tier 1 offerings are capped at $20 million in 12 months and are reviewed by the states. Tier 2 offerings are capped at $75 million and preempt state review, but need audited financials and ongoing reports. The offering statement is Form 1-A, and its first part is structured XML.

/v1/reg-a returns the whole family (1-A, 1-A/A, 1-K annual reports, 1-SA semiannual reports, 1-Z exit reports) with the XML as JSON under data.

The code

import os
from collections import Counter

import requests

BASE = "https://secfeedapi.com"
HEADERS = {"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"}

filings, start = [], 0
while True:
    r = requests.get(f"{BASE}/v1/reg-a", headers=HEADERS, timeout=120, params={
        "formType": "1-A", "startDate": "2026-04-01", "endDate": "2026-09-30", "size": 100, "from": start})
    r.raise_for_status()
    page = r.json()["filings"]
    filings += page
    if len(page) < 100:
        break
    start += 100
print(len(filings), "original Form 1-A offering statements, April to September 2026")


def num(x):
    try:
        return float(str(x).replace(",", "").replace("$", ""))
    except ValueError:
        return 0.0


rows = []
for f in filings:
    s = f["data"]["primary_doc"]["formData"].get("summaryInfo") or {}
    rows.append({
        "issuer": f["companyName"],
        "tier": s.get("indicateTier1Tier2Offering", ""),
        "types": s.get("securitiesOfferedTypes") or [],
        "price": num(s.get("pricePerSecurity")),
        "total": num(s.get("totalAggregateOffering")),
        "audited": s.get("financialStatementAuditStatus", ""),
        "best_efforts": s.get("offeringBestEffortsFlag") == "Y",
    })

print("\nBy tier:")
for tier, n in Counter(r["tier"] for r in rows).most_common():
    raised = sum(r["total"] for r in rows if r["tier"] == tier)
    print(f"  {tier or 'not stated':10} {n:4} filings   ${raised:,.0f} sought in total")
print("\nSecurities offered:")
# one string, or a list when the offering includes several kinds of securities
for kind, n in Counter(t for r in rows for t in ([r["types"]] if isinstance(r["types"], str) else r["types"])).most_common(5):
    print(f"  {n:4}  {kind}")
print(f"\nBest efforts: {sum(r['best_efforts'] for r in rows)} of {len(rows)}")
print("\nLargest offerings by total aggregate amount:")
for r in sorted(rows, key=lambda r: -r["total"])[:8]:
    print(f"  ${r['total']:>14,.0f}  {r['tier']:6} ${r['price']:>8,.2f}  {r['issuer'][:44]}")

formData.summaryInfo holds the offering summary: the tier, whether the financials are audited, the type of securities, price per security, the issuer's aggregate offering, any amount sold by selling securityholders, and the total aggregate offering. securitiesOfferedTypes is a string when there is one kind of security and a list when there are several, so the script handles both.

Output

Run on 2026-10-13 against original 1-A filings from April through September 2026.

91 original Form 1-A offering statements, April to September 2026

By tier:
  Tier2        66 filings   $2,525,810,484 sought in total
  Tier1        25 filings   $158,022,788 sought in total

Securities offered:
    83  Equity (common or preferred stock)
     6  Debt
     3  Option, warrant or other right to acquire another security
     2  Security to be acquired upon exercise of option, warrant or other right to acquire security
     2  Other(describe)

Best efforts: 79 of 91

Largest offerings by total aggregate amount:
  $    75,000,000  Tier2  $  100.00  XChange Ventures, LLC
  $    75,000,000  Tier2  $   15.00  GOA Therapeutics Corp
  $    75,000,000  Tier2  $    1.25  Limitless X Holdings Inc.
  $    75,000,000  Tier2  $    1.00  OBSIDIAN PRIME INC
  $    75,000,000  Tier2  $   20.00  NOYACK Logistics Income REIT II, Inc.
  $    75,000,000  Tier2  $   10.00  Tokenova Worldwide, Inc.
  $    75,000,000  Tier2  $    1.00  SIERRA INTERNATIONAL NETWORK INC
  $    75,000,000  Tier2  $  500.00  Connect Invest IIII, LLC

Reading the result

  • Tier 2 dominates by both count and size, and eight offerings sit at the $75 million Tier 2 cap.
  • Most offerings are best efforts: no underwriter commits to buy the securities.
  • The totals are amounts sought in the offering statement, not money raised. Sales are reported later on Form 1-K and, for an exit, Form 1-Z.

Variations

  • Qualified offerings only: the SEC qualifies a 1-A before sales begin. Search the filing index for formType:"QUALIF" with the issuer's CIK to see when it happened.
  • Outcomes: fetch formType=1-Z to see how much was actually sold when an offering ended.
  • Amendments: most 1-As are amended before qualification. Use formType=1-A/A and keep the latest per issuer.

Next steps

More capital raising guides

Run this guide with your own key

500 free API calls a month. Every example on this page works on the free plan.

Get free API key →