{
  "openapi": "3.0.1",
  "info": {
    "title": "Italy Open Data Scraper - dati.gov.it CKAN Catalog",
    "description": "Scrape all 65,960 datasets from Italy's national open data portal dati.gov.it: full DCAT-AP_IT metadata, distributions, 399 publishers, licences and live link checks.",
    "version": "0.1",
    "x-build-id": "MSJbvdJGDhwquQKDF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~dati-gov-it-italy-open-data-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-dati-gov-it-italy-open-data-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/parseforge~dati-gov-it-italy-open-data-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-dati-gov-it-italy-open-data-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/parseforge~dati-gov-it-italy-open-data-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-dati-gov-it-italy-open-data-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchTerms": {
            "title": "Search terms",
            "uniqueItems": true,
            "type": "array",
            "description": "Free-text queries run against the whole catalogue (title, description, tags). Italian works best: bilancio, turismo, mobilita. Leave empty to sweep every dataset.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Dataset URLs",
            "type": "array",
            "description": "Specific dati.gov.it dataset pages, for example https://www.dati.gov.it/dataset/zone-turistiche-citta-metropolitana-di-firenze. When you supply these, only these datasets are scraped and the filters below are ignored.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "datasetSlugs": {
            "title": "Dataset IDs or slugs",
            "uniqueItems": true,
            "type": "array",
            "description": "CKAN dataset names or UUIDs, one per line. Same effect as Dataset URLs, without the URL.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: limited to 10 items (preview). Paid users: up to 1,000,000."
          },
          "themes": {
            "title": "Themes",
            "uniqueItems": true,
            "type": "array",
            "description": "EU data themes as dati.gov.it groups them. Counts on 2026-08-27: governo 31,664 | societa 9,833 | economia 6,609 | ambiente 5,860 | cultura 4,356 | regioni 3,824 | trasporti 2,162 | scienza 1,576 | salute 1,162 | agricoltura 795 | giustizia 763 | energia 297 | internazionali 56.",
            "items": {
              "type": "string",
              "enum": [
                "governo",
                "societa",
                "economia",
                "ambiente",
                "cultura",
                "regioni",
                "trasporti",
                "scienza",
                "salute",
                "agricoltura",
                "giustizia",
                "energia",
                "internazionali"
              ],
              "enumTitles": [
                "Government and public sector (governo)",
                "Population and society (societa)",
                "Economy and finance (economia)",
                "Environment (ambiente)",
                "Education, culture and sport (cultura)",
                "Regions and cities (regioni)",
                "Transport (trasporti)",
                "Science and technology (scienza)",
                "Health (salute)",
                "Agriculture, fisheries and food (agricoltura)",
                "Justice and public safety (giustizia)",
                "Energy (energia)",
                "International issues (internazionali)"
              ]
            }
          },
          "organizations": {
            "title": "Organizations",
            "uniqueItems": true,
            "type": "array",
            "description": "Publishing body slugs, one per line, for example regione-toscana, comune-di-milano, inps, ministero-dell-economia-e-delle-finanze. 447 are registered and 399 have at least one dataset; tick 'Organizations directory' below to export the full list with dataset counts.",
            "items": {
              "type": "string"
            }
          },
          "holderNames": {
            "title": "Data holders (titolare del dato)",
            "uniqueItems": true,
            "type": "array",
            "description": "Exact holder names, one per line, for example Comune di Milano or Istituto Nazionale Previdenza Sociale. The holder is the body legally responsible for the data and is often narrower than the publishing organization. 1,763 exist.",
            "items": {
              "type": "string"
            }
          },
          "publisherNames": {
            "title": "Publishers",
            "uniqueItems": true,
            "type": "array",
            "description": "Exact DCAT publisher names, one per line. Populated on about 95 percent of datasets and often names a department rather than the whole body.",
            "items": {
              "type": "string"
            }
          },
          "sourceCatalogs": {
            "title": "Source catalogues",
            "uniqueItems": true,
            "type": "array",
            "description": "The regional or municipal portal a dataset was harvested from, exact title, for example Open Data Veneto or MEF OpenBDAP. 328 feed the national catalogue.",
            "items": {
              "type": "string"
            }
          },
          "formats": {
            "title": "Distribution formats",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only datasets that publish at least one file in these formats. Each choice expands to every spelling the catalogue really uses, because the index is case sensitive (GML matches 1,521 datasets and gml another 92).",
            "items": {
              "type": "string",
              "enum": [
                "CSV",
                "JSON",
                "JSON-LD",
                "XML",
                "XLS",
                "XLSX",
                "ODS",
                "TSV",
                "PARQUET",
                "GeoJSON",
                "SHP",
                "GML",
                "KML",
                "GPKG",
                "GPX",
                "GEOTIFF",
                "WMS",
                "WFS",
                "NETCDF",
                "RDF",
                "TURTLE",
                "OWL",
                "SPARQL",
                "SDMX",
                "SQLITE",
                "PDF",
                "HTML",
                "TXT",
                "DOC",
                "ZIP",
                "IMAGE",
                "CAD",
                "MEDIA",
                "OTHER"
              ],
              "enumTitles": [
                "CSV (45,224 datasets)",
                "JSON (15,168)",
                "JSON-LD (764)",
                "XML (11,497)",
                "XLS (4,245)",
                "XLSX (1,792)",
                "ODS (869)",
                "TSV (3,758)",
                "Parquet (700)",
                "GeoJSON (2,599)",
                "Shapefile (2,275)",
                "GML (1,613)",
                "KML / KMZ (2,487)",
                "GeoPackage (17)",
                "GPX (302)",
                "GeoTIFF and raster (85)",
                "WMS service (2,713)",
                "WFS service (419)",
                "NetCDF / GRIB / BUFR (9)",
                "RDF / RDF-XML (7,330)",
                "Turtle / N3 / N-Triples (1,239)",
                "OWL (619)",
                "SPARQL endpoint (43)",
                "SDMX (13)",
                "SQLite / MDB (117)",
                "PDF (5,685)",
                "HTML / URL (1,196)",
                "Plain text (104)",
                "Word / ODT / RTF (366)",
                "ZIP and other archives (11,817)",
                "Images (6,535)",
                "CAD - DXF / DWG (9)",
                "Audio and video (217)",
                "Everything else (2,276)"
              ]
            }
          },
          "licences": {
            "title": "Licences",
            "uniqueItems": true,
            "type": "array",
            "description": "Each choice expands to every spelling the portal stores for that licence. CC BY 4.0 alone is recorded four different ways and covers 61,448 datasets.",
            "items": {
              "type": "string",
              "enum": [
                "CC-BY-4.0",
                "CC0-1.0",
                "IODL-2.0",
                "CC-BY-SA",
                "CC-BY-NC",
                "PUBLIC-DOMAIN",
                "OTHER-OPEN",
                "RESTRICTIVE"
              ],
              "enumTitles": [
                "Creative Commons Attribution 4.0 (61,448)",
                "Creative Commons Zero 1.0 (3,764)",
                "Italian Open Data Licence 2.0 (65)",
                "Creative Commons Attribution-ShareAlike (3)",
                "Creative Commons Attribution-NonCommercial (1)",
                "Public domain (8)",
                "Other open licence (4)",
                "Other restrictive clauses (5)"
              ]
            }
          },
          "updateFrequencies": {
            "title": "Update frequency",
            "uniqueItems": true,
            "type": "array",
            "description": "DCAT accrual periodicity. The portal stores 44 different spellings for about 20 real frequencies (NOT_PLANNED and NOTPLANNED are the same thing and are counted separately upstream); each choice here matches all of them.",
            "items": {
              "type": "string",
              "enum": [
                "CONTINUOUS",
                "DAILY",
                "WEEKLY",
                "BIWEEKLY",
                "MONTHLY",
                "BIMONTHLY",
                "QUARTERLY",
                "SEMIANNUAL",
                "ANNUAL",
                "BIENNIAL",
                "TRIENNIAL",
                "QUINQUENNIAL",
                "DECENNIAL",
                "IRREGULAR",
                "AS_NEEDED",
                "NOT_PLANNED",
                "NEVER",
                "UNKNOWN",
                "OTHER"
              ],
              "enumTitles": [
                "Continuous (1,872)",
                "Daily (1,559)",
                "Weekly (3,248)",
                "Every two weeks (8)",
                "Monthly (7,222)",
                "Every two months (630)",
                "Quarterly (703)",
                "Twice a year (28)",
                "Annual (11,113)",
                "Every two years (106)",
                "Every three years (78)",
                "Every five years (11)",
                "Every ten years (4)",
                "Irregular (6,581)",
                "As needed (400)",
                "Not planned (7,934)",
                "Never updated (6,740)",
                "Unknown (16,493)",
                "Other (890)"
              ]
            }
          },
          "tags": {
            "title": "Tags",
            "uniqueItems": true,
            "type": "array",
            "description": "Keyword tags exactly as the portal stores them, one per line, for example turismo or popolazione. Tick 'Tags directory' below to export the tag list with counts.",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Metadata language",
            "enum": [
              "any",
              "ITA",
              "ENG",
              "DEU",
              "SPA"
            ],
            "type": "string",
            "description": "ISO 639-3 code recorded on the dataset. Each choice matches every spelling the portal stores, including the multi-language ones: Italian 48,398 datasets, German 274, English 138, Spanish 5.",
            "default": "any"
          },
          "minResources": {
            "title": "Minimum number of files",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Keep only datasets that ship at least this many distributions. 9,413 datasets have 5 or more."
          },
          "modifiedFrom": {
            "title": "Metadata changed from",
            "type": "string",
            "description": "Only datasets whose catalogue record changed on or after this date (YYYY-MM-DD). 60,030 changed during 2026."
          },
          "modifiedTo": {
            "title": "Metadata changed to",
            "type": "string",
            "description": "Only datasets whose catalogue record changed on or before this date (YYYY-MM-DD)."
          },
          "createdFrom": {
            "title": "Added to the portal from",
            "type": "string",
            "description": "Only datasets first indexed on dati.gov.it on or after this date (YYYY-MM-DD)."
          },
          "createdTo": {
            "title": "Added to the portal to",
            "type": "string",
            "description": "Only datasets first indexed on dati.gov.it on or before this date (YYYY-MM-DD)."
          },
          "issuedFrom": {
            "title": "Data published from",
            "type": "string",
            "description": "The publisher's own issue date, not the harvest date (YYYY-MM-DD). Populated on 92 percent of datasets."
          },
          "issuedTo": {
            "title": "Data published to",
            "type": "string",
            "description": "Upper bound for the publisher's own issue date (YYYY-MM-DD)."
          },
          "onlyGeospatial": {
            "title": "Geospatial datasets only",
            "type": "boolean",
            "description": "Keep only the 6,208 datasets that carry a spatial extent, which is what fills the boundingBox column.",
            "default": false
          },
          "onlyNativeDatasets": {
            "title": "Datasets published directly on dati.gov.it",
            "type": "boolean",
            "description": "Keep only the 598 datasets loaded straight into the national portal instead of harvested from a regional catalogue.",
            "default": false
          },
          "onlyOpenLicence": {
            "title": "Certified open licence only",
            "type": "boolean",
            "description": "Keep only the 4,026 datasets the portal itself flags as open. Note this flag is under-populated upstream: 61,448 datasets carry a CC BY 4.0 licence but only 4,026 have the flag set, so the Licences filter is usually the better tool.",
            "default": false
          },
          "customFilterQuery": {
            "title": "Custom Solr filter",
            "type": "string",
            "description": "Raw CKAN fq clause ANDed with everything above, for example res_format:PARQUET AND -organization:regione-toscana. A field name that does not exist returns zero rows rather than an error."
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "metadata_modified desc",
              "metadata_created desc",
              "score desc",
              "title_string asc",
              "name asc"
            ],
            "type": "string",
            "description": "Only these four orders plus relevance actually work upstream; any other value is silently ignored by the portal and falls back to relevance.",
            "default": "metadata_modified desc"
          },
          "includeResources": {
            "title": "Distribution rows",
            "type": "boolean",
            "description": "Emit one extra row per downloadable file, with its own URL, format, size, checksum and licence. Datasets average 2.4 files each.",
            "default": false
          },
          "includeOrganizations": {
            "title": "Organizations directory",
            "type": "boolean",
            "description": "Emit one row for each of the 447 registered publishing bodies with its IPA code, certified email, website, Italian region and dataset count.",
            "default": false
          },
          "includeThemes": {
            "title": "Themes directory",
            "type": "boolean",
            "description": "Emit the 13 EU data themes with their Italian names and dataset counts.",
            "default": false
          },
          "includeTags": {
            "title": "Tags directory",
            "type": "boolean",
            "description": "Emit the keyword tags used by the datasets that match your filters, with counts.",
            "default": false
          },
          "includeLicences": {
            "title": "Licences directory",
            "type": "boolean",
            "description": "Emit every licence string in the matched result set with its normalised code and dataset count.",
            "default": false
          },
          "includeFormats": {
            "title": "Formats directory",
            "type": "boolean",
            "description": "Emit all 92 format spellings with their canonical name, machine-readable flag and dataset count.",
            "default": false
          },
          "includeHolders": {
            "title": "Data holders directory",
            "type": "boolean",
            "description": "Emit the 1,763 bodies legally responsible for the data (titolare del dato), with dataset counts.",
            "default": false
          },
          "includePublishers": {
            "title": "Publishers directory",
            "type": "boolean",
            "description": "Emit the 1,452 DCAT publisher names in the matched result set, with dataset counts.",
            "default": false
          },
          "includeSourceCatalogs": {
            "title": "Source catalogues directory",
            "type": "boolean",
            "description": "Emit the 328 regional and municipal portals that feed dati.gov.it, with how many datasets each one contributes.",
            "default": false
          },
          "includeLinkCheck": {
            "title": "Check that the files still download",
            "type": "boolean",
            "description": "Request each distribution and record the HTTP status, redirect target, content type and size. dati.gov.it harvests 328 catalogues and never revalidates the links; in a 193-file sample 14 percent were unreachable.",
            "default": false
          },
          "includeFileProbe": {
            "title": "Read the first bytes of each file",
            "type": "boolean",
            "description": "Download the first 64 KB of each distribution and report what the bytes really are, the CSV delimiter and the column headers. The declared format is often wrong: the first file checked in research was declared CSV and turned out to be a ZIP.",
            "default": false
          },
          "includeOrganizationProfile": {
            "title": "Attach the publisher profile to each dataset",
            "type": "boolean",
            "description": "Add the publishing body's IPA code, contact email, telephone, website and region to every dataset row. Each organization is fetched once and reused.",
            "default": false
          },
          "maxResourcesPerDataset": {
            "title": "Files to check per dataset",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Upper bound on how many distributions the two checks above touch per dataset. Only used when one of them is on.",
            "default": 5
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}