curl --request GET \
--url https://sacra.com/api/v1/companies/ \
--header 'Authorization: <api-key>'import requests
url = "https://sacra.com/api/v1/companies/"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://sacra.com/api/v1/companies/', 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://sacra.com/api/v1/companies/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <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://sacra.com/api/v1/companies/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://sacra.com/api/v1/companies/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sacra.com/api/v1/companies/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"companies": [
{
"id": 596,
"domain": "rallyon.com",
"name": "Rally"
},
{
"id": 416,
"domain": "contentful.com",
"name": "Contentful"
}
]
}List companies - Companies API
Discover Sacra’s company coverage, retrieve one company, or find companies with recently updated data.
curl --request GET \
--url https://sacra.com/api/v1/companies/ \
--header 'Authorization: <api-key>'import requests
url = "https://sacra.com/api/v1/companies/"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://sacra.com/api/v1/companies/', 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://sacra.com/api/v1/companies/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <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://sacra.com/api/v1/companies/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://sacra.com/api/v1/companies/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sacra.com/api/v1/companies/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"companies": [
{
"id": 596,
"domain": "rallyon.com",
"name": "Rally"
},
{
"id": 416,
"domain": "contentful.com",
"name": "Contentful"
}
]
}| Goal | Request | Response |
|---|---|---|
| List Sacra’s company coverage | Omit all query parameters | A companies collection with each company’s ID, name, and domain |
| Retrieve one company | Pass company_domain, id, or company_slug | A full company detail object |
| Find recently updated companies | Pass mode=sync and an update window | A paginated companies collection with update metadata |
company object rather than filtering the collection.company_domain, id, or company_slug. Do not
combine a company identifier with mode=sync.List company coverage
Call the endpoint without query parameters to return all active companies in Sacra’s coverage universe. The lightweight response is useful for populating a company picker or building a local mapping between company IDs and domains.curl -H "Authorization: Token YOUR_API_KEY" \
"https://sacra.com/api/v1/companies/"
Find recently updated companies
Setmode=sync to find companies whose selected data sources changed during an
ISO 8601 time window. Each result includes updated_at and updated_sources, so
you can decide which company or downstream resource to refresh. A sync window
can span no more than 14 days.
Use sources to monitor one or more comma-separated sources, such as
documents,news,metrics. Use sources=all to include every supported source.
curl -H "Authorization: Token YOUR_API_KEY" \
"https://sacra.com/api/v1/companies/?mode=sync&updated_at_gte=2026-08-11T00:00:00Z&updated_at_lte=2026-08-12T00:00:00Z&sources=all"
pagination.next_link until it is null to retrieve every
company in the window. The link preserves the time window, source filters, page
size, and cursor for the next request.Authorizations
Authenticate using one of two formats:
- Organization/user token:
Token <your-token> - Stytch JWT:
Bearer <your-jwt>
Query Parameters
Company domain to look up (for example, stripe.com). Returns the full detail payload. Cannot be combined with mode=sync.
Company slug to look up (for example, stripe). Returns the full detail payload. Cannot be combined with mode=sync.
Company ID to look up. Returns the full detail payload. Cannot be combined with mode=sync.
Set to sync to use paginated sync mode.
sync Cursor for the next page. Pass a company ID or start. Only for mode=sync. Cannot be combined with page_before.
Cursor for the previous page. Pass a company ID or end. Only for mode=sync. Cannot be combined with page_after.
Results per page, 1-100. Default 30. Only applies to mode=sync.
Source filter for mode=sync. Accepts documents, news, events, datasets, metrics (including last-valuation projections), filings, listings, or all.
ISO 8601 datetime. Required when mode=sync. Inclusive lower bound for the updated_at window.
ISO 8601 datetime. Optional upper bound for mode=sync (defaults to now). The window must be 14 days or less.