openapi: 3.1.2
info:
  title: API Zoeken
  description: Inschrijvingen zoeken in het Handelsregister
  version: 3.0.0
  contact:
    name: Kamer van Koophandel
    url: https://developers.kvk.nl/nl
  termsOfService: https://www.kvk.nl/over-het-handelsregister/gebruikersvoorwaarden-handelsregistergegevens/
servers:
  - url: https://api.preprod.kvk.nl/api
    description: PreProd API
  - url: https://api.kvk.nl/api
    description: Productie API (alleen te gebruiken met een API key voor het opvragen van openbare data)
  - url: https://api-secure.kvk.nl/api
    description: Productie API (te gebruiken met een certificaat voor het opvragen van afgeschermde data)
security:
  - ApiKeyAuth: []
  - BearerAuth: []
tags:
  - name: zoeken
    externalDocs:
      description: Voor meer informatie over deze API
      url: https://developers.kvk.nl/nl/support
paths:
  /v3/zoeken:
    get:
      tags:
        - Zoeken
      summary: Voor een bedrijf zoeken naar basisinformatie.
      description: Er wordt max. 100 resultaten getoond.
      operationId: getResults
      parameters:
        - name: kvkNummer
          in: query
          description: "Een door de KVK toegekend uniek (identificerend) nummer dat bestaat uit 8 cijfers: het Nederlands Kamer van Koophandel nummer"
          schema:
            pattern: "^[0-9]{8}$"
            type: string
          example: "59581883"
        - name: rsin
          in: query
          description: "Een door de KVK aan een rechtspersoon, personenvennootschap of rederij toegekend uniek nummer dat bestaat uit 9 cijfers"
          schema:
            pattern: "^[0-9]{9}$"
            type: string
          example: "823807071"
        - name: vestigingsnummer
          in: query
          description: "Een uniek nummer door de KVK toegekend aan een vestiging dat bestaat uit 12 cijfers"
          schema:
            pattern: "^[0-9]{12}$"
            type: string
          example: "000015063097"
        - name: naam
          in: query
          description: "De naam die hoort bij een Vestiging of NietNatuurlijkePersoon"
          schema:
            type: string
          example: "Kamer van Koophandel"
        - name: straatnaam
          in: query
          description: "De straat van het adres. Mag alleen in combinatie met woonplaats gezocht worden"
          schema:
            type: string
          example: "St.-Jacobsstraat"
        - name: woonplaats
          in: query
          description: "De woonplaats van het adres betreft een door het bevoegde gemeentelijke orgaan als zodanig aangewezen en van een naam voorzien gedeelte van het grondgebied van de gemeente. Mag alleen in combinatie met straatnaam gezocht worden"
          schema:
            type: string
          example: "Utrecht"
        - name: postcode
          in: query
          description: "De in Nederland gangbare postcode voor een Nederlands postadres, bestaande uit een numeriek deel en een alfabetisch deel. Mag alleen in combinatie met huisnummer of postbusnummer gezocht worden"
          schema:
            pattern: "^[0-9]{4}[a-z,A-Z]{2}$"
            type: string
          example: "3511BT"
        - name: huisnummer
          in: query
          description: "Het huisnummer van het adres. Mag alleen in combinatie met postcode gezocht worden"
          schema:
            type: integer
            minimum: 1
            maximum: 99999
          example: 300
        - name: huisletter
          in: query
          description: "De huisletter die door gemeente is toegekend aan het huisnummer. Optioneel, alleen in combinatie met huisnummer"
          schema:
            pattern: "^[a-z,A-Z]{1}$"
            type: string
          example: "D"
        - name: huisnummerToevoeging
          in: query
          description: "Een toevoeging van het adres bijvoorbeeld rood, bis, etc. Optioneel, alleen in combinatie met huisnummer"
          schema:
            type: string
            minLength: 1
            maxLength: 10
          example: "1"
        - name: postbusnummer
          in: query
          description: "Het nummer van een postbus dat wordt gebruikt als postadres. Mag alleen in combinatie met postcode gezocht worden"
          schema:
            type: integer
            minimum: 1
            maximum: 99999
          example: 9292
        - name: type
          in: query
          description: "Filter op resultaat type: Hoofdvestiging, Nevenvestiging en/of NietNatuurlijkePersoon"
          schema:
            type: array
            items:
              type: string
              enum:
                - hoofdvestiging
                - nevenvestiging
                - nietnatuurlijkepersoon
          example:
            - hoofdvestiging
        - name: inactieveRegistraties
          in: query
          description: Inclusief inactieve registraties
          schema:
            type: boolean
          example: true
        - name: pagina
          in: query
          description: "Paginanummer: minimaal 1 en maximaal 100"
          schema:
            type: integer
            default: 1
            minimum: 1
            maximum: 100
        - name: aantalPerPagina
          in: query
          description: "Kies het aantal resultaten per pagina, minimaal 1 en maximaal 100"
          schema:
            type: integer
            default: 10
            minimum: 1
            maximum: 100
      responses:
        "200":
          description: OK
          headers:
            api-version:
              $ref: "#/components/headers/api_version"
            warning:
              $ref: "#/components/headers/warning"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ZoekResultatenPagina"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "500":
          $ref: "#/components/responses/InternalServerError"
