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

# Search person

## Search for a person

Search for natural persons by name, city, date of birth, or other attributes. Find people based on their business roles and filter by criteria such as the number of companies they're involved with or their management positions. Use this endpoint to identify individuals for due diligence or to research business networks. More information about filtering can be found [here](/filtering).

**Cost:** 10 credits


## OpenAPI

````yaml POST /v1/search/person
openapi: 3.1.0
info:
  title: OpenRegister API
  version: 2.5.0
  description: >
    API for accessing comprehensive company data from official registers.

    This API provides access to company information, shareholder data, financial
    reports, and contact details.
servers:
  - url: https://api.openregister.de
    description: Production
security:
  - BearerAuth: []
paths:
  /v1/search/person:
    post:
      tags:
        - v1
      summary: Search for people
      operationId: personFilterSearch
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonSearchRequest'
        required: true
      responses:
        '200':
          description: Successful search operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonSearchResponse'
        '400':
          description: Bad Request - Invalid parameters provided
        '401':
          description: Unauthorized - Authentication required
        '402':
          description: Payment Required - Insufficient credits for this request
        '429':
          description: Too Many Requests - Rate limit exceeded
        '500':
          description: >-
            Internal Server Error - An error occurred while processing the
            request
      x-codeSamples:
        - lang: JavaScript
          source: |-
            import Openregister from 'openregister';

            const client = new Openregister({
              apiKey: process.env['OPENREGISTER_API_KEY'], // This is the default and can be omitted
            });

            const response = await client.search.findPersonV1();

            console.log(response.pagination);
        - lang: Python
          source: |-
            import os
            from openregister import Openregister

            client = Openregister(
                api_key=os.environ.get("OPENREGISTER_API_KEY"),  # This is the default and can be omitted
            )
            response = client.search.find_person_v1()
            print(response.pagination)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/oregister/openregister-go\"\n\t\"github.com/oregister/openregister-go/option\"\n)\n\nfunc main() {\n\tclient := openregister.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.Search.FindPersonV1(context.TODO(), openregister.SearchFindPersonV1Params{})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Pagination)\n}\n"
        - lang: CLI
          source: |-
            openregister search find-person-v1 \
              --api-key 'My API Key'
components:
  schemas:
    PersonSearchRequest:
      type: object
      properties:
        query:
          $ref: '#/components/schemas/PersonSearchRequestQuery'
          description: |
            Search query to filter people.
        filters:
          description: |
            Filters to filter people.
          type: array
          items:
            $ref: '#/components/schemas/PersonSearchFilter'
        pagination:
          $ref: '#/components/schemas/SearchRequestPagination'
          description: |
            Pagination parameters.
    PersonSearchResponse:
      type: object
      properties:
        results:
          type: array
          description: |
            List of people matching the search criteria.
          items:
            $ref: '#/components/schemas/PersonSearchResponseItem'
        pagination:
          $ref: '#/components/schemas/Pagination'
      required:
        - results
        - pagination
    PersonSearchRequestQuery:
      type: object
      properties:
        value:
          type: string
          description: |
            Search query to filter people.
      required:
        - value
    PersonSearchFilter:
      allOf:
        - $ref: '#/components/schemas/SearchFilterBase'
        - type: object
          properties:
            field:
              $ref: '#/components/schemas/PersonSearchFilterField'
          required:
            - field
    SearchRequestPagination:
      type: object
      properties:
        page:
          type: integer
          description: |
            Page number to return.
        per_page:
          type: integer
          description: |
            Number of results per page.
    PersonSearchResponseItem:
      type: object
      properties:
        id:
          type: string
          description: |
            Unique person identifier.
            Example: 1234-5678-9012-345678901234
        name:
          type: string
          description: |
            Name of the person.
            Example: "Max Mustermann"
        city:
          type: string
          description: |
            City of the person.
            Example: "Berlin"
          nullable: true
        date_of_birth:
          type: string
          format: date
          description: |
            Date of birth of the person.
            Format: ISO 8601 (YYYY-MM-DD)
            Example: "1990-01-01"
        active:
          type: boolean
          description: |
            Person status - true if active, false if inactive.
      required:
        - id
        - name
        - city
        - date_of_birth
        - active
    Pagination:
      type: object
      properties:
        page:
          type: integer
          description: Current page number.
        per_page:
          type: integer
          description: Number of results per page.
        total_pages:
          type: integer
          description: Total number of pages.
        total_results:
          type: integer
          description: Total number of results.
      required:
        - page
        - per_page
        - total_pages
        - total_results
    SearchFilterBase:
      type: object
      description: >
        Filter by field. The property sets `value`, `values`, `keywords` and
        `min`/`max`

        are mutually exclusive. Dates must be YYYY-MM-DD.
      properties:
        value:
          type: string
        min:
          type: string
        max:
          type: string
        values:
          type: array
          items:
            type: string
        keywords:
          type: array
          items:
            type: string
    PersonSearchFilterField:
      type: string
      enum:
        - date_of_birth
        - city
        - active
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: |
        API Key Authentication
        Provide your API key as a Bearer token in the Authorization header.

````