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

# List business records

> List your organization's business records, oldest-change first. Use as a change feed for keeping your systems in sync: pass `updated_since` (an ISO 8601 timestamp) on the first request to fetch only records changed since your last sync, then re-request with the opaque `cursor.next` token returned until `pagination.hasMore` is false. Results are ordered by `updatedAt` then `id` ascending, and the keyset cursor carries both, so paging is deterministic and never skips records that share an `updatedAt`.




## OpenAPI

````yaml /openapi.yaml get /businesses
openapi: 3.1.0
info:
  title: Current Business Verification API
  version: 1.0.0
  description: >
    The Current API provides programmatic access to Canadian business
    verification services.


    ## Authentication

    All API requests require authentication via API key. Include your key using
    one of these methods:

    - `Authorization: Bearer cur_live_xxxxx` (recommended)

    - `X-API-Key: cur_live_xxxxx`


    ## Rate Limits

    All endpoints are rate limited to **60 requests per minute** per API key.


    Rate limit headers are included in all responses:

    - `X-RateLimit-Limit`: Maximum requests allowed in current window

    - `X-RateLimit-Remaining`: Remaining requests in current window

    - `X-RateLimit-Reset`: Unix timestamp when the rate limit resets


    ## Request IDs

    All responses include an `X-Request-Id` header for traceability.

    You can provide your own via the `X-Request-Id` request header; otherwise
    one is generated automatically.

    Include this ID when contacting support about a specific request.
  contact:
    name: Current Support
    url: https://getcurrent.ca
  license:
    name: Proprietary
servers:
  - url: https://api.getcurrent.ca/v1
    description: Production
security:
  - bearerAuth: []
  - apiKeyHeader: []
tags:
  - name: Search
    description: Business verification search operations
  - name: Pre-fill
    description: Fast typeahead lookup of canonical business candidates
  - name: Generate PDF
    description: PDF report generation
  - name: Business Reports
    description: Business report operations
  - name: Sanctions
    description: Standalone sanctions screening operations
  - name: Verification
    description: Business verification operations
  - name: Businesses
    description: >-
      Business record sync (list/read as a change feed, upsert to keep records
      current)
paths:
  /businesses:
    get:
      tags:
        - Businesses
      summary: List business records
      description: >
        List your organization's business records, oldest-change first. Use as a
        change feed for keeping your systems in sync: pass `updated_since` (an
        ISO 8601 timestamp) on the first request to fetch only records changed
        since your last sync, then re-request with the opaque `cursor.next`
        token returned until `pagination.hasMore` is false. Results are ordered
        by `updatedAt` then `id` ascending, and the keyset cursor carries both,
        so paging is deterministic and never skips records that share an
        `updatedAt`.
      operationId: listBusinesses
      parameters:
        - name: limit
          in: query
          description: Maximum number of results per page (1-100)
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
        - name: cursor
          in: query
          description: >
            Opaque continuation token from a prior response's `cursor.next`.
            Takes precedence over `updated_since` (which only seeds the first
            request). Persist it verbatim between runs.
          schema:
            type: string
        - name: updated_since
          in: query
          description: >
            Return only records with `updatedAt` strictly after this ISO 8601
            timestamp. Used only on the first request; thereafter pass `cursor`.
          schema:
            type: string
            format: date-time
        - name: external_id
          in: query
          description: Filter to the single record matching this customer external id
          schema:
            type: string
        - name: archived
          in: query
          description: Filter by archived status
          schema:
            type: boolean
        - name: monitored
          in: query
          description: Filter by monitoring status
          schema:
            type: boolean
      responses:
        '200':
          description: Business records list
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
        - bearerAuth: []
        - apiKeyHeader: []
