TrueBiz Industry Discovery API

The Industry Discovery API from TrueBiz — 2 operation(s) for industry discovery.

OpenAPI Specification

truebiz-industry-discovery-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: TrueBiz Web Presence Review Async Web Presence Review Industry Discovery API
  version: 1.0.0
  description: '# Introduction

    TrueBiz provides tools to automate assessing a merchant''s web presence through the entire customer lifecycle.


    # Authentication


    All requests to TrueBiz require an API key to be sent as a header.  The expected header name is "X-API-KEY".

    '
servers:
- url: https://ae.truebiz.io
  description: Production
tags:
- name: Industry Discovery
paths:
  /api/v1/industry-searches:
    post:
      operationId: core_api_business_search_create_industry_search
      summary: Create Industry Search
      parameters: []
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessSearch'
        '204':
          description: No Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoContent'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conflict'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequest'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      description: 'Create Industry Search endpoints allow you to start a new industry discovery request. You provide a business

        name and location details, and TrueBiz creates a search record. The response includes a unique identifier for

        the search, which can be used to retrieve the results from the corresponding retrieval endpoint once processing

        is complete. In addition to the the ID returned in the response body, the full retrieval URL is also included

        in the Location header sent with the response.


        This API requires a valid API key (X-API-KEY) to be provided in the headers and is rate limited to 5

        requests per second.'
      tags:
      - Industry Discovery
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSearchInput'
        required: true
      security:
      - ApiKeyAuth: []
      - PropelAuthBearer: []
    get:
      operationId: core_api_business_search_list_industry_searches
      summary: List Industry Searches
      parameters:
      - in: query
        name: limit
        schema:
          title: Limit
          default: 50
          type: integer
        required: false
      - in: query
        name: offset
        schema:
          title: Offset
          default: 0
          type: integer
        required: false
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceNotReady'
        '204':
          description: No Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoContent'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conflict'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequest'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedBusinessSearch'
      description: 'The List Industry Searches endpoint retrieves a list of all industry discovery requests associated with the

        account linked to the provided API key. Each entry in the list includes the unique identifier, creation and

        update timestamps, current status, and a brief status description. If a search has been completed, the

        result field will contain the discovered industry information; otherwise, it will be null.'
      tags:
      - Industry Discovery
      security:
      - ApiKeyAuth: []
      - PropelAuthBearer: []
  /api/v1/industry-searches/{search_id}:
    get:
      operationId: core_api_business_search_get_industry_search
      summary: Get Industry Search
      parameters:
      - in: path
        name: search_id
        schema:
          title: Search Id
          type: string
          format: uuid
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessSearch'
        '204':
          description: No Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoContent'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conflict'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessSearch'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessSearch'
      description: 'The Get Industry Search endpoint retrieves the status and results of a previously created industry discovery

        request. If the discovery is still in progress, the endpoint responds with HTTP 202 (Accepted). When the discovery

        is complete, the endpoint responds with HTTP 200 (OK) and returns the discovered industry information,

        including name, address, description, and industry classifications (e.g., NAICS, SIC, MCC).


        Clients should poll the Get Industry Search endpoint using exponential backoff rather than continuous requests.

        We recommend starting with a short delay (2–3 seconds) after the initial 202 response, then doubling the wait

        time between each subsequent attempt until reaching a maximum interval (for example, 30 seconds). Continue polling

        until the endpoint returns 200 (discovery complete) or until a reasonable overall timeout is reached. This

        approach reduces unnecessary load while ensuring timely retrieval of results.


        This API requires a valid API key (X-API-KEY) to be provided in the headers and is rate limited to 5

        requests per second.'
      tags:
      - Industry Discovery
      security:
      - ApiKeyAuth: []
      - PropelAuthBearer: []
