Fiber AI
Enrichment

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

QuestionCapabilityReturnsCredits
Give me the whole pictureScouting reportNews, founders, funding, headcount history, offices, open jobs6 per report
What does it earn?Revenue estimateA USD range for a fiscal year, with citations4 per lookup
How many people work in X?Department sizeCount and share of headcount per department you define2 per company
How is the org built?Depth chartHeadcount and tenure by function × seniority8 per report
Where does it hire from, and where do people go?Talent flowSource or destination companies, plus who moved5 per report
Who does it trade talent with most?Talent rivalsTwo-way flows with its top rivals5 per report
What does it look like?Logos and profile photosImage URLs, one or up to 10,000 at a time0.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:

FieldExample
linkedinUrlhttps://www.linkedin.com/company/openai
linkedinSlugopenai
linkedinOrgId11130470
domainopenai.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:

  • news with title, URL, date, summary and sentiment
  • founders with roles, LinkedIn URLs and photos
  • fundingInfo: stage, total raised, last round and investors
  • historicalHeadcount with growth over 1, 2, 3, 6, 12, 18, 24 and 36 months
  • companyProfile: logo, website, followers, employee count, founding year, industries, specialties and social handles
  • officeLocations with structured addresses, coordinates and time zone
  • jobPosts, milestones, blogPosts, mediaLinks (videos and podcasts), companyPhotos, aboutDescription and a written companySummary

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 completed

Pass 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:

  • joiners shows where a company hires from: which competitors, universities and regions feed it.
  • leavers shows 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:

NeedInputOutputLimits
One company logoidentifier: LinkedIn URL, slug, org ID or domainlogoUrl, or null if none600 requests/min
Many company logosOne of domains, linkedinUrls, liOrgIds (up to 10,000)data[]: identifier + logoUrl30 requests/min
Many profile photoslinkedinUrls (up to 10,000; /in/, Sales Navigator lead or Recruiter profile URLs)data[]: linkedinUrl, profilePicFound, profilePic30 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

OperationWhat it doesReference
Scouting reportFull company briefing: news, founders, funding, headcount history, officesgetScoutingReport
Revenue estimateAnnual revenue range in USD with citationsgetCompanyRevenue
Department sizeCounts current employees per title-defined departmentgetDepartmentSize
Talent flowWhere a company's joiners come from or its leavers gogetTalentFlow
Talent rivalsTop two-way talent exchanges for a companygetTalentFlowRivals
Depth chart (start / poll)Headcount and tenure by function × seniority, asyncstartDepthChart → pollDepthChart
Company logoLogo URL for one companycompanyLogo
Bulk company logosLogo URLs for up to 10,000 companiesbulkCompanyLogos
Bulk profile photosProfile photo URLs for up to 10,000 peoplebulkProfilePic
Ranked company list downloadFortune, Forbes and similar lists with financialslistCompanyRankings (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 include and the near-misses into exclude.
  • Feed markdownSummary straight 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

OperationCreditsRate limit
Scouting report6 per report120/min
Revenue estimate4 per lookup120/min
Department size2 per company60/min
Talent flow5 per report30/min
Talent rivals5 per report30/min
Depth chart start8 per report30/min
Depth chart pollFree120/min
Company logo0.3 per logo found600/min
Bulk company logos0.3 per logo found30/min
Bulk profile photos0.3 per photo found30/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.

  • 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

On this page