curl --request POST \
--url https://api.pubrio.com/expansions/companies/pulse_events \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"domain_search_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signal_types": [
"EXEC",
"HIRE"
],
"country_codes": [
"JP",
"SG"
],
"transitioned_dates": [
"2026-04-01",
"2026-06-29"
],
"window_days": 90,
"query": "We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.",
"is_explain_match": true,
"domain": "pubrio.com",
"linkedin_url": "https://www.linkedin.com/company/pubrio",
"page": 1,
"per_page": 25
}
'import requests
url = "https://api.pubrio.com/expansions/companies/pulse_events"
payload = {
"domain_search_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signal_types": ["EXEC", "HIRE"],
"country_codes": ["JP", "SG"],
"transitioned_dates": ["2026-04-01", "2026-06-29"],
"window_days": 90,
"query": "We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.",
"is_explain_match": True,
"domain": "pubrio.com",
"linkedin_url": "https://www.linkedin.com/company/pubrio",
"page": 1,
"per_page": 25
}
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({
domain_search_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
signal_types: ['EXEC', 'HIRE'],
country_codes: ['JP', 'SG'],
transitioned_dates: ['2026-04-01', '2026-06-29'],
window_days: 90,
query: 'We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.',
is_explain_match: true,
domain: 'pubrio.com',
linkedin_url: 'https://www.linkedin.com/company/pubrio',
page: 1,
per_page: 25
})
};
fetch('https://api.pubrio.com/expansions/companies/pulse_events', 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/pulse_events",
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([
'domain_search_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'signal_types' => [
'EXEC',
'HIRE'
],
'country_codes' => [
'JP',
'SG'
],
'transitioned_dates' => [
'2026-04-01',
'2026-06-29'
],
'window_days' => 90,
'query' => 'We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.',
'is_explain_match' => true,
'domain' => 'pubrio.com',
'linkedin_url' => 'https://www.linkedin.com/company/pubrio',
'page' => 1,
'per_page' => 25
]),
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/pulse_events"
payload := strings.NewReader("{\n \"domain_search_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signal_types\": [\n \"EXEC\",\n \"HIRE\"\n ],\n \"country_codes\": [\n \"JP\",\n \"SG\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"query\": \"We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.\",\n \"is_explain_match\": true,\n \"domain\": \"pubrio.com\",\n \"linkedin_url\": \"https://www.linkedin.com/company/pubrio\",\n \"page\": 1,\n \"per_page\": 25\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/pulse_events")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"domain_search_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signal_types\": [\n \"EXEC\",\n \"HIRE\"\n ],\n \"country_codes\": [\n \"JP\",\n \"SG\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"query\": \"We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.\",\n \"is_explain_match\": true,\n \"domain\": \"pubrio.com\",\n \"linkedin_url\": \"https://www.linkedin.com/company/pubrio\",\n \"page\": 1,\n \"per_page\": 25\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/expansions/companies/pulse_events")
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 \"domain_search_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signal_types\": [\n \"EXEC\",\n \"HIRE\"\n ],\n \"country_codes\": [\n \"JP\",\n \"SG\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"query\": \"We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.\",\n \"is_explain_match\": true,\n \"domain\": \"pubrio.com\",\n \"linkedin_url\": \"https://www.linkedin.com/company/pubrio\",\n \"page\": 1,\n \"per_page\": 25\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"filters": {
"domain_search_id": "8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c"
}
},
"data": {
"pagination": {
"page": 1,
"per_page": 25,
"total_entries": 42,
"total_pages": 2,
"total_display_pages": 2,
"is_timeout": false
},
"events": [
{
"signal_type_slug": "EXEC",
"stage_slug": "expanding",
"country_code": "US",
"signal_subtype_slug": "country_manager",
"source_type": "linkedin",
"polarity": "expansion",
"display_label": "Hired Country Manager",
"evidence_url": "https://linkedin.com/company/example-corp",
"event_date": "2026-06-20T14:00:00.000Z"
}
],
"summary": {
"text": "Example Corp is hiring across Tokyo[1] and just added a Japan Country Manager[2], yet has no legal entity on file — it is staffing the market before incorporating, which is exactly your window.",
"citations": [
{
"n": 1,
"type": "HIRE",
"label": "Tokyo software & field-ops roles",
"country": "JP",
"date": "2026-06",
"url": null
},
{
"n": 2,
"type": "EXEC",
"label": "Country Manager, Japan",
"country": "JP",
"date": "2026-06",
"url": "https://linkedin.com/in/example"
}
]
}
}
}{
"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."
}Eventos de señales de empresa
Desglose enriquecido y paginado de los eventos de señales que impulsan la expansión de una sola empresa.
curl --request POST \
--url https://api.pubrio.com/expansions/companies/pulse_events \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"domain_search_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signal_types": [
"EXEC",
"HIRE"
],
"country_codes": [
"JP",
"SG"
],
"transitioned_dates": [
"2026-04-01",
"2026-06-29"
],
"window_days": 90,
"query": "We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.",
"is_explain_match": true,
"domain": "pubrio.com",
"linkedin_url": "https://www.linkedin.com/company/pubrio",
"page": 1,
"per_page": 25
}
'import requests
url = "https://api.pubrio.com/expansions/companies/pulse_events"
payload = {
"domain_search_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signal_types": ["EXEC", "HIRE"],
"country_codes": ["JP", "SG"],
"transitioned_dates": ["2026-04-01", "2026-06-29"],
"window_days": 90,
"query": "We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.",
"is_explain_match": True,
"domain": "pubrio.com",
"linkedin_url": "https://www.linkedin.com/company/pubrio",
"page": 1,
"per_page": 25
}
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({
domain_search_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
signal_types: ['EXEC', 'HIRE'],
country_codes: ['JP', 'SG'],
transitioned_dates: ['2026-04-01', '2026-06-29'],
window_days: 90,
query: 'We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.',
is_explain_match: true,
domain: 'pubrio.com',
linkedin_url: 'https://www.linkedin.com/company/pubrio',
page: 1,
per_page: 25
})
};
fetch('https://api.pubrio.com/expansions/companies/pulse_events', 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/pulse_events",
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([
'domain_search_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'signal_types' => [
'EXEC',
'HIRE'
],
'country_codes' => [
'JP',
'SG'
],
'transitioned_dates' => [
'2026-04-01',
'2026-06-29'
],
'window_days' => 90,
'query' => 'We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.',
'is_explain_match' => true,
'domain' => 'pubrio.com',
'linkedin_url' => 'https://www.linkedin.com/company/pubrio',
'page' => 1,
'per_page' => 25
]),
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/pulse_events"
payload := strings.NewReader("{\n \"domain_search_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signal_types\": [\n \"EXEC\",\n \"HIRE\"\n ],\n \"country_codes\": [\n \"JP\",\n \"SG\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"query\": \"We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.\",\n \"is_explain_match\": true,\n \"domain\": \"pubrio.com\",\n \"linkedin_url\": \"https://www.linkedin.com/company/pubrio\",\n \"page\": 1,\n \"per_page\": 25\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/pulse_events")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"domain_search_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signal_types\": [\n \"EXEC\",\n \"HIRE\"\n ],\n \"country_codes\": [\n \"JP\",\n \"SG\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"query\": \"We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.\",\n \"is_explain_match\": true,\n \"domain\": \"pubrio.com\",\n \"linkedin_url\": \"https://www.linkedin.com/company/pubrio\",\n \"page\": 1,\n \"per_page\": 25\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/expansions/companies/pulse_events")
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 \"domain_search_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"signal_types\": [\n \"EXEC\",\n \"HIRE\"\n ],\n \"country_codes\": [\n \"JP\",\n \"SG\"\n ],\n \"transitioned_dates\": [\n \"2026-04-01\",\n \"2026-06-29\"\n ],\n \"window_days\": 90,\n \"query\": \"We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity.\",\n \"is_explain_match\": true,\n \"domain\": \"pubrio.com\",\n \"linkedin_url\": \"https://www.linkedin.com/company/pubrio\",\n \"page\": 1,\n \"per_page\": 25\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"filters": {
"domain_search_id": "8f3c1b04-2e7a-4d19-9c55-6ab21f0e7d3c"
}
},
"data": {
"pagination": {
"page": 1,
"per_page": 25,
"total_entries": 42,
"total_pages": 2,
"total_display_pages": 2,
"is_timeout": false
},
"events": [
{
"signal_type_slug": "EXEC",
"stage_slug": "expanding",
"country_code": "US",
"signal_subtype_slug": "country_manager",
"source_type": "linkedin",
"polarity": "expansion",
"display_label": "Hired Country Manager",
"evidence_url": "https://linkedin.com/company/example-corp",
"event_date": "2026-06-20T14:00:00.000Z"
}
],
"summary": {
"text": "Example Corp is hiring across Tokyo[1] and just added a Japan Country Manager[2], yet has no legal entity on file — it is staffing the market before incorporating, which is exactly your window.",
"citations": [
{
"n": 1,
"type": "HIRE",
"label": "Tokyo software & field-ops roles",
"country": "JP",
"date": "2026-06",
"url": null
},
{
"n": 2,
"type": "EXEC",
"label": "Country Manager, Japan",
"country": "JP",
"date": "2026-06",
"url": "https://linkedin.com/in/example"
}
]
}
}
}{
"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."
}Autorizaciones
Un token de API único que representa las acciones que realizas a través de la API, junto con los permisos y operaciones correspondientes. Puedes crearlo en la sección Configuración.
Cuerpo
- ID de búsqueda por dominio
- Dominio
- URL de LinkedIn
Identificador único para la operación de búsqueda de empresas.
Filtra a tipos de señal específicos. Consulta el catálogo de tipos de señal en la base de conocimientos para las definiciones y niveles (DNS e INFRA son señales de nivel Premier).
AD, AUDIENCE, DNS, ENTITY, EVENT, EVENT_PLUS, EXEC, HIRE, INFRA, IP, NEWS, OFFICE, PARTNER, PRODUCT, REG, SCALE, TECH ["EXEC", "HIRE"]
Opcional. Limita el feed a uno o más mercados extranjeros (ISO 3166-1 alfa-2, por ejemplo ["JP","SG"]). Si se omite → todos los mercados extranjeros (el mercado de origen siempre se excluye).
["JP", "SG"]
Intervalo de fechas ISO [from, to] para la ventana de señal/transición. Tiene prioridad sobre window_days cuando se proporcionan ambos.
["2026-04-01", "2026-06-29"]
Opcional. Tamaño de la ventana móvil de eventos en días. El valor predeterminado es 90 (la ventana de visualización estándar) cuando no se proporciona ni este ni transitioned_dates. transitioned_dates tiene prioridad cuando se envían ambos.
90
Descripción en lenguaje sencillo de lo que vendes, o el perfil de comprador con el que estás evaluando esta empresa. Se usa únicamente para fundamentar el summary de la IA (consulta is_explain_match); a diferencia de la búsqueda de empresas, aquí NO se interpreta como filtros.
"We sell Employer-of-Record and local payroll; best-fit buyers hire in a new market before setting up a legal entity."
Si es true y se proporciona un query, data.summary devuelve un único resumen de la IA sobre la actividad de expansión de esta empresa interpretada en relación con tu query, fundamentado en las señales reales de la empresa con citas [n]. A diferencia del match_summary por empresa de la búsqueda de empresas, este resumen se construye a partir de TODO el feed de la empresa para la ventana (todos los mercados, todas las señales), por lo que es estable independientemente de page / per_page.
true
Un dominio de empresa utilizado para operaciones de búsqueda de empresas. Si recibimos una URL como www.pubrio.com o https://docs.pubrio.com/, el sistema la convertirá a pubrio.com para su procesamiento.
"pubrio.com"
La URL completa del perfil de LinkedIn de la empresa. La URL debe empezar por http y contener linkedin.com/company/
"https://www.linkedin.com/company/pubrio"
Registros por página. Por defecto es 25, que también es el límite en la mayoría de los planes — el límite es el max_search_per_page de tu suscripción, devuelto por Perfil. Superarlo devuelve HTTP 416 con el código 41676 (o 41613 en la búsqueda de empresas y personas), no un conjunto de resultados recortado.
x <= 2525
Respuesta
Eventos de señales paginados. Cuando is_explain_match es true y se proporciona un query, data.summary contiene un resumen de la IA ({ text, citations }) de la actividad del feed completo de la empresa interpretada en relación con el query; en caso contrario es null.

