> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pubrio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Company Job Search

> Search job postings. See the [Job Search guide](/en/developer-guides/search/job-search).



## OpenAPI

````yaml en-openapi POST /companies/jobs/search
openapi: 3.0.0
info:
  description: >-
    The Pubrio API delivers market expansion intelligence — real-time signals
    that flag when a company enters a new market — alongside the company and
    people data beneath them. Search, look up, and enrich accounts and contacts,
    and subscribe to typed, dated movement signals across 200+ markets.
  version: 1.0.0
  title: Pubrio OpenAPI
  termsOfService: https://pubrio.com/en/terms-of-service
  contact:
    email: king.lai@pubrio.com
    name: King Lai
    url: https://pubrio.com/en/get-in-touch
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.pubrio.com
security:
  - pubrio_api_key: []
tags:
  - name: Profile
    description: Workspace profile information and usage statistics
  - name: Enrichment
    description: Enrich people and company records with detailed B2B data
  - name: Lookalike
    description: Find companies similar to a given company
  - name: Search
    description: Search for people, companies, jobs, news, and advertisements with filters
  - name: Lookup
    description: >-
      Look up detailed information for specific people, companies, jobs, news,
      advertisements, and technologies
  - name: LinkedIn
    description: Look up people and company data via LinkedIn profile URLs
  - name: Redeem
    description: Redeem credits to unlock people contact details (single and batch)
  - name: Channels
    description: Manage outreach channel templates (create, update, delete, list)
  - name: Monitor
    description: Create and manage data monitors with webhooks, statistics, and processing
  - name: Filters
    description: >-
      Retrieve available filter values for search parameters (technologies,
      locations, verticals, etc.)
  - name: API Keys
    description: List and inspect API request logs and usage analytics for API keys
  - name: Insights
    description: Aggregated signal insights for companies (jobs, news, advertisements).
  - name: Export
    description: Bulk data exports (credit-gated).
  - name: Expansion
    description: >-
      Company market-expansion intelligence: signals, stages, markets, and
      exports.
externalDocs:
  description: >-
    The Pubrio API is used to search, preview and enrich Contacts and Accounts.
    Pubrio database provides extensive B2B contacts and sales intelligence data.
  url: https://docs.pubrio.com
