SEC EDGAR logo

Finance & markets · Live on Apify

SEC Form D Filing Monitor: Search and Track EDGAR Filings

Find public Form D and D/A filings in SEC EDGAR by date or CIK. You get filed offering facts and official SEC links. A monitor mode returns only new filings.

About $1.00 for 1,000 filings$0.001 per filing + $0.0019 per run. Apify bills you, not us.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

stableIdsec-form-d:0001012975-26-000877
accessionNumber0001012975-26-000877
formTypeD

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: 0002152949 in CIKs. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

SEC Form D Filing Monitor finds public Form D and D/A filings in SEC EDGAR. Give it a date range, issuer CIKs or accession numbers. You get one Dataset row per filing with filed offering amounts, issuer facts, amendment links and official SEC URLs. Data comes directly from official SEC EDGAR files; no login, API key or proxy is needed. The quick-start run takes a few seconds and costs about $0.004. A filing does not prove that a funding round closed.

  • snapshot: read a fixed scope once.
  • backfill: read a bounded historical window. Completed quarters use SEC Form D data sets.
  • monitor: save a checkpoint and return new accessions or changed source documents. Keep one checkpointName and one filter scope.

Who uses it

Venture researchers

Review new private offering filings each day or week.

Analysts

Keep amendment history for each filing in your database.

Journalists

Check filed offering facts with links to the SEC source.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Accepted filing or change$0.001 (from $0.0007 on paid Apify plans)One unique validated SEC Form D or D/A filing or same-accession correction saved to the Dataset.
Start fee$0.0019Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.

Examples

  • One filing: about $0.0029.
  • 1,000 filings: about $1.00.
  • Every day 100 filings, for 30 days: about $3.06 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 4,900 filings.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Does a Form D mean the round closed?

No. A filing shows filed facts. It does not prove money was raised.

Can I search by company name?

Not by name. Search by date, CIK or accession number.

Does it include investor contacts?

No. It returns filing facts and SEC links, not contact lists.

Do I need an SEC account?

No. It reads public EDGAR data.

Is the filed amount sold verified funding?

No. It is what the filer disclosed. An amendment is not a second confirmed funding round.

Can I find every issuer by company name?

No. issuerNameContains filters already discovered primary and co-issuer names. Use an exact ten-digit CIK for a known issuer.

What can be missing?

Source fields can be null, absent in a quarterly table or unparseable. An indefinite amount is not zero. durationYears is currently reserved and stays null.

Will a monitor remove a filing if the source is partial?

No. It retains the previous checkpoint and does not close or delete filings. It emits new accessions and detected document corrections only.

Are empty runs free?

No. They have no filing charge, but the standard start event still applies.

Does it replace the SEC filing?

No. Read the official link before relying on a field. Coverage depends on the selected source and the run bounds.

Details

Step by step on Apify
  1. Open the Actor Input tab. The new form has a small CIK snapshot example. No SEC login or source API key is needed.
  2. Run the example and open the Dataset. It includes one D and one D/A filing for the same issuer.
  3. Open OUTPUT or RUN_SUMMARY to check coverage and warnings.
  4. Replace the CIK and dates for your own search. Set the platform total charge cap before a run.
Use cases
TaskInputKey fieldsNext step
Review issuer disclosuresdiscovery=cik, ciks, datesissuer.primary, offering, SEC linksExport and inspect the source
Keep amendment historymode=monitor, checkpointNameformType, amendment.previousAccessionNumberJoin on accession, retain earlier rows
Build a date exportdiscovery=market, bounded datesfiling.filedDate, stableId, industryCheck summary coverage before using the export
Filter filed valuesminAmountSoldUsd, exemptionCodesfiledAmountSoldUsd, exemptionCodesCompare filed facts, not verified cash
Tips for better results
  • Use monitor mode with one state key for daily checks.
  • Check the coverage status in the summary before you trust an export.
  • Keep date windows to 366 days or less per run.
Limits and good to know

