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

# Bulk Company Enrichment Job Results

> Retrieve the results of a bulk company enrichment job. Paginated, one row per submitted row, in the order you submitted them.

Use this endpoint to retrieve the results of a bulk company enrichment job. The response contains a `results` array alongside paging metadata (`limit`, `offset`, `total_rows`, `total_processed`).

Results hold one row for every row you submitted, in the order you submitted them, duplicates and invalid rows included. Each row echoes the LinkedIn URL or domain you sent in `input`, so you can join results back to your own list by position or by `input`.

You can call this endpoint while the job is still `running`. Rows that haven't been answered yet come back in their place as `result: pending`, so pages never shift while the job runs. Fetch them again once the job is `completed`.

## Pagination

Results are paginated with `limit` and `offset` query parameters:

| Parameter | Default | Maximum | Notes |
| - | - | - | - |
| `limit` | `50` | `500` | Number of rows to return in this page. |
| `offset` | `0` | None | Position in your submitted list, starting at `0`. |

To page through a complete job, increment `offset` by `limit` until `offset >= total_rows`.

## Per-row shape

Each entry in `results` has the same data fields as the [GET /v1/company-enrichment](/docs/api-reference/company-enrichment) response, plus `input`, `input_url` and `reason`.

| `result` | Meaning | Data fields | `credits_consumed` |
| - | - | - | - |
| `found` | A company record was returned. | populated | `1` |
| `not_found` | No company matches the LinkedIn URL, or no company matches the domain. | `null` | `1` |
| `error` | OrbiSearch couldn't answer this row. | `null` | `1` |
| `invalid_url` | Skipped at submission: not a usable LinkedIn URL or website domain. `reason` says why. | `null`, and `linkedin_url` is `null` | `0` |
| `pending` | Not answered yet. Poll again. | `null` | `1`, or `0` on a duplicate |

A duplicate row carries the same `result` and data as the first row for that input, with `credits_consumed: 0`. The first row for each input carries its `1` credit, so the sum of `credits_consumed` across all rows equals the job's charge. A LinkedIn URL and a domain for the same company are two inputs, so each is charged.

`linkedin_url` is the company's canonical URL, which may differ from what you sent. `input` is always exactly what you sent. `input_url` holds the same value on a LinkedIn URL row and is `null` on a domain row.

On a domain row, `is_redirect` is `true` when the website redirects to another domain, and `redirected_to` names that domain. A company whose website is on either domain counts as a match. Both fields are always `false` and `null` on LinkedIn URL rows.

## Example response

A job submitted with five rows: a company by LinkedIn URL, the same company written differently, the same company by its website, a URL with no matching page, and a numeric company URL. The website row is a different input from the LinkedIn URL rows, so it is charged on its own.

