EU Open Data Portal Search API

The EU Open Data Portal Search API provides REST access for discovering and querying European open datasets following DCAT-AP metadata standards. The API supports dataset search, filtering, and harvesting workflows for data publishers and consumers.

OpenAPI Specification

eu-open-data-portal-search-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: EU Open Data Portal Search API
  description: >-
    The EU Open Data Portal Search API (data.europa.eu) provides REST access for
    discovering, searching, and querying European Union open datasets. The API follows
    DCAT-AP metadata standards and supports discovery of datasets from EU institutions,
    member state portals, and federated open data sources. No authentication required.
  version: 1.0.0
  contact:
    name: EU Open Data Portal Support
    url: https://data.europa.eu/en/contact
  license:
    name: Creative Commons Attribution 4.0
    url: https://creativecommons.org/licenses/by/4.0/
externalDocs:
  description: EU Data Provider Manual
  url: https://dataeuropa.gitlab.io/data-provider-manual/

servers:
  - url: https://data.europa.eu/api/hub/search
    description: EU Open Data Portal Search API

tags:
  - name: Catalogs
    description: Federated data catalogs and publishers

  - name: Datasets
    description: Search and retrieve EU open datasets
  - name: Distributions
    description: Access dataset distributions and download links
  - name: Vocabularies
    description: Controlled vocabularies for DCAT-AP metadata
paths:
  /datasets:
    get:
      operationId: searchDatasets
      summary: Search datasets
      description: >-
        Search for datasets in the EU Open Data Portal using full-text search and
        faceted filtering. Returns DCAT-AP compliant metadata for matching datasets
        including titles, descriptions, keywords, publishers, and distribution links.
      tags: [Datasets]
      parameters:
        - name: q
          in: query
          required: false
          schema:
            type: string
          description: Free-text search query
        - name: page
          in: query
          schema:
            type: integer
            default: 1
            minimum: 1
          description: Page number (1-based)
        - name: limit
          in: query
          schema:
            type: integer
            default: 10
            maximum: 100
          description: Number of results per page
        - name: filter
          in: query
          schema:
            type: string
          description: SOLR filter query (e.g., "publisher.id:http://publications.europa.eu/resource/authority/corporate-body/ESTAT")
        - name: facets
          in: query
          schema:
            type: string
          description: Comma-separated list of facet fields to include
        - name: sort
          in: query
          schema:
            type: string
            enum: [relevance, modified, issued, title]
            default: relevance
        - name: language
          in: query
          schema:
            type: string
          description: Preferred language for multilingual fields (ISO 639-1, e.g. "en")
      responses:
        '200':
          description: Dataset search results returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetSearchResponse'
        '400':
          description: Invalid query parameters

  /datasets/{datasetId}:
    get:
      operationId: getDataset
      summary: Get dataset by ID
      description: Returns full DCAT-AP metadata for a specific dataset including all distributions, publisher information, themes, and temporal coverage.
      tags: [Datasets]
      parameters:
        - name: datasetId
          in: path
          required: true
          schema:
            type: string
          description: Unique dataset identifier (URL-encoded URI)
        - name: language
          in: query
          schema:
            type: string
          description: Preferred language for multilingual fields
      responses:
        '200':
          description: Dataset metadata returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dataset'
        '404':
          description: Dataset not found

  /datasets/{datasetId}/distributions:
    get:
      operationId: getDatasetDistributions
      summary: List dataset distributions
      description: Returns all available distributions (download files, API endpoints, data services) for a specific dataset with format, size, and access URL information.
      tags: [Distributions]
      parameters:
        - name: datasetId
          in: path
          required: true
          schema:
            type: string
          description: Unique dataset identifier
      responses:
        '200':
          description: Distributions returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/Distribution'

  /vocabularies:
    get:
      operationId: listVocabularies
      summary: List available controlled vocabularies
      description: Returns the list of DCAT-AP controlled vocabularies used for metadata classification including themes, formats, licences, and publisher types.
      tags: [Vocabularies]
      parameters:
        - name: language
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Vocabulary list returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/Vocabulary'

  /catalogs:
    get:
      operationId: listCatalogs
      summary: List federated catalogs
      description: Returns the list of data catalogs federated by the EU Open Data Portal including member state portals and institutional catalogs.
      tags: [Catalogs]
      parameters:
        - name: q
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
            default: 1
        - name: limit
          in: query
          schema:
            type: integer
            default: 20
      responses:
        '200':
          description: Catalog list returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogListResponse'