components:
  headers:
    X-Request-Id:
      description: >-
        Unique request identifier for traceability. Echoes client-provided value
        or auto-generated UUID.
      schema:
        type: string
        format: uuid
        example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
    X-RateLimit-Limit:
      description: Maximum requests per minute
      schema:
        type: integer
        example: 60
    X-RateLimit-Remaining:
      description: Remaining requests in current window
      schema:
        type: integer
        example: 58
    X-RateLimit-Reset:
      description: Unix timestamp when rate limit resets
      schema:
        type: integer
        example: 1702915200
  schemas:
    BusinessListResponse:
      type: object
      properties:
        businesses:
          type: array
          items:
            $ref: '#/components/schemas/Business'
        pagination:
          type: object
          properties:
            limit:
              type: integer
            hasMore:
              type: boolean
              description: >
                True when the page is full and more records may follow.
                Re-request with `cursor.next` until this is false.
        cursor:
          type: object
          properties:
            next:
              type: string
              nullable: true
              description: >
                Opaque keyset token. Pass as `cursor` on the next request to
                continue the feed. Null when the page is empty (nothing new).
    Business:
      type: object
      description: A business record.
      properties:
        id:
          type: string
          format: uuid
          description: Current's internal id for this business
        externalId:
          type: string
          nullable: true
          description: Your internal id for this business (e.g. CRM record id)
        name:
          type: string
        operatingNames:
          type: array
          items:
            type: string
        jurisdiction:
          type: string
          nullable: true
          description: >-
            Canadian jurisdiction code (AB, BC, MB, NB, NL, NS, NT, NU, ON, PE,
            QC, SK, YT, FED)
        registrationNumber:
          type: string
          nullable: true
        businessNumber:
          type: string
          nullable: true
        entityType:
          type: string
          nullable: true
        sourceEntityType:
          type: string
          nullable: true
        registryStatus:
          type: string
          nullable: true
        incorporationDate:
          type: string
          nullable: true
          description: Full incorporation date (YYYY-MM-DD), when known.
        incorporationYear:
          type: integer
          nullable: true
          description: Year of incorporation, when only the year is known.
        registrations:
          type: array
          items:
            type: object
        address:
          type: object
          properties:
            street:
              type: string
              nullable: true
            unit:
              type: string
              nullable: true
            city:
              type: string
              nullable: true
            province:
              type: string
              nullable: true
            postalCode:
              type: string
              nullable: true
            country:
              type: string
              nullable: true
        addresses:
          type: array
          description: Additional typed address objects
          items:
            type: object
        people:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              roles:
                type: array
                items:
                  type: string
              email:
                type: string
        website:
          type: string
          nullable: true
        additionalWebsites:
          type: array
          items:
            type: string
        phoneNumber:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        industry:
          type: string
          nullable: true
          description: Industry or sector label.
        industryCategory:
          type: string
          nullable: true
          description: Higher-level industry category.
        naicsCode:
          type: string
          nullable: true
          description: NAICS industry code.
        naicsCodeName:
          type: string
          nullable: true
          description: Human-readable NAICS industry description.
        businessDescription:
          type: string
          nullable: true
          description: Free-text description of the business.
        originationDate:
          type: string
          nullable: true
          description: Date (YYYY-MM-DD) the business became your customer
        notes:
          type: string
          nullable: true
        sourceUrls:
          type: array
          items:
            type: string
        isMonitored:
          type: boolean
        isArchived:
          type: boolean
        verificationStatus:
          type: string
          nullable: true
          enum:
            - verified
            - not_verified
            - failed
            - null
        lastVerifiedAt:
          type: string
          format: date-time
          nullable: true
        lastVerificationJobId:
          type: string
          format: uuid
          nullable: true
          description: >
            Batch job that produced the most recent verification. Null when the
            last verification was run individually rather than as part of a
            batch.
        latestVerificationId:
          type: string
          format: uuid
          nullable: true
        hasUnresolvedDiscrepancies:
          type: boolean
        lastSearchedAt:
          type: string
          format: date-time
          nullable: true
        lastSearchJobId:
          type: string
          format: uuid
          nullable: true
          description: >
            Batch job that produced the most recent search. Null when the last
            search was run individually rather than as part of a batch.
        lastScreenedAt:
          type: string
          format: date-time
          nullable: true
          description: When this business was most recently screened.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    ErrorResponse:
      type: object
      required:
        - error
        - code
      properties:
        error:
          type: string
          description: Human-readable error message
        code:
          type: string
          description: >
            Machine-readable error code. Present on every error response.
            Distinct from the per-source `APIError.code` values that appear
            inside a successful response's `meta.errors` object.
          enum:
            - MISSING_API_KEY
            - INVALID_API_KEY
            - REVOKED_API_KEY
            - EXPIRED_API_KEY
            - RATE_LIMITED
            - VALIDATION_ERROR
            - INVALID_JSON
            - NOT_FOUND
            - STALE_WRITE
            - CONFLICT
            - METHOD_NOT_ALLOWED
            - UNAUTHORIZED
            - SERVER_ERROR
            - INTERNAL_ERROR
          example: VALIDATION_ERROR
  responses:
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: name is required and must be a non-empty string
            code: VALIDATION_ERROR
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missing:
              value:
                error: >-
                  Missing API key. Provide via Authorization: Bearer <key> or
                  X-API-Key header.
                code: MISSING_API_KEY
            invalid:
              value:
                error: Invalid API key
                code: INVALID_API_KEY
            revoked:
              value:
                error: API key has been revoked
                code: REVOKED_API_KEY
            expired:
              value:
                error: API key has expired
                code: EXPIRED_API_KEY
    RateLimited:
      description: Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          schema:
            type: integer
            example: 0
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        Retry-After:
          description: Seconds until rate limit resets
          schema:
            type: integer
            example: 60
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Rate limit exceeded. Try again in 60 seconds.
            code: RATE_LIMITED
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key as Bearer token: `Authorization: Bearer cur_live_xxxxx`'
    apiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'API key in header: `X-API-Key: cur_live_xxxxx`'

````