Read-only REST over the exact rows the feed publishes: newly funded US operating companies from SEC Form D filings, deduped to one row per offering, refreshed nightly. Same fields, same privacy boundary (issuer city/state only), nothing the feed doesn't show. API access is part of the Max plan; mint keys on your account page.
What the numbers mean
amount is the stated offering target from the filing
itself; null means the filer declared an indefinite amount
(undisclosed on the feed), never zero. Targets are not confirmed closes:
don't sum them as if they were. sector and description
carry a provenance field: "inferred" (classified from the
Form D fields alone) or "verified" (web-checked against the company's own
site). description and website appear only when verified.
Authentication
Pass your key in either header. Keys start with fdr_ and are shown once
at creation; revoke and re-mint anytime from the account page.
Authorization: Bearer fdr_YOUR_KEY
# or
X-API-Key: fdr_YOUR_KEY
GET /v1/filings
The filing list, newest first, cursor-paginated.
| Param | Meaning | Example |
|---|---|---|
| state | comma-separated state codes (+ INTL for non-US) | state=TX,CA |
| sector | one sector key, the values in the feed's sector filter | sector=fintech |
| min_amount | minimum stated target, whole USD; excludes undisclosed raises | min_amount=5000000 |
| since / until | filed-date range, inclusive, YYYY-MM-DD | since=2026-06-01 |
| limit | rows per page, 1–500 (default 100) | limit=200 |
| cursor | the previous response's next_cursor; opaque | - |
curl -H "Authorization: Bearer fdr_YOUR_KEY" \
"https://form-d-radar-paid.nicholas-9e7.workers.dev/v1/filings?state=TX&min_amount=5000000&since=2026-06-01"
Response (next_cursor is null on the last page):
{
"data": [
{
"accession": "0001234567-26-001234",
"company": "Acme Robotics Inc",
"location": "Austin, TX",
"state": "TX",
"filed": "2026-07-10",
"amount": 12000000,
"stage": "early",
"sector": { "value": "deeptech", "provenance": "inferred" },
"description": { "value": "Builds warehouse picking robots.", "provenance": "verified" },
"website": { "value": "https://acmerobotics.example", "provenance": "verified" },
"edgar_url": "https://www.sec.gov/Archives/edgar/data/…"
}
],
"count": 1,
"next_cursor": "MjAyNi0wNy0xMHwwMDAxMjM0NTY3LTI2LTAwMTIzNA"
}
GET /v1/filings/{accession}
One filing by its accession number (the same object shape as the list rows). 404 if the accession isn't in the product universe; the API covers operating-company raises, not funds or amendments-only chains.
curl -H "Authorization: Bearer fdr_YOUR_KEY" \
"https://form-d-radar-paid.nicholas-9e7.workers.dev/v1/filings/0001234567-26-001234"
Rate limits
1,000 requests per key per day, resetting at 00:00 UTC. Every response carries
X-RateLimit-Limit / X-RateLimit-Remaining; going over returns
429 with a Retry-After header (seconds until the reset).
Errors are JSON: { "error": "…" } with the honest status code:
400 bad parameter, 401 bad key, 403 plan without
API access, 404 unknown accession, 429 over the limit.
CSV export
Any filtered feed view exports as a CSV (same columns plus the verified website) straight from the feed's Export CSV button (Pro and Max plans, up to 10,000 rows per export).
POST /match.csv
The bulk list matcher: POST a CSV of company names (first column, up to 5,000; your
session token, Max plan) and get a CSV back: one row per (name, matching offering),
with match_type exact or normalized and a
No row for everything unmatched. Matching is never fuzzy: a name shared by two
companies returns both rows, with the EDGAR link to tell them apart.
Recipe on the integrations page.
MCP
The same data speaks the Model Context Protocol for AI agents:
search_filings and get_filing tools over streamable HTTP at
/mcp, authenticated by the same fdr_ keys against the same
daily budget. Setup on the integrations page.