Politecnico di Milano Distributions API

The CSV and JSON files each dataset is distributed as.

Operations 2

GET /distribution/{dataset}/json/{dataset}.json Retrieve a dataset's JSON distribution #
GET /distribution/{dataset}/csv/{dataset}.csv Retrieve a dataset's CSV distribution #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/politecnico-di-milano-distributions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

politecnico-di-milano-distributions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Politecnico di Milano Open Data Distributions API
  version: '2026-09-01'
  summary: DCAT-AP_IT catalogue and the CSV/JSON distributions of the 25 open datasets Politecnico di Milano publishes at opendata.polimi.it.
  description: Politecnico di Milano operates its own open data portal at `www.opendata.polimi.it`.
  contact:
    name: Politecnico di Milano Open Data
    url: https://www.opendata.polimi.it/
  license:
    name: CC BY 4.0
    url: https://creativecommons.org/licenses/by/4.0/
  x-operator: institution
  x-operator-evidence: Host www.opendata.polimi.it is under the institution's own registrable domain (polimi.it); the DCAT catalogue names https://www.polimi.it as dcat catalog publisher, dct:creator and dct:rightsHolder.
  x-provenance:
    generated: '2026-09-01'
    method: derived
    source:
    - https://www.opendata.polimi.it/opendata_polimi.ttl
    - https://www.opendata.polimi.it/distribution/course_catalog/json/course_catalog.json
    - https://www.opendata.polimi.it/distribution/course_catalog/csv/course_catalog.csv
    - https://opendata.polimi.it/script/fillDatasetMetadataTable.js
servers:
- url: https://www.opendata.polimi.it
  description: Politecnico di Milano open data portal
tags:
- name: Distributions
  description: The CSV and JSON files each dataset is distributed as.
paths:
  /distribution/{dataset}/json/{dataset}.json:
    get:
      tags:
      - Distributions
      summary: Retrieve a dataset's JSON distribution
      description: Returns the dataset's rows as a single JSON object with a `recordset` array. The body is UTF-8 with a byte-order mark, so a strict JSON parser must be told `utf-8-sig`. Verified 200 application/json for course_catalog (157 rows) and research_products (219 rows) on 2026-09-01. Row keys are Italian and differ per dataset.
      operationId: getJsonDistribution
      parameters:
      - $ref: '#/components/parameters/Dataset'
      responses:
        '200':
          description: The dataset's rows.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recordset'
              examples:
                courseCatalog:
                  summary: First five rows of course_catalog
                  externalValue: ../examples/politecnico-di-milano-opendata-course-catalog.json
        '404':
          description: No such dataset or distribution.
          content:
            text/html:
              schema:
                type: string
  /distribution/{dataset}/csv/{dataset}.csv:
    get:
      tags:
      - Distributions
      summary: Retrieve a dataset's CSV distribution
      description: Returns the same rows as text/csv. Verified 200 text/csv, 14,060 bytes, for course_catalog on 2026-09-01.
      operationId: getCsvDistribution
      parameters:
      - $ref: '#/components/parameters/Dataset'
      responses:
        '200':
          description: The dataset's rows as CSV.
          content:
            text/csv:
              schema:
                type: string
        '404':
          description: No such dataset or distribution.
          content:
            text/html:
              schema:
                type: string
components:
  parameters:
    Dataset:
      name: dataset
      in: path
      required: true
      description: Dataset identifier, as declared by dcat:dataset in the catalogue.
      schema:
        type: string
        enum:
        - admission_title
        - course_catalog
        - course_offering
        - degrees_ects_grade_distributions
        - employment_bachelor_arc
        - employment_bachelor_des
        - employment_bachelor_eng
        - employment_master_arc
        - employment_master_des
        - employment_master_eng
        - enrolments
        - exams_ects_grade_distributions
        - graduates
        - graduates_by_cohort
        - international_mobility
        - internships
        - phd_course_catalog
        - phd_course_offering
        - phd_enrolments
        - phd_exams_ects_grade_distributions
        - publication_authors
        - research_products
        - scientific_publications
        - scopus_contribution_by_nation
        - wos_contribution_by_nation
  schemas:
    Recordset:
      type: object
      required:
      - recordset
      additionalProperties: false
      properties:
        recordset:
          type: array
          description: The dataset's rows. Keys are dataset-specific Italian column labels.
          items:
            type: object
            additionalProperties: true