components:
  schemas:
    BusinessSearchResult:
      title: BusinessSearchResult
      type: object
      properties:
        business_name:
          title: Business Name
          description: The name of the business.
          type: string
        business_description:
          title: Business Description
          description: A description of the business.
          type: string
        business_address:
          title: Business Address
          description: The long-form address of the business.
          nullable: true
          required: false
          type: string
        website:
          title: Website
          description: The website of the business.
          nullable: true
          type: string
        primary_mcc:
          $ref: '#/components/schemas/MCC'
        additional_mccs:
          title: Additional Mccs
          type: array
          items:
            $ref: '#/components/schemas/MCC'
      required:
      - business_name
      - business_description
    InternalServerError:
      title: InternalServerError
      type: object
      properties:
        message:
          title: Message
          type: string
      required:
      - message
      example:
        message: An internal server error occurred.  Our support team has already been notified.  Please try again later.  If you continue to get this error, please reach out to your account manager.
    NoContent:
      title: NoContent
      type: object
      properties:
        message:
          title: Message
          type: string
      required:
      - message
      example:
        message: This resource does not contain any content.
    InvalidInputParameter:
      title: InvalidInputParameter
      type: object
      properties:
        field_name:
          title: Field Name
          type: string
        errors:
          title: Errors
          default: []
          type: array
          items:
            type: string
      required:
      - field_name
      example:
        field_name: field1
        errors:
        - This field is required.
    PagedBusinessSearch:
      title: PagedBusinessSearch
      type: object
      properties:
        searches:
          title: Searches
          type: array
          items:
            $ref: '#/components/schemas/BusinessSearch'
        count:
          title: Count
          type: integer
        limit:
          title: Limit
          type: integer
        offset:
          title: Offset
          type: integer
        prev_searches_link:
          $ref: '#/components/schemas/PrevLink'
        next_searches_link:
          $ref: '#/components/schemas/NextLink'
      required:
      - searches
      - count
      - limit
      - offset
    BadRequest:
      title: BadRequest
      type: object
      properties:
        message:
          title: Message
          type: string
      required:
      - message
      example:
        message: Bad request.
    PrevLink:
      title: PrevLink
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
        type:
          title: Type
          enum:
          - io.truebiz.link.prev-items
          type: string
        href:
          title: Href
          type: string
      required:
      - id
      - type
      - href
    MCC:
      title: MCC
      type: object
      properties:
        code:
          title: Code
          description: The Merchant Category Code.
          type: string
        description:
          title: Description
          description: The description of the Merchant Category.
          type: string
      required:
      - code
      - description
    CreateSearchInput:
      title: CreateSearchInput
      type: object
      properties:
        submitted_business_name:
          title: Submitted Business Name
          description: The name of the business to search for.
          type: string
        submitted_website:
          title: Submitted Website
          description: The website of the business to search for.
          nullable: true
          type: string
        city:
          title: City
          description: The city where the business is located.
          nullable: true
          type: string
        state_province:
          title: State Province
          description: The state or province where the business is located.
          nullable: true
          type: string
        postal_code:
          title: Postal Code
          description: The postal code of the business location.
          nullable: true
          type: string
        country:
          title: Country
          description: The country where the business is located.
          type: string
        external_tracking_ref:
          title: External Tracking Ref
          type: string
      required:
      - submitted_business_name
      - country
    BusinessSearch:
      title: BusinessSearch
      type: object
      properties:
        id:
          title: Id
          description: The unique identifier of the industry search.
          example: 123e4567-e89b-12d3-a456-426614174000
          type: string
          format: uuid
        external_tracking_ref:
          title: External Tracking Ref
          type: string
        created_at:
          title: Created At
          description: The date and time when the industry search was created.
          example: '2026-07-20T22:40:43.958Z'
          type: string
          format: date-time
        updated_at:
          title: Updated At
          description: The date and time when the industry search was last updated.
          example: '2026-07-20T22:40:43.958Z'
          type: string
          format: date-time
        status:
          title: Status
          description: The current status of the industry search.
          enum:
          - PROCESSING
          - FINISHED
          - ERROR
          - QUEUED
          type: string
        status_description:
          title: Status Description
          description: A more detailed description of the current status.
          type: string
        result:
          $ref: '#/components/schemas/BusinessSearchResult'
        query:
          $ref: '#/components/schemas/CreateSearchInput'
      required:
      - status
      - status_description
      - query
    NotFound:
      title: NotFound
      type: object
      properties:
        message:
          title: Message
          type: string
      required:
      - message
      example:
        message: Not found.
    ResourceNotReady:
      title: ResourceNotReady
      type: object
      properties:
        message:
          title: Message
          type: string
      required:
      - message
      example:
        message: This resource is not yet ready. Please try again in 10 seconds.
    NextLink:
      title: NextLink
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
        type:
          title: Type
          enum:
          - io.truebiz.link.next-items
          type: string
        href:
          title: Href
          type: string
      required:
      - id
      - type
      - href
    InvalidRequest:
      title: InvalidRequest
      type: object
      properties:
        message:
          title: Message
          type: string
        invalid_parameters:
          title: Invalid Parameters
          default: []
          type: array
          items:
            $ref: '#/components/schemas/InvalidInputParameter'
      required:
      - message
      example:
        message: Invalid input.
        invalid_parameters:
        - field_name: field1
          errors:
          - This field is required.
        - field_name: non_field_errors
          errors:
          - There's something strange in your input.
    Conflict:
      title: Conflict
      type: object
      properties:
        message:
          title: Message
          type: string
      required:
      - message
      example:
        message: This resource is in conflict with another resource.
    TooManyRequests:
      title: TooManyRequests
      type: object
      properties:
        message:
          title: Message
          type: string
      required:
      - message
      example:
        message: You have exceeded your current quota of 10 requests/second for this api endpoint.  Please slow down.
    Forbidden:
      title: Forbidden
      type: object
      properties:
        message:
          title: Message
          type: string
      required:
      - message
      example:
        message: Forbidden.
    Unauthorized:
      title: Unauthorized
      type: object
      properties:
        message:
          title: Message
          type: string
      required:
      - message
      example:
        message: Unauthorized.
  securitySchemes:
    AsyncApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
    AsyncPropelAuthBearer:
      type: http
      scheme: bearer
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
    PropelAuthBearer:
      type: http
      scheme: bearer
x-tagGroups:
- name: Web Presence Review
  tags:
  - Web Presence Review
  - Web Presence Review Integration Guide
  - Deep Search
- name: Industry Discovery
  tags:
  - Industry Discovery
- name: Monitoring
  tags:
  - Monitoring Integration Guide
  - Monitoring Alerts
  - Monitoring Domains
  - Monitoring Enrollments
  - Monitoring Anomalies
- name: Website Status
  tags:
  - Website Status
- name: Other
  tags:
  - Auth Relay Guide
  - UI Authentication Relay
  - Web Presence Review Blocklist
  - Web Presence Review Static Content
  - Web Presence Review History
  - Web Presence Review Risk Indicator Definitions
  - Async Web Presence Review Integration Guide
  - Async Web Presence Review