See SEC Form D data sets and SEC access guidance. A cap or missing source never proves complete coverage. Split large requests into smaller date windows.

  • Maximum 366 inclusive calendar days per run; the end date must be before today in UTC
  • Maximum 100 CIKs or accessions, 1,000 rows, 20,000 scanned candidates and 1,000 requests. Defaults are 100 rows, 5,000 candidates and 200 requests
  • Internal source deadline defaults to 240 seconds, with an input maximum of 900. A larger platform timeout does not expand it. A shorter platform timeout reserves time to save the summary
  • Direct SEC HTTPS only: one declared contact User-Agent, 2 requests/second globally, two in-flight requests and at most two retries for HTTP 408/425/429/5xx. A 403 is not retried
  • Source response bounds: 32 MiB ZIP, 16 MiB JSON and 4 MiB XML/text; at most 128 MiB decompressed ZIP data. Only the recognized SEC HTML doctype is stripped; entities and other DTDs are rejected without fetching them
  • CIK additional history follows at most 20 files. Quarterly packages can lag current filings. Daily indexes can be missing, blocked or later corrected. No real-time or full-corpus promise

Troubleshooting

SymptomCheckAction
No rowsRead OUTPUT.status, dates and filtersA clean NO_FILINGS is different from a source error; widen only a valid search
Repeat monitor has no rowsNO_NEW_FILINGS and checkpoint stateUse snapshot to export the same notices again
SEC denied accessBLOCKED or HTTP 403Retry later. Do not use identity or IP rotation to bypass SEC controls
Rate limit or transient failureSource warnings and retriesRetry the same bounded scope later
Partial or capped resultscovered.complete, caps, request countUse smaller date windows; a monitor checkpoint has not advanced
Missing exact accessionIts archive CIK may be an agent CIKUse known issuer CIK and dates; follow the official filing link
Source schema changedTECHNICAL_ERROR and run IDReport it through Issues; do not treat it as an empty search
Resource errorPlatform memory and timeout, summary warningUse valid platform resources; increasing timeout does not expand internal work
Recent updates
  1. Update · 21 October 2026

    • Input stateKey renamed to checkpointName (Apify quality flag "mark sensitive fields isSecret" fired on the name; the value is a non-secret checkpoint name). stateKey stays an API alias; equal values allowed, differing values INVALID_INPUT. Stored state record keeps stateKey, scope hash unchanged, so existing checkpoints continue.
  2. Update · 21 October 2026

    • secAcceptanceUtc: archive index "Accepted" (America/New_York wall time, DST-aware) → ISO UTC; submissions ISO values canonicalized; unparseable → null. Fixes mixed formats and monitor ordering (src/state.ts sortFilings). Verified live: index 17:26:42 ↔ submissions 21:26:42Z for 0001012975-26-000877.
    • README tier table names Platinum/Diamond.
  3. Update · 21 October 2026

    • Store tier discounts on the row event (1.00/0.90/0.80/0.70 per 1,000); start event flat $0.0019.
    • Input schema: section captions, enum titles, stringList editors, richer descriptions; contract unchanged.
    • Dataset schema: field descriptions and overview table view; output schema adds the overview link.

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "stableId": "sec-form-d:0001012975-26-000877",
  "accessionNumber": "0001012975-26-000877",
  "formType": "D",
  "filing": {
    "filedDate": "2026-09-10",
    "acceptanceDateTime": "2026-09-10T21:26:42.000Z",
    "submissionType": "D",
    "accessionCik": "0001012975",
    "primaryDocument": "primary_doc.xml",
    "archiveIndexUrl": "https://www.sec.gov/Archives/edgar/data/2152949/000101297526000877/0001012975-26-000877-index.htm",
    "sourceDocumentUrl": "https://www.sec.gov/Archives/edgar/data/2152949/000101297526000877/primary_doc.xml"
  },
  "issuer": {
    "primary": {
      "cik": "0002152949",
      "name": "Aspira Fund I (D) AB",
      "entityType": "Other",
      "jurisdictionOfIncorporation": "SWEDEN",
      "city": "STOCKHOLM",
      "stateOrCountry": "V7",
      "stateOrCountryDescription": "SWEDEN",
      "postalCode": "111 44"
    },
    "coIssuers": []
  },
  "industry": {
    "groupType": "Pooled Investment Fund",
    "groupDescription": null,
    "fundType": "Private Equity Fund",
    "revenueRange": "Decline to Disclose",
    "netAssetValueRange": null
  },
  "offering": {
    "firstSaleDate": "2026-08-18",
    "firstSaleYetToOccur": null,
    "durationYears": null,
    "moreThanOneYear": false,
    "securityTypes": [
      "POOLED_INVESTMENT_FUND"
    ],
    "isEquity": null,
    "isDebt": null,
    "isPooledInvestmentFund": true,
    "exemptionCodes": [
      "06b",
      "3C",
      "3C.7"
    ],
    "minimumInvestmentUsd": 0,
    "totalOfferingAmountUsd": 312741000,
    "filedAmountSoldUsd": 40540500,
    "filedTotalRemainingAmountUsd": 272200500,
    "totalOfferingIndefinite": false,
    "amountSoldIndefinite": false,
    "remainingAmountIndefinite": false,
    "fundingVerificationStatus": "FILED_VALUE_NOT_VERIFIED",
    "salesAmountClarification": "Total Offering Amount reflects interests offered and sold by the Issuer and its parallel funds to US and non-US persons. Total Offering Amount and Total Amount Sold converted from EUR to USD on August 18, 2026 at a rate of Euro 1 to USD 1.1583.",
    "useOfProceeds": {
      "grossProceedsUsedUsd": 0
    }
  }
}

