---
title: "Count employees per department"
method: POST
path: "/v1/department-size"
tags: ["Company info"]
---

# Count employees per department

`POST /v1/department-size`

Counts how many current employees at a company fall into each department you define. Unlike the depth-chart endpoint, this Synchronous endpoint provides immediate results without waiting for background job generation. You supply the job titles that define each department (no seniority is considered), and every current employee is counted — not just a sample. This endpoint performs a headcount snapshot for direct, actionable data.

<span>⚡ <strong>Rate limit:</strong> 60 requests per 1 minute</span>

<span>💰 <strong>Cost:</strong> 2 credits per company&nbsp;<span title="Pricing shown is default pricing. Actual pricing may vary.">ⓘ</span></span>

<span>⏱ <strong>Recommended timeout:</strong> 1 minute&nbsp;<span title="Recommended timeout: set your HTTP client timeout to at least 1 minute for this endpoint.">ⓘ</span></span>

## Request body

- object
  - `apiKey` string, required — Your Fiber API key
  - `company` union, required — Company identifier. Set identifier to 'linkedinUrl', 'linkedinSlug', 'linkedinOrgId', or 'domain' and provide the corresponding value.
    - object
      - `identifier` 'linkedinUrl', required
      - `value` string, required — LinkedIn company URL (e.g. 'https://www.linkedin.com/company/openai').
    - object
      - `identifier` 'linkedinSlug', required
      - `value` string, required — LinkedIn company slug (e.g. 'openai').
    - object
      - `identifier` 'linkedinOrgId', required
      - `value` string, required — LinkedIn numeric organization ID (e.g. '11130470').
    - object
      - `identifier` 'domain', required
      - `value` string, required — Company website domain (e.g. 'openai.com').
  - `departments` object[], required — Departments to size. Each is counted independently against ALL current employees, so overlapping definitions may count the same person in more than one department.
    - `name` string, required — Your label for this department (e.g. 'Engineering').
    - `titles` object, required — How to decide which employees belong to this department.
      - `type` 'manual', required — Match employees against a job-title list you provide.
      - `include` object, required — Title filter for including employees in this department.
        - `titles` string[], required — Job-title strings that qualify an employee for this department.
      - `exclude` object — Optional title filter for excluding employees from this department.
        - `titles` string[] — Job-title strings that disqualify an employee even if they matched include.titles. Omit this object or pass an empty list to exclude nobody.

## Response `200`

Default Response

- object
  - `output` object, required
    - `company` object, required — Company identification details
      - `name` string, nullable — Company name
      - `linkedinUrl` string, nullable — Full LinkedIn company profile URL
      - `linkedinOrgId` string, nullable — LinkedIn organization ID for the company
      - `domain` string, nullable — Company primary domain
    - `headcount` number, required — Public sources reported total employees at the company (the percentage denominator). Per-department counts come from profile matching and may not sum to this value.
    - `departments` object[], required — One entry per input department, in the same order
      - `name` string, required — The department label you supplied
      - `count` number, required — Number of current employees matching this department
      - `percentOfHeadcount` number, required — Department count as a percentage of total company headcount (0–100, rounded to 2 decimal places). Because departments are counted independently, values across departments need not sum to 100. Due to approximation above 40K employees, this can slightly exceed 100.
  - `chargeInfo` union, required
    - object — Credits were charged immediately for this operation
      - `method` 'charged-now', required
      - `creditsCharged` number, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits will be charged after the operation completes
      - `method` 'charging-later', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits that were charged for an asynchronous operation
      - `method` 'charged-for-async-process', required
      - `creditsCharged` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — No credits were charged for this operation
      - `method` 'free', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits were refunded for this operation
      - `method` 'credits-refunded', required
      - `creditsRefunded` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
  - `warnings` object[], nullable — Warnings about extraneous fields in request
    - `field` string, required — Full path to extraneous field (e.g., 'searchParams.ExtraField')
    - `message` string, required — Warning message
  - `advice` string[], nullable — Tips, recommendations, and suggestions for using this API effectively.

## Other responses

- `400` — Default Response
- `401` — Default Response
- `402` — Default Response
- `403` — Default Response
- `404` — Default Response
- `422` — Default Response
- `429` — Default Response
- `500` — Default Response
- `503` — Default Response

---

[API](https://skmtc.net/fiber/apis/fiber-ai-api.md) · [All operations](https://skmtc.net/fiber/apis/fiber-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fiber/fiber-ai-api/revisions/720c63a313eb/schema)
