Market Analytics
curl --request GET \
--url https://api.signa.so/v1/analytics/market \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/analytics/market"
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/analytics/market', 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/analytics/market",
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/analytics/market"
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/analytics/market")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/analytics/market")
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": "market_analytics",
"total_marks": 12000000,
"active_count": 8300000,
"by_status": {
"registered": 7000000,
"pending": 1300000,
"expired": 1800000,
"cancelled": 900000,
"abandoned": 1000000
},
"by_office": {
"US": 8000000,
"EM": 4000000
},
"top_classes": [
{
"class": 9,
"count": 950000,
"pct": 0.079
}
],
"filing_trend": {
"2025": 610000
},
"computed_at": "2026-07-12T00:00:00.000Z",
"request_id": "req_example"
}
Filing Analytics
Market Analytics
GET
/
v1
/
analytics
/
market
Market Analytics
curl --request GET \
--url https://api.signa.so/v1/analytics/market \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/analytics/market"
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/analytics/market', 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/analytics/market",
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/analytics/market"
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/analytics/market")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/analytics/market")
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": "market_analytics",
"total_marks": 12000000,
"active_count": 8300000,
"by_status": {
"registered": 7000000,
"pending": 1300000,
"expired": 1800000,
"cancelled": 900000,
"abandoned": 1000000
},
"by_office": {
"US": 8000000,
"EM": 4000000
},
"top_classes": [
{
"class": 9,
"count": 950000,
"pct": 0.079
}
],
"filing_trend": {
"2025": 610000
},
"computed_at": "2026-07-12T00:00:00.000Z",
"request_id": "req_example"
}
Credits: 100 per request.
Use this endpoint for market sizing and total addressable filing volume across every supported trademark office. Results are precomputed and suited to dashboards and recurring analysis.
Code Examples
curl https://api.signa.so/v1/analytics/market \
-H "Authorization: Bearer sig_YOUR_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const market = await signa.analytics.market();
console.log(market.total_marks, market.active_count);
Response
number
Total trademark records. Every office record counts: a Madrid international registration counts for its own record, for each designation record, and again for any national office’s own record of a designation (for example a USPTO 79-series record), so every count here is in records, not filings.
number
Registered and pending marks.
object
Counts by normalized status bucket.
object
Counts keyed by uppercase ST.3 office code.
array<{ class: number; count: number; pct: number }>
Top ten Nice classes. Each
pct is the share of all marks that include this class.object
Annual filing counts.
{
"object": "market_analytics",
"total_marks": 12000000,
"active_count": 8300000,
"by_status": {
"registered": 7000000,
"pending": 1300000,
"expired": 1800000,
"cancelled": 900000,
"abandoned": 1000000
},
"by_office": {
"US": 8000000,
"EM": 4000000
},
"top_classes": [
{
"class": 9,
"count": 950000,
"pct": 0.079
}
],
"filing_trend": {
"2025": 610000
},
"computed_at": "2026-07-12T00:00:00.000Z",
"request_id": "req_example"
}