Form D API

The Form D API offers a powerful interface for accessing and searching the comprehensive SEC EDGAR database, allowing users to retrieve the latest information on security offerings. The API transforms structured XML data from Form D filings into JSON format, providing a user-friendly and easily searchable dataset. Real-time updates ensure that new Form D filings are promptly added to the corpus.

Dataset Size: All Form D offerings filed since 2008.

Data Update Frequency: Less than 300 milliseconds.

POST https://api.secfilingdata.com/v1/filings/formd/

Authentication

All requests require an API token in the Authorization header.

Authorization: AUTH_TOKEN

Request Body Parameters

Parameter Type Required Description
query_type string Required Search type. Supported:
  • formType
  • cik
query_value string Required Search value based on query_type
from integer Optional Pagination starting offset
size integer Optional Number of records to return (Maximum:100)
sort_order string Optional ASC or DESC

Request Example

{
  "query_type": "formType",
  "query_value": "D",
  "from": 0,
  "size": 10,
  "sort_order": "DESC"
}

Response

<?php

$api_key = 'YOUR_API_TOKEN';
$url = "https://api.secfilingdata.com/v1/filings/formd/";

$postData = [
    "query_type" => "formType",
    "query_value" => "D",
    "from" => 0,
    "size" => 10,
    "sort_order" => "DESC"
];

$ch = curl_init($url);

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($postData),
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "Authorization: $api_key"
    ]
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
import requests

url = "https://api.secfilingdata.com/v1/filings/formd/"

headers = {
    "Content-Type": "application/json",
    "Authorization": "YOUR_API_TOKEN"
}

payload = {
    "query_type": "formType",
    "query_value": "D",
    "from": 0,
    "size": 10,
    "sort_order": "DESC"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = "https://api.secfilingdata.com/v1/filings/formd/";

const payload = {
  query_type: "formType",
  query_value: "D",
  from: 0,
  size: 10,
  sort_order: "DESC"
};

fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "YOUR_API_TOKEN"
  },
  body: JSON.stringify(payload)
})
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));
const axios = require("axios");

const url = "https://api.secfilingdata.com/v1/filings/formd/";

const payload = {
  query_type: "formType",
  query_value: "D",
  from: 0,
  size: 10,
  sort_order: "DESC"
};

