Retrieve Owner
curl --request GET \
--url https://api.signa.so/v1/owners/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/owners/{id}"
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/owners/{id}', 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/owners/{id}",
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/owners/{id}"
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/owners/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/owners/{id}")
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{
"id": "own_R3jK9mN2",
"object": "owner",
"name": "Apple Inc.",
"canonical_name": "APPLE INC",
"name_original_script": null,
"country_code": "US",
"entity_type": "corporation",
"address": {
"lines": ["One Apple Park Way"],
"city": "Cupertino",
"state": "CA",
"postal_code": "95014",
"country_code": "US"
},
"entity_id": "ent_R3jK9mN2",
"entity_id_type": "resolved",
"publicly_traded": true,
"ticker": "AAPL",
"lei": "HWUPKR0MPOU8FGXBT394",
"has_lei": true,
"companies_source": "entity",
"aliases": [
{
"name": "Apple Computer Inc.",
"type": "former_name",
"source_office": "US"
},
{
"name": "Apple Computer, Inc.",
"type": "former_name",
"source_office": "US"
}
],
"identifiers": [
{
"type": "sec_cik",
"value": "320193"
}
],
"companies": [
{
"source": "sec",
"source_id": "0000320193",
"legal_name": "Apple Inc.",
"ticker": "AAPL",
"exchange": "NASDAQ",
"lei": null,
"entity_status": "active"
},
{
"source": "gleif",
"source_id": "HWUPKR0MPOU8FGXBT394",
"legal_name": "APPLE INC.",
"ticker": null,
"exchange": null,
"lei": "HWUPKR0MPOU8FGXBT394",
"entity_status": "active"
}
],
"trademark_count": 1847,
"active_count": 1290,
"stats": {
"trademark_count": 1847,
"registered_count": 1203,
"pending_count": 87,
"expired_count": 312,
"cancelled_count": 45,
"abandoned_count": 200,
"grant_rate": 0.651,
"abandonment_rate": 0.108,
"jurisdiction_count": 5,
"earliest_filing": "1985-04-01",
"latest_filing": "2026-03-15",
"computed_at": "2026-03-24T00:00:00Z"
},
"created_at": "2023-01-11T08:00:00Z",
"updated_at": "2026-03-24T00:00:00Z",
"request_id": "req_xyz789"
}
Owners
Retrieve Owner
Retrieve an owner profile by ID
GET
/
v1
/
owners
/
{id}
Retrieve Owner
curl --request GET \
--url https://api.signa.so/v1/owners/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/owners/{id}"
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/owners/{id}', 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/owners/{id}",
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/owners/{id}"
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/owners/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/owners/{id}")
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{
"id": "own_R3jK9mN2",
"object": "owner",
"name": "Apple Inc.",
"canonical_name": "APPLE INC",
"name_original_script": null,
"country_code": "US",
"entity_type": "corporation",
"address": {
"lines": ["One Apple Park Way"],
"city": "Cupertino",
"state": "CA",
"postal_code": "95014",
"country_code": "US"
},
"entity_id": "ent_R3jK9mN2",
"entity_id_type": "resolved",
"publicly_traded": true,
"ticker": "AAPL",
"lei": "HWUPKR0MPOU8FGXBT394",
"has_lei": true,
"companies_source": "entity",
"aliases": [
{
"name": "Apple Computer Inc.",
"type": "former_name",
"source_office": "US"
},
{
"name": "Apple Computer, Inc.",
"type": "former_name",
"source_office": "US"
}
],
"identifiers": [
{
"type": "sec_cik",
"value": "320193"
}
],
"companies": [
{
"source": "sec",
"source_id": "0000320193",
"legal_name": "Apple Inc.",
"ticker": "AAPL",
"exchange": "NASDAQ",
"lei": null,
"entity_status": "active"
},
{
"source": "gleif",
"source_id": "HWUPKR0MPOU8FGXBT394",
"legal_name": "APPLE INC.",
"ticker": null,
"exchange": null,
"lei": "HWUPKR0MPOU8FGXBT394",
"entity_status": "active"
}
],
"trademark_count": 1847,
"active_count": 1290,
"stats": {
"trademark_count": 1847,
"registered_count": 1203,
"pending_count": 87,
"expired_count": 312,
"cancelled_count": 45,
"abandoned_count": 200,
"grant_rate": 0.651,
"abandonment_rate": 0.108,
"jurisdiction_count": 5,
"earliest_filing": "1985-04-01",
"latest_filing": "2026-03-15",
"computed_at": "2026-03-24T00:00:00Z"
},
"created_at": "2023-01-11T08:00:00Z",
"updated_at": "2026-03-24T00:00:00Z",
"request_id": "req_xyz789"
}
Overview
Returns the full detail tier for a single owner: canonical name, address, aliases, alternate identifiers, entity linkage, public-company matches (when available), and computed portfolio statistics. If the owner record was merged into another (entity resolution), the endpoint returns410 entity_merged with the new ID in the error body.
Path Parameters
string
required
Owner ID (e.g.
own_R3jK9mN2).Response
string
Owner ID (
own_*)string
Always
"owner"string
Display name of the owner
string
Normalized name used for search and deduplication
string
Owner name in original script (may be null)
string
ISO country code
string
Entity type (e.g.
corporation, individual)object | string | null
Postal address as reported by the source office. Shape varies by office: most return a structured object (
lines[], city, state, postal_code, country_code); some offices provide only a free-text string.string
The id of the company profile this owner belongs to (
ent_*). Always present, so you can group owners by entity_id unconditionally. See Retrieve Entity.string
resolved when this owner is linked to a company profile shared with owner records from other offices, derived when it isn’t linked to any yet (the id is a stable placeholder based on this owner alone).boolean
Whether the (possibly entity-inherited) company set includes an active SEC company with a ticker. A
false value means no confirmed match, not confirmed-private.string | null
First SEC ticker across the (possibly inherited) company set.
string | null
First GLEIF LEI across the (possibly inherited) company set.
boolean
Whether any GLEIF LEI is present across the (possibly inherited) company set.
string
entity when the company facts are inherited across the linked company profile’s members, or direct when the owner isn’t linked and is reporting only its own matches.object[]
External identifiers (SEC CIK, LEI, etc.)
object[]
Omitted when the owner has no matched company records. When the owner is linked to a company profile, this is the union of all linked members’ company matches, including the owner’s own.
Show Public company match
Show Public company match
string
Data source (e.g.
sec, gleif)string
Source-specific identifier
string
Company legal name from the source record
string | null
Stock ticker symbol for SEC matches
string | null
Stock exchange for SEC matches
string | null
Legal Entity Identifier for GLEIF matches
string
active, inactive, or delistednumber
Match confidence, when available
string | null
When the match was verified, when available
string | null
Verifier identifier, when available
integer
Total trademarks owned at mark grain.
integer
Count of active trademarks (registered + pending). Always present; 0 when stats not yet computed.
object
Show Portfolio statistics
Show Portfolio statistics
integer
Total trademarks owned. Counts marks: a Madrid IR family counts once, matching the default grouped
GET /v1/trademarks listings.integer
Currently registered trademarks, counted per office record. For Madrid-heavy portfolios this may exceed
trademark_count, since trademark_count counts distinct marks while status counts are per office record.integer
Trademarks with pending status
integer
Expired trademarks
integer
Cancelled trademarks
integer
Abandoned trademarks
number
Share of concluded prosecutions (registered + expired + cancelled) that were ever granted.
number
Ratio of abandoned to total trademarks
integer
Number of distinct jurisdictions
string
Earliest filing date (ISO 8601)
string
Most recent filing date (ISO 8601)
string
When stats were last computed (ISO 8601)
string
ISO 8601 creation timestamp.
string
ISO 8601 last update timestamp.
string
Unique request identifier for support and debugging.
Public-company facts are served through the owner’s company profile. When an owner is linked to a company profile shared with other office records,
publicly_traded, ticker, lei, has_lei, and companies[] reflect the profile’s aggregated facts, the union of every linked member’s SEC/GLEIF matches. So a non-US office record that itself carries no ticker still surfaces the company’s ticker and LEI when a linked sibling record is matched. companies_source is entity in that case and direct for an owner with no links.{
"id": "own_R3jK9mN2",
"object": "owner",
"name": "Apple Inc.",
"canonical_name": "APPLE INC",
"name_original_script": null,
"country_code": "US",
"entity_type": "corporation",
"address": {
"lines": ["One Apple Park Way"],
"city": "Cupertino",
"state": "CA",
"postal_code": "95014",
"country_code": "US"
},
"entity_id": "ent_R3jK9mN2",
"entity_id_type": "resolved",
"publicly_traded": true,
"ticker": "AAPL",
"lei": "HWUPKR0MPOU8FGXBT394",
"has_lei": true,
"companies_source": "entity",
"aliases": [
{
"name": "Apple Computer Inc.",
"type": "former_name",
"source_office": "US"
},
{
"name": "Apple Computer, Inc.",
"type": "former_name",
"source_office": "US"
}
],
"identifiers": [
{
"type": "sec_cik",
"value": "320193"
}
],
"companies": [
{
"source": "sec",
"source_id": "0000320193",
"legal_name": "Apple Inc.",
"ticker": "AAPL",
"exchange": "NASDAQ",
"lei": null,
"entity_status": "active"
},
{
"source": "gleif",
"source_id": "HWUPKR0MPOU8FGXBT394",
"legal_name": "APPLE INC.",
"ticker": null,
"exchange": null,
"lei": "HWUPKR0MPOU8FGXBT394",
"entity_status": "active"
}
],
"trademark_count": 1847,
"active_count": 1290,
"stats": {
"trademark_count": 1847,
"registered_count": 1203,
"pending_count": 87,
"expired_count": 312,
"cancelled_count": 45,
"abandoned_count": 200,
"grant_rate": 0.651,
"abandonment_rate": 0.108,
"jurisdiction_count": 5,
"earliest_filing": "1985-04-01",
"latest_filing": "2026-03-15",
"computed_at": "2026-03-24T00:00:00Z"
},
"created_at": "2023-01-11T08:00:00Z",
"updated_at": "2026-03-24T00:00:00Z",
"request_id": "req_xyz789"
}
Code Examples
curl "https://api.signa.so/v1/owners/own_R3jK9mN2" \
-H "Authorization: Bearer sig_YOUR_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const owner = await signa.owners.retrieve("own_R3jK9mN2");
console.log(owner.name, owner.stats?.trademark_count);
Errors
| Status | Type | Description |
|---|---|---|
| 400 | validation_error | Invalid id format |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key lacks the trademarks:read scope |
| 404 | not_found | Owner ID does not exist |
| 410 | entity_merged | Owner was merged into another. The new ID is returned in the error detail. |
| 429 | rate_limited | Rate limit exceeded |
Related Endpoints
- Search Owners: filtered listing of owners
- Owner Trademarks: portfolio of marks owned
- Owner Related: corporate parent and subsidiary relationships
- Retrieve Entity: the cross-office company profile this owner belongs to