Skip to main content
POST
/
expansions
/
companies
/
compare
Compare company expansions
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",
    "550e8400-e29b-41d4-a716-446655440000"
  ],
  "domains": [
    "pubrio.com"
  ],
  "linkedin_urls": [
    "https://www.linkedin.com/company/pubrio"
  ],
  "transitioned_dates": [
    "2026-04-01",
    "2026-06-29"
  ],
  "window_days": 90,
  "seed_target": "550e8400-e29b-41d4-a716-446655440002",
  "is_include_established": false,
  "profile_id": 123
}
'
import requests

url = "https://api.pubrio.com/expansions/companies/compare"

payload = {
"companies": ["stripe.com", "https://www.linkedin.com/company/airbnb", "550e8400-e29b-41d4-a716-446655440000"],
"domains": ["pubrio.com"],
"linkedin_urls": ["https://www.linkedin.com/company/pubrio"],
"transitioned_dates": ["2026-04-01", "2026-06-29"],
"window_days": 90,
"seed_target": "550e8400-e29b-41d4-a716-446655440002",
"is_include_established": False,
"profile_id": 123
}
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',
'550e8400-e29b-41d4-a716-446655440000'
],
domains: ['pubrio.com'],
linkedin_urls: ['https://www.linkedin.com/company/pubrio'],
transitioned_dates: ['2026-04-01', '2026-06-29'],
window_days: 90,
seed_target: '550e8400-e29b-41d4-a716-446655440002',
is_include_established: false,
profile_id: 123
})
};

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',
'550e8400-e29b-41d4-a716-446655440000'
],
'domains' => [
'pubrio.com'
],
'linkedin_urls' => [
'https://www.linkedin.com/company/pubrio'
],
'transitioned_dates' => [
'2026-04-01',
'2026-06-29'
],
'window_days' => 90,
'seed_target' => '550e8400-e29b-41d4-a716-446655440002',
'is_include_established' => false,
'profile_id' => 123
]),
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 \"550e8400-e29b-41d4-a716-446655440000\"\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\": \"550e8400-e29b-41d4-a716-446655440002\",\n \"is_include_established\": false,\n \"profile_id\": 123\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 \"550e8400-e29b-41d4-a716-446655440000\"\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\": \"550e8400-e29b-41d4-a716-446655440002\",\n \"is_include_established\": false,\n \"profile_id\": 123\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 \"550e8400-e29b-41d4-a716-446655440000\"\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\": \"550e8400-e29b-41d4-a716-446655440002\",\n \"is_include_established\": false,\n \"profile_id\": 123\n}"

response = http.request(request)
puts response.read_body
{
  "metadata": {
    "seeded_peers": [
      "550e8400-e29b-41d4-a716-446655440002"
    ]
  },
  "data": {
    "companies": [
      {
        "domain_search_id": "550e8400-e29b-41d4-a716-446655440002",
        "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"
              }
            ]
          }
        ]
      }
    ]
  }
}

Authorizations

pubrio-api-key
string
header
required

A unique API token that represents the actions you perform through the API and the corresponding permissions and operations. You can create it through the Settings section.

Body

application/json
companies
string[]

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.

Example:
[
"stripe.com",
"https://www.linkedin.com/company/airbnb",
"550e8400-e29b-41d4-a716-446655440000"
]
domains
string[]

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.

Example:
["pubrio.com"]
linkedin_urls
string[]

The fully formed URL of the LinkedIn company profile. URL begin with http and contain linkedin.com/company/

Example:
["https://www.linkedin.com/company/pubrio"]
transitioned_dates
string<date>[]

ISO [from, to] date range for the signal/transition window. Takes precedence over window_days when both are supplied.

Example:
["2026-04-01", "2026-06-29"]
window_days
integer

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.

Example:

90

seed_target
string

A target company (domain_search_id). When supplied, the response seeds the most comparable peers for it.

Example:

"550e8400-e29b-41d4-a716-446655440002"

is_include_established
boolean

Include the established stage (long-standing operators with no active expansion signals). Defaults to false.

Example:

false

profile_id
integer

Optional. An identifier for the user profile (workspace) making the request. This is no longer required as the API key already includes your workspace information. If provided, it helps in associating the lookup with a specific user, allowing for data retrieval and credit tracking.

Check out user details endpoints under the Profile tab for more information.

Response

200 - application/json

Per-company comparison, keyed by domain_search_id.

metadata
object
data
object