axios.post(url, payload, {
  headers: {
    "Content-Type": "application/json",
    "Authorization": "YOUR_API_TOKEN"
  }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
curl -X POST "https://api.secfilingdata.com/v1/filings/formd/" \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_API_TOKEN" \
  -d '{
    "query_type": "formType",
    "query_value": "D",
    "from": 0,
    "size": 10,
    "sort_order": "DESC"
  }'
package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {

    url := "https://api.secfilingdata.com/v1/filings/extractor/"

    payload := []byte(`{
    'url'=>'https://www.sec.gov/Archives/edgar/data/1760965/000176096526000030/ktb-20260404.htm',
    'formtype'=>'10-Q',
    'item'=>'2'
    }`)

    req, _ := http.NewRequest(
        "POST",
        url,
        bytes.NewBuffer(payload),
    )

    req.Header.Set(
        "Content-Type",package main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.secfilingdata.com/v1/filings/formd/"

    jsonData := []byte(`{
        "query_type": "formType",
        "query_value": "D",
        "from": 0,
        "size": 10,
        "sort_order": "DESC"
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "YOUR_API_TOKEN")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
        "application/jsopackage main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.secfilingdata.com/v1/filings/formd/"

    jsonData := []byte(`{
        "query_type": "formType",
        "query_value": "D",
        "from": 0,
        "size": 10,
        "sort_order": "DESC"
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "YOUR_API_TOKEN")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}n",
    )package main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.secfilingdata.com/v1/filings/formd/"

    jsonData := []byte(`{
        "query_type": "formType",
        "query_value": "D",
        "from": 0,
        "size": 10,
        "sort_order": "DESC"
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "YOUR_API_TOKEN")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
package main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.secfilingdata.com/v1/filings/formd/"

    jsonData := []byte(`{
        "query_type": "formType",
        "query_value": "D",
        "from": 0,
        "size": 10,
        "sort_order": "DESC"
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "YOUR_API_TOKEN")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
    req.Header.Set(package main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.secfilingdata.com/v1/filings/formd/"

    jsonData := []byte(`{
        "query_type": "formType",
        "query_value": "D",
        "from": 0,
        "size": 10,
        "sort_order": "DESC"
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "YOUR_API_TOKEN")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
        "Authorization",package main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.secfilingdata.com/v1/filings/formd/"

    jsonData := []byte(`{
        "query_type": "formType",
        "query_value": "D",
        "from": 0,
        "size": 10,
        "sort_order": "DESC"
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "YOUR_API_TOKEN")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
        "AUTH_TOKEN",package main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.secfilingdata.com/v1/filings/formd/"

    jsonData := []byte(`{
        "query_type": "formType",
        "query_value": "D",
        "from": 0,
        "size": 10,
        "sort_order": "DESC"
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "YOUR_API_TOKEN")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
    )package main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.secfilingdata.com/v1/filings/formd/"

    jsonData := []byte(`{
        "query_type": "formType",
        "query_value": "D",
        "from": 0,
        "size": 10,
        "sort_order": "DESC"
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "YOUR_API_TOKEN")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
package main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    url := "https://api.secfilingdata.com/v1/filings/formd/"

    jsonData := []byte(`{
        "query_type": "formType",
        "query_value": "D",
        "from": 0,
        "size": 10,
        "sort_order": "DESC"
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "YOUR_API_TOKEN")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import okhttp3.*;

public class Main {
    public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient();

        String json = "{"
            + "\"query_type\":\"formType\","
            + "\"query_value\":\"D\","
            + "\"from\":0,"
            + "\"size\":10,"
            + "\"sort_order\":\"DESC\""
            + "}";

        RequestBody body = RequestBody.create(
            json,
            MediaType.parse("application/json")
        );

        Request request = new Request.Builder()
            .url("https://api.secfilingdata.com/v1/filings/formd/")
            .addHeader("Content-Type", "application/json")
            .addHeader("Authorization", "YOUR_API_TOKEN")
            .post(body)
            .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var client = new HttpClient();

        client.DefaultRequestHeaders.Add("Authorization", "YOUR_API_TOKEN");

        var json = @"{
            ""query_type"": ""formType"",
            ""query_value"": ""D"",
            ""from"": 0,
            ""size"": 10,
            ""sort_order"": ""DESC""
        }";

        var content = new StringContent(json, Encoding.UTF8, "application/json");

        var response = await client.PostAsync(
            "https://api.secfilingdata.com/v1/filings/formd/",
            content
        );

        string result = await response.Content.ReadAsStringAsync();
        Console.WriteLine(result);
    }
}
require 'net/http'
require 'json'
require 'uri'

uri = URI("https://api.secfilingdata.com/v1/filings/formd/")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path, {
  "Content-Type" => "application/json",
  "Authorization" => "YOUR_API_TOKEN"
})

request.body = {
  query_type: "formType",
  query_value: "D",
  from: 0,
  size: 10,
  sort_order: "DESC"
}.to_json

response = http.request(request)
puts response.body

Response Example

[
  {
    "offerings": [
      {
        "id": "17935143",
        "accessionNo": "0001476977-10-000001",
        "filedAt": "2010-03-18",
        "submissionType": "D",
        "primaryIssuer": {
          "cik": "0001452583",
          "name": "Crownbutte Wind Power, Inc.",
          "address": {
            "street1": "111 5TH AVENUE NE",
            "city": "MANDAN",
            "state": "ND",
            "issuerstateOrCountryDescription": "",
            "zipCode": "58554"
          },
          "issuerPhoneNumber": "701-667-2073",
          "jurisdictionOfInc": "NEVADA",
          "issuerPreviousNameList": "None",
          "edgarPreviousNameList": "None",
          "entityType": "Corporation"
        }
      }
    ],
    "relatedPersonsList": {
      "firstName": "Timothy",
      "lastName": "Simons",
      "address": {
        "street1": "111 Fifth Avenue NE",
        "city": "Mandan",
        "stateOrCountry": "ND",
        "stateOrCountryDescription": "",
        "zipCode": "58554"
      },
      "relationshipList": {
        "relationship": {
          "0": "Director"
        }
      },
      "relationshipClarification": ""
    },
    "offeringData": {
      "industryGroup": "Other Energy",
      "issuerSize": "No Revenues",
      "federalExemptionsExclusions": "",
      "typeOfFiling": {
        "newOrAmendment": {
          "isAmendment": false
        },
        "dateOfFirstSale": "2010-03-12"
      },
      "durationOfOffering": {
        "moreThanOneYear": false
      },
      "typesOfSecuritiesOffered": {
        "isEquityType": true
      },
      "businessCombinationTransaction": {
        "isBusinessCombinationTransaction": false
      },
      "minimumInvestmentAccepted": 0,
      "offeringSalesAmounts": {
        "totalOfferingAmount": 700000,
        "totalAmountSold": 195000,
        "totalRemaining": 505000
      },
      "investors": {
        "hasNonAccreditedInvestors": false,
        "totalNumberAlreadyInvested": 3
      },
      "salesCommissionsFindersFees": {
        "salesCommissions": {
          "dollarAmount": 0
        },
        "findersFees": {
          "dollarAmount": 0
        }
      },
      "useOfProceeds": {
        "grossProceedsUsed": {
          "dollarAmount": 0
        }
      },
      "signatureBlock": {
        "authorizedRepresentative": false,
        "signature": {
          "issuerName": "Crownbutte Wind Power, Inc.",
          "signatureName": "/s/ Timothy Smons",
          "nameOfSigner": "Timothy Simons",
          "signatureTitle": "CEO & President",
          "signatureDate": "2010-03-18"
        }
      }
    }
  }
]

Important:
Requests must use: Content-Type:application/json
POST body must be JSON encoded using:json_encode($postData)

HTTP Status Codes

Status Code Description
200 Successful request
204 No results found
400 Invalid request parameters
401 Unauthorized / Invalid token
500 Internal server error