paths:
  /companies/jobs/search:
    post:
      tags:
        - Search
      summary: Search for job postings
      description: >-
        Search job postings. See the [Job Search
        guide](/en/developer-guides/search/job-search).
      operationId: companies_search_jobs
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                locations:
                  $ref: '#/components/schemas/locations'
                exclude_locations:
                  type: array
                  items:
                    type: string
                  example:
                    - TW
                  description: >-
                    ISO 3166-1 alpha-2 (cca2) location codes to exclude from job
                    results. Check out the `location` endpoints under the
                    Filters tab for valid codes.
                location_ids:
                  $ref: '#/components/schemas/job_location_ids'
                company_locations:
                  $ref: '#/components/schemas/company_locations'
                companies:
                  $ref: '#/components/schemas/companies'
                domains:
                  $ref: '#/components/schemas/domains'
                linkedin_urls:
                  $ref: '#/components/schemas/company_linkedin_urls'
                search_term:
                  $ref: '#/components/schemas/search_term'
                search_terms:
                  type: array
                  items:
                    type: string
                  example:
                    - Software Developer
                  description: >-
                    Array of keyword strings to filter job postings. Each term
                    is matched against job content. Use `search_term` for a
                    single string or `search_terms` for multiple keywords.
                titles:
                  $ref: '#/components/schemas/people_titles'
                functions:
                  $ref: '#/components/schemas/job_functions'
                seniority_ranks:
                  $ref: '#/components/schemas/job_seniority_ranks'
                posted_dates:
                  $ref: '#/components/schemas/posted_dates'
                launch_dates:
                  $ref: '#/components/schemas/job_launch_dates'
                created_at:
                  $ref: '#/components/schemas/search_created_at'
                is_realtime_enrichment:
                  $ref: '#/components/schemas/is_realtime_enrichment'
                is_ascending_order:
                  $ref: '#/components/schemas/is_ascending_order'
                per_page:
                  $ref: '#/components/schemas/per_page'
                page:
                  $ref: '#/components/schemas/page'
      responses:
        '200':
          description: Successful response containing company job search details.
          content:
            application/json:
              schema:
                type: object
                properties:
                  metadata:
                    $ref: '#/components/schemas/search_metadata'
                  data:
                    type: object
                    properties:
                      pagination:
                        $ref: '#/components/schemas/search_pagination'
                      jobs:
                        type: array
                        items:
                          $ref: '#/components/schemas/job_search_result'
              example:
                metadata:
                  profile: null
                  filters:
                    domains:
                      - google.com
                    per_page: 25
                    language: en
                  ignored_fields: []
                data:
                  pagination:
                    page: 1
                    per_page: 25
                    total_entries: 2228628
                    total_pages: 89146
                    is_timeout: false
                    total_display_pages: 250
                  jobs:
                    - job_id: 371d0c44-4c56-4c9c-98e2-ef6dd986b848
                      job_search_id: 371d0c44-4c56-4c9c-98e2-ef6dd986b848
                      last_modified: '2025-05-31T20:41:27.894Z'
                      companies:
                        logo_url: >-
                          https://buckets.pubrio.com/company-logo/OTQxMjYxMTFnb29nbGUuY29tLnBrbGlua2VkaW5fcF9sb2dvMTU=.jpg
                        domain_search_id: 539e2c34-de6b-4613-8f5b-e3aa18b4ef47
                        company_name: Google
                        linkedin_name: google
                        country_code: US
                        domain: google.com
                      location: Seoul, Seoul, South Korea
                      job_url: >-
                        https://kr.linkedin.com/jobs/view/software-engineer-greach-program-for-people-with-disabilities-%EC%9E%A5%EC%95%A0%EC%9D%B8-%EC%B1%84%EC%9A%A9-at-google-4224659596?position=7&pageNum=0&refId=DwDpGXGftUql%2FkETvFCwXw%3D%3D&trackingId=gAvrIP0yUQuf8fjK67HSbQ%3D%3D
                      posting_date: '2025-05-31'
                      country_code: KR
                      location_id: 491
                      title: >-
                        Software Engineer, gReach Program for People with
                        Disabilities (장애인 채용)
                      country: South Korea
                      created_at: '2025-05-10T14:30:58.348Z'
                      source_type: linkedin
                      functions: null
                      seniority_rank: 0
                      base_salary: null
                      experience_requirement: null
                      education_requirement: null
                      employment_type: null
                    - ...
        '400':
          $ref: '#/components/responses/general_error'
        '429':
          $ref: '#/components/responses/rate_limit_error'
        '500':
          $ref: '#/components/responses/server_error'