Use it from code

Actor ID: cliqtomedia/sec-edgar-form-d-funding-monitor. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/sec-edgar-form-d-funding-monitor").call(run_input={
    "mode": "snapshot",
    "discovery": "cik"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~sec-edgar-form-d-funding-monitor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "snapshot", "discovery": "cik"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/sec-edgar-form-d-funding-monitor")
result = tool.invoke({"run_input": {"mode": "snapshot", "discovery": "cik"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (16)
FieldTypeMeaning
recordTypestringAlways FORM_D_FILING.
eventTypestringFILING_SAVED for a new D, AMENDMENT_SAVED for a new D/A, SOURCE_CORRECTION_UPDATED when a monitor sees a changed source document for a known accession.
stableIdstringStable row ID: sec-form-d:<accessionNumber>. A correction keeps the same ID.
accessionNumberstringSEC accession number with dashes.
formTypestringD for a new notice, D/A for an amendment.
isAmendmentbooleanTrue for D/A filings.
filingobjectSEC filing date, acceptance time, accession CIK and official archive and document URLs.
issuerobjectPrimary issuer and co-issuers as filed: CIK, name, entity type, jurisdiction, city, state or country code and description.
industryobjectFiled industry group, fund type, revenue range and net asset value range.
offeringobjectFiled offering facts: first sale date, security types, exemption codes, minimum investment, total offering amount, filed amount sold and remaining amount in USD. Filed values are not verified funding.
investorsobjectFiled accredited and non-accredited investor counts.
salesCompensationobjectFiled commissions, finder fees and recipient names and roles. Empty when includeSalesCompensation is false.
relatedPersonsarrayFiled related-person names and relationships, no addresses or enrichment. Empty when includeRelatedPersons is false.
amendmentobjectFor D/A filings: the filed previous accession number and link status.
provenanceobjectSource kind, SEC index and document URLs, retrieval time, source fingerprint and SEC non-affiliation notice.
calculatedobjectConsistency check of offering minus sold against filed remaining amount.
Input settings (23)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Run modemodestring"snapshot"
Discovery routediscoverystring"cik"
Start datestartDatestring"2026-09-01"
End dateendDatestring"2026-09-30"
Monitor days backdaysBackinteger7
CIKsciksarray["0002152949"]
Accession numbersaccessionNumbersarray[]
Issuer name containsissuerNameContainsstring
States or countriesstatesOrCountriesarray[]
Industry groupsindustryGroupsarray[]
Exemption codesexemptionCodesarray[]
Minimum total offering amountminTotalOfferingAmountUsdnumber
Minimum filed amount soldminAmountSoldUsdnumber
Include related personsincludeRelatedPersonsbooleanfalse
Include sales compensationincludeSalesCompensationbooleanfalse
Checkpoint namecheckpointNamestring
State actionstateActionstring"USE"
Monitor overlap daysoverlapDaysinteger7
Maximum accepted rowsmaxResultsinteger10
Maximum candidates scannedmaxFilingsScannedinteger100
Maximum SEC requestsmaxRequestsinteger20
Maximum runtime secondsmaxRuntimeSecondsinteger240
Maximum filing-row charge USDmaxChargeUsdnumber0.01

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure