Company insights
Size up any company in one call per question. Revenue, team sizes, where its people come from and go, an org chart by function and seniority, plus logos and profile photos at scale.
Company insights
Company search tells you which companies fit. Company insights tell you what one of them actually looks like inside. We built a set of single-purpose lookups for the questions sales, recruiting and investment teams ask most: how big is it, how is the team built, and who is it winning talent from? Each one takes a company identifier and returns a structured answer, most of them inline.
Counts, not samples. Department sizing counts every current employee that matches your titles, and depth charts and talent-flow reports cover up to 10,000 people per report. You get a headcount you can quote rather than an extrapolation.
What you can ask
| Question | Capability | Returns | Credits |
|---|---|---|---|
| Give me the whole picture | Scouting report | News, founders, funding, headcount history, offices, open jobs | 6 per report |
| What does it earn? | Revenue estimate | A USD range for a fiscal year, with citations | 4 per lookup |
| How many people work in X? | Department size | Count and share of headcount per department you define | 2 per company |
| How is the org built? | Depth chart | Headcount and tenure by function × seniority | 8 per report |
| Where does it hire from, and where do people go? | Talent flow | Source or destination companies, plus who moved | 5 per report |
| Who does it trade talent with most? | Talent rivals | Two-way flows with its top rivals | 5 per report |
| What does it look like? | Logos and profile photos | Image URLs, one or up to 10,000 at a time | 0.3 per image found |
Looking for ranked lists like the Fortune 500? That lives in Fortune & Forbes lists.
Identifying the company
Most insights take a company object with exactly one of:
| Field | Example |
|---|---|
linkedinUrl | https://www.linkedin.com/company/openai |
linkedinSlug | openai |
linkedinOrgId | 11130470 |
domain | openai.com |
Three operations differ. The revenue estimate takes companyMetadata, where
name, domain, linkedinUrl (URL or slug) and linkedinOrgId are all
optional and can be combined; add name when a domain is ambiguous. The
single logo lookup takes one identifier string and detects the type. Bulk
logos take one list type per request: domains, linkedinUrls or liOrgIds.
Every response echoes the resolved company (name, LinkedIn URL, org ID, domain), so you can join results back to your own records.
Scouting report
One call returns the briefing you'd otherwise assemble from a dozen tabs:
newswith title, URL, date, summary and sentimentfounderswith roles, LinkedIn URLs and photosfundingInfo: stage, total raised, last round and investorshistoricalHeadcountwith growth over 1, 2, 3, 6, 12, 18, 24 and 36 monthscompanyProfile: logo, website, followers, employee count, founding year, industries, specialties and social handlesofficeLocationswith structured addresses, coordinates and time zonejobPosts,milestones,blogPosts,mediaLinks(videos and podcasts),companyPhotos,aboutDescriptionand a writtencompanySummary
The report returns inline but takes 1–2 minutes to build. Set your client
timeout to at least 120 seconds. A section with nothing to report comes
back null or empty.
{
"apiKey": "sk_live_xxx",
"company": { "domain": "openai.com" }
}Size and revenue
Revenue estimate
Returns revenueInfo with lowerBound and upperBound in USD, the
fiscalYear the range applies to, citations (source URLs you can show a
reviewer) and optional comments. revenueInfo is null when no estimate
is available. Synchronous.
Department size
You define the departments; we count every current employee who fits.
Send 1–20 departments, each with a name and a title list. Seniority isn't
part of the match: a department is defined by its titles alone.
{
"apiKey": "sk_live_xxx",
"company": { "linkedinSlug": "openai" },
"departments": [
{
"name": "Security",
"titles": {
"type": "manual",
"include": { "titles": ["Security Engineer", "CISO", "Security Analyst"] },
"exclude": { "titles": ["Security Guard"] }
}
}
]
}Each department takes up to 400 include titles and 400 exclude titles. The
response gives total headcount and, per department, count and
percentOfHeadcount (0–100, two decimals). Synchronous, with a 1-minute
recommended timeout.
Departments are counted independently. If two definitions share a title,
the same person counts in both, so department counts won't necessarily sum
to headcount. At companies over 40,000 employees, percentages can run
slightly past 100.
Org chart: the depth chart
Ask "how many senior engineers does this company have?" and get a real grid. The depth chart breaks a company's people down by function and seniority (Junior, Mid-Level, Senior, Manager, Executive), with average tenure in each cell.
It runs in the background:
start (8 credits, returns reportId) → poll (free) until status is completedPass up to 30 functions to classify into, such as
["Engineering", "Sales", "Legal Practice"]. Leave them out and we pick
functions from the company's own job titles. Either way an Other bucket
catches anyone who doesn't fit.
import { startDepthChart, pollDepthChart } from "@fiberai/sdk";
const started = await startDepthChart({
body: {
apiKey: process.env.FIBER_API_KEY!,
company: { domain: "openai.com" },
functions: ["Engineering", "Sales", "Product"],
},
});
const reportId = started.data!.output.reportId;
let poll;
do {
await new Promise((r) => setTimeout(r, 15_000));
poll = await pollDepthChart({
body: { apiKey: process.env.FIBER_API_KEY!, reportId },
});
} while (poll.data?.output.status === "pending");
console.log(poll.data?.output.report?.markdownSummary);A completed report carries totalEmployees, averageTenureMonths,
buckets (one per function × seniority pair), roll-ups in functionStats
and seniorityStats, and a markdownSummary table ready for a CLI or an
LLM prompt. A failed report returns status: "failed" with an
errorMessage. You get counts per bucket, not the people in them.
Rather than poll, you can subscribe to the depth_chart.completed
webhook.
Talent movement
Talent flow
Pick a direction and a dateRange:
joinersshows where a company hires from: which competitors, universities and regions feed it.leaversshows where its alumni go: which companies and startups are pulling its people.
Either dateRange bound can be null to leave that side open. The report
ranks companyBuckets by volume, each with count, percent, funding stage,
total funding and valuation when known. It also profiles the cohort itself:
peopleCount, yearsOfExperience and tenureMonths distributions, and
breakdowns by seniority, job function, country, metro, school and years of
experience. A markdownSummary renders the whole thing as a readable report.
Up to 10,000 profiles per request. Returns inline; large companies can take up to 2 minutes, so set a 2-minute timeout.
Talent rivals
Talent flow looks one way. Rivals looks both ways at once: the companies
that trade the most people with your target, with gainedCount,
lostCount, netCount (positive means your target is winning the exchange)
and totalMovesCount for each. numCompaniesPerSide (1–50, default 10)
sets how many top sources and destinations to include. Companies that are
both get merged, so the list can be shorter than twice that number.
Up to 10,000 profiles per direction. Returns inline, but large companies can take up to 4 minutes; set your timeout to match.
Logos and photos
Cheap, fast imagery for CRMs, prospect lists and account pages:
| Need | Input | Output | Limits |
|---|---|---|---|
| One company logo | identifier: LinkedIn URL, slug, org ID or domain | logoUrl, or null if none | 600 requests/min |
| Many company logos | One of domains, linkedinUrls, liOrgIds (up to 10,000) | data[]: identifier + logoUrl | 30 requests/min |
| Many profile photos | linkedinUrls (up to 10,000; /in/, Sales Navigator lead or Recruiter profile URLs) | data[]: linkedinUrl, profilePicFound, profilePic | 30 requests/min |
All three are synchronous at 0.3 credits per image found. Companies and profiles with no image, and duplicates in the same request, are free. A list of 10,000 logos that all resolve costs about 3,000 credits.
Operations
| Operation | What it does | Reference |
|---|---|---|
| Scouting report | Full company briefing: news, founders, funding, headcount history, offices | getScoutingReport |
| Revenue estimate | Annual revenue range in USD with citations | getCompanyRevenue |
| Department size | Counts current employees per title-defined department | getDepartmentSize |
| Talent flow | Where a company's joiners come from or its leavers go | getTalentFlow |
| Talent rivals | Top two-way talent exchanges for a company | getTalentFlowRivals |
| Depth chart (start / poll) | Headcount and tenure by function × seniority, async | startDepthChart → pollDepthChart |
| Company logo | Logo URL for one company | companyLogo |
| Bulk company logos | Logo URLs for up to 10,000 companies | bulkCompanyLogos |
| Bulk profile photos | Profile photo URLs for up to 10,000 people | bulkProfilePic |
| Ranked company list download | Fortune, Forbes and similar lists with financials | listCompanyRankings (see Fortune & Forbes lists) |
All operations are POST under https://api.fiber.ai/v1/.
Using it effectively
- Match the tool to the question. If you only need one team's size, department size at 2 credits beats a depth chart at 8. Reach for the depth chart when you want the whole grid or don't know the function names yet.
- Set timeouts per operation, not globally: 1 minute for department size and logos, 2 for scouting reports and talent flow, 4 for talent rivals.
- Pace the heavy reports. Talent flow, talent rivals and depth-chart starts allow 30 requests per minute; anything over returns HTTP 429.
- Poll depth charts at a relaxed interval (the example waits 15 seconds), or take the webhook. Polling is free but limited to 120 requests per minute.
- Build department title lists from real titles. Pull a sample of titles
from people search first, then paste the ones that fit into
includeand the near-misses intoexclude. - Feed
markdownSummarystraight to an LLM or a Slack message when a person needs to read the result. - Normalize identifiers before a big logo or insight run. Messy LinkedIn slugs and URNs resolve cleanly with Standardize identifiers.
Use cases
- Account research before a call: a scouting report gives the rep recent news, funding and founders in one paste.
- Territory sizing by team: count security, data or RevOps headcount across a target list to rank accounts by the buyer team you actually sell to.
- Competitive recruiting: run leavers on a competitor to see where its people land, and rivals to see who's out-hiring whom.
- Investment diligence: pair the revenue range with headcount growth and a depth chart to check whether the org matches the stage.
- Polished lists: add logos to an account list and photos to a prospect list before it goes into a CRM or a deck.
Credits
| Operation | Credits | Rate limit |
|---|---|---|
| Scouting report | 6 per report | 120/min |
| Revenue estimate | 4 per lookup | 120/min |
| Department size | 2 per company | 60/min |
| Talent flow | 5 per report | 30/min |
| Talent rivals | 5 per report | 30/min |
| Depth chart start | 8 per report | 30/min |
| Depth chart poll | Free | 120/min |
| Company logo | 0.3 per logo found | 600/min |
| Bulk company logos | 0.3 per logo found | 30/min |
| Bulk profile photos | 0.3 per photo found | 30/min |
These are list prices. chargeInfo on every response is the authoritative
record of what you were charged, and your org's creditsPerOperation wins
over published numbers. See Billing & credits.
Related
- Kitchen Sink for a full company or person record from a name, domain or URL
- Live Fetch for a company's LinkedIn page as it stands right now
- Tracker to get alerted when headcount, department size or funding changes
- Fortune & Forbes lists for ranked company lists