---
title: "Parse natural language to search params"
method: POST
path: "/v1/nlp-search/parse"
tags: ["Agentic search"]
---

# Parse natural language to search params

`POST /v1/nlp-search/parse`

Parses a natural language query into structured search parameters without executing the search.

Use the returned `suggestedAction` to determine your next step:
- `combinedSearch`: pass `parsedParams.companySearchParams` and `parsedParams.profileSearchParams` to POST /v1/combined-search/paginated
- `companySearch`: pass `parsedParams.companySearchParams` to POST /v1/company-search
- `profileSearch`: pass `parsedParams.profileSearchParams` to POST /v1/combined-search/paginated (with only profileConfig)
- `personLookup`: use the `parsedParams.persons` array with POST /v1/person-lookup/enrich (one call per person)
- `companyLookup`: use the `parsedParams.companies` array with POST /v1/company-lookup/enrich (one call per company)
- `none`: query could not be interpreted

Alternatively, use POST /v1/nlp-search/run to parse and execute in a single call.

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

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

## Request body

- object
  - `apiKey` string, required — Your Fiber API key
  - `query` string, required — Natural language search query to parse into structured filters.

## Response `200`

Default Response

- object
  - `output` object, required
    - `searchId` string, required — Unique identifier for this search session. Stable across paginated requests — all pages share the same searchId.
    - `parsedParams` union, required — Structured parameters parsed from the query. Shape depends on the queryType discriminator.
      - object
        - `queryType` 'structuredSearch', required
        - `companySearchParams` object, nullable — Parsed company search filters. Null if query only targets people.
          - `exactCompanyV2` object, nullable
            - `anyOf` union[], nullable
              - …
            - `noneOf` union[], nullable
              - …
          - `domains` string[], nullable
          - `headquartersCountryCode` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `headquartersStateName` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `employeeCountV2` object, nullable
            - `lowerBoundExclusive` integer, nullable
            - `upperBoundInclusive` integer, nullable
          - `keywords` object, nullable
            - `containsAll` string[], nullable
            - `containsAny` string[], nullable
            - `containsNone` string[], nullable
          - `industriesV2` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
            - `allOf` string[], nullable
          - `stage` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `totalFundingUSD` object, nullable
            - `lowerBound` number, nullable
            - `upperBound` number, nullable
          - `lastFundingUSD` object, nullable
            - `lowerBound` number, nullable
            - `upperBound` number, nullable
          - `lastFundedOn` union
            - object
              - …
            - object
              - …
          - `foundedOn` union
            - object
              - …
            - object
              - …
          - `nameLike` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `exactCompany` object, nullable
            - `anyOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `acceleratorsV2` object, nullable
            - `anyOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `headquartersLocation` object, nullable
            - `unionAll` union[], nullable
              - …
            - `subtractAll` union[], nullable
              - …
          - `linkedinSlugs` string[], nullable
          - `specialFlags` object, nullable
            - `excludeYcCompanies` boolean, nullable
          - `employees` object, nullable
            - `rules` object[], required
              - …
            - `joiner` 'AND' | 'OR', required
          - `naicsCodes` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `fortuneRankings` object, nullable
            - `anyOf` object[], nullable
              - …
          - `jobPostingsV2` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `jobPostingStats` object, nullable
            - `anyOf` union[], nullable
              - …
            - `allOf` union[], nullable
              - …
            - `noneOf` union[], nullable
              - …
          - `officeLocationsV2` object, nullable
            - `anyOf` union[], nullable
              - …
            - `allOf` union[], nullable
              - …
            - `noneOf` union[], nullable
              - …
          - `tlds` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `numWordsInName` object, nullable
            - `lowerBound` integer, nullable
            - `upperBound` integer, nullable
          - `status` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `technologies` object, nullable
            - `anyOf` union[], nullable
              - …
            - `allOf` union[], nullable
              - …
            - `noneOf` union[], nullable
              - …
          - `crunchbaseCategories` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `crunchbaseCategoryGroups` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `crunchbaseSlugs` string[], nullable
          - `investorsV2` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `technologiesV2` object, nullable
            - `anyOf` string[], nullable
            - `allOf` string[], nullable
            - `noneOf` string[], nullable
          - `revenueRangeUSD` object, nullable
            - `lowerBound` integer, nullable
            - `upperBound` integer, nullable
          - `employeeTrendsV2` object, nullable
            - `obeysAll` union[], nullable
              - …
            - `obeysAny` union[], nullable
              - …
            - `obeysNone` union[], nullable
              - …
          - `tags` object, nullable
            - `anyOf` string[], nullable
            - `allOf` string[], nullable
            - `noneOf` string[], nullable
          - `linkedinIndustries` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `sort` object[], nullable — Sort order for company results. Clauses are applied in order. Omit to use the default ranking. Note: changing the sort invalidates any existing cursor — start a new pagination run when the sort changes.
            - `field` 'totalFunding' | 'lastRoundFunding' | 'lastFundedAt' | 'foundedAt' | 'followerCount' | 'jobPostingCount' | 'employeeCount' | 'revenueEstimate', required
            - `direction` 'asc' | 'desc', required
        - `profileSearchParams` object, nullable — Parsed people search filters. Null if query only targets companies.
          - `country3LetterCode` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `numConnections` object, nullable
            - `lowerBound` number, nullable
            - `upperBound` number, nullable
          - `numFollowers` object, nullable
            - `lowerBound` number, nullable
            - `upperBound` number, nullable
          - `approxAge` object, nullable
            - `lowerBound` number, nullable
            - `upperBound` number, nullable
          - `keywords` object, nullable
            - `containsAll` string[], nullable
            - `containsAny` string[], nullable
            - `containsNone` string[], nullable
          - `keywordsV2` object, nullable
            - `operator` 'AND' | 'OR', required
            - `clauses` object[], required
              - …
            - `options` object, nullable
              - …
          - `keywordSearchOptions` object, nullable
            - `fieldsToSearchOver` object, nullable
              - …
          - `jobTitleV2` object, nullable
            - `anyOf` union[], nullable
              - …
            - `noneOf` union[], nullable
              - …
            - `allOf` union[], nullable
              - …
          - `exactProfile` object, nullable
            - `anyOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `exactProfileV2` object, nullable
            - `anyOf` union[], nullable
              - …
            - `noneOf` union[], nullable
              - …
          - `startedInRole` union
            - object
              - …
            - object
              - …
          - `startedAtCompany` union
            - object
              - …
            - object
              - …
          - `location` object, nullable
            - `unionAll` union[], nullable
              - …
            - `subtractAll` union[], nullable
              - …
          - `pastJobs` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `currentJobs` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `everWorkedAt` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `languages` object, nullable
            - `anyOf` string[], nullable
            - `allOf` string[], nullable
            - `noneOf` string[], nullable
          - `leftStealthAt` union
            - object
              - …
            - object
              - …
          - `isInStealth` boolean, nullable
          - `stealthV2` union
            - object
              - …
            - object
              - …
          - `educationV2` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
          - `jobStatus` union
            - object
              - …
            - object
              - …
            - object
              - …
          - `timeZone` object, nullable
            - `anyOf` object[], required
              - …
          - `pastJobText` object, nullable
            - `joiner` 'and' | 'or', required
            - `criteria` object[], required
              - …
          - `fuzzyName` object, nullable
            - `anyOf` object[], required
              - …
          - `companyMatchMode` union
            - object
              - …
            - object
              - …
          - `yearsOfExperience` object, nullable
            - `lowerBound` number, nullable
            - `upperBound` number, nullable
          - `jobTitleV3` object, nullable
            - `anyOf` union[], nullable
              - …
            - `allOf` union[], nullable
              - …
            - `noneOf` union[], nullable
              - …
          - `openToWork` boolean, nullable
          - `isHiring` boolean, nullable
          - `hasProfilePicture` boolean, nullable
          - `state` object, nullable
            - `anyOf` object[], nullable
              - …
            - `noneOf` object[], nullable
              - …
          - `certifications` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
          - `publications` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
          - `hasNoEducation` boolean, nullable
          - `employmentType` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `isTopVoice` boolean, nullable
          - `hasPremium` boolean, nullable
          - `isInfluencer` boolean, nullable
          - `industry` object, nullable
            - `anyOf` string[], nullable
            - `noneOf` string[], nullable
          - `isVerified` boolean, nullable
          - `joinedLinkedInAt` union
            - object
              - …
            - object
              - …
          - `unemployment` object, nullable
            - `isUnemployed` boolean, required
            - `becameUnemployedAt` union
              - …
          - `getDetailedEducation` boolean, nullable, required — Whether to include deep details about each educational item, like the school's LinkedIn URL, website, location, etc. That'll be put in the detailedEducation array. This slows down the API call, so only enable this if you need it.
          - `getDetailedWorkExperience` boolean, nullable, required — Whether to include deep details about each work experience item, like the company's LinkedIn URL, website, location, etc. That'll be put in the detailedWorkExperience array. This slows down the API call, so only enable this if you need it.
          - `tags` object, nullable
            - `anyOf` string[], nullable
            - `allOf` string[], nullable
            - `noneOf` string[], nullable
          - `education` object, nullable
            - `anyOf` object[], nullable
              - …
            - `allOf` object[], nullable
              - …
          - `sort` object[], nullable — Sort order for people results. Clauses are applied in order. Omit to use the default ranking. Note: changing the sort invalidates any existing cursor — start a new pagination run when the sort changes.
            - `field` 'followerCount' | 'connectionCount' | 'careerStartedAt' | 'dataUpdatedAt' | 'currentRoleStartedAt' | 'currentCompanyStartedAt' | 'jobCount', required
            - `direction` 'asc' | 'desc', required
      - object
        - `queryType` 'personLookup', required
        - `persons` object[], required — One or more people to look up. Each entry identifies a specific person by name, email, LinkedIn URL, company, and/or job title.
          - `name` string, nullable — Person's full name.
          - `email` string, nullable — Email address.
          - `linkedinUrl` string, nullable — LinkedIn profile URL.
          - `companyName` string, nullable — Company the person works at.
          - `jobTitle` string, nullable — Job title.
          - `contactDetails` object, nullable — Contact information the user requested for this person (work email, personal email, phone).
            - `workEmail` boolean, nullable — Set true when the user wants this person's work email (e.g. 'work email', or generic 'email' for a professional contact).
            - `personalEmail` boolean, nullable — Set true when the user explicitly wants a personal email address.
            - `phone` boolean, nullable — Set true when the user wants a phone number for this person.
      - object
        - `queryType` 'companyLookup', required
        - `companies` object[], required — One or more companies to look up.
          - `name` string, nullable — Company name.
          - `domain` string, nullable — Company domain (e.g. 'acme.com').
          - `linkedinUrl` string, nullable — Company LinkedIn URL.
      - object
        - `queryType` 'unprocessable', required
    - `suggestedAction` 'combinedSearch' | 'companySearch' | 'profileSearch' | 'personLookup' | 'companyLookup' | 'none', required — Recommended next step based on the parsed query. See endpoint description for which API to call.
    - `unsupportedFilters` string[], nullable — Parts of the query that could not be expressed as structured search filters.
  - `chargeInfo` union, required
    - object — Credits were charged immediately for this operation
      - `method` 'charged-now', required
      - `creditsCharged` number, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits will be charged after the operation completes
      - `method` 'charging-later', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits that were charged for an asynchronous operation
      - `method` 'charged-for-async-process', required
      - `creditsCharged` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — No credits were charged for this operation
      - `method` 'free', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits were refunded for this operation
      - `method` 'credits-refunded', required
      - `creditsRefunded` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
  - `warnings` object[], nullable — Warnings about extraneous fields in request
    - `field` string, required — Full path to extraneous field (e.g., 'searchParams.ExtraField')
    - `message` string, required — Warning message
  - `advice` string[], nullable — Tips, recommendations, and suggestions for using this API effectively.

## Other responses

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

---

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