components:
  schemas:
    DatasetSearchResponse:
      type: object
      properties:
        success:
          type: boolean
        result:
          type: object
          properties:
            count:
              type: integer
              description: Total number of matching datasets
            facets:
              type: object
              additionalProperties:
                type: array
                items:
                  $ref: '#/components/schemas/FacetValue'
            results:
              type: array
              items:
                $ref: '#/components/schemas/DatasetSummary'

    DatasetSummary:
      type: object
      properties:
        id:
          type: string
          description: Dataset URI
        title:
          type: object
          additionalProperties:
            type: string
          description: Multilingual title map (language code to text)
        description:
          type: object
          additionalProperties:
            type: string
          description: Multilingual description map
        issued:
          type: string
          format: date-time
        modified:
          type: string
          format: date-time
        publisher:
          $ref: '#/components/schemas/Publisher'
        theme:
          type: array
          items:
            type: string
          description: Dataset theme URIs from the EU Data Theme vocabulary
        keyword:
          type: array
          items:
            type: string
        distributionCount:
          type: integer
        license:
          type: string

    Dataset:
      type: object
      properties:
        id:
          type: string
        title:
          type: object
          additionalProperties:
            type: string
        description:
          type: object
          additionalProperties:
            type: string
        issued:
          type: string
          format: date-time
        modified:
          type: string
          format: date-time
        publisher:
          $ref: '#/components/schemas/Publisher'
        contactPoint:
          $ref: '#/components/schemas/ContactPoint'
        theme:
          type: array
          items:
            type: string
        keyword:
          type: array
          items:
            type: string
        language:
          type: array
          items:
            type: string
        spatial:
          type: array
          items:
            type: string
          description: Geographic coverage URIs
        temporal:
          $ref: '#/components/schemas/TemporalCoverage'
        accrualPeriodicity:
          type: string
          description: Update frequency URI (from EU frequency vocabulary)
        conformsTo:
          type: array
          items:
            type: string
        distributions:
          type: array
          items:
            $ref: '#/components/schemas/Distribution'
        license:
          type: string
        rights:
          type: string
        accessRights:
          type: string

    Distribution:
      type: object
      properties:
        id:
          type: string
        title:
          type: object
          additionalProperties:
            type: string
        description:
          type: object
          additionalProperties:
            type: string
        accessURL:
          type: string
          format: uri
        downloadURL:
          type: string
          format: uri
        format:
          type: string
          description: File format URI from the EU file type vocabulary
        mediaType:
          type: string
          description: MIME type
        byteSize:
          type: integer
        issued:
          type: string
          format: date-time
        modified:
          type: string
          format: date-time
        license:
          type: string
        conformsTo:
          type: array
          items:
            type: string

    Publisher:
      type: object
      properties:
        id:
          type: string
          description: Publisher URI from the EU corporate body authority
        name:
          type: object
          additionalProperties:
            type: string
          description: Multilingual publisher name
        type:
          type: string

    ContactPoint:
      type: object
      properties:
        fn:
          type: string
        hasEmail:
          type: string
        hasURL:
          type: string
          format: uri

    TemporalCoverage:
      type: object
      properties:
        startDate:
          type: string
          format: date
        endDate:
          type: string
          format: date

    FacetValue:
      type: object
      properties:
        id:
          type: string
        label:
          type: object
          additionalProperties:
            type: string
        count:
          type: integer

    Vocabulary:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        url:
          type: string
          format: uri

    CatalogListResponse:
      type: object
      properties:
        success:
          type: boolean
        result:
          type: object
          properties:
            count:
              type: integer
            results:
              type: array
              items:
                $ref: '#/components/schemas/Catalog'

    Catalog:
      type: object
      properties:
        id:
          type: string
        title:
          type: object
          additionalProperties:
            type: string
        homepage:
          type: string
          format: uri
        country:
          type: string
        datasetCount:
          type: integer
        lastHarvested:
          type: string
          format: date-time