components:
  schemas:
    locations:
      type: array
      items:
        type: string
      example:
        - US
        - SG
        - CN
      description: >-
        ISO 3166-1 alpha-2 (cca2) is used for filtering locations. Check out
        `location` endpoints under the Filters tab for more information.
    job_location_ids:
      type: array
      items:
        type: integer
      example:
        - 357
        - 419
      description: >-
        Posting country by Pubrio `location_id` (Locations endpoint; also on
        each row). Alternative to `locations`.
    company_locations:
      type: array
      items:
        type: string
      example:
        - US
        - SG
        - CN
      description: >-
        The location of the company headquarters. Check out `location` endpoints
        under the Filters tab for more information.
    companies:
      type: array
      items:
        type: string
        format: uuid
      description: >-
        A list of unique identifiers (domain_search_id) used for company and
        people search operations.
    domains:
      type: array
      items:
        type: string
      example:
        - pubrio.com
      description: >-
        List of company domains used for company and people search operations.
        If we receive a URL such as `www.pubrio.com` or
        `https://docs.pubrio.com/`, the system will convert it to `pubrio.com`
        for processing.
    company_linkedin_urls:
      type: array
      items:
        type: string
      example:
        - https://www.linkedin.com/company/pubrio
      description: >-
        The fully formed URL of the LinkedIn company profile. URL begin with
        `http` and contain `linkedin.com/company/`
    search_term:
      type: string
      example: pubrio
      description: A string of words over which we want to filter the results.
    people_titles:
      type: array
      items:
        type: string
      example:
        - sales manager
        - marketing manager
      description: |-
        Job titles associated with the individuals you aim to locate. 

         The results will also encompass job titles that include similar terminology, even if they do not match exactly. For instance, searching for `software engineer` may yield results for individuals with the title `senior software engineer`.
    job_functions:
      type: array
      items:
        type: string
      example:
        - engineering
        - product_management
      description: >-
        Function slugs derived from the title, e.g. `engineering`, `sales`,
        `marketing`, `finance`, `product_management` — the same values rows
        return in `functions`. Unknown slugs match nothing. Full list: [Enums &
        Constants](/en/api-reference/enums#job-functions).
    job_seniority_ranks:
      type: array
      items:
        type: integer
        enum:
          - 1
          - 2
          - 3
          - 4
          - 5
      example:
        - 4
        - 5
      description: >-
        Seniority tier from the title: `1` junior, `2` senior, `3` manager, `4`
        director, `5` executive. Values outside 1–5 are ignored and the filter
        dropped. Rows return their tier in `seniority_rank` (`0` =
        unclassified).
    posted_dates:
      type: array
      items:
        type: string
      example:
        - '2025-01-01'
        - '2025-01-10'
      description: >-
        Date range of the posted date. The maximum value is the current day. Day
        boundaries follow your workspace timezone.
    job_launch_dates:
      type: array
      items:
        type: string
        format: date
      minItems: 1
      maxItems: 2
      example:
        - '2026-08-01'
        - '2026-08-31'
      description: >-
        Inclusive `[from, to]` window (UTC) on the launch date: `posting_date`,
        or the ingestion day when absent. Matches how Job Insights counts. A
        single date matches that day.
    search_created_at:
      type: string
      format: date-time
      example: '2026-09-02T12:00:00Z'
      description: >-
        Ingested at or after this instant (UTC). Date or ISO timestamp. For
        incremental syncs pass the `created_at` of your newest stored row.
    is_realtime_enrichment:
      type: boolean
      default: false
      example: true
      description: >-
        Opt into realtime enrichment for a single, company-scoped query
        (filtered by `domain_search_id`, `domains`, or `linkedin_urls`). When
        the initial search returns zero results, the endpoint scrapes the
        source, persists the records, and re-runs the search before responding.
        Subject to a per-route deadline.
    is_ascending_order:
      type: boolean
      default: false
      example: false
      description: >-
        Sort direction. Results are returned newest-first by default; set `true`
        for oldest-first. There is no `sort_by` on this endpoint — the sort key
        is fixed and stated in the endpoint description.
    per_page:
      type: integer
      example: 25
      default: 25
      maximum: 25
      description: >-
        Records per page. Defaults to 25, which is also the ceiling on most
        plans — the limit is your subscription's `max_search_per_page`, returned
        by [Profile](/en/api-reference/endpoint/profile/profile). Exceeding it
        returns **HTTP 416** with code `41676` (or `41613` on company and people
        search), not a clamped result set.
    page:
      type: integer
      example: 1
      default: 1
      description: >-
        Page number, starting at 1. The ceiling is your subscription's
        `max_search_page` (`max_company_search_page` for company search),
        returned by [Profile](/en/api-reference/endpoint/profile/profile).
        Exceeding it returns **HTTP 416**.
    search_metadata:
      type: object
      description: Request context.
      properties:
        profile:
          type: object
          nullable: true
          description: >-
            Credit block (`credit`, `topup_credit`, `total_credit_cost`) when
            credit accounting is requested; `null` on plain API-key traffic.
        filters:
          type: object
          description: >-
            Echo of the request body as the endpoint applied it, including
            defaults such as `per_page` and `language`.
        ignored_fields:
          type: array
          items:
            type: string
          description: >-
            Body keys the endpoint did not recognise and dropped. Empty means
            every key applied — a misspelled filter widens the search instead of
            failing.
    search_pagination:
      type: object
      description: Pagination for the result set.
      properties:
        page:
          type: integer
          description: Current page number.
        per_page:
          type: integer
          description: Records per page.
        total_entries:
          type: integer
          description: >-
            Total matching records. On broad, company-agnostic searches this is
            an estimate.
        total_pages:
          type: integer
          description: '`total_entries` divided by `per_page`.'
        total_display_pages:
          type: integer
          description: >-
            Pages you can actually request, capped by your plan's
            `max_search_page`.
        is_timeout:
          type: boolean
          description: >-
            `true` when the count query timed out and `total_entries` is a
            partial estimate.
    job_search_result:
      type: object
      description: One job posting.
      properties:
        job_id:
          type: string
          format: uuid
          description: Posting identifier.
        job_search_id:
          type: string
          format: uuid
          description: Same value as `job_id`. Pass it to Job Lookup.
        created_at:
          type: string
          format: date-time
          description: >-
            When Pubrio first ingested the posting. This is the default sort
            key.
        last_modified:
          type: string
          format: date-time
          description: When the record was last updated.
        title:
          type: string
          description: Job title as published.
        job_url:
          type: string
          description: Link to the posting at the source.
        location:
          type: string
          description: Free-text location as published.
          nullable: true
        location_id:
          type: integer
          nullable: true
          description: >-
            Pubrio `location_id` of the posting's country. Same vocabulary as
            the `location_ids` filter.
        country:
          type: string
          description: Country name of the posting.
          nullable: true
        country_code:
          type: string
          description: >-
            ISO 3166-1 alpha-2 code of the posting's country. Same vocabulary as
            the `locations` filter.
          nullable: true
        posting_date:
          type: string
          format: date
          nullable: true
          description: >-
            Publisher's posting date. `launch_dates` filters on it, falling back
            to `created_at` when it is absent.
        source_type:
          type: string
          description: Source the posting was captured from, e.g. `linkedin`.
        functions:
          type: array
          nullable: true
          items:
            type: string
          description: >-
            Job-function slugs resolved from the title; `null` when
            unclassified. Same vocabulary as the `functions` filter.
        seniority_rank:
          type: integer
          enum:
            - 0
            - 1
            - 2
            - 3
            - 4
            - 5
          description: >-
            Seniority tier `1`–`5` as defined on the `seniority_ranks` filter;
            `0` when the title could not be classified.
        base_salary:
          type: string
          description: Salary text as published, when the source provides one.
          nullable: true
        experience_requirement:
          type: string
          description: Experience requirement as published, when the source provides one.
          nullable: true
        education_requirement:
          type: string
          description: Education requirement as published, when the source provides one.
          nullable: true
        employment_type:
          type: string
          description: >-
            Employment type as published (e.g. `Full-time`), when the source
            provides one.
          nullable: true
        companies:
          $ref: '#/components/schemas/search_result_company'
    search_result_company:
      type: object
      description: The company the record is linked to.
      properties:
        domain_search_id:
          type: string
          format: uuid
          description: >-
            Pubrio company identifier. Pass it to `companies` on any search, or
            to Company Lookup.
        company_name:
          type: string
          description: Company name.
        linkedin_name:
          type: string
          nullable: true
          description: LinkedIn company slug (the part after `linkedin.com/company/`).
        country_code:
          type: string
          nullable: true
          description: ISO 3166-1 alpha-2 code of the company headquarters.
        company_url:
          type: string
          nullable: true
          description: Company website URL.
        domain:
          type: string
          description: Company domain, normalised (`stripe.com`).
        logo_url:
          type: string
          nullable: true
          description: Company logo URL.
  responses:
    general_error:
      description: >-
        Bad request. The request was malformed or contained invalid parameters.
        Check the error code and message for details.
      content:
        application/json:
          schema:
            required:
              - code
              - message
              - details
            type: object
            properties:
              code:
                example: 40001
                type: integer
              message:
                example: >-
                  Errors and codes will vary depending on the scenario, please
                  see the documentation for information.
                type: string
              details:
                type: object
    rate_limit_error:
      description: >-
        Rate limit exceeded. Too many requests were made in a given time period.
        Retry after the rate limit window resets.
      content:
        application/json:
          schema:
            required:
              - error
            type: object
            properties:
              error:
                example: Request rate limit exceeded. Please wait and try again later.
                type: string
    server_error:
      description: >-
        Internal server error. An unexpected error occurred on the server.
        Contact support if the error persists.
      content:
        application/json:
          schema:
            required:
              - error
            type: object
            properties:
              error:
                example: An unexpected error occurred on the server.
                type: string
  securitySchemes:
    pubrio_api_key:
      type: apiKey
      name: pubrio-api-key
      description: >-
        A unique API token that represents the actions you perform through the
        API and the corresponding permissions and operations. You can create it
        through the [Settings](https://dashboard.pubrio.com/#/settings/)
        section.
      in: header

````