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

# MTE Slave Labour Register Search

> Search Brazil's register of employers caught keeping workers in conditions analogous to slavery (Cadastro de Empregadores, the "Lista Suja"), and the register of employers under a conduct-adjustment agreement, by CNPJ (or its 8-character root), CPF, name, state or inspection year. Each listing carries the establishment, workers found, activity, the final decision date and every period on the register. CPFs are matched exactly and returned masked. Updated daily.

**Dataset endpoint**: answers from the whole source in milliseconds and carries `as_of`.



## OpenAPI

````yaml /api-reference/openapi.json post /br/mte/slave-labour-search/v1
openapi: 3.1.0
info:
  title: Croma Marketplace API
  version: 1.0.0
  description: >-
    Government-data APIs for Colombia, Peru, Mexico, and global web search.
    Croma normalizes public-sector data into structured JSON for product teams
    and AI agents.


    Every operation is a POST with a JSON body and an organization API key as a
    bearer token; every operation is an idempotent lookup and accepts an
    optional `Idempotency-Key` header. Paths carry their major version (`/v1`);
    the versioning and deprecation policy, including the `Deprecation` and
    `Sunset` headers a retiring endpoint sends, is at
    https://docs.usecroma.com/versioning. Rate limits are per organization and
    reported on every response (`RateLimit-Policy`, `X-RateLimit-*`):
    https://docs.usecroma.com/rate-limits.
  termsOfService: https://usecroma.com/en/terms
  contact:
    name: Croma support
    url: https://usecroma.com/en/support
    email: tomas@usecroma.com
servers:
  - url: https://api.croma.run
