Company Page
One company's page — who it is, how its hiring is changing against the market, its technology changes and its corporate group — via GET /v1/jobs/companies/{key}, with a short summary from POST /v1/jobs/companies/{key}/summary.
GET https://api.jobspipe.dev/v1/jobs/companies/{key}
POST https://api.jobspipe.dev/v1/jobs/companies/{key}/summaryEverything we know about one company's hiring, on one page: who it is, how its hiring is changing, which technologies are arriving or fading in its job postings, and the companies of its corporate group. Requires authentication.
key is a company's key from a companies or
job search response (for example 3837186692681720328 for Google),
or a corporate group as g-<LEI> (for example g-5493006MHB84DD0ZWV18 for Alphabet Inc.), which
covers every company matched below that entity.
Pricing
One credit per company page. A company already paid for this calendar month, by this endpoint or
by the companies list, is free. A key that is not found (404),
a company with no postings, and any error cost nothing. The summary is free.
metadata.credits_charged and metadata.companies_already_paid say what the page cost.
Request
| Parameter | In | Description |
|---|---|---|
key | path | A company key, or g-<LEI> for a corporate group. |
sections | query | Comma-separated: header, trends, subsidiaries, tech_changes. All by default. Asking for fewer is faster; the price is the same. |
curl "https://api.jobspipe.dev/v1/jobs/companies/3837186692681720328?sections=header,trends" \
-H "Authorization: Bearer $JOBSPIPE_API_KEY"import os, requests
r = requests.get(
"https://api.jobspipe.dev/v1/jobs/companies/3837186692681720328",
headers={"Authorization": f"Bearer {os.environ['JOBSPIPE_API_KEY']}"},
params={"sections": "header,trends"},
)
momentum = r.json()["trends"]["momentum"]
print(momentum["relative_momentum_pct"], momentum["percentile"])const res = await fetch(
"https://api.jobspipe.dev/v1/jobs/companies/3837186692681720328?sections=header,trends",
{ headers: { Authorization: `Bearer ${process.env.JOBSPIPE_API_KEY}` } },
);
const { header, trends } = await res.json();How the trends are measured
Every trend compares the company with all postings on the same job sources over the same
weeks. When a source we read grows, the company and its market grow together, so a change in
coverage is never reported as a change in hiring. Weeks run Monday to Sunday, the current week is
left out, and history starts on trends.history_since.
Every figure carries a caveat to show beside it, and a sample (n postings, thin). A figure
resting on too few postings is null, never a guess.
| Section | What it says |
|---|---|
trends.momentum | Growth in postings, the last 4 full weeks over the 4 before, against the company's industry: relative_momentum_pct (+16 = growing 16% faster than the industry) and its percentile among the industry's companies with at least 10 postings. Staffing agencies are left out. |
trends.share_index | The company's weekly share of all new postings on its job sources, indexed so 100 is its usual share. |
trends.function_mix | Job functions of the postings that carry one, last 4 weeks against the 4 before, beside the market's own change. relative_delta_pp is what the company did beyond the market. |
trends.ai_intensity | The share of postings that are AI work (title or skills name machine learning, AI, LLMs and related methods) against the market's: intensity_x 15 means fifteen times. |
trends.seniority | The mix of entry, mid, senior, lead and exec roles among postings that state a level (about half do not). |
trends.footprint | Open jobs by country and metro area, with shares. Where the jobs are, not where the company is based. |
trends.locations | new_locations: first job there in the last 4 weeks, at least 3, only where we already covered that place steadily. quiet_locations: no open jobs and none seen in 3 weeks. That is not an office closing. |
trends.leadership | Head of, director, VP and C-level roles of the last 60 days, first_leader_in_function marking the first such role we have seen in its function. |
tech_changes | Technologies first named in the company's postings in the last 30 days (shown once we have 45 days of its postings), and technologies rising, fading or possibly_dropped by their share of the last 30 days against the 30 before. possibly_replaced pairs a fading technology with a new or rising one of the same category. |
subsidiaries | The group's legal entities and the companies matched to them, each with open jobs, new postings in the last 28 days and the 28 before, its share of the group's, top functions and countries, and the badges new_entity and no_recent_postings. entities_matched of entities_total have postings. |
metadata.failed names any section that could not be computed this time; it is null in the
response and the page is still answered.
Response
{
"key": "3837186692681720328",
"found": true,
"header": {
"key": "3837186692681720328",
"kind": "company",
"name": "Google",
"legal_name": "GOOGLE LLC",
"lei": "7ZW8QJWVPR4P1J1KQY45",
"website": "https://google.com",
"employee_count": 187000,
"industry": "Software",
"hq_country": "US",
"hq_city": "Mountain View",
"open_jobs": 4120,
"countries": 38,
"group": { "lei": "5493006MHB84DD0ZWV18", "legal_name": "ALPHABET INC." },
"parent_of": 12
},
"trends": {
"history_since": "2026-08-03",
"momentum": {
"industry": "62",
"company_growth": 1.12,
"industry_growth": 0.96,
"relative_momentum_pct": 16.7,
"percentile": 82,
"peers": 1140,
"sample": { "n": 3845, "thin": false },
"caveat": "Postings in the last 4 full weeks over the 4 before, against companies in the same industry ..."
},
"ai_intensity": { "ai_pct": 39, "market_ai_pct": 2.6, "intensity_x": 15, "sample": { "n": 9159, "thin": false }, "caveat": "..." }
},
"metadata": {
"sections": ["header", "trends"],
"generated_at": "2026-10-07T09:00:00.000Z",
"credits_charged": 1,
"companies_already_paid": 0
}
}The example leaves out most fields; every section has the shape described in the API reference.
Summary
POST /v1/jobs/companies/{key}/summary (no body) answers 3 to 5 sentences on what is changing,
each tagged for the reader it matters most to: investor, government or sales. It is written
from the page's own figures only, returned beside it as facts, and every number in it is one of
them. source is "ai" when a language model wrote it and "template" when it was built
directly from the figures. It is rewritten once a day and costs nothing.
{
"key": "3837186692681720328",
"date": "2026-10-07",
"source": "ai",
"bullets": [
{ "audience": "investor", "text": "Hiring momentum is 16.7% above its industry, 82nd percentile of 1,140 peers." },
{ "audience": "sales", "text": "AI work is 39% of its postings, 15x the market's 2.6%." },
{ "audience": "government", "text": "4,120 open jobs, 62% of them in US; new hiring in PL-WAW." }
],
"facts": {
"company": "Google",
"window_weeks": 4,
"momentum": { "relative_momentum_pct": 16.7, "company_growth": 1.12, "industry_growth": 0.96, "percentile": 82, "peers": 1140 },
"ai": { "ai_pct": 39, "market_ai_pct": 2.6, "intensity_x": 15 },
"footprint": { "open_jobs": 4120, "top_countries": [{ "country_code": "US", "share_pct": 62 }] },
"new_locations": [{ "country_code": "PL", "metro_code": "PL-WAW", "jobs": 7 }]
}
}Errors
400 for a malformed key or an unknown section, 404 when no company or group has the key,
402 when your credits are used up, 429 above the rate limit, 502 and 504 when the page
could not be computed. Errors cost no credits.