```json theme={null}
{
  "job_id": "123e4567-e89b-12d3-a456-426614174000",
  "total_rows": 5,
  "total_processed": 5,
  "limit": 50,
  "offset": 0,
  "results": [
    {
      "result": "found",
      "input": "linkedin.com/company/kearney",
      "input_url": "linkedin.com/company/kearney",
      "is_redirect": false,
      "redirected_to": null,
      "credits_consumed": 1,
      "reason": null,
      "linkedin_url": "https://www.linkedin.com/company/kearney",
      "linkedin_id": 2196,
      "name": "Kearney",
      "description": "As one of the original firms, we've never lost sight…",
      "website": "https://www.kearney.com/",
      "domain": "kearney.com",
      "email_domain": "kearney.com",
      "industry": "Business Consulting and Services",
      "company_size": { "label": "5,001-10,000 employees", "min": 5001, "max": 10000 },
      "employee_count": 7548,
      "company_type": "Partnership",
      "headquarters": { "text": "Chicago, Illinois", "city": "Chicago", "region": "Illinois", "country": "US" },
      "founded_year": 1926,
      "specialties": ["Management Consulting"],
      "follower_count": 694285,
      "similar_companies": [
        {
          "name": "Oliver Wyman",
          "linkedin_url": "https://www.linkedin.com/company/oliver-wyman",
          "industry": "Business Consulting and Services",
          "location": "New York, NY"
        }
      ]
    },
    {
      "result": "found",
      "input": "https://uk.linkedin.com/company/kearney/about/",
      "input_url": "https://uk.linkedin.com/company/kearney/about/",
      "is_redirect": false,
      "redirected_to": null,
      "credits_consumed": 0,
      "reason": null,
      "linkedin_url": "https://www.linkedin.com/company/kearney",
      "linkedin_id": 2196,
      "name": "Kearney",
      "description": "As one of the original firms, we've never lost sight…",
      "website": "https://www.kearney.com/",
      "domain": "kearney.com",
      "email_domain": "kearney.com",
      "industry": "Business Consulting and Services",
      "company_size": { "label": "5,001-10,000 employees", "min": 5001, "max": 10000 },
      "employee_count": 7548,
      "company_type": "Partnership",
      "headquarters": { "text": "Chicago, Illinois", "city": "Chicago", "region": "Illinois", "country": "US" },
      "founded_year": 1926,
      "specialties": ["Management Consulting"],
      "follower_count": 694285,
      "similar_companies": [
        {
          "name": "Oliver Wyman",
          "linkedin_url": "https://www.linkedin.com/company/oliver-wyman",
          "industry": "Business Consulting and Services",
          "location": "New York, NY"
        }
      ]
    },
    {
      "result": "found",
      "input": "https://www.kearney.com/about",
      "input_url": null,
      "is_redirect": false,
      "redirected_to": null,
      "credits_consumed": 1,
      "reason": null,
      "linkedin_url": "https://www.linkedin.com/company/kearney",
      "linkedin_id": 2196,
      "name": "Kearney",
      "description": "As one of the original firms, we've never lost sight…",
      "website": "https://www.kearney.com/",
      "domain": "kearney.com",
      "email_domain": "kearney.com",
      "industry": "Business Consulting and Services",
      "company_size": { "label": "5,001-10,000 employees", "min": 5001, "max": 10000 },
      "employee_count": 7548,
      "company_type": "Partnership",
      "headquarters": { "text": "Chicago, Illinois", "city": "Chicago", "region": "Illinois", "country": "US" },
      "founded_year": 1926,
      "specialties": ["Management Consulting"],
      "follower_count": 694285,
      "similar_companies": [
        {
          "name": "Oliver Wyman",
          "linkedin_url": "https://www.linkedin.com/company/oliver-wyman",
          "industry": "Business Consulting and Services",
          "location": "New York, NY"
        }
      ]
    },
    {
      "result": "not_found",
      "input": "linkedin.com/company/acme-widgets-intl",
      "input_url": "linkedin.com/company/acme-widgets-intl",
      "is_redirect": false,
      "redirected_to": null,
      "credits_consumed": 1,
      "reason": null,
      "linkedin_url": "https://www.linkedin.com/company/acme-widgets-intl",
      "linkedin_id": null,
      "name": null,
      "description": null,
      "website": null,
      "domain": null,
      "email_domain": null,
      "industry": null,
      "company_size": null,
      "employee_count": null,
      "company_type": null,
      "headquarters": null,
      "founded_year": null,
      "specialties": [],
      "follower_count": null,
      "similar_companies": []
    },
    {
      "result": "invalid_url",
      "input": "https://www.linkedin.com/company/1035",
      "input_url": "https://www.linkedin.com/company/1035",
      "is_redirect": false,
      "redirected_to": null,
      "credits_consumed": 0,
      "reason": "Numeric company URLs are not supported. Use the company's name URL, e.g. linkedin.com/company/kearney.",
      "linkedin_url": null,
      "linkedin_id": null,
      "name": null,
      "description": null,
      "website": null,
      "domain": null,
      "email_domain": null,
      "industry": null,
      "company_size": null,
      "employee_count": null,
      "company_type": null,
      "headquarters": null,
      "founded_year": null,
      "specialties": [],
      "follower_count": null,
      "similar_companies": []
    }
  ]
}
```


## OpenAPI

