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

# Search entities

> Returns a list of legal entities matching the given filters.

## Filters

All filters combine with `AND` logic — every filter added narrows the results.

| Filter type | Behaviour                                                  |
| ----------- | ---------------------------------------------------------- |
| Exact match | Used by `identifier` and `orgUnitsIdentifier`.             |
| Fulltext    | Case and diacritic insensitive. Minimum 3 characters.      |
| Date range  | Format must be `YYYY-MM-DD` — anything else returns `400`. |

## Result limits

Search returns a maximum of 500 results with no pagination. If your query matches more than 500 entities, only the first 500 are returned — with no indication that results were truncated.

Narrow your filters to stay under the limit. If you need the full register, use [Local storage](/rpo/getting-started/local-storage) instead.

## Common patterns

<AccordionGroup>
  <Accordion title="Look up an entity by IČO">
    The fastest and most precise search. `identifier` is an exact match so the 3-character minimum doesn't apply.

    ```bash theme={null}
    GET /search?identifier=31333565
    ```
  </Accordion>

  <Accordion title="Search by name and city">
    ```bash theme={null}
    GET /search?fullName=Acme&addressMunicipality=Bratislava
    ```
  </Accordion>

  <Accordion title="Find active entities established in a year">
    ```bash theme={null}
    GET /search?establishmentAfter=2020-01-01&establishmentBefore=2020-12-31&onlyActive=true
    ```
  </Accordion>

  <Accordion title="Find entities by director name">
    Statutory body filters find all entities where a specific person holds a director or officer role.

    ```bash theme={null}
    GET /search?statutoryBodyFamilyName=Novak&statutoryBodyGivenName=Jan
    ```
  </Accordion>

  <Accordion title="Poll for recently updated records">
    Use `dbModificationDateAfter` to detect changes since a known date — useful for keeping a local copy in sync.

    ```bash theme={null}
    GET /search?dbModificationDateAfter=2025-07-01&onlyActive=true
    ```

    <Warning>Data refreshes nightly. Changes from the last 24 hours may not appear yet.</Warning>
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml rpo/openapi.json GET /search
openapi: 3.1.0
info:
  title: RPO API
  description: >-
    Public REST API for Slovakia's central register of legal entities,
    entrepreneurs, and public authorities. Administered by the Statistical
    Office of the Slovak Republic (ŠÚ SR).
  version: 1.0.0
  license:
    name: Creative Commons Attribution 4.0 (CC BY 4.0)
    url: https://creativecommons.org/licenses/by/4.0/legalcode
servers:
  - url: https://api.statistics.sk/rpo/v1
    description: Production
security: []
paths:
  /search:
    get:
      summary: Search entities
      description: Returns a list of legal entities matching the given filters.
      operationId: searchEntities
      parameters:
        - name: identifier
          in: query
          description: IČO — exact match against `identifiers[*].value`.
          schema:
            type: string
        - name: fullName
          in: query
          description: Full registered name of the entity. Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: legalForm
          in: query
          description: Legal form (e.g. s.r.o., a.s.). Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: legalStatus
          in: query
          description: Legal status of the entity. Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: addressMunicipality
          in: query
          description: Municipality of the registered address. Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: addressStreet
          in: query
          description: Street of the registered address. Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: establishmentAfter
          in: query
          description: >-
            Filter entities established on or after this date. Format:
            `YYYY-MM-DD`.
          schema:
            type: string
            format: date
        - name: establishmentBefore
          in: query
          description: >-
            Filter entities established on or before this date. Format:
            `YYYY-MM-DD`.
          schema:
            type: string
            format: date
        - name: terminationAfter
          in: query
          description: >-
            Filter entities terminated on or after this date. Format:
            `YYYY-MM-DD`.
          schema:
            type: string
            format: date
        - name: terminationBefore
          in: query
          description: >-
            Filter entities terminated on or before this date. Format:
            `YYYY-MM-DD`.
          schema:
            type: string
            format: date
        - name: onlyActive
          in: query
          description: >-
            When `true`, returns only active entities — those with no
            termination date.
          schema:
            type: boolean
        - name: dbModificationDateAfter
          in: query
          description: >-
            Filter entities last modified on or after this date. Format:
            `YYYY-MM-DD`.
          schema:
            type: string
            format: date
        - name: dbModificationDateBefore
          in: query
          description: >-
            Filter entities last modified on or before this date. Format:
            `YYYY-MM-DD`.
          schema:
            type: string
            format: date
        - name: mainActivity
          in: query
          description: Main economic activity. Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: esa2010
          in: query
          description: ESA 2010 institutional classification. Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: sourceRegister
          in: query
          description: >-
            Source register the entity is drawn from. Fulltext, min 3
            characters.
          schema:
            type: string
            minLength: 3
        - name: stakeholderType
          in: query
          description: >-
            Type of interested party (e.g. shareholder, partner). Fulltext, min
            3 characters.
          schema:
            type: string
            minLength: 3
        - name: stakeholderPersonGivenName
          in: query
          description: >-
            Given name of an interested party who is a natural person. Fulltext,
            min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: stakeholderPersonFamilyName
          in: query
          description: >-
            Family name of an interested party who is a natural person.
            Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: stakeholderCompanyName
          in: query
          description: >-
            Full name of a legal entity acting as an interested party. Fulltext,
            min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: statutoryBodyType
          in: query
          description: >-
            Type of statutory body (e.g. director, board). Fulltext, min 3
            characters.
          schema:
            type: string
            minLength: 3
        - name: statutoryBodyGivenName
          in: query
          description: >-
            Given name of a statutory body member who is a natural person.
            Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: statutoryBodyFamilyName
          in: query
          description: >-
            Family name of a statutory body member who is a natural person.
            Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: statutoryBodyCompanyName
          in: query
          description: >-
            Full name of a legal entity acting as statutory body. Fulltext, min
            3 characters.
          schema:
            type: string
            minLength: 3
        - name: orgUnitsIdentifier
          in: query
          description: IČO of an organisational unit — exact match.
          schema:
            type: string
        - name: orgUnitsFullName
          in: query
          description: Full name of an organisational unit. Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: orgUnitsStakeholderPersonGivenName
          in: query
          description: >-
            Given name of an interested party within an organisational unit.
            Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: orgUnitsStakeholderPersonFamilyName
          in: query
          description: >-
            Family name of an interested party within an organisational unit.
            Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
        - name: orgUnitsStakeholderCompanyName
          in: query
          description: >-
            Full name of a legal entity acting as interested party within an
            organisational unit. Fulltext, min 3 characters.
          schema:
            type: string
            minLength: 3
      responses:
        '200':
          description: Matching entities returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
        '400':
          description: >-
            Bad request — no filter provided, invalid date format, or other
            request error.
