curl --request POST \
--url https://api.pubrio.com/expansions/companies/compare \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"companies": [
"stripe.com",
"https://www.linkedin.com/company/airbnb",
"b7d92a56-31f8-4c0b-ae43-19c8e5f24b70"
],
"domains": [
"pubrio.com"
],
"linkedin_urls": [
"https://www.linkedin.com/company/pubrio"
],
"transitioned_dates": [
"2026-04-01",
"2026-06-29"
],
"window_days": 90,
"seed_target": "8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c",
"is_include_established": false,
"is_include_metadata": true
}
'import requests
url = "https://api.pubrio.com/expansions/companies/compare"
payload = {
"companies": ["stripe.com", "https://www.linkedin.com/company/airbnb", "b7d92a56-31f8-4c0b-ae43-19c8e5f24b70"],
"domains": ["pubrio.com"],
"linkedin_urls": ["https://www.linkedin.com/company/pubrio"],
"transitioned_dates": ["2026-04-01", "2026-06-29"],
"window_days": 90,
"seed_target": "8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c",
"is_include_established": False,
"is_include_metadata": True
}
headers = {
"pubrio-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'pubrio-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
companies: [
'stripe.com',
'https://www.linkedin.com/company/airbnb',
'b7d92a56-31f8-4c0b-ae43-19c8e5f24b70'
],
domains: ['pubrio.com'],
linkedin_urls: ['https://www.linkedin.com/company/pubrio'],
transitioned_dates: ['2026-04-01', '2026-06-29'],
window_days: 90,
seed_target: '8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c',
is_include_established: false,
is_include_metadata: true
})
};
fetch('https://api.pubrio.com/expansions/companies/compare', 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.pubrio.com/expansions/companies/compare",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'companies' => [
'stripe.com',
'https://www.linkedin.com/company/airbnb',
'b7d92a56-31f8-4c0b-ae43-19c8e5f24b70'
],
'domains' => [
'pubrio.com'
],
'linkedin_urls' => [
'https://www.linkedin.com/company/pubrio'
],
'transitioned_dates' => [
'2026-04-01',
'2026-06-29'
],
'window_days' => 90,
'seed_target' => '8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c',
'is_include_established' => false,
'is_include_metadata' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"pubrio-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pubrio.com/expansions/companies/compare"
payload := strings.NewReader("{\n \"companies\": [\n \"stripe.com\",\n \"https://www.linkedin.com/company/airbnb\",\n \"b7d92a56-31f8-4c0b-ae43-19c8e5f24b70\"\n ],\n \"domains\": [\n \"pubrio.com\"\n ],\n \"linkedin_urls\": [\n \"https://www.linkedin.com/company/pubrio\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"seed_target\": \"8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c\",\n \"is_include_established\": false,\n \"is_include_metadata\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("pubrio-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pubrio.com/expansions/companies/compare")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companies\": [\n \"stripe.com\",\n \"https://www.linkedin.com/company/airbnb\",\n \"b7d92a56-31f8-4c0b-ae43-19c8e5f24b70\"\n ],\n \"domains\": [\n \"pubrio.com\"\n ],\n \"linkedin_urls\": [\n \"https://www.linkedin.com/company/pubrio\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"seed_target\": \"8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c\",\n \"is_include_established\": false,\n \"is_include_metadata\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/expansions/companies/compare")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["pubrio-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"companies\": [\n \"stripe.com\",\n \"https://www.linkedin.com/company/airbnb\",\n \"b7d92a56-31f8-4c0b-ae43-19c8e5f24b70\"\n ],\n \"domains\": [\n \"pubrio.com\"\n ],\n \"linkedin_urls\": [\n \"https://www.linkedin.com/company/pubrio\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"seed_target\": \"8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c\",\n \"is_include_established\": false,\n \"is_include_metadata\": true\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"seeded_peers": [
"8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c"
]
},
"data": {
"companies": [
{
"domain_search_id": "8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c",
"home_country_code": "SG",
"firmographics": {
"company_name": "Example Corp",
"country_code": "SG",
"company_size": 350,
"founded_year": 2015,
"industry": "Software Development",
"publicly_traded_symbol": null,
"estimated_revenue": 25000000
},
"markets_summary": [
{
"country_code": "US",
"stage_slug": "committing",
"signal_count": 12,
"distinct_type_count": 4,
"first_signal_at": "2026-04-02T08:00:00.000Z",
"latest_signal_at": "2026-06-28T10:15:22.000Z",
"last_transition_at": "2026-06-25T14:30:00.000Z",
"expansion_score": 0.685,
"signals": [
{
"signal_type_slug": "EXEC",
"signal_subtype_slug": "country_manager",
"event_date": "2026-06-20T14:00:00.000Z",
"display_label": "Hired Regional VP for North America"
}
]
}
]
}
]
}
}{
"code": 40001,
"message": "Errors and codes will vary depending on the scenario, please see the documentation for information.",
"details": {}
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Compare Company Expansions
Compare the expansion footprint of several companies side by side, with optional comparable peers for a target company.
curl --request POST \
--url https://api.pubrio.com/expansions/companies/compare \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"companies": [
"stripe.com",
"https://www.linkedin.com/company/airbnb",
"b7d92a56-31f8-4c0b-ae43-19c8e5f24b70"
],
"domains": [
"pubrio.com"
],
"linkedin_urls": [
"https://www.linkedin.com/company/pubrio"
],
"transitioned_dates": [
"2026-04-01",
"2026-06-29"
],
"window_days": 90,
"seed_target": "8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c",
"is_include_established": false,
"is_include_metadata": true
}
'import requests
url = "https://api.pubrio.com/expansions/companies/compare"
payload = {
"companies": ["stripe.com", "https://www.linkedin.com/company/airbnb", "b7d92a56-31f8-4c0b-ae43-19c8e5f24b70"],
"domains": ["pubrio.com"],
"linkedin_urls": ["https://www.linkedin.com/company/pubrio"],
"transitioned_dates": ["2026-04-01", "2026-06-29"],
"window_days": 90,
"seed_target": "8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c",
"is_include_established": False,
"is_include_metadata": True
}
headers = {
"pubrio-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'pubrio-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
companies: [
'stripe.com',
'https://www.linkedin.com/company/airbnb',
'b7d92a56-31f8-4c0b-ae43-19c8e5f24b70'
],
domains: ['pubrio.com'],
linkedin_urls: ['https://www.linkedin.com/company/pubrio'],
transitioned_dates: ['2026-04-01', '2026-06-29'],
window_days: 90,
seed_target: '8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c',
is_include_established: false,
is_include_metadata: true
})
};
fetch('https://api.pubrio.com/expansions/companies/compare', 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.pubrio.com/expansions/companies/compare",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'companies' => [
'stripe.com',
'https://www.linkedin.com/company/airbnb',
'b7d92a56-31f8-4c0b-ae43-19c8e5f24b70'
],
'domains' => [
'pubrio.com'
],
'linkedin_urls' => [
'https://www.linkedin.com/company/pubrio'
],
'transitioned_dates' => [
'2026-04-01',
'2026-06-29'
],
'window_days' => 90,
'seed_target' => '8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c',
'is_include_established' => false,
'is_include_metadata' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"pubrio-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pubrio.com/expansions/companies/compare"
payload := strings.NewReader("{\n \"companies\": [\n \"stripe.com\",\n \"https://www.linkedin.com/company/airbnb\",\n \"b7d92a56-31f8-4c0b-ae43-19c8e5f24b70\"\n ],\n \"domains\": [\n \"pubrio.com\"\n ],\n \"linkedin_urls\": [\n \"https://www.linkedin.com/company/pubrio\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"seed_target\": \"8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c\",\n \"is_include_established\": false,\n \"is_include_metadata\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("pubrio-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pubrio.com/expansions/companies/compare")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companies\": [\n \"stripe.com\",\n \"https://www.linkedin.com/company/airbnb\",\n \"b7d92a56-31f8-4c0b-ae43-19c8e5f24b70\"\n ],\n \"domains\": [\n \"pubrio.com\"\n ],\n \"linkedin_urls\": [\n \"https://www.linkedin.com/company/pubrio\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"seed_target\": \"8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c\",\n \"is_include_established\": false,\n \"is_include_metadata\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/expansions/companies/compare")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["pubrio-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"companies\": [\n \"stripe.com\",\n \"https://www.linkedin.com/company/airbnb\",\n \"b7d92a56-31f8-4c0b-ae43-19c8e5f24b70\"\n ],\n \"domains\": [\n \"pubrio.com\"\n ],\n \"linkedin_urls\": [\n \"https://www.linkedin.com/company/pubrio\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"seed_target\": \"8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c\",\n \"is_include_established\": false,\n \"is_include_metadata\": true\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"seeded_peers": [
"8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c"
]
},
"data": {
"companies": [
{
"domain_search_id": "8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c",
"home_country_code": "SG",
"firmographics": {
"company_name": "Example Corp",
"country_code": "SG",
"company_size": 350,
"founded_year": 2015,
"industry": "Software Development",
"publicly_traded_symbol": null,
"estimated_revenue": 25000000
},
"markets_summary": [
{
"country_code": "US",
"stage_slug": "committing",
"signal_count": 12,
"distinct_type_count": 4,
"first_signal_at": "2026-04-02T08:00:00.000Z",
"latest_signal_at": "2026-06-28T10:15:22.000Z",
"last_transition_at": "2026-06-25T14:30:00.000Z",
"expansion_score": 0.685,
"signals": [
{
"signal_type_slug": "EXEC",
"signal_subtype_slug": "country_manager",
"event_date": "2026-06-20T14:00:00.000Z",
"display_label": "Hired Regional VP for North America"
}
]
}
]
}
]
}
}{
"code": 40001,
"message": "Errors and codes will vary depending on the scenario, please see the documentation for information.",
"details": {}
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Authorizations
Body
Scope to specific companies by any mix of domain_search_id, company domain, or a company social media profile URL. Domains and URLs resolve to their best-ranked company.
[
"stripe.com",
"https://www.linkedin.com/company/airbnb",
"b7d92a56-31f8-4c0b-ae43-19c8e5f24b70"
]
List of company domains used for company and people search operations. If we receive a URL such as www.pubrio.com or https://docs.pubrio.com/, the system will convert it to pubrio.com for processing.
["pubrio.com"]
The fully formed URL of the LinkedIn company profile. URL begin with http and contain linkedin.com/company/
["https://www.linkedin.com/company/pubrio"]
ISO [from, to] date range for the signal/transition window. Takes precedence over window_days when both are supplied.
["2026-04-01", "2026-06-29"]
Optional. Size of the rolling window in days. Used when an explicit transitioned_dates range is not supplied; if both are omitted, a default window is used.
90
The company in companies to treat as the benchmark target. The rest are ranked by signal volume and confidence, and the top peers are returned in metadata.seeded_peers. It selects from the list you send; it does not find new companies.
"8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c"
Include the established stage (long-standing operators with no active expansion signals). Defaults to false.
false
Return the full detail payload. API-key traffic is lean by default: the model block, the confidence figures (stage.confidence on Company Expansion Detail, confidence_score on other_markets[] and on Rankings markers[]) and the established_min / share_of_detected / has_known_office fields are all omitted unless this is true.
true