````yaml GET /v1/company-enrichment/bulk/{job_id}/results
openapi: 3.1.0
info:
  title: OrbiSearch Public API
  version: 1.0.0
  description: >-
    Email verification API for developers and agents. [Get your API key
    →](https://orbisearch.com/dashboard/api-keys)


    **Rate limiting:** requests are limited per API key (20 requests per second
    by default). Every response includes `X-RateLimit-Limit`,
    `X-RateLimit-Remaining` and `X-RateLimit-Reset` headers describing the
    current per-key window so clients can self-throttle; `429` responses also
    include a `Retry-After` header with the suggested backoff in seconds.
  contact:
    name: Get API Key
    url: https://orbisearch.com/dashboard/api-keys
servers:
  - url: https://api.orbisearch.com
    description: OrbiSearch Public API
security:
  - ApiKeyAuth: []
paths:
  /v1/company-enrichment/bulk/{job_id}/results:
    get:
      tags:
        - Public API v1
      summary: Get Company Enrichment Bulk Results
      description: |-
        Fetch results for a bulk company-enrichment job. Paginated with `limit`
        (default 50, max 500) and `offset` (default 0). Rows come back in submit
        order: every input row, repeats included, with the URL as sent echoed in
        `input_url`. A company not answered yet is returned with
        `result=pending`, so pages never shift while a job runs; rows our
        infrastructure could not answer are returned with `result=error`. Each
        unique company carries its 1 credit on its first row; repeats and
        invalid_url rows cost 0.
      operationId: >-
        get_company_enrichment_bulk_results_v1_company_enrichment_bulk__job_id__results_get
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
            title: Job Id
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 500
            minimum: 1
            description: Rows per page (1-500).
            default: 50
            title: Limit
          description: Rows per page (1-500).
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            description: Row offset into the ordered result set.
            default: 0
            title: Offset
          description: Row offset into the ordered result set.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyBulkResultsResponse'
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              example:
                detail: API key required in X-API-Key header
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Job not found or does not belong to this API key
          content:
            application/json:
              example:
                detail: Job not found
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
        '422':
          description: Invalid request parameters
          content:
            application/json:
              example:
                detail: 'Missing required query parameter: email.'
                errors:
                  - loc: query.email
                    msg: 'Missing required query parameter: email.'
                    type: missing
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
        '429':
          description: Rate limit exceeded
          headers:
            Retry-After:
              description: >-
                Seconds the client should wait before retrying. Computed from
                the remaining rate-limit window (typically 1 for the per-second
                limit, longer when the limit is exceeded by 3x or more); for
                endpoints with a daily quota, seconds until the quota resets.
              schema:
                type: integer
                examples:
                  - 1
            X-RateLimit-Limit:
              description: Maximum requests allowed in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 20
            X-RateLimit-Remaining:
              description: Requests remaining in the current per-API-key window.
              schema:
                type: integer
                examples:
                  - 13
            X-RateLimit-Reset:
              description: Unix timestamp (seconds) at which the current window resets.
              schema:
                type: integer
                examples:
                  - 1751700000
          content:
            application/json:
              example:
                detail: >-
                  Rate limit exceeded. Maximum 20 requests per second per API
                  key. Contact us to discuss higher limits.
                code: rate_limited
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    CompanyBulkResultsResponse:
      properties:
        job_id:
          type: string
          format: uuid
          title: Job Id
          description: Unique job identifier.
        total_rows:
          type: integer
          title: Total Rows
          description: Total input rows submitted (repeats included).
          examples:
            - 500
        total_processed:
          type: integer
          title: Total Processed
          description: Input rows answered so far.
          examples:
            - 500
        limit:
          type: integer
          title: Limit
          description: Page size used for this response.
          examples:
            - 50
        offset:
          type: integer
          title: Offset
          description: Row offset into the ordered result set.
          examples:
            - 0
        results:
          items:
            $ref: '#/components/schemas/CompanyEnrichmentResultItem'
          type: array
          title: Results
          description: >-
            Per-row results in submit order: every input row, repeats included,
            with the URL as sent echoed in input_url.
      type: object
      required:
        - job_id
        - total_rows
        - total_processed
        - limit
        - offset
        - results
      title: CompanyBulkResultsResponse
      description: Paginated results for a bulk company-enrichment job.
      example:
        job_id: 123e4567-e89b-12d3-a456-426614174000
        total_rows: 500
        total_processed: 500
        limit: 50
        offset: 0
        results: []
    ApiErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: Human-readable description of what went wrong.
          examples:
            - API key required in X-API-Key header
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
          description: >-
            Stable machine-readable error code, present on conditions a client
            may want to branch on (for example `rate_limited` for the per-second
            limit versus `daily_quota_exceeded` for the daily cap). Absent on
            errors that need no further disambiguation.
          examples:
            - daily_quota_exceeded
        errors:
          anyOf:
            - items:
                $ref: '#/components/schemas/ValidationErrorDetail'
              type: array
            - type: 'null'
          title: Errors
          description: >-
            Individual validation failures, one entry per invalid parameter or
            field. Present only on 422 responses; when the request has a single
            problem, `detail` carries the same message. Absent on all other
            error codes.
      type: object
      required:
        - detail
      title: ApiErrorResponse
      description: Error response body.
    CompanyEnrichmentResultItem:
      properties:
        result:
          type: string
          enum:
            - found
            - not_found
            - error
            - invalid_url
            - pending
          title: Result
          description: >-
            found | not_found (definitive answers), error (OrbiSearch could not
            answer this row), invalid_url (we skipped the row at submit: a
            numeric-ID or malformed URL, a name over 200 characters, a domain
            cell that is not a website domain, or a blank row) or pending (the
            row is not answered yet; poll again). found/not_found/error are
            charged 1 credit; invalid_url and repeats cost 0; pending rows are
            charged once, on the first row of that input.
        input:
          anyOf:
            - type: string
            - type: 'null'
          title: Input
          description: >-
            The linkedin_url or domain exactly as submitted for this row.
            Results return every input row in submit order, repeats included, so
            this is what to match against your own rows.
          examples:
            - linkedin.com/company/kearney
        input_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Input Url
          description: >-
            The linkedin_url exactly as submitted for this row; null on a row
            submitted by domain (see input).
          examples:
            - linkedin.com/company/kearney
        is_redirect:
          type: boolean
          title: Is Redirect
          description: >-
            Rows submitted by domain: true when that domain redirects to another
            website. Always false for a LinkedIn URL row.
          default: false
          examples:
            - false
        redirected_to:
          anyOf:
            - type: string
            - type: 'null'
          title: Redirected To
          description: >-
            Rows submitted by domain: the website domain it redirects to, or
            null. Always null for a LinkedIn URL row.
          examples:
            - null
        credits_consumed:
          type: number
          title: Credits Consumed
          description: >-
            Credits charged for this row: 1 on the first row of each distinct
            input (found, not_found and error alike), 0 on a repeat of the same
            input and 0 on an invalid_url row we skipped at submit. Nothing is
            refunded after the job is accepted.
          examples:
            - 1
        reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Reason
          description: >-
            One-line explanation of why a row was skipped. Non-null only for
            result=invalid_url; null on every other row.
          examples:
            - >-
              Numeric company URLs are not supported. Use the company's name
              URL, e.g. linkedin.com/company/kearney.
        linkedin_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Linkedin Url
          description: >-
            The company's LinkedIn URL, normalized from the input. Null for an
            invalid_url row (no company could be read from it).
          examples:
            - https://www.linkedin.com/company/kearney
        linkedin_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Linkedin Id
          description: Stable numeric company ID. Null unless found.
          examples:
            - 2196
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Company name.
          examples:
            - Kearney
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Full company description (not truncated).
        website:
          anyOf:
            - type: string
            - type: 'null'
          title: Website
          description: Website the company lists.
          examples:
            - https://www.kearney.com/
        domain:
          anyOf:
            - type: string
            - type: 'null'
          title: Domain
          description: >-
            The company's website domain. Null when not found or when the
            company has no website of its own.
          examples:
            - kearney.com
        email_domain:
          anyOf:
            - type: string
            - type: 'null'
          title: Email Domain
          description: >-
            The domain the company hosts its email on. Null when there's no
            domain.
          examples:
            - kearney.com
        industry:
          anyOf:
            - type: string
            - type: 'null'
          title: Industry
          description: Industry label.
          examples:
            - Business Consulting and Services
        company_size:
          anyOf:
            - $ref: '#/components/schemas/CompanySizeBucket'
            - type: 'null'
          description: The company's self-reported headcount range.
        employee_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Employee Count
          description: Estimated headcount.
          examples:
            - 7548
        company_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Company Type
          description: Company type.
          examples:
            - Partnership
        headquarters:
          anyOf:
            - $ref: '#/components/schemas/CompanyHeadquarters'
            - type: 'null'
          description: Headquarters location.
        founded_year:
          anyOf:
            - type: integer
            - type: 'null'
          title: Founded Year
          description: Year founded.
          examples:
            - 1926
        specialties:
          items:
            type: string
          type: array
          title: Specialties
          description: Specialties the company lists. Empty when unknown.
        follower_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Follower Count
          description: Exact follower count.
          examples:
            - 694285
        similar_companies:
          items:
            $ref: '#/components/schemas/SimilarCompany'
          type: array
          title: Similar Companies
          description: Companies similar to this one. Empty when unknown.
      type: object
      required:
        - result
        - credits_consumed
      title: CompanyEnrichmentResultItem
      description: >-
        One row of a bulk company enrichment job, in submit order.


        Carries the same data fields as the single company enrichment response,
        plus

        input_url and reason.
    ValidationErrorDetail:
      properties:
        loc:
          type: string
          title: Loc
          description: >-
            Where in the request the problem is, as a dot-separated path (e.g.
            `query.email`, `body.0`).
          examples:
            - query.email
        msg:
          type: string
          title: Msg
          description: Human-readable description of this validation error.
          examples:
            - 'Missing required query parameter: email.'
        type:
          type: string
          title: Type
          description: >-
            Machine-readable error category (e.g. `missing`, `less_than_equal`,
            `string_too_long`).
          examples:
            - missing
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationErrorDetail
      description: One request-validation failure.
    CompanySizeBucket:
      properties:
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: Headcount range label.
          examples:
            - 5,001-10,000 employees
        min:
          anyOf:
            - type: integer
            - type: 'null'
          title: Min
          description: Lower bound of the bucket, inclusive.
          examples:
            - 5001
        max:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max
          description: Upper bound of the bucket, inclusive.
          examples:
            - 10000
      type: object
      title: CompanySizeBucket
      description: The company's self-reported headcount range.
    CompanyHeadquarters:
      properties:
        text:
          anyOf:
            - type: string
            - type: 'null'
          title: Text
          description: Display form of the location.
          examples:
            - Chicago, Illinois
        city:
          anyOf:
            - type: string
            - type: 'null'
          title: City
          description: City.
          examples:
            - Chicago
        region:
          anyOf:
            - type: string
            - type: 'null'
          title: Region
          description: State or region.
          examples:
            - Illinois
        country:
          anyOf:
            - type: string
            - type: 'null'
          title: Country
          description: ISO 3166-1 alpha-2 country code.
          examples:
            - US
      type: object
      title: CompanyHeadquarters
      description: A company's headquarters location.
    SimilarCompany:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Company name.
          examples:
            - Oliver Wyman
        linkedin_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Linkedin Url
          description: The company's LinkedIn URL.
          examples:
            - https://www.linkedin.com/company/oliver-wyman
        industry:
          anyOf:
            - type: string
            - type: 'null'
          title: Industry
          description: Industry label.
          examples:
            - Business Consulting and Services
        location:
          anyOf:
            - type: string
            - type: 'null'
          title: Location
          description: Display location, when given.
          examples:
            - New York, NY
      type: object
      title: SimilarCompany
      description: A company similar to this one.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: API key for authentication
      in: header
      name: X-API-Key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.