components:
  schemas:
    SearchResponse:
      type: object
      required:
        - results
        - license
      properties:
        results:
          type: array
          description: Matching entities. Maximum 500 records per request.
          items:
            $ref: '#/components/schemas/LegalEntitySummary'
        license:
          type: string
          description: License statement for this data.
    LegalEntitySummary:
      type: object
      description: A lightweight entity record as returned by the search endpoint.
      properties:
        id:
          type: integer
          format: int64
          description: >-
            Unique entity identifier. Use this to fetch the full record from the
            detail endpoint.
        identifiers:
          type: array
          description: IČO history. The current IČO is the entry with no `validTo`.
          items:
            $ref: '#/components/schemas/TimedValueEntry'
        fullNames:
          type: array
          description: >-
            Registered name history. The current name is the entry with no
            `validTo`.
          items:
            $ref: '#/components/schemas/TimedValueEntry'
        legalForms:
          type: array
          description: Legal form history from codelist CL000056.
          items:
            $ref: '#/components/schemas/TimedCodeValueEntry'
        establishment:
          type: string
          format: date
          description: 'Date the entity was established. Format: `YYYY-MM-DD`.'
        termination:
          type: string
          format: date
          nullable: true
          description: Date the entity was dissolved. Absent if the entity is still active.
    TimedValueEntry:
      type: object
      description: >-
        A string value scoped to a validity window. The current value is always
        the entry with no `validTo`.
      properties:
        value:
          type: string
          description: The value for this time period.
        validFrom:
          type: string
          format: date
          description: Start of validity. Absent if the start date is unknown.
        validTo:
          type: string
          format: date
          nullable: true
          description: End of validity. Absent if this is the current value.
    TimedCodeValueEntry:
      type: object
      description: >-
        A codelist-backed value scoped to a validity window. The current value
        is always the entry with no `validTo`.
      properties:
        value:
          $ref: '#/components/schemas/CodeValue'
          description: The categorical value for this period.
        validFrom:
          type: string
          format: date
          description: Start of validity.
        validTo:
          type: string
          format: date
          nullable: true
          description: End of validity. Absent if this is the current value.
    CodeValue:
      type: object
      description: >-
        A categorical value paired with its codelist reference. Use `value` for
        display, `code` for storing and filtering.
      properties:
        value:
          type: string
          description: Human-readable label in Slovak.
        code:
          type: string
          description: >-
            Stable codelist entry key. Empty string if no matching entry exists
            — guard against `""` before using as a lookup key.
        codelistCode:
          type: string
          description: >-
            Identifies the codelist this value belongs to (e.g. `CL000056`). See
            the Codelists reference.

````