security: []
paths:
  /br/mte/slave-labour-search/v1:
    post:
      tags:
        - Brazil
        - Ministério do Trabalho e Emprego (MTE)
      summary: MTE Slave Labour Register Search
      description: >-
        Search Brazil's register of employers caught keeping workers in
        conditions analogous to slavery (Cadastro de Empregadores, the "Lista
        Suja"), and the register of employers under a conduct-adjustment
        agreement, by CNPJ (or its 8-character root), CPF, name, state or
        inspection year. Each listing carries the establishment, workers found,
        activity, the final decision date and every period on the register. CPFs
        are matched exactly and returned masked. Updated daily.


        **Dataset endpoint**: answers from the whole source in milliseconds and
        carries `as_of`.
      operationId: mte_slave_labour_search
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: []
              properties:
                query:
                  type: string
                  maxLength: 200
                  default: ''
                  description: Palabras a buscar en los nombres (opcional).
                document_number:
                  type: string
                  pattern: >-
                    ^(?:\d{11}|\d{3}\.\d{3}\.\d{3}-\d{2}|[A-Za-z0-9]{8}|[A-Za-z0-9]{12}\d{2}|[A-Za-z0-9]{2}\.[A-Za-z0-9]{3}\.[A-Za-z0-9]{3}(?:\/[A-Za-z0-9]{4}-\d{2})?)?$
                  default: ''
                  description: >-
                    CPF o CNPJ del empleador, con o sin puntuación, p. ej.
                    `12.345.678/0001-90`, o la raíz de 8 caracteres de un CNPJ
                    para todos sus establecimientos (opcional). Coincidencia
                    exacta.
                list:
                  type: string
                  enum:
                    - ''
                    - slave_labour
                    - conduct_adjustment
                  default: ''
                  description: >-
                    Registro: `slave_labour` (empleadores que sometieron
                    trabajadores a condiciones análogas a la esclavitud) o
                    `conduct_adjustment` (empleadores en ajuste de conducta)
                    (opcional; por defecto ambos).
                party_type:
                  type: string
                  enum:
                    - ''
                    - individual
                    - company
                  default: ''
                  description: >-
                    Tipo de parte: `individual` (persona) o `company` (empresa u
                    organización) (opcional).
                state:
                  type: string
                  pattern: ^(?:[A-Za-z]{2})?$
                  default: ''
                  description: >-
                    Sigla del estado (UF) de la fiscalización, p. ej. `PA`
                    (opcional).
                inspection_year:
                  type: integer
                  minimum: 0
                  maximum: 2100
                  default: 0
                  description: >-
                    Año de la fiscalización, p. ej. `2024`; `0` sin filtro
                    (opcional).
                page:
                  type: integer
                  minimum: 1
                  maximum: 1000
                  default: 1
                  description: 1-based page number for paginated results.
                per_page:
                  type: integer
                  minimum: 1
                  maximum: 50
                  default: 20
                  description: Resultados por página (1-50).
              additionalProperties: false
            example:
              query: fazenda
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
            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'
            X-Cache:
              $ref: '#/components/headers/X-Cache'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MteSlaveLabourSearchResponse'
        '400':
          description: Invalid request body
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Missing or invalid API key
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Rate limit exceeded
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
            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'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal error
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - bearerAuth: []
      externalDocs:
        description: Interactive documentation and examples
        url: https://docs.usecroma.com/guides/brazil/mte
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: >-
        Optional client-chosen key for this request (any string up to 255
        characters, e.g. a UUID). Every Croma operation is an idempotent lookup:
        repeating a request with the same body returns the same result and
        creates nothing, so retrying after a timeout or network failure is
        always safe. The key is echoed back in the `Idempotency-Key` response
        header so you can correlate a retry with its first attempt. Each attempt
        that reaches the API counts against the rate limit.
      schema:
        type: string
        maxLength: 255
        example: 0f8e9a42-6b7c-4d1e-9a3f-2c5d7e8f9a0b
  headers:
    X-Request-Id:
      description: Unique id for the request (req_…). Include it in support reports.
      schema:
        type: string
    RateLimit-Policy:
      description: >-
        Quota policy for this endpoint as an IETF RateLimit-Policy structured
        field, e.g. `"default";q=100;w=86400` (100 requests per 86400-second
        window per organization). Endpoints with an extra hourly ceiling list
        both policies, e.g. `"webSearch";q=10;w=3600, "default";q=100;w=86400`.
        Present on every response, including 401 and 429.
      schema:
        type: string
        example: '"default";q=100;w=86400'
    Idempotency-Key:
      description: >-
        The `Idempotency-Key` the request carried, echoed back unchanged. Absent
        when the request sent none.
      schema:
        type: string
    Deprecation:
      description: >-
        Present only on an endpoint version scheduled for removal: the date the
        deprecation took effect (RFC 9745). A `Sunset` header and a `Link` with
        `rel="successor-version"` accompany it. Policy:
        https://docs.usecroma.com/versioning
      schema:
        type: string
        example: '@1767225600'
    Sunset:
      description: >-
        Present only on an endpoint version scheduled for removal: the date
        after which it answers 410 (RFC 8594). Announced in the changelog at
        least 90 days ahead.
      schema:
        type: string
        format: date-time
        example: Wed, 01 Apr 2026 00:00:00 GMT
    X-RateLimit-Limit:
      description: Requests allowed in the current window.
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests left before you are throttled.
      schema:
        type: integer
    X-RateLimit-Reset:
      description: ISO 8601 timestamp when the window resets.
      schema:
        type: string
        format: date-time
    X-Cache:
      description: HIT or MISS. Cached hits still count against your quota.
      schema:
        type: string
        enum:
          - HIT
          - MISS
    Retry-After:
      description: Seconds to wait before retrying.
      schema:
        type: integer
  schemas:
    MteSlaveLabourSearchResponse:
      type: object
      required:
        - data
      properties:
        data:
          $ref: '#/components/schemas/MteSlaveLabourSearchData'
    ApiError:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - code
            - message
          properties:
            type:
              type: string
              description: >-
                Broad category: invalid_request_error, authentication_error,
                not_found_error, rate_limit_error, upstream_error, api_error.
            code:
              type: string
              description: Machine-readable specific code.
            message:
              type: string
              description: Human-readable explanation, safe to surface in UI.
            param:
              type: string
              description: Field that triggered the error. Present on validation errors.
            details:
              type: object
              description: Free-form structured detail.
    MteSlaveLabourSearchData:
      type: object
      properties:
        as_of:
          anyOf:
            - type: string
            - type: 'null'
          description: How current the data in this response is.
        query:
          type: string
        list:
          anyOf:
            - type: string
            - type: 'null'
        party_type:
          anyOf:
            - type: string
            - type: 'null'
        state:
          anyOf:
            - type: string
            - type: 'null'
        inspection_year:
          anyOf:
            - type: number
            - type: 'null'
        total:
          type: number
          description: Listings matching the filters, across every page.
        page:
          type: number
        per_page:
          type: number
        total_pages:
          type: number
        count:
          type: number
        employers:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  The register and a fingerprint of the listing, e.g.
                  `slave_labour-3f9a0c12d4e5b6a7`: the key.
              list:
                type: string
                enum:
                  - slave_labour
                  - conduct_adjustment
                description: >-
                  `slave_labour` (the register of employers caught keeping
                  workers in conditions analogous to slavery) or
                  `conduct_adjustment` (employers who signed a
                  conduct-adjustment agreement instead).
              party_type:
                type: string
                enum:
                  - individual
                  - company
                description: '`individual` (listed by CPF) or `company` (by CNPJ).'
              document_type:
                type: string
                enum:
                  - cpf
                  - cnpj
              document:
                type: string
                description: >-
                  A CNPJ in full (`12.345.678/0001-90`); a CPF masked
                  (`***.456.789-**`).
              employer_name:
                type: string
                description: >-
                  The employer's name as the register prints it; a CPF inside a
                  name is masked.
              establishment:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The establishment inspected (a farm, a site, an address), as
                  printed; a CPF inside it is masked.
              state:
                anyOf:
                  - type: string
                  - type: 'null'
                description: Two-letter state (UF) of the inspection.
              inspection_year:
                anyOf:
                  - type: integer
                  - type: 'null'
                description: The year of the inspection that found the workers.
              workers_involved:
                anyOf:
                  - type: integer
                  - type: 'null'
                description: Workers found in conditions analogous to slavery.
              cnae:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The activity code (CNAE), e.g. `0151-2/01`.
              final_decision_date:
                anyOf:
                  - type: string
                  - type: 'null'
                description: '`yyyy-mm-dd` the administrative decision became final.'
              listed_on:
                type: string
                description: '`yyyy-mm-dd` the current listing started.'
              listing_history:
                type: array
                items:
                  type: object
                  properties:
                    from:
                      type: string
                      description: '`yyyy-mm-dd`.'
                    to:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: '`yyyy-mm-dd`; null while it lasts.'
                  required:
                    - from
                    - to
                description: >-
                  Every period the employer has been on the register: a court
                  can suspend a listing and it can later return.
              court_order:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The court decision that put the employer on the register, when
                  a court did, as the register cites it.
              conduct_adjustment_on:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  `yyyy-mm-dd` the employer entered the conduct-adjustment
                  register; `conduct_adjustment` only.
              agreement_url:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  Where the conduct-adjustment agreement is published;
                  `conduct_adjustment` only.
            required:
              - id
              - list
              - party_type
              - document_type
              - document
              - employer_name
              - establishment
              - state
              - inspection_year
              - workers_involved
              - cnae
              - final_decision_date
              - listed_on
              - listing_history
              - court_order
              - conduct_adjustment_on
              - agreement_url
      required:
        - as_of
        - query
        - list
        - party_type
        - state
        - inspection_year
        - total
        - page
        - per_page
        - total_pages
        - count
        - employers
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Use Authorization: Bearer YOUR_API_KEY'

````