Search Entities
curl --request GET \
--url https://api.signa.so/v1/entities \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/entities"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/entities', 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://api.signa.so/v1/entities",
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: Bearer <token>"
],
]);
$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://api.signa.so/v1/entities"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/entities")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/entities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"id": "ent_R3jK9mN2",
"object": "entity",
"name": "Apple Inc.",
"country_code": "US",
"entity_type": "corporation",
"entity_id_type": "resolved",
"publicly_traded": true,
"ticker": "AAPL",
"lei": "HWUPKR0MPOU8FGXBT394",
"trademark_count": 2314,
"active_count": 1988,
"member_count": 3
}
],
"has_more": false,
"pagination": { "cursor": null },
"request_id": "req_xyz789"
}
Entities
Search Entities
Search resolved entities, the cross-office identity over per-office owner records
GET
/
v1
/
entities
Search Entities
curl --request GET \
--url https://api.signa.so/v1/entities \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/entities"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/entities', 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://api.signa.so/v1/entities",
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: Bearer <token>"
],
]);
$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://api.signa.so/v1/entities"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/entities")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/entities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"id": "ent_R3jK9mN2",
"object": "entity",
"name": "Apple Inc.",
"country_code": "US",
"entity_type": "corporation",
"entity_id_type": "resolved",
"publicly_traded": true,
"ticker": "AAPL",
"lei": "HWUPKR0MPOU8FGXBT394",
"trademark_count": 2314,
"active_count": 1988,
"member_count": 3
}
],
"has_more": false,
"pagination": { "cursor": null },
"request_id": "req_xyz789"
}
Overview
Returns a paginated, summary-tier list of resolved entities. An entity is one real-world company linked across offices:Apple Inc (USPTO), Apple Inc (EUIPO), and Apple Inc (CIPO) are one entity, not three owners. Use this to find a company once instead of reconciling per-office owner fragments yourself.
The publicly_traded, ticker, and has_lei filters match on the entity’s aggregated public-company facts (the union of its members’ SEC/GLEIF links), so they catch a company even when only one of its office records carries the ticker.
Entities or owners, which one do I use? Entities are resolved real-world organizations (one company, linked across every office). Start here for company-level questions like “everything this company owns, everywhere.” Owners are the raw office-level record parties, where the same company appears once per office and per name variant. Reach for owners when you need provenance or want to display the exact record as an office filed it.
This list returns resolved (cross-office) entities only. An owner that isn’t linked to any others doesn’t appear here, but you can still look it up directly at Retrieve Entity using its derived id, or find it via Search Owners. If search is temporarily unavailable, the endpoint returns
503 with no fallback list.Query Parameters
string
Name typeahead / relevance search. When present, results default to relevance order.
string
Filter by ISO 3166-1 alpha-2 country code (e.g.
US, GB).string
Filter by entity type (e.g.
corporation, individual).boolean
true returns entities that are publicly listed: either a member owner is matched to an active SEC company with a ticker, or the entity is itself listed or a subsidiary of a listed company. false means no confirmed listing, not confirmed private. Strict true/false only.string
Exact stock ticker (uppercased server-side). Subsidiary-inclusive: matches the entity’s direct tickers (member SEC companies and its own listing) and inherited tickers, so
ticker=NKE returns Nike and its subsidiary entities.boolean
true returns entities with a GLEIF LEI. Strict true/false only.string
Exact GLEIF Legal Entity Identifier.
string
Sort field with optional
- prefix. One of -trademark_count, trademark_count, -name, name, -member_count, member_count. Default: -trademark_count (-relevance when q is set).boolean
default:"false"
When
true, includes a total count in pagination.total_count. The count is exact only up to 10,000; beyond that pagination.total_count_approximate is true.integer
default:"20"
Page size, between 1 and 100.
string
Opaque cursor returned in the previous response’s
pagination.cursor.Response
string
Always
list.object[]
Show Entity summary object
Show Entity summary object
string
Entity ID prefixed with
ent_.string
Always
entity.string
The entity’s display name, chosen from its member records.
string | null
ISO 3166-1 alpha-2 country code.
string | null
Entity type (e.g.
corporation).string
Always
resolved on this list (see the Note above).boolean
Whether the aggregated company set includes an active SEC company with a ticker.
string | null
First SEC ticker across the entity’s members.
string | null
First GLEIF LEI across the entity’s members.
integer
Distinct trademarks across all member owners (co-owned marks counted once).
integer
Count of active trademarks (registered + pending). Always present; 0 when stats not yet computed.
integer
Number of member owners.
boolean
Whether more entities are available.
object
Cursor for the next page (signed).
string
Unique request identifier for support and debugging.
{
"object": "list",
"data": [
{
"id": "ent_R3jK9mN2",
"object": "entity",
"name": "Apple Inc.",
"country_code": "US",
"entity_type": "corporation",
"entity_id_type": "resolved",
"publicly_traded": true,
"ticker": "AAPL",
"lei": "HWUPKR0MPOU8FGXBT394",
"trademark_count": 2314,
"active_count": 1988,
"member_count": 3
}
],
"has_more": false,
"pagination": { "cursor": null },
"request_id": "req_xyz789"
}
Code Examples
curl -G "https://api.signa.so/v1/entities" \
-H "Authorization: Bearer sig_YOUR_KEY" \
--data-urlencode "q=apple" \
--data-urlencode "publicly_traded=true" \
--data-urlencode "limit=20"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const entities = await signa.entities.list({
q: "apple",
publicly_traded: true,
limit: 20,
});
for await (const entity of entities) {
console.log(entity.name, entity.ticker, entity.trademark_count);
}
Errors
| Status | Type | Description |
|---|---|---|
| 400 | validation_error | Invalid sort, unknown filter value, or non-strict boolean |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key lacks the trademarks:read scope |
| 429 | rate_limited | Rate limit exceeded |
| 503 | service_unavailable | Entity search is temporarily unavailable |
Related Endpoints
- Retrieve Entity: full entity detail with members
- Entity Trademarks: marks across all member owners
- Entity Family: GLEIF corporate parent and subsidiaries