curl --request GET \
--url https://astreus.ai/api/v1/people \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/people"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://astreus.ai/api/v1/people', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://astreus.ai/api/v1/people",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://astreus.ai/api/v1/people"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://astreus.ai/api/v1/people")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/people")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"rows": [
{
"personCik": "0001588670",
"name": "Colette Kress",
"personType": "executive",
"secName": "Kress Colette",
"photoUrl": "/api/v1/people/0001588670/photo",
"primaryTicker": "NVDA",
"primaryCompanyName": "NVIDIA CORP",
"primaryTitle": "EVP & Chief Financial Officer",
"isOfficer": true,
"isDirector": false,
"isTenPercentOwner": false,
"companyCount": 1,
"tickers": [
"NVDA"
],
"firstFilingDate": "2013-10-09",
"lastFilingDate": "2026-09-18",
"isCurrent": true,
"sharesHeld": 4775733,
"positions": [
{
"ticker": "NVDA",
"shares": 4775733
}
],
"predictions": 78,
"verified": 78,
"hits": 40,
"hitRate": 0.5128205128205128,
"sufficient": true,
"avgAbsError": 0.039257602564102566,
"calls": 27,
"observations": 4226
},
{
"personCik": "0001844763",
"name": "Andre Schulten",
"personType": "executive",
"secName": "Schulten Andre",
"photoUrl": "/api/v1/people/0001844763/photo",
"primaryTicker": "PG",
"primaryCompanyName": "PROCTER & GAMBLE Co",
"primaryTitle": "Chief Financial Officer",
"isOfficer": true,
"isDirector": true,
"isTenPercentOwner": false,
"companyCount": 2,
"tickers": [
"PG",
"ETN"
],
"firstFilingDate": "2021-03-02",
"lastFilingDate": "2026-10-06",
"isCurrent": true,
"sharesHeld": 73222.4287,
"positions": [
{
"ticker": "PG",
"shares": 73222.4287
}
],
"predictions": 0,
"verified": 0,
"hits": 0,
"hitRate": null,
"sufficient": false,
"avgAbsError": null,
"calls": 22,
"observations": 5157
}
],
"total": 24240,
"offset": 0,
"limit": 2,
"hasMore": true,
"nextOffset": 2,
"asOf": "2026-11-01T12:46:09.448Z",
"universe": {
"people": 24240,
"officers": 15997,
"directors": 11043,
"institutions": 2969,
"withScorecard": 20,
"speakers": 414,
"government": 3213,
"centralBank": 265
}
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}People registry
People registry: corporate insiders (Section 16), government officeholders and central bankers. Paged: the body carries rows, total, limit, offset, hasMore and nextOffset (null on the last page), and for the corporate segment asOf (when the registry rollup was read; it is cached for ten minutes). Every value is checked: a bad one is a 400 naming it.
curl --request GET \
--url https://astreus.ai/api/v1/people \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/people"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://astreus.ai/api/v1/people', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://astreus.ai/api/v1/people",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://astreus.ai/api/v1/people"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://astreus.ai/api/v1/people")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/people")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"rows": [
{
"personCik": "0001588670",
"name": "Colette Kress",
"personType": "executive",
"secName": "Kress Colette",
"photoUrl": "/api/v1/people/0001588670/photo",
"primaryTicker": "NVDA",
"primaryCompanyName": "NVIDIA CORP",
"primaryTitle": "EVP & Chief Financial Officer",
"isOfficer": true,
"isDirector": false,
"isTenPercentOwner": false,
"companyCount": 1,
"tickers": [
"NVDA"
],
"firstFilingDate": "2013-10-09",
"lastFilingDate": "2026-09-18",
"isCurrent": true,
"sharesHeld": 4775733,
"positions": [
{
"ticker": "NVDA",
"shares": 4775733
}
],
"predictions": 78,
"verified": 78,
"hits": 40,
"hitRate": 0.5128205128205128,
"sufficient": true,
"avgAbsError": 0.039257602564102566,
"calls": 27,
"observations": 4226
},
{
"personCik": "0001844763",
"name": "Andre Schulten",
"personType": "executive",
"secName": "Schulten Andre",
"photoUrl": "/api/v1/people/0001844763/photo",
"primaryTicker": "PG",
"primaryCompanyName": "PROCTER & GAMBLE Co",
"primaryTitle": "Chief Financial Officer",
"isOfficer": true,
"isDirector": true,
"isTenPercentOwner": false,
"companyCount": 2,
"tickers": [
"PG",
"ETN"
],
"firstFilingDate": "2021-03-02",
"lastFilingDate": "2026-10-06",
"isCurrent": true,
"sharesHeld": 73222.4287,
"positions": [
{
"ticker": "PG",
"shares": 73222.4287
}
],
"predictions": 0,
"verified": 0,
"hits": 0,
"hitRate": null,
"sufficient": false,
"avgAbsError": null,
"calls": 22,
"observations": 5157
}
],
"total": 24240,
"offset": 0,
"limit": 2,
"hasMore": true,
"nextOffset": 2,
"asOf": "2026-11-01T12:46:09.448Z",
"universe": {
"people": 24240,
"officers": 15997,
"directors": 11043,
"institutions": 2969,
"withScorecard": 20,
"speakers": 414,
"government": 3213,
"centralBank": 265
}
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}Authorizations
Astreus API key (pk_live_...), created on the Developers page in the terminal. Also accepted as Authorization: Bearer pk_live_....
Query Parameters
Name or ticker contains (case-insensitive); at most 200 characters.
Population.
corporate, government, central_bank People with a seat at this company (exact ticker).
Subset of corporate filers: people (humans only), officers, directors, institutions. Ignored for segment=government|central_bank.
people, officers, directors, institutions 1 = only people with a seat filing in the last two years (officials: in office now).
0, 1, true, false Order; every order ends on the CIK, so offset paging is stable. Corporate segment only (officials are listed in their institution's chart order).
featured, recent, name, companies, accuracy Page size, 1–200.
1 <= x <= 200Rows to skip: the previous nextOffset.
x >= 00 leaves out the universe block (registry-wide counts; null when left out).
1, 0, true, false Response
OK