components:
  securitySchemes:
    BearerAuth:
      type: http
      description: De JWT token dient bij elk request meegestuurd te worden. Indien deze niet juist wordt meegestuurd, of het een ongeldig token betreft, zul je de foutmelding `401 Unauthorized` terugkrijgen
      scheme: bearer
      bearerFormat: JWT
    ApiKeyAuth:
      type: apiKey
      description: De API-key die je hebt gekregen dient bij elke request via de `apikey` request header meegestuurd te worden. Indien deze niet juist wordt meegestuurd, of het een ongeldige key betreft, zul je de foutmelding `401 Unauthorized` terugkrijgen
      name: apikey
      in: header
  schemas:
    Adres:
      type: object
      properties:
        binnenlandsAdres:
          $ref: "#/components/schemas/BinnenlandsAdres"
        buitenlandsAdres:
          $ref: "#/components/schemas/BuitenlandsAdres"
      description: Binnenlands of buitenlands adres
    AdresType:
      type: string
      description: Bezoekadres of postadres
      enum:
        - bezoekadres
        - postadres
    BinnenlandsAdres:
      type: object
      properties:
        type:
          $ref: "#/components/schemas/AdresType"
        straatnaam:
          type: string
          description: "De straat van het adres."
        huisnummer:
          type: integer
          description: "Het huisnummer van het adres."
        huisletter:
          type: string
          description: "De huisletter die door gemeente is toegekend aan het huisnummer"
        huisnummerToevoeging:
          type: string
          description: "Een toevoeging van het adres bijvoorbeeld rood, bis, etc."
        postbusnummer:
          type: integer
          description: "Het nummer van een postbus dat wordt gebruikt als postadres. Postbusnummer wordt alleen getoond indien het een postadres is."
        postcode:
          type: string
          description: "De in Nederland gangbare postcode voor een Nederlands postadres, bestaande uit een numeriek deel en een alfabetisch deel"
        woonplaats:
          type: string
          description: "De woonplaats van het adres betreft een door het bevoegde gemeentelijke orgaan als zodanig aangewezen en van een naam voorzien gedeelte van het grondgebied van de gemeente"
    BuitenlandsAdres:
      type: object
      properties:
        type:
          $ref: "#/components/schemas/AdresType"
        straatnaamHuisnummer:
          type: string
          description: "Het gegeven straatnaam/huisnummer is een combinatie van de straatnaam en het huisnummer in het buitenland"
          example: "53 Rue de Tilsitt"
        postcodePlaats:
          type: string
          description: "De postcode/plaats is de combinatie van een postcode en plaats in het buitenland"
          example: "X-13501 Parijs"
        land:
          $ref: '#/components/schemas/Land'
    Land:
      description: "Het land waar het adres zich bevindt"
      type: object
      properties:
        code:
          type: string
        omschrijving:
          type: string
    Links:
      type: array
      items:
        type: object
        properties:
          rel:
            type: string
          href:
            type: string
          title:
            type: string
    ZoekResultatenPagina:
      type: object
      properties:
        pagina:
          type: integer
          description: Geeft aan op welke pagina je bent. Start vanaf pagina 1
        aantalPerPagina:
          type: integer
          description: Geeft het aantal zoek resultaten per pagina weer
        hits:
          type: integer
          description: Aantal hits gevonden voor deze zoekopdracht
        vorige:
          type: string
          description: Link naar de vorige pagina indien beschikbaar
        volgende:
          type: string
          description: Link naar de volgende pagina indien beschikbaar
        resultaten:
          type: array
          items:
            $ref: "#/components/schemas/Resultaat"
        links:
          $ref: "#/components/schemas/Links"
    Resultaat:
      type: object
      properties:
        nonMailing:
          type: string
          description: "Indicator die aangeeft of de inschrijving haar adresgegevens beschikbaar stelt voor mailing-doeleinden"
        kvkNummer:
          type: string
          description: "Een door de KVK toegekend uniek (identificerend) nummer: het Nederlands Kamer van Koophandel nummer."
        rsin:
          type: string
          description: "Een door de KVK aan een NietNatuurlijkePersoon, Personenvennootschap of Rederij toegekend uniek nummer."
        vestigingsnummer:
          type: string
          description: "Een uniek nummer door de KVK toegekend aan een vestiging"
        naam:
          type: string
          description: "De naam die hoort bij een Vestiging of NietNatuurlijkePersoon. Dit kan zijn: actieve of vervallen statutaire naam, handelsnaam of naam."
        adres:
          $ref: "#/components/schemas/Adres"
        type:
          type: string
          description: "hoofdvestiging/nevenvestiging/nietnatuurlijkepersoon"
        actief:
          description: "Indicator die aangeeft of de inschrijving actief of inactief is"
          allOf:
            - $ref: '#/components/schemas/Indicatie'
        vervallenNaam:
          type: string
          description: "Vervallen naam van een Vestiging of een NietNatuurlijkePersoon"
        links:
          $ref: "#/components/schemas/Links"
    Indicatie:
      description: Geeft de indicatie aan van de bewering die met het attribuut wordt omschreven; J (Ja) N (Nee) O (Onbekend)
      type: object
      properties:
        code:
          type: string
          enum:
            - 'J'
            - 'N'
            - 'O'
        omschrijving:
          type: string
    Error:
      type: object
      properties:
        fout:
          type: array
          items:
            $ref: "#/components/schemas/Fout"
    Fout:
      type: object
      properties:
        code:
          type: string
          description: Foutcode
        omschrijving:
          type: string
          description: Omschrijving van de foutmelding
  responses:
    BadRequest:
      description: Een opgegeven parameter is niet valide
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
    Unauthorized:
      description: Geen of onjuiste apikey aangeleverd
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
    Forbidden:
      description: Niet geautoriseerd voor deze operatie
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
    NotFound:
      description: Er zijn geen resultaten gevonden aan de hand van de opgegeven parameter(s)
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
    NotAcceptable:
      description: Opgegeven Accept header wordt niet ondersteund
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
    InternalServerError:
      description: Er is een interne fout opgetreden
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
  headers:
    api_version:
      schema:
        type: string
        description: Geeft een specifieke API-versie aan in de context van een specifieke
          aanroep.
        example: 1.0.0
    warning:
      schema:
        type: string
        description: |-
          zie RFC 7234. In het geval een major versie wordt uitgefaseerd,
          gebruiken we warn-code 299 ("Miscellaneous Persistent Warning") en het API
          end-point (inclusief versienummer) als de warn-agent van de warning, gevolgd
          door de warn-text met de human-readable waarschuwing
        example: |
          299 https://api.kvk.nl/api/v3/zoeken "Deze versie van de API is verouderd
          en zal uit dienst worden genomen op 2025-02-01. Raadpleeg voor meer informatie
          hier de documentatie: https://developers.kvk.nl/nl/apis/zoeken".
