Skip to main content
POST
/
expansions
/
companies
/
summaries
Batch company expansion summaries
curl --request POST \
  --url https://api.pubrio.com/expansions/companies/summaries \
  --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,
  "is_include_established": false,
  "profile_id": 123
}
'
import requests

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

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,
"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,
is_include_established: false,
profile_id: 123
})
};

fetch('https://api.pubrio.com/expansions/companies/summaries', 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/summaries",
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,
'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/summaries"

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 \"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/summaries")
.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 \"is_include_established\": false,\n \"profile_id\": 123\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.pubrio.com/expansions/companies/summaries")

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 \"is_include_established\": false,\n \"profile_id\": 123\n}"

response = http.request(request)
puts response.read_body
{
  "metadata": {},
  "data": {
    "companies": [
      {
        "domain_search_id": "550e8400-e29b-41d4-a716-446655440002",
        "home_country_code": "SG",
        "expansion_score": 82,
        "firmographics": {
          "domain_search_id": "550e8400-e29b-41d4-a716-446655440002",
          "company_name": "Example Corp",
          "domain": "example.com",
          "logo_url": "https://logo.pubrio.com/example.com.png",
          "country_code": "SG",
          "company_size": null,
          "employees_count": 350,
          "company_size_printed": "351+",
          "is_employees_locked": false,
          "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"
              }
            ]
          }
        ],
        "signal_weekly_totals": [
          {
            "week_start": "2026-06-22",
            "signal_type_slug": "HIRE",
            "count": 5
          }
        ],
        "summary": {
          "active_markets": 1,
          "total_markets": 1,
          "new_markets_90d": 1,
          "momentum_pct": 22,
          "signal_count_90d": 12,
          "window_expansion_score": 69,
          "scaling": 0,
          "pipeline": 1,
          "top_market": {
            "country_code": "US",
            "country": null,
            "stage": "committing"
          },
          "newest_market": {
            "country_code": "US",
            "country": null,
            "stage": "committing"
          },
          "activity_weekly": [
            3,
            5,
            4
          ]
        }
      }
    ]
  }
}

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

Scope companies with a single companies array of mixed identifiers — domain_search_id, company domain, or LinkedIn URL — matched as a union (not intersected). The legacy domain_search_ids, domains, and linkedin_urls keys remain accepted for backward compatibility. Up to 25 resolved companies per request.

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

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

Array of per-company expansion summaries. Two scores: top-level expansion_score is the overall current posture across all markets (stable); summary.window_expansion_score is the same measure scoped to the selected window.

metadata
object
data
object