openapi: 3.1.0
info:
  title: CompanySpec API
  version: 1.0.0
  description: |
    Company data from what every company says about itself: who they sell to, what they do,
    their technologies, vendors, compliance claims, hiring, funding and more.

    **Billing.** Each company is charged at most once per billing month:
    one *lookup* when you name it, or one *discovery* when we find it for you.
    After that, everything about that company is free for the rest of your billing month: its profile with
    ICP (what they do and who they sell to), pricing summary, long description and list of most useful pages;
    its page summaries (pricing, legal, security and compliance, integrations and more); technologies;
    headcount; recent hires; funding; news; and all of its job postings.
    Allowances belong to your account and are shared by all its API keys.
    Unavailable data (404) is never charged.
  license:
    name: Proprietary
    url: https://companyspec.com/terms
servers:
- url: https://api.companyspec.com/v1
  description: Production
security:
- bearerAuth: []
tags:
- name: Account
  description: Your plan, limits and usage.
- name: Reference data
  description: Valid filter values and the technologies we track. Always free.
- name: Companies
  description: Resolve, look up and enrich companies you already know.
- name: Company data
  description: |-
    Detailed data for one company: page summaries (pricing, legal, security and compliance, integrations and more),
    technologies, headcount, recent hires, funding and news. Free once the company is paid for this billing month.
- name: Discovery
  description: Find companies you don't know yet. Charged as discoveries.
- name: Job postings
  description: Job postings by company or across all companies.
paths:
  /account:
    get:
      operationId: getAccount
      tags:
      - Account
      summary: Get account and usage
      description: Your plan, your current billing month and how much of each allowance you have used. Free.
      responses:
        '200':
          description: Account details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
              example:
                plan: starter
                period:
                  start: '2026-11-03'
                  end: '2026-12-02'
                lookups:
                  used: 250
                  limit: 10000
                discoveries:
                  used: 23
                  limit: 2000
        '401':
          $ref: '#/components/responses/Unauthorized'
  /values/{field}:
    get:
      operationId: listValues
      tags:
      - Reference data
      summary: List filter values
      description: |
        Valid values for a filter, with the number of companies that have each value (across all companies).
        Use these values in `/companies/search`, `/companies/count`, `/companies/similar`, `/pages/search` and
        `/job-postings/search`. Free.
      parameters:
      - name: field
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/ValueField'
        example: industries
      - name: q
        in: query
        description: Only return values that contain this text.
        schema:
          type: string
          maxLength: 100
        example: dent
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: Values for the field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValuesResponse'
              example:
                field: industries
                values:
                - value: Dentists
                  label: Dentists
                  companies: 141203
                - value: Dental Equipment Manufacturing
                  label: Dental Equipment Manufacturing
                  companies: 3112
                next_cursor:
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
  /technologies:
    get:
      operationId: listTechnologies
      tags:
      - Reference data
      summary: List technologies
      description: 'Every technology and service provider we track: tools found on company websites and in job postings, and
        providers named in subprocessor lists. Includes how many companies use each. Free.'
      parameters:
      - name: q
        in: query
        description: Search by name.
        schema:
          type: string
          maxLength: 100
        example: stripe
      - name: category
        in: query
        description: A technology category from `/values/technology_categories`.
        schema:
          type: string
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - companies
          - name
          default: companies
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: Technologies.
          content:
            application/json:
              schema:
                type: object
                required:
                - technologies
                - next_cursor
                properties:
                  technologies:
                    type: array
                    items:
                      $ref: '#/components/schemas/TechnologySummary'
                  next_cursor:
                    $ref: '#/components/schemas/NextCursor'
              example:
                technologies:
                - slug: stripe
                  name: Stripe
                  categories:
                  - Payments
                  companies: 184230
                - slug: stripe-billing
                  name: Stripe Billing
                  categories:
                  - Subscription billing
                  companies: 21704
                next_cursor:
        '401':
          $ref: '#/components/responses/Unauthorized'
  /technologies/{slug}:
    get:
      operationId: getTechnology
      tags:
      - Reference data
      summary: Get a technology
      description: 'Profile of one technology: who makes it, its categories and the tools it integrates with. Free.'
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
        example: stripe
        description: A slug from `/technologies`.
      responses:
        '200':
          description: Technology profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TechnologyProfile'
              example:
                slug: stripe
                name: Stripe
                categories:
                - Payments
                tags:
                - payments
                - billing
                - api
                pricing_models:
                - usage_based
                license_types:
                - commercial
                github_repo:
                companies: 184230
                integrates_with:
                - shopify
                - quickbooks
                - hubspot
                made_by:
                  name: Stripe
                  domain: stripe.com
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /companies/resolve:
    get:
      operationId: resolveCompany
      tags:
      - Companies
      summary: Resolve a company
      description: |
        Turn a name, domain or LinkedIn URL into a company. Returns the best match and, if you ask
        for them with `limit`, up to 4 alternatives (fewer if there aren't that many good candidates).
        Use it to get the domain to pass to other endpoints. Provide at least one of `name`, `domain` or `linkedin_url`.

        `confidence` (0–1) says how sure we are. Above 0.8 is usually right; below 0.5, check the alternatives.
        `match` is `null` when nothing is close enough.

        Free. Limited to 60 requests per minute.
      parameters:
      - name: name
        in: query
        schema:
          type: string
          maxLength: 250
        example: Mercury
      - name: domain
        in: query
        schema:
          type: string
          maxLength: 253
      - name: linkedin_url
        in: query
        schema:
          type: string
          format: uri
      - name: country
        in: query
        description: ISO 3166-1 alpha-2 country code to prefer.
        schema:
          type: string
          minLength: 2
          maxLength: 2
        example: US
      - name: limit
        in: query
        description: Total candidates to return, including the best match.
        schema:
          type: integer
          minimum: 1
          maximum: 5
          default: 1
        example: 3
      responses:
        '200':
          description: Best match and alternatives.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResolveResponse'
              example:
                match:
                  id: cmp_5m0q2
                  domain: mercury.com
                  name: Mercury
                  logo_url: https://logos.companyspec.com/mercury.com.png
                  confidence: 0.91
                alternatives:
                - id: cmp_9w3ns
                  domain: mercuryinsurance.com
                  name: Mercury Insurance
                  logo_url:
                  confidence: 0.62
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
  /companies/{company}:
    get:
      operationId: getCompany
      tags:
      - Companies
      summary: Get a company
      description: |
        Basic company information is always returned. Long paragraphs are off by default; turn them on with
        `show_icp=true` (what they do and who they sell to), `show_pricing=true` (pricing page summary),
        `show_description=true` (long description) and `show_pages=true` (the most useful pages on their website, with URLs).
        Costs 1 lookup, free if the company is already paid for this billing month. Field meanings are on the Companies & IDs page.
      parameters:
      - $ref: '#/components/parameters/CompanyKey'
      - $ref: '#/components/parameters/ShowIcp'
      - $ref: '#/components/parameters/ShowPricing'
      - $ref: '#/components/parameters/ShowDescription'
      - $ref: '#/components/parameters/ShowPages'
      responses:
        '200':
          description: The company.
          headers:
            X-Lookups-Remaining:
              $ref: '#/components/headers/LookupsRemaining'
            X-Discoveries-Remaining:
              $ref: '#/components/headers/DiscoveriesRemaining'
          content:
            application/json:
              schema:
                type: object
                required:
                - company
                - usage
                properties:
                  company:
                    $ref: '#/components/schemas/Company'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                company:
                  id: cmp_19ad3
                  domain: acmedental.io
                  name: AcmeDental
                  website: https://acmedental.io
                  description: Practice management software for independent dental clinics.
                  logo_url:
                  type: private
                  founded_year: 2017
                  ipo_date:
                  industry: Software Development
                  industries:
                  - Software Development
                  - Healthcare Technology
                  naics_codes:
                  - '513210'
                  sic_codes:
                  - '7372'
                  keywords:
                  - practice management
                  - dental scheduling
                  - patient billing
                  customer_types:
                  - B2B
                  customer_segments:
                  - smb
                  compliance:
                  - HIPAA
                  - SOC 2
                  technologies:
                  - stripe
                  - twilio
                  - aws
                  - hubspot
                  vendors:
                  - aws
                  - stripe
                  - twilio
                  employees: 51-200
                  employee_count: 142
                  revenue: 10m-50m
                  location:
                    country_code: US
                    country: United States
                    state: Texas
                    city: Austin
                  office_locations:
                  - country_code: US
                    country: United States
                    state: Texas
                    city: Austin
                    employee_count: 120
                  parent:
                  subsidiaries: []
                  socials:
                    linkedin_url: https://www.linkedin.com/company/acmedental
                    twitter_url:
                    facebook_url:
                    youtube_url:
                    github_url:
                  open_jobs: 6
                  web:
                    traffic_rank: 184021
                  icp: AcmeDental provides cloud practice management software covering scheduling, charting and billing.
                    They solve the pain of juggling separate tools for appointments and insurance claims. Their 
                    customers are likely independent dental practices and small multi-location groups in the US.
                  pricing: Three plans billed per location per month, from $199 (Starter) to $499 (Pro), with custom 
                    pricing for groups of 10+ locations. A 30-day free trial is offered and onboarding is included on 
                    annual plans.
                  pages:
                  - page_type: home
                    url: https://acmedental.io
                  - page_type: pricing
                    url: https://acmedental.io/pricing
                  - page_type: legal
                    url: https://acmedental.io/privacy
                usage:
                  charged:
                    lookups: 1
                    discoveries: 0
                  already_paid: 0
                  remaining:
                    lookups: 9749
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
  /companies/enrich:
    post:
      operationId: enrichCompanies
      tags:
      - Companies
      summary: Enrich companies in bulk
      description: |
        Look up to 100 companies in one call, by domain or id (you can mix them). Accepts the same options as
        `GET /companies/{company}`: `show_icp`, `show_pricing`, `show_description` and `show_pages`.
        Results come back in the order you sent them; duplicates are returned once.
        Costs 1 lookup per company found that isn't already paid for this billing month. Companies we can't find are
        listed in `not_found` and aren't charged. If your allowance runs out partway, the companies it covered are returned
        and `usage.allowance_reached` is `true`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnrichRequest'
            example:
              companies:
              - acmedental.io
              - bracehub.com
              - not-a-real-company.example
              show_icp: true
      responses:
        '200':
          description: Companies found and not found.
          content:
            application/json:
              schema:
                type: object
                required:
                - companies
                - not_found
                - usage
                properties:
                  companies:
                    type: array
                    items:
                      $ref: '#/components/schemas/Company'
                  not_found:
                    type: array
                    items:
                      type: string
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                companies:
                - id: cmp_19ad3
                  domain: acmedental.io
                  name: AcmeDental
                  website: https://acmedental.io
                  description: Practice management software for independent dental clinics.
                  logo_url:
                  type: private
                  founded_year: 2017
                  ipo_date:
                  industry: Software Development
                  industries:
                  - Software Development
                  - Healthcare Technology
                  naics_codes:
                  - '513210'
                  sic_codes:
                  - '7372'
                  keywords:
                  - practice management
                  - dental scheduling
                  - patient billing
                  customer_types:
                  - B2B
                  customer_segments:
                  - smb
                  compliance:
                  - HIPAA
                  - SOC 2
                  technologies:
                  - stripe
                  - twilio
                  - aws
                  - hubspot
                  vendors:
                  - aws
                  - stripe
                  - twilio
                  employees: 51-200
                  employee_count: 142
                  revenue: 10m-50m
                  location:
                    country_code: US
                    country: United States
                    state: Texas
                    city: Austin
                  office_locations:
                  - country_code: US
                    country: United States
                    state: Texas
                    city: Austin
                    employee_count: 120
                  parent:
                  subsidiaries: []
                  socials:
                    linkedin_url: https://www.linkedin.com/company/acmedental
                    twitter_url:
                    facebook_url:
                    youtube_url:
                    github_url:
                  open_jobs: 6
                  web:
                    traffic_rank: 184021
                  icp: AcmeDental provides cloud practice management software covering scheduling, charting and billing.
                    They solve the pain of juggling separate tools for appointments and insurance claims. Their 
                    customers are likely independent dental practices and small multi-location groups in the US.
                - id: cmp_4kq7p
                  domain: bracehub.com
                  name: BraceHub
                  website: https://bracehub.com
                  description: Scheduling and patient communication software for orthodontic and dental practices.
                  logo_url:
                  type: private
                  founded_year: 2019
                  ipo_date:
                  industry: Software Development
                  industries:
                  - Software Development
                  - Healthcare Technology
                  naics_codes:
                  - '513210'
                  sic_codes:
                  - '7372'
                  keywords:
                  - orthodontic software
                  - patient reminders
                  - online booking
                  customer_types:
                  - B2B
                  customer_segments:
                  - smb
                  compliance:
                  - HIPAA
                  technologies:
                  - stripe
                  - aws
                  - intercom
                  vendors:
                  - aws
                  - stripe
                  employees: 11-50
                  employee_count: 38
                  revenue: 1m-10m
                  location:
                    country_code: US
                    country: United States
                    state: Colorado
                    city: Denver
                  office_locations:
                  - country_code: US
                    country: United States
                    state: Colorado
                    city: Denver
                    employee_count: 38
                  parent:
                  subsidiaries: []
                  socials:
                    linkedin_url: https://www.linkedin.com/company/bracehub
                    twitter_url:
                    facebook_url:
                    youtube_url:
                    github_url:
                  open_jobs: 2
                  web:
                    traffic_rank: 402118
                  icp: BraceHub provides online booking, reminders and two-way messaging for orthodontic and dental 
                    practices. They reduce no-shows and front-desk phone time. Their customers are likely independent 
                    orthodontists and small dental groups in the US.
                not_found:
                - not-a-real-company.example
                usage:
                  charged:
                    lookups: 2
                    discoveries: 0
                  already_paid: 0
                  remaining:
                    lookups: 9748
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '422':
          $ref: '#/components/responses/ValidationError'
  /companies/{company}/pages/{page_type}:
    get:
      operationId: getCompanyPage
      tags:
      - Company data
      summary: Get a page summary
      description: |
        The summary of one page on a company's website, with its URL. Summaries are AI-written from the page.
        Costs 1 lookup, free if the company is already paid for this billing month.
        If we don't have that page type for the company you get a 404 that lists the page types we do have; it isn't charged.
      parameters:
      - $ref: '#/components/parameters/CompanyKey'
      - name: page_type
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/PageType'
        example: pricing
        description: One of the page types listed on the Page types page.
      responses:
        '200':
          description: The page summary.
          content:
            application/json:
              schema:
                type: object
                required:
                - page
                - usage
                properties:
                  page:
                    $ref: '#/components/schemas/PageSummary'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                page:
                  page_type: pricing
                  url: https://acmedental.io/pricing
                  summary: Three plans billed per location per month, from $199 (Starter) to $499 (Pro), with custom 
                    pricing for groups of 10+ locations. A 30-day free trial is offered and onboarding is included on 
                    annual plans.
                usage:
                  charged:
                    lookups: 0
                    discoveries: 0
                  already_paid: 1
                  remaining:
                    lookups: 9750
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          description: Company not found, or this page type isn't available for the company.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://companyspec.com/docs/errors/page-not-available
                title: Page not available
                status: 404
                detail: We don't have a careers page for acmedental.io.
                available_page_types:
                - home
                - pricing
                - about
                - legal
                - compliance
                request_id: req_01JC8X4T2M
  /companies/{company}/technologies:
    get:
      operationId: getCompanyTechnologies
      tags:
      - Company data
      summary: Get technologies
      description: |
        Every technology we have detected for the company: where we found it (`website` or `jobs`), when it was
        first seen and, if they stopped using it, when. `explanation` says in plain words what we found.
        Costs 1 lookup, free if the company is already paid for this billing month.
      parameters:
      - $ref: '#/components/parameters/CompanyKey'
      - name: status
        in: query
        schema:
          type: string
          enum:
          - active
          - removed
          - all
          default: active
      responses:
        '200':
          description: Technologies.
          content:
            application/json:
              schema:
                type: object
                required:
                - technologies
                - usage
                properties:
                  technologies:
                    type: array
                    items:
                      $ref: '#/components/schemas/CompanyTechnology'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                technologies:
                - slug: stripe
                  name: Stripe
                  categories:
                  - Payments
                  sources:
                  - website
                  - jobs
                  first_seen: '2024-03-01'
                  removed_on:
                  versions: []
                  explanation: Stripe.js is loaded on the checkout page, and two backend job postings ask for Stripe API
                    experience.
                usage:
                  charged:
                    lookups: 0
                    discoveries: 0
                  already_paid: 1
                  remaining:
                    lookups: 9750
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
  /companies/{company}/headcount:
    get:
      operationId: getCompanyHeadcount
      tags:
      - Company data
      summary: Get headcount
      description: |
        Current headcount by department, and total headcount per month for the last 12 months.
        Costs 1 lookup, free if the company is already paid for this billing month.
      parameters:
      - $ref: '#/components/parameters/CompanyKey'
      responses:
        '200':
          description: Headcount.
          content:
            application/json:
              schema:
                type: object
                required:
                - headcount
                - usage
                properties:
                  headcount:
                    $ref: '#/components/schemas/Headcount'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                headcount:
                  employee_count: 142
                  departments:
                  - department: engineering
                    employee_count: 48
                  - department: sales
                    employee_count: 31
                  history:
                  - month: 2026-08
                    employee_count: 131
                  - month: 2026-09
                    employee_count: 137
                  - month: 2026-10
                    employee_count: 142
                usage:
                  charged:
                    lookups: 0
                    discoveries: 0
                  already_paid: 1
                  remaining:
                    lookups: 9750
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
  /companies/{company}/hires:
    get:
      operationId: getCompanyHires
      tags:
      - Company data
      summary: Get recent hires
      description: |
        People who recently joined the company, counted by department and seniority, plus the most recent
        hires (up to 100). Departments come from `/values/hire_departments` and seniorities from `/values/hire_seniorities`.
        No names or personal details are returned.
        Costs 1 lookup, free if the company is already paid for this billing month.

        New hires usually appear 1–3 weeks after their start date.
      parameters:
      - $ref: '#/components/parameters/CompanyKey'
      - name: within_days
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 365
          default: 90
      - name: department
        in: query
        description: A value from `/values/hire_departments`.
        schema:
          type: string
      - name: seniority
        in: query
        description: A value from `/values/hire_seniorities`.
        schema:
          type: string
      responses:
        '200':
          description: Recent hires.
          content:
            application/json:
              schema:
                type: object
                required:
                - hires
                - usage
                properties:
                  hires:
                    $ref: '#/components/schemas/HiresResponse'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                hires:
                  within_days: 90
                  total: 9
                  by_department:
                    engineering: 4
                    sales: 3
                    marketing: 2
                  by_seniority:
                    senior: 3
                    mid: 4
                    executive: 1
                    entry: 1
                  items:
                  - department: sales
                    seniority: executive
                    start_date: '2026-10-06'
                  - department: engineering
                    seniority: senior
                    start_date: '2026-09-22'
                usage:
                  charged:
                    lookups: 0
                    discoveries: 0
                  already_paid: 1
                  remaining:
                    lookups: 9750
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
  /companies/{company}/funding:
    get:
      operationId: getCompanyFunding
      tags:
      - Company data
      summary: Get funding
      description: Funding rounds, investors and acquisitions. Costs 1 lookup unless already paid for this billing 
        month.
      parameters:
      - $ref: '#/components/parameters/CompanyKey'
      responses:
        '200':
          description: Funding.
          content:
            application/json:
              schema:
                type: object
                required:
                - funding
                - usage
                properties:
                  funding:
                    $ref: '#/components/schemas/Funding'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                funding:
                  total_funding_usd: 15000000
                  rounds:
                  - type: series_a
                    name: Series A
                    announced_on: '2025-04-15'
                    amount_usd: 15000000
                    pre_money_valuation_usd:
                    post_money_valuation_usd:
                    lead_investors:
                    - name: Example Ventures
                      domain: example.vc
                    investors:
                    - name: Example Ventures
                      domain: example.vc
                    - name: Seed Fund II
                      domain:
                  investors:
                  - name: Example Ventures
                    domain: example.vc
                  - name: Seed Fund II
                    domain:
                  acquisitions: []
                usage:
                  charged:
                    lookups: 0
                    discoveries: 0
                  already_paid: 1
                  remaining:
                    lookups: 9750
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
  /companies/{company}/news:
    get:
      operationId: getCompanyNews
      tags:
      - Company data
      summary: Get news events
      description: Company news events such as launches, expansions, executive hires and funding. Costs 1 lookup unless 
        already paid for this billing month.
      parameters:
      - $ref: '#/components/parameters/CompanyKey'
      - name: category
        in: query
        description: A value from `/values/news_categories`.
        schema:
          type: string
      - name: within_days
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 730
        description: Only events from the last N days. Default 365.
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: News events.
          content:
            application/json:
              schema:
                type: object
                required:
                - news
                - next_cursor
                - usage
                properties:
                  news:
                    type: array
                    items:
                      $ref: '#/components/schemas/NewsEvent'
                  next_cursor:
                    $ref: '#/components/schemas/NextCursor'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                news:
                - id: nws_91ad2
                  category: launches
                  category_group: product
                  date: '2026-09-30'
                  summary: Launched an AI scheduling assistant for dental front desks.
                  amount_usd:
                  url: https://acmedental.io/blog/ai-scheduling-assistant
                next_cursor:
                usage:
                  charged:
                    lookups: 0
                    discoveries: 0
                  already_paid: 1
                  remaining:
                    lookups: 9750
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
  /companies/count:
    post:
      operationId: countCompanies
      tags:
      - Discovery
      summary: Count companies
      description: |
        How many companies match a search, and how many of them would be newly charged.
        Optionally break the total down by up to 3 fields with `group_by`. Takes the same filters as `/companies/search`,
        plus `min_score`, so you can check a search before you pay for it. Free.

        Counts stop at a cap: 10,000 for filter-only counts, and 1,000 when you use `semantic_query`
        (the most a search can return). `total_capped: true` means there are more than `total`; add filters to narrow it down.

        Counts have their own rate limit: 30 per minute on every plan, and 500 per day on the Free plan.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/CompanyFilters'
              - type: object
                properties:
                  group_by:
                    type: array
                    maxItems: 3
                    items:
                      type: string
                      enum:
                      - countries
                      - employees
                      - revenue
                      - type
                      - customer_types
                      - customer_segments
                      - industries
                      - compliance
                      - funding_rounds
                    description: Break the counts down by these fields (up to 3).
                  min_score:
                    type: number
                    minimum: 0
                    maximum: 1
                    description: Only count matches with at least this `match.score`, as in search.
            example:
              semantic_query: practice management software for independent dental practices
              countries:
              - US
              min_score: 0.6
              group_by:
              - employees
      responses:
        '200':
          description: Counts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
              example:
                total: 84
                total_capped: false
                would_charge: 81
                groups:
                  employees:
                    1-10: 21
                    11-50: 38
                    51-200: 19
                    201-500: 5
                    501-1K: 1
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
  /companies/search:
    post:
      operationId: searchCompanies
      tags:
      - Discovery
      summary: Search companies
      description: |
        Find companies with filters, a plain-language `semantic_query`, or both.

        **Order.** With `semantic_query`, results are sorted by `match.score` (relevance, blended with company size and
        web traffic by `semantic_weight`). Without it, larger companies with more web traffic come first.
        `query` and `semantic_query` can be used together: `query` narrows by name or domain, `semantic_query` ranks.

        **Cost.** 1 discovery per company returned that isn't already paid for this billing month, including companies on later
        pages. The `show_*` options cost nothing extra. Use `/companies/count` first; it's free.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
            example:
              semantic_query: practice management software for independent dental practices
              countries:
              - US
              employees:
              - 11-50
              - 51-200
              customer_types:
              - B2B
              compliance:
              - HIPAA
              exclude:
                domains:
                - acmedental.io
              limit: 25
      responses:
        '200':
          description: Matching companies.
          headers:
            X-Lookups-Remaining:
              $ref: '#/components/headers/LookupsRemaining'
            X-Discoveries-Remaining:
              $ref: '#/components/headers/DiscoveriesRemaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
              example:
                results:
                - company:
                    id: cmp_4kq7p
                    domain: bracehub.com
                    name: BraceHub
                    website: https://bracehub.com
                    description: Scheduling and patient communication software for orthodontic and dental practices.
                    logo_url:
                    type: private
                    founded_year: 2019
                    ipo_date:
                    industry: Software Development
                    industries:
                    - Software Development
                    - Healthcare Technology
                    naics_codes:
                    - '513210'
                    sic_codes:
                    - '7372'
                    keywords:
                    - orthodontic software
                    - patient reminders
                    - online booking
                    customer_types:
                    - B2B
                    customer_segments:
                    - smb
                    compliance:
                    - HIPAA
                    technologies:
                    - stripe
                    - aws
                    - intercom
                    vendors:
                    - aws
                    - stripe
                    employees: 11-50
                    employee_count: 38
                    revenue: 1m-10m
                    location:
                      country_code: US
                      country: United States
                      state: Colorado
                      city: Denver
                    office_locations:
                    - country_code: US
                      country: United States
                      state: Colorado
                      city: Denver
                      employee_count: 38
                    parent:
                    subsidiaries: []
                    socials:
                      linkedin_url: https://www.linkedin.com/company/bracehub
                      twitter_url:
                      facebook_url:
                      youtube_url:
                      github_url:
                    open_jobs: 2
                    web:
                      traffic_rank: 402118
                  match:
                    score: 0.84
                    reason: Sells scheduling and patient messaging software to dental and orthodontic practices.
                next_cursor:
                usage:
                  charged:
                    lookups: 0
                    discoveries: 1
                  already_paid: 0
                  remaining:
                    lookups: 9750
                    discoveries: 1976
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
  /companies/similar:
    post:
      operationId: findSimilarCompanies
      tags:
      - Discovery
      summary: Find similar companies
      description: |
        Companies similar to 1–10 seed companies you pass in `companies`, based on what they do and who they sell to.
        All search filters work on top. Results are sorted by `match.score` (similarity to the seeds).

        The seeds are the examples you give us. They are never returned in the results and aren't charged.
        Seeds we can't find are ignored; if none are found you get a 404.

        Costs 1 discovery per company returned that isn't already paid for this billing month.

        `query` and `semantic_query` aren't accepted here: the seeds describe what you're looking for.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimilarRequest'
            example:
              companies:
              - acmedental.io
              countries:
              - US
              - CA
              min_score: 0.6
              limit: 20
      responses:
        '200':
          description: Similar companies.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
              example:
                results:
                - company:
                    id: cmp_4kq7p
                    domain: bracehub.com
                    name: BraceHub
                    website: https://bracehub.com
                    description: Scheduling and patient communication software for orthodontic and dental practices.
                    logo_url:
                    type: private
                    founded_year: 2019
                    ipo_date:
                    industry: Software Development
                    industries:
                    - Software Development
                    - Healthcare Technology
                    naics_codes:
                    - '513210'
                    sic_codes:
                    - '7372'
                    keywords:
                    - orthodontic software
                    - patient reminders
                    - online booking
                    customer_types:
                    - B2B
                    customer_segments:
                    - smb
                    compliance:
                    - HIPAA
                    technologies:
                    - stripe
                    - aws
                    - intercom
                    vendors:
                    - aws
                    - stripe
                    employees: 11-50
                    employee_count: 38
                    revenue: 1m-10m
                    location:
                      country_code: US
                      country: United States
                      state: Colorado
                      city: Denver
                    office_locations:
                    - country_code: US
                      country: United States
                      state: Colorado
                      city: Denver
                      employee_count: 38
                    parent:
                    subsidiaries: []
                    socials:
                      linkedin_url: https://www.linkedin.com/company/bracehub
                      twitter_url:
                      facebook_url:
                      youtube_url:
                      github_url:
                    open_jobs: 2
                    web:
                      traffic_rank: 402118
                  match:
                    score: 0.82
                    reason: Also sells practice software to independent dental practices.
                next_cursor:
                usage:
                  charged:
                    lookups: 0
                    discoveries: 1
                  already_paid: 0
                  remaining:
                    lookups: 9750
                    discoveries: 1976
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
  /pages/search:
    post:
      operationId: searchPages
      tags:
      - Discovery
      summary: Search page summaries
      description: |
        Search inside the summaries of company web pages, optionally limited to some page types and to companies
        that match filters. Returns one result per company: its best-matching page. Sorted by `match.score`.

        Costs 1 discovery per company returned that isn't already paid for this billing month.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PageSearchRequest'
            example:
              query: 14-day free trial, no credit card required
              page_types:
              - pricing
              company:
                countries:
                - GB
              limit: 20
      responses:
        '200':
          description: Matching pages.
          content:
            application/json:
              schema:
                type: object
                required:
                - results
                - next_cursor
                - usage
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      required:
                      - company
                      - page
                      - match
                      properties:
                        company:
                          $ref: '#/components/schemas/CompanyRef'
                        page:
                          $ref: '#/components/schemas/PageSummary'
                        match:
                          type: object
                          required:
                          - score
                          properties:
                            score:
                              type: number
                              description: How well the page matches `query` (0–1).
                  next_cursor:
                    $ref: '#/components/schemas/NextCursor'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                results:
                - company: &id001
                    id: cmp_7tw3e
                    domain: ledgerly.co.uk
                    name: Ledgerly
                    logo_url:
                  page:
                    page_type: pricing
                    url: https://ledgerly.co.uk/pricing
                    summary: Three plans from £12 to £49 per month. All plans start with a 14-day free trial; no card 
                      required.
                  match:
                    score: 0.91
                next_cursor:
                usage:
                  charged:
                    lookups: 0
                    discoveries: 1
                  already_paid: 0
                  remaining:
                    lookups: 9750
                    discoveries: 1976
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '422':
          $ref: '#/components/responses/ValidationError'
  /vendors/{vendor}/customers:
    post:
      operationId: listVendorCustomers
      tags:
      - Discovery
      summary: List a vendor's customers
      description: |
        Companies that use a technology or service provider: named in their subprocessor list, detected on their
        website, or mentioned in their job postings. Narrow the list with the same company filters as search.
        Larger companies come first.

        Costs 1 discovery per company returned that isn't already paid for this billing month. To check how many you'd get
        first, use the free `/companies/count` with `vendors` (subprocessor lists) or `technologies` (website and job postings).
      parameters:
      - name: vendor
        in: path
        required: true
        description: Slug of a technology or service provider, from `/technologies` (for example `openai`, `aws`, 
          `stripe`).
        schema:
          type: string
        example: openai
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                source:
                  type: string
                  enum:
                  - subprocessor
                  - website
                  - jobs
                  - any
                  default: any
                  description: 'Where it must have been found: `subprocessor` list, `website`, `jobs`, or `any`.'
                company:
                  $ref: '#/components/schemas/CompanyAttributeFilters'
                  description: Only return companies that match these filters.
                limit:
                  type: integer
                  minimum: 1
                  maximum: 100
                  default: 25
                cursor:
                  type: string
                  description: The `next_cursor` from the previous page. Valid for 24 hours.
            example:
              source: subprocessor
              company:
                countries:
                - GB
                employees:
                - 11-50
                - 51-200
              limit: 25
      responses:
        '200':
          description: Companies using the vendor.
          content:
            application/json:
              schema:
                type: object
                required:
                - results
                - next_cursor
                - usage
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      required:
                      - company
                      - sources
                      properties:
                        company:
                          $ref: '#/components/schemas/CompanyRef'
                        sources:
                          type: array
                          items:
                            type: string
                            enum:
                            - subprocessor
                            - website
                            - jobs
                        evidence_url:
                          type:
                          - string
                          - 'null'
                          format: uri
                          description: Page where the vendor is disclosed, when the source is a subprocessor list.
                  next_cursor:
                    $ref: '#/components/schemas/NextCursor'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                results:
                - company: *id001
                  sources:
                  - subprocessor
                  evidence_url: https://ledgerly.co.uk/legal/subprocessors
                next_cursor: c_2
                usage:
                  charged:
                    lookups: 0
                    discoveries: 1
                  already_paid: 0
                  remaining:
                    lookups: 9750
                    discoveries: 1976
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
  /companies/{company}/job-postings:
    get:
      operationId: listCompanyJobPostings
      tags:
      - Job postings
      summary: List a company's job postings
      description: |
        Job postings of one company, newest first. Open postings by default; pass `status=closed` or `status=all`
        to include postings that have closed.
        Costs 1 lookup unless the company is already paid for this billing month; all of its postings are then free.
      parameters:
      - $ref: '#/components/parameters/CompanyKey'
      - name: status
        in: query
        schema:
          type: string
          enum:
          - open
          - closed
          - all
          default: open
        description: '`open` (default), `closed` or `all`. Closed postings stay available, with `closed_on` set.'
      - name: job_function
        in: query
        description: A value from `/values/job_functions`.
        schema:
          type: string
      - name: seniority
        in: query
        description: A value from `/values/job_seniorities`.
        schema:
          type: string
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: Job postings.
          content:
            application/json:
              schema:
                type: object
                required:
                - job_postings
                - next_cursor
                - usage
                properties:
                  job_postings:
                    type: array
                    items:
                      $ref: '#/components/schemas/JobPostingSummary'
                  next_cursor:
                    $ref: '#/components/schemas/NextCursor'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                job_postings:
                - id: job_77x2a
                  title: Senior Backend Engineer
                  job_function: engineering
                  seniority: senior
                  workplace_type: remote
                  locations:
                  - Austin, TX, United States
                  posted_on: '2026-10-20'
                  status: open
                next_cursor:
                usage:
                  charged:
                    lookups: 1
                    discoveries: 0
                  already_paid: 0
                  remaining:
                    lookups: 9749
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
  /job-postings/{id}:
    get:
      operationId: getJobPosting
      tags:
      - Job postings
      summary: Get a job posting
      description: |
        The full job posting, open or closed (`status` and `closed_on` show which).
        Costs 1 lookup for its company unless already paid for this billing month.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        example: job_77x2a
        description: A job posting id from the job posting list or search endpoints.
      responses:
        '200':
          description: Job posting.
          content:
            application/json:
              schema:
                type: object
                required:
                - job_posting
                - usage
                properties:
                  job_posting:
                    $ref: '#/components/schemas/JobPosting'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                job_posting:
                  id: job_77x2a
                  company:
                    id: cmp_19ad3
                    domain: acmedental.io
                    name: AcmeDental
                    logo_url:
                  title: Senior Backend Engineer
                  normalized_title: backend engineer
                  job_function: engineering
                  seniority: senior
                  employment_type: full_time
                  workplace_type: remote
                  locations:
                  - Austin, TX, United States
                  salary:
                    min: 150000
                    max: 180000
                    currency: USD
                    period: year
                  technologies:
                  - python
                  - postgresql
                  - aws
                  experience_years: 5
                  education:
                  benefits:
                  - health insurance
                  - 401k
                  visa_sponsorship: false
                  summary: Build the scheduling and billing services behind AcmeDental's practice management platform.
                  url: https://jobs.example.com/acmedental/77x2a
                  posted_on: '2026-10-20'
                  closed_on:
                  status: open
                usage:
                  charged:
                    lookups: 0
                    discoveries: 0
                  already_paid: 1
                  remaining:
                    lookups: 9750
                    discoveries: 1977
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '404':
          $ref: '#/components/responses/NotFound'
  /job-postings/search:
    post:
      operationId: searchJobPostings
      tags:
      - Job postings
      summary: Search job postings
      description: |
        Search job postings across companies. Results are grouped by company, newest postings first, and include
        only the postings that match (up to 10 per company).

        Costs 1 discovery per company returned that isn't already paid for this billing month. That covers all of that
        company's postings: listing them with `GET /companies/{company}/job-postings` is then free.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobSearchRequest'
            example:
              title: data engineer
              technologies:
              - snowflake
              posted_within_days: 30
              job_countries:
              - GB
              limit: 20
      responses:
        '200':
          description: Job postings grouped by company.
          content:
            application/json:
              schema:
                type: object
                required:
                - results
                - next_cursor
                - usage
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      required:
                      - company
                      - job_postings
                      properties:
                        company:
                          $ref: '#/components/schemas/CompanyRef'
                        job_postings:
                          type: array
                          items:
                            $ref: '#/components/schemas/JobPostingSummary'
                  next_cursor:
                    $ref: '#/components/schemas/NextCursor'
                  usage:
                    $ref: '#/components/schemas/Usage'
              example:
                results:
                - company: *id001
                  job_postings:
                  - id: job_k21m9
                    title: Data Engineer
                    job_function: engineering
                    seniority: mid
                    workplace_type: hybrid
                    locations:
                    - London, United Kingdom
                    posted_on: '2026-10-28'
                    status: open
                next_cursor:
                usage:
                  charged:
                    lookups: 0
                    discoveries: 1
                  already_paid: 0
                  remaining:
                    lookups: 9750
                    discoveries: 1976
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/AllowanceExhausted'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Your API key, sent as `Authorization: Bearer <key>`. Create keys in the dashboard.'
  headers:
    LookupsRemaining:
      description: Lookups left in this billing period.
      schema:
        type: integer
    DiscoveriesRemaining:
      description: Discoveries left in this billing period.
      schema:
        type: integer
  parameters:
    CompanyKey:
      name: company
      in: path
      required: true
      description: The company's domain (for example `stripe.com`) or its CompanySpec id (for example `cmp_8f2k1`).
      schema:
        type: string
      example: acmedental.io
    ShowIcp:
      name: show_icp
      in: query
      description: 'Include `icp`: what they do, the problem they solve and who they sell to.'
      schema:
        type: boolean
        default: false
    ShowPricing:
      name: show_pricing
      in: query
      description: 'Include `pricing`: a summary of their pricing page (plans, prices, free trial).'
      schema:
        type: boolean
        default: false
    ShowDescription:
      name: show_description
      in: query
      description: Include `long_description`.
      schema:
        type: boolean
        default: false
    ShowPages:
      name: show_pages
      in: query
      description: 'Include `pages`: the most useful pages on their website, with URLs. Get the summary of any of them with
        `GET /companies/{company}/pages/{page_type}`.'
      schema:
        type: boolean
        default: false
    Limit:
      name: limit
      in: query
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    Cursor:
      name: cursor
      in: query
      description: The `next_cursor` from the previous page. Valid for 24 hours. Fetching later pages charges for new 
        companies on them.
      schema:
        type: string
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://companyspec.com/docs/errors/unauthorized
            title: Unauthorized
            status: 401
            detail: Missing or invalid API key.
            request_id: req_01JC8X4T2M
    AllowanceExhausted:
      description: Your monthly allowance for this kind of request is used up. Requests resume next period or after an 
        upgrade. You are never billed overage.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://companyspec.com/docs/errors/allowance-exhausted
            title: Allowance exhausted
            status: 402
            detail: You have used all 2,000 discoveries for the billing month ending 2026-12-02.
            request_id: req_01JC8X4T2M
    NotFound:
      description: Not found.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://companyspec.com/docs/errors/not-found
            title: Not found
            status: 404
            detail: No company found for not-a-real-company.example.
            request_id: req_01JC8X4T2M
    ValidationError:
      description: The request is invalid.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://companyspec.com/docs/errors/validation-error
            title: Validation error
            status: 422
            detail: 'employees[0] must be one of: 1-10, 11-50, 51-200, 201-500, 501-1K, 1K-5K, 5K-10K, over-10K.'
            errors:
            - field: employees[0]
              message: Unknown value '10-50'
            request_id: req_01JC8X4T2M
    RateLimited:
      description: Too many requests. Retry after the number of seconds in `Retry-After`.
      headers:
        Retry-After:
          schema:
            type: integer
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: https://companyspec.com/docs/errors/rate-limited
            title: Too many requests
            status: 429
            detail: Rate limit exceeded. Retry in 2 seconds.
            request_id: req_01JC8X4T2M
  schemas:
    Problem:
      type: object
      description: An error, following RFC 9457 (problem details).
      required:
      - type
      - title
      - status
      properties:
        type:
          type: string
          format: uri
          description: A URL identifying the error type. See Errors.
        title:
          type: string
        status:
          type: integer
        detail:
          type: string
        available_page_types:
          type: array
          description: Only on `page-not-available` errors.
          items:
            $ref: '#/components/schemas/PageType'
        errors:
          type: array
          description: 'Only on validation errors: one entry per invalid field.'
          items:
            type: object
            required:
            - field
            - message
            properties:
              field:
                type: string
                description: For example `employees[0]`.
              message:
                type: string
        request_id:
          type: string
          description: Include this when you contact support.
    NextCursor:
      type:
      - string
      - 'null'
      description: Pass as `cursor` to get the next page. `null` when there are no more results.
    Allowance:
      type: object
      required:
      - used
      - limit
      properties:
        used:
          type: integer
          description: Companies charged so far this billing month.
        limit:
          type: integer
          description: Companies included in your plan each billing month.
    Account:
      type: object
      required:
      - plan
      - period
      - lookups
      - discoveries
      properties:
        plan:
          type: string
          enum:
          - free
          - starter
          - growth
          - pro
          - scale
          description: Your plan. See Billing & usage for what each plan includes.
        period:
          type: object
          required:
          - start
          - end
          description: Your current billing month. Allowances and "already paid" companies reset when it ends.
          properties:
            start:
              type: string
              format: date
            end:
              type: string
              format: date
        lookups:
          $ref: '#/components/schemas/Allowance'
        discoveries:
          $ref: '#/components/schemas/Allowance'
    Usage:
      type: object
      description: What this request cost and what is left this billing month.
      required:
      - charged
      - already_paid
      - remaining
      properties:
        charged:
          type: object
          required:
          - lookups
          - discoveries
          properties:
            lookups:
              type: integer
              description: Companies newly charged as lookups by this request.
            discoveries:
              type: integer
              description: Companies newly charged as discoveries by this request.
        already_paid:
          type: integer
          description: Companies in this response that were already paid for this billing month, so they were not 
            charged again.
        remaining:
          type: object
          required:
          - lookups
          - discoveries
          properties:
            lookups:
              type: integer
            discoveries:
              type: integer
        allowance_reached:
          type: boolean
          description: '`true` when results were cut short because your allowance ran out during this request. You received
            as many companies as your remaining allowance covered.'
    ValueField:
      type: string
      enum:
      - industries
      - naics_codes
      - sic_codes
      - countries
      - states
      - cities
      - regions
      - type
      - employees
      - revenue
      - customer_types
      - customer_segments
      - compliance
      - page_types
      - require
      - hire_departments
      - hire_seniorities
      - workforce_departments
      - job_functions
      - job_seniorities
      - workplace_types
      - employment_types
      - funding_rounds
      - news_categories
      - technology_categories
      description: A filter name.
    ValuesResponse:
      type: object
      required:
      - field
      - values
      - next_cursor
      properties:
        field:
          $ref: '#/components/schemas/ValueField'
        values:
          type: array
          items:
            type: object
            required:
            - value
            - label
            properties:
              value:
                type: string
                description: Use this in filters.
              label:
                type: string
              companies:
                type: integer
                description: Number of companies with this value.
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
    PageType:
      type: string
      description: A type of page on a company's website.
      enum:
      - home
      - pricing
      - about
      - careers
      - blog
      - legal
      - integrations
      - case_studies
      - login
      - status
      - engineering
      - support
      - cart
      - compliance
    PageSummary:
      type: object
      required:
      - page_type
      - url
      - summary
      properties:
        page_type:
          $ref: '#/components/schemas/PageType'
        url:
          type: string
          format: uri
        summary:
          type: string
          description: A paragraph summarising the page.
    PageLink:
      type: object
      required:
      - page_type
      - url
      properties:
        page_type:
          $ref: '#/components/schemas/PageType'
        url:
          type: string
          format: uri
    EmployeeRange:
      type: string
      enum:
      - 1-10
      - 11-50
      - 51-200
      - 201-500
      - 501-1K
      - 1K-5K
      - 5K-10K
      - over-10K
    RevenueRange:
      type: string
      enum:
      - under-1m
      - 1m-10m
      - 10m-50m
      - 50m-100m
      - 100m-200m
      - 200m-1b
      - over-1b
    CompanyType:
      type: string
      enum:
      - private
      - public
      - self-employed
      - self-owned
      - partnership
      - nonprofit
      - educational
      - government
    FundingRoundType:
      type: string
      enum:
      - seed
      - angel
      - venture
      - series_a
      - series_b
      - series_c
      - series_d
      - series_e
      - series_f
      - series_g
      - series_h
      - debt_financing
      - other
    Location:
      type: object
      properties:
        country_code:
          type:
          - string
          - 'null'
          description: ISO 3166-1 alpha-2.
        country:
          type:
          - string
          - 'null'
        state:
          type:
          - string
          - 'null'
        city:
          type:
          - string
          - 'null'
    CompanyRef:
      type: object
      required:
      - id
      - domain
      - name
      properties:
        id:
          type: string
        domain:
          type: string
        name:
          type: string
        logo_url:
          type:
          - string
          - 'null'
          format: uri
    Company:
      type: object
      required:
      - id
      - domain
      - name
      properties:
        id:
          type: string
        domain:
          type: string
        name:
          type: string
        website:
          type:
          - string
          - 'null'
          format: uri
        description:
          type:
          - string
          - 'null'
          description: One-line description.
        logo_url:
          type:
          - string
          - 'null'
          format: uri
        type:
          oneOf:
          - $ref: '#/components/schemas/CompanyType'
          - type: 'null'
          description: 'Ownership type: `private`, `public`, `nonprofit`, `government`, `educational`, `partnership`, `self-employed`
            or `self-owned`.'
        founded_year:
          type:
          - integer
          - 'null'
        ipo_date:
          type:
          - string
          - 'null'
          format: date
        industry:
          type:
          - string
          - 'null'
        industries:
          type: array
          items:
            type: string
        naics_codes:
          type: array
          items:
            type: string
        sic_codes:
          type: array
          items:
            type: string
        keywords:
          type: array
          items:
            type: string
        customer_types:
          type: array
          description: 'Who they sell to: `B2B`, `B2C`, `B2G`.'
          items:
            type: string
        customer_segments:
          type: array
          description: Kinds of customers they sell to, for example `enterprise`, `smb`, `government`.
          items:
            type: string
        compliance:
          type: array
          description: Certifications and standards they claim on their website, for example `SOC 2`, `HIPAA`, `ISO 
            27001`.
          items:
            type: string
        technologies:
          type: array
          description: Technologies they use, detected on their website or in their job postings (slugs from 
            `/technologies`).
          items:
            type: string
        vendors:
          type: array
          description: Service providers named in their subprocessor list, for example `aws` or `stripe` (slugs from 
            `/technologies`).
          items:
            type: string
        employees:
          oneOf:
          - $ref: '#/components/schemas/EmployeeRange'
          - type: 'null'
          description: 'Employee range: `1-10`, `11-50`, `51-200`, `201-500`, `501-1K`, `1K-5K`, `5K-10K`, `over-10K`.'
        employee_count:
          type:
          - integer
          - 'null'
        revenue:
          oneOf:
          - $ref: '#/components/schemas/RevenueRange'
          - type: 'null'
          description: 'Annual revenue range in USD: `under-1m`, `1m-10m`, `10m-50m`, `50m-100m`, `100m-200m`, `200m-1b`,
            `over-1b`.'
        location:
          $ref: '#/components/schemas/Location'
        office_locations:
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/Location'
            - type: object
              properties:
                employee_count:
                  type:
                  - integer
                  - 'null'
        parent:
          oneOf:
          - $ref: '#/components/schemas/CompanyRef'
          - type: 'null'
        subsidiaries:
          type: array
          items:
            $ref: '#/components/schemas/CompanyRef'
        socials:
          type: object
          properties:
            linkedin_url:
              type:
              - string
              - 'null'
              format: uri
            twitter_url:
              type:
              - string
              - 'null'
              format: uri
            facebook_url:
              type:
              - string
              - 'null'
              format: uri
            youtube_url:
              type:
              - string
              - 'null'
              format: uri
            github_url:
              type:
              - string
              - 'null'
              format: uri
        open_jobs:
          type: integer
          description: Number of open job postings.
        web:
          type: object
          properties:
            traffic_rank:
              type:
              - integer
              - 'null'
              description: Global rank of their website by traffic. Lower means more traffic.
        icp:
          type:
          - string
          - 'null'
          description: 'Only with `show_icp=true`. An AI-written paragraph from their website: what they provide, the problem
            they solve and who their customers likely are.'
        pricing:
          type:
          - string
          - 'null'
          description: 'Only with `show_pricing=true`. An AI-written summary of their pricing page: plans, prices, free trial.'
        long_description:
          type:
          - string
          - 'null'
          description: Only with `show_description=true`. The long company description.
        pages:
          type: array
          description: Only with `show_pages=true`. The most useful pages on their website, with URLs. Get the summary 
            of any of them with `GET /companies/{company}/pages/{page_type}`.
          items:
            $ref: '#/components/schemas/PageLink'
    EnrichRequest:
      type: object
      required:
      - companies
      properties:
        companies:
          type: array
          minItems: 1
          maxItems: 100
          description: Domains or CompanySpec ids.
          items:
            type: string
        show_icp:
          type: boolean
          default: false
        show_pricing:
          type: boolean
          default: false
        show_description:
          type: boolean
          default: false
        show_pages:
          type: boolean
          default: false
    ResolveCandidate:
      allOf:
      - $ref: '#/components/schemas/CompanyRef'
      - type: object
        required:
        - confidence
        properties:
          confidence:
            type: number
            minimum: 0
            maximum: 1
    ResolveResponse:
      type: object
      required:
      - match
      - alternatives
      properties:
        match:
          oneOf:
          - $ref: '#/components/schemas/ResolveCandidate'
          - type: 'null'
        alternatives:
          type: array
          items:
            $ref: '#/components/schemas/ResolveCandidate'
    TechnologySummary:
      type: object
      required:
      - slug
      - name
      properties:
        slug:
          type: string
        name:
          type: string
        categories:
          type: array
          items:
            type: string
        companies:
          type: integer
          description: Companies currently using it.
    TechnologyProfile:
      allOf:
      - $ref: '#/components/schemas/TechnologySummary'
      - type: object
        properties:
          tags:
            type: array
            items:
              type: string
          pricing_models:
            type: array
            items:
              type: string
          license_types:
            type: array
            items:
              type: string
          github_repo:
            type:
            - string
            - 'null'
          integrates_with:
            type: array
            description: Slugs of technologies it integrates with.
            items:
              type: string
          made_by:
            type:
            - object
            - 'null'
            properties:
              name:
                type: string
              domain:
                type:
                - string
                - 'null'
            description: The company that makes this technology.
    CompanyTechnology:
      type: object
      required:
      - slug
      - name
      - sources
      properties:
        slug:
          type: string
        name:
          type: string
        categories:
          type: array
          items:
            type: string
        sources:
          type: array
          description: Where it was detected.
          items:
            type: string
            enum:
            - website
            - jobs
        first_seen:
          type:
          - string
          - 'null'
          format: date
          description: When we first detected it.
        removed_on:
          type:
          - string
          - 'null'
          format: date
          description: When it was no longer detected, if removed.
        versions:
          type: array
          items:
            type: string
        explanation:
          type:
          - string
          - 'null'
          description: Why we think the company uses it.
    Headcount:
      type: object
      required:
      - departments
      - history
      properties:
        employee_count:
          type:
          - integer
          - 'null'
        departments:
          type: array
          items:
            type: object
            required:
            - department
            - employee_count
            properties:
              department:
                type: string
                description: A value from `/values/workforce_departments`.
              employee_count:
                type: integer
        history:
          type: array
          items:
            type: object
            required:
            - month
            - employee_count
            properties:
              month:
                type: string
                description: YYYY-MM
              employee_count:
                type: integer
          description: Total headcount per month for the last 12 months.
    HiresResponse:
      type: object
      required:
      - within_days
      - total
      - by_department
      - by_seniority
      - items
      properties:
        within_days:
          type: integer
        total:
          type: integer
        by_department:
          type: object
          additionalProperties:
            type: integer
        by_seniority:
          type: object
          additionalProperties:
            type: integer
        items:
          type: array
          items:
            type: object
            required:
            - department
            - seniority
            - start_date
            properties:
              department:
                type:
                - string
                - 'null'
              seniority:
                type:
                - string
                - 'null'
              start_date:
                type: string
                format: date
    Investor:
      type: object
      required:
      - name
      properties:
        name:
          type: string
        domain:
          type:
          - string
          - 'null'
    Funding:
      type: object
      required:
      - rounds
      - investors
      - acquisitions
      properties:
        total_funding_usd:
          type:
          - integer
          - 'null'
        rounds:
          type: array
          items:
            type: object
            properties:
              type:
                oneOf:
                - $ref: '#/components/schemas/FundingRoundType'
                - type: 'null'
              name:
                type:
                - string
                - 'null'
              announced_on:
                type:
                - string
                - 'null'
                format: date
              amount_usd:
                type:
                - integer
                - 'null'
              pre_money_valuation_usd:
                type:
                - integer
                - 'null'
              post_money_valuation_usd:
                type:
                - integer
                - 'null'
              lead_investors:
                type: array
                items:
                  $ref: '#/components/schemas/Investor'
              investors:
                type: array
                items:
                  $ref: '#/components/schemas/Investor'
        investors:
          type: array
          items:
            $ref: '#/components/schemas/Investor'
        acquisitions:
          type: array
          description: Companies this company acquired.
          items:
            type: object
            required:
            - name
            properties:
              name:
                type: string
              domain:
                type:
                - string
                - 'null'
    NewsEvent:
      type: object
      required:
      - id
      - category
      - date
      properties:
        id:
          type: string
        category:
          type: string
          description: A value from `/values/news_categories`.
        category_group:
          type:
          - string
          - 'null'
          description: The broader group the category belongs to (listed with each category in 
            `/values/news_categories`).
        date:
          type: string
          format: date
        summary:
          type:
          - string
          - 'null'
          description: One-sentence summary of the event.
        amount_usd:
          type:
          - integer
          - 'null'
          description: For financing events.
        url:
          type:
          - string
          - 'null'
          format: uri
          description: The article or announcement the event comes from.
    JobPostingSummary:
      type: object
      required:
      - id
      - title
      - status
      properties:
        id:
          type: string
        title:
          type: string
        job_function:
          type:
          - string
          - 'null'
        seniority:
          type:
          - string
          - 'null'
        workplace_type:
          type:
          - string
          - 'null'
          enum:
          - onsite
          - hybrid
          - remote
          - 
        locations:
          type: array
          items:
            type: string
        posted_on:
          type:
          - string
          - 'null'
          format: date
        status:
          type: string
          enum:
          - open
          - closed
    JobPosting:
      allOf:
      - $ref: '#/components/schemas/JobPostingSummary'
      - type: object
        properties:
          company:
            $ref: '#/components/schemas/CompanyRef'
          normalized_title:
            type:
            - string
            - 'null'
            description: The job title in standard form, without levels or extras (for example `backend engineer`). 
              Filter on it with `normalized_titles`.
          employment_type:
            type:
            - string
            - 'null'
          salary:
            type:
            - object
            - 'null'
            properties:
              min:
                type:
                - integer
                - 'null'
              max:
                type:
                - integer
                - 'null'
              currency:
                type:
                - string
                - 'null'
              period:
                type:
                - string
                - 'null'
                enum:
                - hour
                - day
                - month
                - year
                - 
          technologies:
            type: array
            items:
              type: string
          experience_years:
            type:
            - integer
            - 'null'
          education:
            type:
            - string
            - 'null'
          benefits:
            type: array
            items:
              type: string
          visa_sponsorship:
            type:
            - boolean
            - 'null'
          summary:
            type:
            - string
            - 'null'
          url:
            type:
            - string
            - 'null'
            format: uri
          closed_on:
            type:
            - string
            - 'null'
            format: date
    Range:
      type: object
      properties:
        min:
          type:
          - number
          - 'null'
        max:
          type:
          - number
          - 'null'
    Operator:
      type: string
      enum:
      - and
      - or
      default: and
      description: 'How the values in the list combine. `and` (default): the company must have all of them. `or`: it must
        have at least one.'
    CompanyFilters:
      description: 'Filters shared by search, count, similar, page search and job search. Different filters are combined with
        AND. Inside one list, values match if the company has any of them, unless the filter has an `*_operator` (then the
        default is `and`: the company must have all of them).'
      allOf:
      - type: object
        properties:
          query:
            type: string
            maxLength: 250
            description: Match against company name and domain (contains).
          semantic_query:
            type: string
            maxLength: 500
            description: Describe the companies you want in plain language, including who they sell to.
            examples:
            - practice management software for independent dental practices
          semantic_weight:
            type: number
            minimum: 0
            maximum: 1
            default: 0.7
            description: How much to favour relevance to `semantic_query` (1) over company size and web traffic (0).
      - $ref: '#/components/schemas/CompanyAttributeFilters'
    ResultControls:
      type: object
      properties:
        limit:
          type: integer
          minimum: 1
          maximum: 100
          default: 25
          description: Results per page (1–100). A search returns at most 1,000 results in total.
        cursor:
          type: string
          description: The `next_cursor` from the previous page.
        min_score:
          type: number
          minimum: 0
          maximum: 1
          description: Minimum `match.score` (0–1). For `semantic_query` it is relevance; for `/companies/similar` it is
            similarity to the seeds.
        show_icp:
          type: boolean
          default: false
          description: Include the ICP paragraph (what they do and who they sell to) in each result. No extra cost.
        show_pricing:
          type: boolean
          default: false
          description: Include the pricing summary in each result. No extra cost.
        show_description:
          type: boolean
          default: false
          description: Include the long description in each result. No extra cost.
        show_pages:
          type: boolean
          default: false
          description: Include the list of most useful pages on their website in each result. No extra cost.
    SearchRequest:
      allOf:
      - $ref: '#/components/schemas/CompanyFilters'
      - $ref: '#/components/schemas/ResultControls'
    SimilarRequest:
      allOf:
      - type: object
        required:
        - companies
        properties:
          companies:
            type: array
            minItems: 1
            maxItems: 10
            description: Seed companies, by domain or CompanySpec id.
            items:
              type: string
          similarity_weight:
            type: number
            minimum: -1
            maximum: 1
            default: 0
            description: Higher favours closer matches; lower favours larger, more established companies.
      - $ref: '#/components/schemas/CompanyAttributeFilters'
      - $ref: '#/components/schemas/ResultControls'
    PageSearchRequest:
      type: object
      required:
      - query
      properties:
        query:
          type: string
          maxLength: 500
          description: What to look for in page summaries, in plain language. For example `14-day free trial, no credit 
            card required`.
        page_types:
          type: array
          items:
            $ref: '#/components/schemas/PageType'
          description: 'Only search these page types. Default: all.'
        company:
          $ref: '#/components/schemas/CompanyFilters'
          description: Only search pages of companies that match these filters.
        limit:
          type: integer
          minimum: 1
          maximum: 100
          default: 25
          description: Companies per page.
        cursor:
          type: string
          description: The `next_cursor` from the previous page.
        min_score:
          type: number
          minimum: 0
          maximum: 1
          description: Minimum `match.score` (how well the page matches `query`).
    JobSearchRequest:
      type: object
      properties:
        title:
          type: string
          maxLength: 200
          description: Text to match in job titles.
        normalized_titles:
          type: array
          items:
            type: string
        job_functions:
          type: array
          items:
            type: string
          description: Values from `/values/job_functions`.
        seniorities:
          type: array
          items:
            type: string
          description: Values from `/values/job_seniorities`.
        workplace_types:
          type: array
          items:
            type: string
            enum:
            - onsite
            - hybrid
            - remote
        employment_types:
          type: array
          items:
            type: string
        job_countries:
          type: array
          items:
            type: string
          description: Countries where the job is located (ISO alpha-2).
        job_locations:
          type: array
          items:
            type: string
          description: Job locations from `/values/cities`.
        salary:
          $ref: '#/components/schemas/Range'
          description: Salary range, in `salary_currency`.
        salary_currency:
          type: string
          minLength: 3
          maxLength: 3
          description: ISO currency code for `salary`, for example `USD`. Only postings with a salary in this currency 
            match; amounts are not converted.
        technologies:
          type: array
          items:
            type: string
          description: Technologies mentioned in the posting.
        visa_sponsorship:
          type: boolean
        posted_within_days:
          type: integer
          minimum: 1
          maximum: 365
        status:
          type: string
          enum:
          - open
          - closed
          - all
          default: open
          description: '`open` (default), `closed` or `all`. Closed postings stay available, with `closed_on` set.'
        company:
          $ref: '#/components/schemas/CompanyFilters'
        limit:
          type: integer
          minimum: 1
          maximum: 100
          default: 25
          description: Companies per page.
        cursor:
          type: string
    SearchResult:
      type: object
      required:
      - company
      - match
      properties:
        company:
          $ref: '#/components/schemas/Company'
        match:
          type:
          - object
          - 'null'
          properties:
            score:
              type: number
              minimum: 0
              maximum: 1
            reason:
              type:
              - string
              - 'null'
              description: Short explanation of why it matched.
    SearchResponse:
      type: object
      required:
      - results
      - next_cursor
      - usage
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/SearchResult'
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
        usage:
          $ref: '#/components/schemas/Usage'
    CountResponse:
      type: object
      required:
      - total
      - total_capped
      - would_charge
      properties:
        total:
          type: integer
          description: |-
            Companies matching. Counting stops at 10,000 for filter-only searches and at 1,000 with `semantic_query`.
        total_capped:
          type: boolean
          description: '`true` when there are more matches than `total` shows. Add filters to narrow it down.'
        would_charge:
          type: integer
          description: How many of the counted companies are not yet paid for this billing month.
        groups:
          type: object
          description: Present when `group_by` is set. With `semantic_query`, groups cover the counted (top 1,000) 
            matches.
          additionalProperties:
            type: object
            additionalProperties:
              type: integer
    CompanyAttributeFilters:
      type: object
      description: 'Structured company filters. Different filters are combined with AND. Inside one list, values match if
        the company has any of them, unless the filter has an `*_operator` (then the default is `and`: the company must have
        all of them).'
      properties:
        countries:
          type: array
          items:
            type: string
          description: HQ countries (ISO 3166-1 alpha-2). Matches any.
        states:
          type: array
          items:
            type: string
          description: Values from `/values/states`. Matches any.
        cities:
          type: array
          items:
            type: string
          description: Values from `/values/cities`. Matches any.
        regions:
          type: array
          items:
            type: string
          description: Values from `/values/regions`. Matches any.
        office_locations:
          type: array
          items:
            type: string
          description: Any office, not just HQ. Values from `/values/cities` or country codes. Matches any.
        type:
          type: array
          items:
            $ref: '#/components/schemas/CompanyType'
          description: Ownership type. Matches any. Values from `/values/type`.
        employees:
          type: array
          items:
            $ref: '#/components/schemas/EmployeeRange'
          description: 'Employee ranges. Matches any. Values: `1-10`, `11-50`, `51-200`, `201-500`, `501-1K`, `1K-5K`, `5K-10K`,
            `over-10K`.'
        revenue:
          type: array
          items:
            $ref: '#/components/schemas/RevenueRange'
          description: 'Annual revenue ranges (USD). Matches any. Values: `under-1m`, `1m-10m`, `10m-50m`, `50m-100m`, `100m-200m`,
            `200m-1b`, `over-1b`.'
        founded_year:
          $ref: '#/components/schemas/Range'
          description: 'Year range, for example `{"min": 2015, "max": 2022}`.'
        industries:
          type: array
          items:
            type: string
          description: Values from `/values/industries`. Matches any.
        naics_codes:
          type: array
          items:
            type: string
            pattern: ^[0-9]{2,6}$
          description: 2–6 digits. Shorter codes include all codes beneath them. Matches any.
        sic_codes:
          type: array
          items:
            type: string
            pattern: ^[0-9]{2,4}$
          description: Values from `/values/sic_codes`. Matches any.
        keywords:
          type: array
          items:
            type: string
          description: Keywords from the company profile. Combined with `keywords_operator`.
        keywords_operator:
          $ref: '#/components/schemas/Operator'
        customer_types:
          type: array
          items:
            type: string
          description: 'Who they sell to: `B2B`, `B2C`, `B2G`. Combined with `customer_types_operator`.'
        customer_types_operator:
          $ref: '#/components/schemas/Operator'
        customer_segments:
          type: array
          items:
            type: string
          description: Kinds of customers, for example `enterprise`, `smb`, `government`. Values from 
            `/values/customer_segments`. Combined with `customer_segments_operator`.
        customer_segments_operator:
          $ref: '#/components/schemas/Operator'
        compliance:
          type: array
          items:
            type: string
          description: Claimed certifications, for example `SOC 2`, `HIPAA`. Values from `/values/compliance`. Combined 
            with `compliance_operator`.
        compliance_operator:
          $ref: '#/components/schemas/Operator'
        technologies:
          type: array
          items:
            type: string
          description: Technology slugs from `/technologies`. Combined with `technologies_operator`.
        technologies_operator:
          $ref: '#/components/schemas/Operator'
        technology_source:
          type: string
          enum:
          - website
          - jobs
          - any
          default: any
          description: 'Where a technology must have been found: `website`, `jobs` or `any` (default).'
        vendors:
          type: array
          items:
            type: string
          description: Service providers named in the subprocessor list (slugs from `/technologies`). Combined with 
            `vendors_operator`.
        vendors_operator:
          $ref: '#/components/schemas/Operator'
        page_types:
          type: array
          items:
            $ref: '#/components/schemas/PageType'
          description: The company must have all of these page types.
        funding_rounds:
          type: array
          items:
            $ref: '#/components/schemas/FundingRoundType'
          description: Has raised any of these round types. Values from `/values/funding_rounds`.
        funding_amount:
          $ref: '#/components/schemas/Range'
          description: Total funding range in USD.
        funding_year:
          $ref: '#/components/schemas/Range'
          description: Year of the most recent round.
        investors:
          type: array
          items:
            type: string
          description: Backed by any of these investors (names or domains).
        workforce_size:
          type: array
          items:
            type: object
            properties:
              department:
                type: string
                default: overall
                description: A value from `/values/workforce_departments`, or `overall`.
              min:
                type:
                - integer
                - 'null'
              max:
                type:
                - integer
                - 'null'
          description: 'Headcount ranges per department, for example `[{"department": "engineering", "min": 20}]`. Departments
            from `/values/workforce_departments`, or `overall`. All conditions must match.'
        workforce_growth:
          type: object
          properties:
            period:
              type: string
              enum:
              - m6
              - y1
              - y2
            department:
              type: string
              default: overall
            min_percent:
              type:
              - number
              - 'null'
              description: 15 means 15% growth; -10 means a 10% decline.
            max_percent:
              type:
              - number
              - 'null'
          description: Headcount growth over a period (`m6` = 6 months, `y1` = 1 year, `y2` = 2 years), optionally for 
            one department, as a percentage range.
        recent_hires:
          type: object
          description: Companies that recently hired people matching these conditions. New hires usually appear 1–3 
            weeks after their start date.
          properties:
            departments:
              type: array
              items:
                type: string
              description: Values from `/values/hire_departments`.
            seniorities:
              type: array
              items:
                type: string
              description: Values from `/values/hire_seniorities`.
            within_days:
              type: integer
              minimum: 1
              maximum: 365
              default: 90
            min_count:
              type: integer
              minimum: 1
              default: 1
        hiring:
          type: object
          description: Companies with matching open job postings.
          properties:
            has_open_jobs:
              type: boolean
            min_open_jobs:
              type: integer
              minimum: 1
            job_functions:
              type: array
              items:
                type: string
            seniorities:
              type: array
              items:
                type: string
            posted_within_days:
              type: integer
              minimum: 1
              maximum: 365
        news:
          type: object
          description: Companies with matching news events.
          properties:
            categories:
              type: array
              items:
                type: string
              description: Values from `/values/news_categories`.
            within_days:
              type: integer
              minimum: 1
              maximum: 730
        require:
          type: array
          description: 'Only return companies that have these: `linkedin` (LinkedIn URL), `twitter` (Twitter/X URL), `icp`
            (ICP paragraph), `pricing_page` (pricing page summary), `funding` (funding data), `revenue` (revenue range), `founded_year`,
            `hq_city`, `open_jobs` (at least one open job posting).'
          items:
            type: string
            enum:
            - linkedin
            - twitter
            - icp
            - pricing_page
            - funding
            - revenue
            - founded_year
            - hq_city
            - open_jobs
        exclude:
          type: object
          description: 'Remove companies that match any of these, for example `{"domains": ["acme.com"], "employees": ["1-10"]}`.'
          properties:
            domains:
              type: array
              maxItems: 10000
              items:
                type: string
            countries:
              type: array
              items:
                type: string
            type:
              type: array
              items:
                $ref: '#/components/schemas/CompanyType'
            employees:
              type: array
              items:
                $ref: '#/components/schemas/EmployeeRange'
            revenue:
              type: array
              items:
                $ref: '#/components/schemas/RevenueRange'
            industries:
              type: array
              items:
                type: string
            naics_codes:
              type: array
              items:
                type: string
            keywords:
              type: array
              items:
                type: string
            customer_types:
              type: array
              items:
                type: string
            customer_segments:
              type: array
              items:
                type: string
            technologies:
              type: array
              items:
                type: string
            vendors:
              type: array
              items:
                type: string
            funding_rounds:
              type: array
              items:
                $ref: '#/components/schemas/FundingRoundType'
