OpenDataScope, home

Methodology and sources

How the research snapshot was collected, cleaned, validated and compared, with every source and every data file.

Research question

How does North Macedonia's open-data ecosystem compare with major European and international open-data portals?

Seven national portals are compared: North Macedonia's data.gov.mk as the central case study, and the portals of the United Kingdom, the United States, Germany, France, the Netherlands and Spain. The EU portal, data.europa.eu, is shown separately because it aggregates national catalogues. Serbia appears as regional context only.

National portals: North Macedonia, United Kingdom, United States, Germany, France, Netherlands, Spain.

No ranking or composite score is produced.

Data Science process

  1. Step 1: Define the problem

    What open government data exists in North Macedonia, how much, and how does it compare in quantity, type and reusability with the UK, US, EU portal, Germany, France, the Netherlands and Spain? Serbia is regional context only. No ranking is produced.

  2. Step 2: Retrieve data

    Official APIs first, then timed official page readings where no API total exists, then later screenshots for validation, then reports and documentation. Two collector runs (S1, S2) saved every response unchanged, including error bodies. Sites that disallow automated access were read by hand, never worked around.

  3. Step 3: Inspect and understand

    Every raw file was opened, which surfaced the POST requirement for MK list endpoints, the UK organisation discrepancy, duplicate group objects in MK records, and the real MK theme field.

  4. Step 4: Clean and standardise

    UTC timestamps with explicit local conversion. Resource formats normalised by a fixed map (19 MK labels to 9 formats). Licence ids grouped into open / not specified / none. Publisher titles resolved through organization_show. Groups and themes counted as unique (dataset, value) pairs.

  5. Step 5: Handle missing and incomparable values

    Missing means null with a status, never zero. Overlapping facets are reported as counts or as shares of datasets, never summed into shares of a total. Two official measurements of one quantity keep one as canonical and one as validation.

  6. Step 6: Explore

    Publisher participation and concentration, resource formats, theme coverage, licence coverage, metadata activity, EU presence.

  7. Step 7: Compare

    Cross-portal comparisons only where query and unit match: metadata activity, licence ids and dataset-level format presence (MK, UK, NL on CKAN); theme profile (MK vs EU portal, same EU vocabulary).

  8. Step 8: Visualise

    Charts state their finding in the title, show the unit and snapshot layer, and keep the EU aggregator apart.

  9. Step 9: Interpret

    Findings describe catalogue metadata and practice, not the quality of the underlying data, and make no political judgement.

  10. Step 10: Document limitations

    Limitations are listed under data and comparability limitations, and every field that was not collected is labelled where it would appear.

Data sources

Evidence hierarchy: API snapshot → timed official page reading (only where no API total exists) → later screenshot (validation) → report or documentation.

Every S1 and S2 value was recomputed from the raw JSON in the two snapshot archives, not from the collectors' summaries.

Serbia: S2 retrieved the same values as an earlier page read of the same API, so S2 is canonical for Serbia too.

Sources by type

  • API snapshot

    Sources
    17
  • Official page reading

    Sources
    7
  • Manual screenshot (validation)

    Sources
    12
  • Documentation

    Sources
    6
  • Report

    Sources
    3

Counted from sources.csv · Download

Data collection

Collection layers

  • S1

    What it is
    Collector v1: North Macedonia, United Kingdom, United States, France and EU portal APIs (14 calls)
    Role
    Canonical
    Time (UTC)
    2026-10-08 22:21:21 UTC – 22:22:37 UTC
    Time (Europe/Skopje)
    2026-10-09 00:21:21 – 00:22:37 (UTC+2)
  • S2

    What it is
    Collector v2.0: full North Macedonia crawl, North Macedonia lists via POST, Netherlands API, Serbia API, GovData reading entered at the start (91 manifest rows, 0 errors)
    Role
    Canonical
    Time (UTC)
    2026-10-08 23:02:02 UTC – 23:03:52 UTC
    Time (Europe/Skopje)
    2026-10-09 01:02:02 – 01:03:52 (UTC+2)
  • R1

    What it is
    Official page reading of the Spain homepage (no API total exists)
    Role
    Canonical for Spain only
    Time (UTC)
    2026-10-08 22:32:14 UTC – 22:34:30 UTC
    Time (Europe/Skopje)
    2026-10-09 00:32:14 – 00:34:30 (UTC+2)
  • V

    What it is
    Manual screenshots of 11 official pages
    Role
    Validation only
    Time (UTC)
    9 October 2026, before 11:13 UTC
    Time (Europe/Skopje)
    Same day, local time per reading
  • Earlier

    What it is
    Values from earlier drafts of the Phase 1 report
    Role
    Validation only (superseded)
    Time (UTC)
    Per row in the validation register
    Time (Europe/Skopje)
    Per row
  • Docs

    What it is
    API documentation, GDS blog, ODM 2025 report and factsheets
    Role
    Structural and historical evidence
    Time (UTC)
    Publication dates as cited
    Time (Europe/Skopje)
    Not applicable

Collector versions, call counts and the screenshot count come from the Phase 1 report's layer table (S1 API calls; S2 manifest rows; official pages screenshotted for validation; raw MK group occurrences before de-duplication) · . Canonical times are computed from metrics.csv.

Values from different layers are combined only where stated. The one cross-layer comparison is metadata activity: North Macedonia and the United Kingdom come from S1 and the Netherlands from S2.

Snapshot methodology

Open-data catalogue totals are dynamic measurements rather than fixed statistics. OpenDataScope therefore uses a timestamped research snapshot as its canonical analytical dataset. Later official-page readings are retained as validation evidence and demonstrate normal catalogue drift over time.

Canonical values come only from the S1, S2 and R1 layers. Later readings (V) and earlier readings are validation evidence: they show normal catalogue drift and never replace a canonical value.

Research snapshot: 8 October 2026, 22:21–23:03 UTC (9 October 2026, 00:21–01:03 in Skopje (UTC+2)). Validation readings: 9 October 2026, before 11:13 UTC.

Drift between the canonical snapshot and later readings, core portals

  • North Macedonia

    Reading
    datasets
    Canonical (snapshot)
    768 datasets
    Later reading
    768
    Difference
    no difference
    Drift
    no difference
    Record
  • United Kingdom

    Reading
    records
    Canonical (snapshot)
    59,491 directory records
    Later reading
    59,495
    Difference
    +4
    Drift
    +0.007 %
    Record
  • United States

    Reading
    datasets available
    Canonical (snapshot)
    590,168 metadata records
    Later reading
    590,179
    Difference
    +11
    Drift
    +0.002 %
    Record
  • Germany

    Reading
    datasets (dataset-only search)
    Canonical (snapshot)
    169,074 datasets
    Later reading
    169,172
    Difference
    +98
    Drift
    +0.058 %
    Record
  • Netherlands

    Reading
    state total
    Canonical (snapshot)
    20,791 register records
    Later reading
    20,790
    Difference
    −1
    Drift
    −0.005 %
    Record
  • Spain

    Reading
    datasets (homepage)
    Canonical (snapshot)
    115,980 datasets
    Later reading
    115,940
    Difference
    −40
    Drift
    −0.034 %
    Record
  • Spain

    Reading
    datasets (catalogue)
    Canonical (snapshot)
    115,980 datasets
    Later reading
    115,940
    Difference
    −40
    Drift
    −0.034 %
    Record

Data cleaning

  • All timestamps are stored in UTC, with an explicit conversion to Europe/Skopje (UTC+2) where they are shown.
  • Publisher titles were resolved through organization_show. English names are reference translations; the Macedonian original is kept beside each one.
  • Groups and themes are counted as unique (dataset, value) pairs. The MK records held 8 raw group occurrences, which reduce to 4 unique pairs; the build uses the pairs.
  • Missing means null with a status, never zero. A verified zero (North Macedonia on data.europa.eu) is printed with its evidence.
  • Licence identifiers are grouped into an open-licence identifier, 'not specified' and none.

Format normalisation

19 raw format labels on North Macedonian resources map to 9 normalised formats; 45 resources carry no format.

Machine-readable (project rule): CSV, TSV, JSON, GeoJSON, XML, RDF/TTL/JSON-LD, XLS/XLSX/ODS, SHP, KML/GML and API or OGC services; not PDF, HTML, DOC/DOCX, images, ZIP or an empty format.

Open format (project rule): machine-readable and non-proprietary, i.e. excluding XLS, XLSX and SHP.

Format normalisation map

  • XLSX

    Class (project rule)
    Machine-readable, proprietary
    Raw labels (resources)
    XLSX (430), .xlsx (334), xlxs (21)
    Resources
    785
  • CSV

    Class (project rule)
    Open and machine-readable
    Raw labels (resources)
    CSV (428), .csv (84), cvs (1)
    Resources
    513
  • XLS

    Class (project rule)
    Machine-readable, proprietary
    Raw labels (resources)
    XLS (126), .xls (8)
    Resources
    134
  • PDF

    Class (project rule)
    Not machine-readable
    Raw labels (resources)
    PDF (67), .pdf (2)
    Resources
    69
  • No format given

    Class (project rule)
    No format given
    Raw labels (resources)
    (empty) (45)
    Resources
    45
  • DOC/DOCX

    Class (project rule)
    Not machine-readable
    Raw labels (resources)
    .doc (13), .word (8), DOCX (4), DOC (2)
    Resources
    27
  • XML

    Class (project rule)
    Open and machine-readable
    Raw labels (resources)
    XML (15), .xml (3)
    Resources
    18
  • HTML

    Class (project rule)
    Not machine-readable
    Raw labels (resources)
    HTML (7)
    Resources
    7
  • JSON

    Class (project rule)
    Open and machine-readable
    Raw labels (resources)
    JSON (7)
    Resources
    7

From mk_format_shares.csv and mk_format_labels_raw.csv ·

Theme mapping

North Macedonia and the EU portal use the same EU data-theme vocabulary, listed below. The other national portals use their own schemes, which are not mapped in this release.

EU data-theme codes used in North Macedonia

  • Government and public sector

    Code
    GOVE
    Short label
    Government
    MK datasets
    312
  • Economy and finance

    Code
    ECON
    Short label
    Economy and finance
    MK datasets
    171
  • Regions and cities

    Code
    REGI
    Short label
    Regions and cities
    MK datasets
    73
  • Agriculture, fisheries, forestry and food

    Code
    AGRI
    Short label
    Agriculture and food
    MK datasets
    56
  • Population and society

    Code
    SOCI
    Short label
    Population and society
    MK datasets
    55
  • Education, culture and sport

    Code
    EDUC
    Short label
    Education, culture, sport
    MK datasets
    52
  • Environment

    Code
    ENVI
    Short label
    Environment
    MK datasets
    39
  • Justice, legal system and public safety

    Code
    JUST
    Short label
    Justice and safety
    MK datasets
    32
  • Transport

    Code
    TRAN
    Short label
    Transport
    MK datasets
    13
  • Health

    Code
    HEAL
    Short label
    Health
    MK datasets
    7
  • Energy

    Code
    ENER
    Short label
    Energy
    MK datasets
    7
  • Science and technology

    Code
    TECH
    Short label
    Science and technology
    MK datasets
    3
  • International issues

    Code
    INTR
    Short label
    International issues
    MK datasets
    1

From mk_themes.csv and theme_labels.csv ·

Derived indicators

Every derived value is computed at build time from the frozen tables by the formula shown. Project-defined indicators follow a project rule and are not official ratings or quality scores.

Local government (project rule): organisation titles beginning "Општина" (municipality) or "Град Скопје" (City of Skopje).

Derived values (closed list)

  • Resources per dataset

    Formula
    resources_total ÷ datasets_total
    Value
    2.09
    Kind
    Derived value
    Record
  • Listed organisations without a public dataset

    Formula
    organisations_listed − publishers_active
    Value
    70
    Kind
    Derived value
    Record
  • Share of listed organisations that publish

    Formula
    publishers_active ÷ organisations_listed
    Value
    47.0 %
    Kind
    Derived value
    Record
  • Datasets without a theme

    Formula
    datasets_total − datasets_with_theme
    Value
    115
    Kind
    Derived value
    Record
  • Theme codes in use

    Formula
    theme codes with ≥ 1 dataset
    Value
    13
    Kind
    Derived value
    Record
  • Theme tags per tagged dataset

    Formula
    theme_assignments ÷ datasets_with_theme
    Value
    1.26
    Kind
    Derived value
    Record
  • Listed local-government organisations

    Formula
    organisations whose title begins "Општина" or "Град Скопје" (title-prefix rule)
    Value
    72
    Kind
    Record
  • Listed central bodies and others

    Formula
    organisations_listed − local_gov_listed
    Value
    60
    Kind
    Record
  • Active central bodies and others

    Formula
    publishers_active − active_local_government_publishers
    Value
    44
    Kind
    Record
  • Share of datasets from local government

    Formula
    datasets_from_local_government ÷ datasets_total
    Value
    54.7 %
    Kind
    Record
  • Datasets of the five largest publishers

    Formula
    sum of the 5 largest publishers' datasets
    Value
    248
    Kind
    Derived value
    Record
  • Share of the five largest publishers

    Formula
    top5_datasets ÷ datasets_total
    Value
    32.3 %
    Kind
    Derived value
    Record
  • Active publishers outside the top 15

    Formula
    active publishers not drawn in C11 (top 15, ties kept)
    Value
    47
    Kind
    Derived value
    Record
  • Datasets of the publishers outside the top 15

    Formula
    datasets of the active publishers outside C11
    Value
    276
    Kind
    Derived value
    Record
  • Share of the publishers outside the top 15

    Formula
    outside_top15_datasets ÷ datasets_total
    Value
    35.9 %
    Kind
    Derived value
    Record
  • Spreadsheet resources (XLSX + XLS)

    Formula
    XLSX + XLS resources
    Value
    919
    Kind
    Derived value
    Record
  • Share of spreadsheet resources

    Formula
    spreadsheet_resources ÷ resources_total
    Value
    57.3 %
    Kind
    Derived value
    Record
  • Share of datasets offering JSON

    Formula
    datasets offering JSON ÷ datasets_total
    Value
    0.9 %
    Kind
    Derived value
    Record
  • Share of datasets offering CSV

    Formula
    datasets offering CSV ÷ datasets_total
    Value
    58.9 %
    Kind
    Derived value
    Record
  • Resources not machine-readable (project rule)

    Formula
    resources_total − machine_readable_resources
    Value
    148
    Kind
    Record
  • Resources not in an open format (project rule)

    Formula
    resources_total − open_format_resources
    Value
    1,067
    Kind
    Record
  • Datasets without an open-licence identifier

    Formula
    datasets_licence_not_specified + datasets_no_licence_id
    Value
    597
    Kind
    Derived value
    Record
  • Dutch records with another or no licence identifier

    Formula
    datasets_total − datasets_open_licence_id
    Value
    2,167
    Kind
    Derived value
    Record
  • Smallest other national catalogue

    Formula
    min datasets_total of national portals other than MK
    Value
    20,791
    Kind
    Derived value
    Record
  • Largest other national catalogue

    Formula
    max datasets_total of national portals other than MK
    Value
    590,168
    Kind
    Derived value
    Record
  • Provenance values on data.europa.eu

    Formula
    provenance rows with records > 0
    Value
    38
    Kind
    Derived value
    Record
  • Share of EU-portal records from Germany

    Formula
    de ÷ eu.datasets_total
    Value
    49.2 %
    Kind
    Derived value
    Record
  • Share of the largest US publisher

    Formula
    largest_publisher_records ÷ datasets_total
    Value
    55.8 %
    Kind
    Derived value
    Record
  • Share of the largest Serbian publisher (context)

    Formula
    largest_publisher_datasets ÷ datasets_total (regional context)
    Value
    46.4 %
    Kind
    Derived value
    Record

Data and comparability limitations

OpenDataScope uses official portal data and timestamped research snapshots. Portal counts and metadata may change after the snapshot, and different portals use different definitions and classification systems. Derived indicators are clearly labelled, and values that could not be verified or compared reliably are shown as unavailable rather than estimated.

No missing value is interpreted as zero, and no unsupported value is estimated.

Count definitions

  • North Macedonia

    Unit
    datasets
    Count definition
    Public CKAN packages, anonymous package_search
    Includes non-open
    Not documented
    Comparability note
    S2 crawl retrieved 768/768 records
    Record
  • United Kingdom

    Unit
    directory records
    Count definition
    Public CKAN packages in the data.gov.uk directory
    Includes non-open
    Not documented
    Comparability note
    Records link to data hosted elsewhere; GDS reports >=25% broken links
    Record
  • United States

    Unit
    metadata records
    Count definition
    Sum of dataset_count over all catalog API organisations
    Includes non-open
    Yes
    Comparability note
    Includes restricted and non-public access levels
    Record
  • Germany

    Unit
    datasets
    Count definition
    Dataset-only count on the official GovData search page, read by the researcher
    Includes non-open
    Not documented
    Comparability note
    Never the all-results (Treffer) count; entered via --govdata-count at the start of S2
    Record
  • France

    Unit
    datasets
    Count definition
    udata dataset objects
    Includes non-open
    Not documented
    Comparability note
    Homepage shows rounded 76K datasets AND APIs: not a dataset count
    Record
  • Netherlands

    Unit
    register records
    Count definition
    package_search result.count (CKAN API)
    Includes non-open
    Yes
    Comparability note
    Register includes non-public and restricted entries
    Record
  • Spain

    Unit
    datasets
    Count definition
    Homepage indicator "Conjuntos de datos"
    Includes non-open
    Not documented
    Comparability note
    No API total: official page reading is canonical
    Record
  • European Union

    Unit
    aggregated metadata records
    Count definition
    Records in the data.europa.eu search index
    Includes non-open
    Not documented
    Comparability note
    AGGREGATOR: overlaps national totals; shown in a separate panel, never ranked with national portals
    Record
  • Serbia

    Unit
    datasets
    Count definition
    udata site metrics
    Includes non-open
    Not documented
    Comparability note
    Regional context only; R2 page read at 22:48-22:49Z gave the same values
    Record

Limitations

  • Dynamic totals: catalogue counts change continuously; the app shows the snapshot value with its timestamp and the later reading as validation, never as a correction.
  • Units differ: dataset, directory record, metadata record, register record and aggregated record are not interchangeable, and some portals include restricted or non-public records in their totals (see the count-definition table above).
  • Classification systems differ: no cross-country theme mapping is used where a reliable taxonomy crosswalk is unavailable. Themes are compared only between North Macedonia and the EU portal, which use the same EU data-theme vocabulary.
  • Incomplete metadata: theme, licence and format fields are not filled in on every record. Records are counted as published, and the gaps are reported (for example datasets with no theme or no licence identifier), never filled in.
  • Metadata activity: metadata_modified shows metadata changes, including those caused by re-harvesting; it does not prove the data itself was updated.
  • Page readings (Spain, Germany) have no raw JSON; they carry a reading time instead.
  • Project indicators: machine-readable, open-format and local-government classifications follow project rules (see derived indicators), not official standards.
  • The EU-portal theme profile is dominated by German records (49.2 %); it is a reference, not a benchmark.
  • ODM 2025 is self-reported and validated by its research team; it does not cover the United Kingdom or the United States.
  • Coverage gaps: fields that were not collected are labelled 'Not collected' wherever they would appear, never shown as zero.
  • EU aggregator: data.europa.eu re-counts records harvested from national and institutional catalogues. It is shown separately and is never ranked against national portals as if it were a country.
  • Serbia: shown as regional context only; it is not part of the core national comparison.
Compare only where units and queries match: open the comparison, where every row carries its badge.

Manual validation

Every later and earlier reading is kept as validation evidence. The canonical value never changes because of a later reading. For the later (V) readings the exact capture time was not recorded; they were taken after S2 and before the time shown.

Validation registerScroll sideways to see all columns
ReadingVisible valueKindReading timeDifference from canonicalNoteRecord
North Macedonia: datasets768Later validation reading9 Oct 2026, after S2, before 11:13 UTCno differenceNo note
North Macedonia: organisations133Later validation reading9 Oct 2026, after S2, before 11:13 UTC+1 (+0.758 %)Canonical listed = 132 (S2)
North Macedonia: groups9Later validation reading9 Oct 2026, after S2, before 11:13 UTCno differenceNo note
North Macedonia: catalogues25Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableVisible label; meaning not documented
North Macedonia: dataset searchscreenshotLater validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableVisual validation; no separate value transcribed
United Kingdom: records59,495Later validation reading9 Oct 2026, after S2, before 11:13 UTC+4 (+0.007 %)No note
United Kingdom: organization_listHTTP 504 Gateway Time-outLater validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableTimeout, not missing data; S1 organisation figures kept
United States: datasets available590,179Later validation reading9 Oct 2026, after S2, before 11:13 UTC+11 (+0.002 %)No note
United States: datasets available (earlier)590,164Earlier reading (superseded)8 Oct 2026, 05:00:30 UTC (time the page reports for its last update)−4 (−0.001 %)No note
European Union: datasets found1,728,300Later validation reading9 Oct 2026, after S2, before 11:13 UTC−323 (−0.019 %)No note
European Union: datasets (earlier homepage)1,726,841Earlier reading (superseded)8 Oct 2026, between 21:46 and 22:20 UTC−1,782 (−0.103 %)No note
Germany: datasets (dataset-only search)169,172Later validation reading9 Oct 2026, after S2, before 11:13 UTC+98 (+0.058 %)No note
Germany: all results (Treffer)169,224Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNEVER a dataset count: = 169,172 datasets + 35 applications + 17 information records
Germany: applications35Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Germany: information records17Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Germany: records (earlier reading, type not separated)169,130Earlier reading (superseded)8 Oct 2026, at or before 22:47 UTC+56 (+0.033 %)Superseded
France: datasets AND APIs (rounded)76KLater validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableCombines datasets + APIs; rounded
France: files (rounded)393KLater validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
France: organisations (rounded)7KLater validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Netherlands: state: available20,517Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Netherlands: state: being researched173Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Netherlands: state: not available96Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Netherlands: state: planned4Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Netherlands: publicity: public18,530Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Netherlands: publicity: non-public1,484Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Netherlands: publicity: restricted717Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Netherlands: state total20,790Later validation reading9 Oct 2026, after S2, before 11:13 UTC−1 (−0.005 %)One-record temporal/live discrepancy; cause not documented
Netherlands: publicity classified total20,731Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicable59 records without a publicity value
Netherlands: datasets (earlier page reading)19,822Earlier reading (superseded)8 Oct 2026, 22:32:14–22:34:30 UTC−969 (−4.661 %)Earlier reading; superseded by the S2 API snapshot; cause of the gap not documented
Spain: datasets (homepage)115,940Later validation reading9 Oct 2026, after S2, before 11:13 UTC−40 (−0.034 %)No note
Spain: datasets (catalogue)115,940Later validation reading9 Oct 2026, after S2, before 11:13 UTC−40 (−0.034 %)No note
Spain: data services (catalogue)495Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Spain: datasets (earlier homepage)115,938Earlier reading (superseded)8 Oct 2026, between 21:46 and 22:20 UTC−42 (−0.036 %)No note
Serbia: datasets3,527Later validation reading9 Oct 2026, after S2, before 11:13 UTC+18 (+0.513 %)No note
Serbia: resources7,133Later validation reading9 Oct 2026, after S2, before 11:13 UTC+20 (+0.281 %)No note
Serbia: reuse examples78Later validation reading9 Oct 2026, after S2, before 11:13 UTCno differenceNo note
Serbia: users2,952Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note
Serbia: organisations219Later validation reading9 Oct 2026, after S2, before 11:13 UTCno differenceNo note
Serbia: discussions115Later validation reading9 Oct 2026, after S2, before 11:13 UTCNot applicableNo note

Validation checks performed

  1. MK crawl: unique records = result.count768 = 768 ✓
  2. MK organisation facet sums to total; the crawl finds the same active publishers768 ✓; 62 = 62 ✓
  3. MK licence ids in the S1 facet = the S2 crawlIdentical (390 / 207 / 116 / 39 / 12 / 4) ✓
  4. MK resource formats sum; every raw label mapped once1,605 ✓; 19 / 19 ✓
  5. MK theme codes duplicated inside a recordNone ✓
  6. MK groups: raw occurrences vs unique pairs8 vs 4: unique pairs used; the collector v2.0 derived file was corrected
  7. Every reported S2 value vs raw recomputationAll identical ✓
  8. Serbia: earlier page read of the API vs S2 rawIdentical ✓
  9. UK organisation facet sums to total59,491 ✓
  10. NL licence facet sums to total (single-valued)20,791 ✓
  11. DE all results = datasets + applications + information records (V)169,224 = 169,172 + 35 + 17 ✓
  12. Drift, canonical vs later reading, core portalsSmall in every case; the largest is Germany's +0.058 % (see the drift table above)
  13. National counts vs harvested copies on the EU portalHarvested copies are close to the national counts for the United Kingdom, Spain, France and Germany; the Netherlands copy (19,355 records) is below the register (20,791). The values are in the table below.

National counts and harvested copies on the EU portal

  • Germany

    Catalogue on data.europa.eu
    "govdata" on data.europa.eu
    Harvested records
    169,161
    National canonical count
    169,074 datasets
    Note
    Harvested copy: timing and filters differ
  • Netherlands

    Catalogue on data.europa.eu
    "dataportaal-van-de-nederlandse-overheid" on data.europa.eu
    Harvested records
    19,355
    National canonical count
    20,791 register records
    Note
    Harvested copy: timing and filters differ
  • United Kingdom

    Catalogue on data.europa.eu
    "data-gov-uk" on data.europa.eu
    Harvested records
    59,572
    National canonical count
    59,491 directory records
    Note
    Harvested copy: timing and filters differ
  • Spain

    Catalogue on data.europa.eu
    "datos-gob-es" on data.europa.eu
    Harvested records
    115,815
    National canonical count
    115,980 datasets
    Note
    Harvested copy: timing and filters differ
  • France

    Catalogue on data.europa.eu
    "plateforme-ouverte-des-donnees-publiques-francaises" on data.europa.eu
    Harvested records
    76,548
    National canonical count
    74,635 datasets
    Note
    Harvested copy: timing and filters differ
  • Serbia

    Catalogue on data.europa.eu
    "open-data-portal-serbia" on data.europa.eu
    Harvested records
    3,527
    National canonical count
    3,509 datasets
    Note
    Harvested copy: timing and filters differ

Source register

Every source behind the snapshot, with its layer, retrieval time and link status. A source without a recorded URL says so; no link is made up.

Source register

  • data.gov.mk package_search with facets

    ID
    S1-mk-package_search
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:21:21 UTC
    Record
  • data.gov.mk status_show

    ID
    S1-mk-status_show
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:21:27 UTC
    Record
  • data.gov.mk package_search, metadata modified in 365 days

    ID
    S1-mk-modified_12m
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:21:28 UTC
    Record
  • data.gov.mk organization_list (POST, 6 pages)

    ID
    S2-mk-organization_list
    Type
    API snapshot
    Layer
    S2
    Retrieved
    2026-10-08 23:02:04 UTC
    Record
  • data.gov.mk organization_show (66 calls)

    ID
    S2-mk-organization_show
    Type
    API snapshot
    Layer
    S2
    Retrieved
    2026-10-08 23:02:13 UTC
    Record
  • data.gov.mk group_list (POST)

    ID
    S2-mk-group_list
    Type
    API snapshot
    Layer
    S2
    Retrieved
    2026-10-08 23:03:32 UTC
    Record
  • data.gov.mk package_search crawl, 8 pages of 100

    ID
    S2-mk-crawl
    Type
    API snapshot
    Layer
    S2
    Retrieved
    2026-10-08 23:03:33 UTC
    Record
  • data.gov.uk package_search with facets

    ID
    S1-uk-package_search
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:21:29 UTC
    Record
  • data.gov.uk organization_list

    ID
    S1-uk-organization_list
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:21:31 UTC
    Record
  • data.gov.uk package_search, metadata modified in 365 days

    ID
    S1-uk-modified_12m
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:21:32 UTC
    Record
  • data.europa.eu search API, datasets with facets

    ID
    S1-eu-search
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:22:33 UTC
    Record
  • catalog.data.gov organisations API

    ID
    S1-us-organizations
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:22:35 UTC
    Record
  • data.gouv.fr site metrics API

    ID
    S1-fr-site
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:22:36 UTC
    Record
  • data.gouv.fr datasets tagged hvd

    ID
    S1-fr-hvd
    Type
    API snapshot
    Layer
    S1
    Retrieved
    2026-10-08 22:22:37 UTC
    Record
  • GovData dataset search, dataset-only count read by the researcher

    ID
    S2-de-govdata-reading
    Type
    Official page reading
    Layer
    S2
    Retrieved
    2026-10-08 23:02:02 UTC
    Record
  • data.overheid.nl package_search with facets

    ID
    S2-nl-package_search
    Type
    API snapshot
    Layer
    S2
    Retrieved
    2026-10-08 23:03:48 UTC
    Record
  • data.overheid.nl package_search, metadata modified in 365 days

    ID
    S2-nl-modified_12m
    Type
    API snapshot
    Layer
    S2
    Retrieved
    2026-10-08 23:03:49 UTC
    Record
  • data.gov.rs site metrics API

    ID
    S2-rs-site
    Type
    API snapshot
    Layer
    S2
    Retrieved
    2026-10-08 23:03:52 UTC
    Record
  • datos.gob.es homepage indicator "Conjuntos de datos"

    ID
    R1-es-homepage
    Type
    Official page reading
    Layer
    R1
    Retrieved
    2026-10-08T22:32:14Z/2026-10-08T22:34:30Z
    Record
  • data.gov.mk homepage

    ID
    V-mk-homepage
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • data.gov.mk dataset search

    ID
    V-mk-search
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Link
    URL not recorded
    Record
  • data.gov.uk package_search

    ID
    V-uk-package_search
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • data.gov.uk organization_list (HTTP 504)

    ID
    V-uk-organization_list
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • data.gov homepage

    ID
    V-us-homepage
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • data.europa.eu dataset search

    ID
    V-eu-search
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • GovData search (datasets and all results)

    ID
    V-de-search
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • data.gouv.fr homepage

    ID
    V-fr-homepage
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • data.overheid.nl dataset page (state and publicity)

    ID
    V-nl-datasets
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • datos.gob.es homepage

    ID
    V-es-homepage
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • datos.gob.es catalogue

    ID
    V-es-catalogue
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • data.gov.rs homepage

    ID
    V-rs-homepage
    Type
    Manual screenshot (validation)
    Layer
    V (later reading)
    Retrieved
    2026-10-09, before 11:13Z
    Record
  • data.gov homepage (earlier reading)

    ID
    E-us-homepage
    Type
    Official page reading
    Layer
    Earlier reading
    Retrieved
    2026-10-08T05:00:30Z (page update time)
    Record
  • data.europa.eu homepage (earlier reading)

    ID
    E-eu-homepage
    Type
    Official page reading
    Layer
    Earlier reading
    Retrieved
    2026-10-08 21:46-22:20Z window
    Record
  • datos.gob.es homepage (earlier reading)

    ID
    E-es-homepage
    Type
    Official page reading
    Layer
    Earlier reading
    Retrieved
    2026-10-08 21:46-22:20Z window
    Record
  • data.overheid.nl dataset page (earlier reading, R1)

    ID
    E-nl-datasets
    Type
    Official page reading
    Layer
    Earlier reading
    Retrieved
    2026-10-08T22:32:14Z/2026-10-08T22:34:30Z
    Record
  • GovData (earlier reading, record type not separated)

    ID
    E-de-earlier
    Type
    Official page reading
    Layer
    Earlier reading
    Retrieved
    <= 2026-10-08T22:47Z
    Record
  • data.gov.uk API guidance

    ID
    DOC-uk-api
    Type
    Documentation
    Layer
    Docs
    Retrieved
    No retrieval time (structural evidence)
    Record
  • data.gov Catalog API documentation

    ID
    DOC-us-api
    Type
    Documentation
    Layer
    Docs
    Retrieved
    No retrieval time (structural evidence)
    Record
  • data.overheid.nl API documentation

    ID
    DOC-nl-api
    Type
    Documentation
    Layer
    Docs
    Retrieved
    No retrieval time (structural evidence)
    Record
  • datos.gob.es API and SPARQL documentation

    ID
    DOC-es-api
    Type
    Documentation
    Layer
    Docs
    Retrieved
    No retrieval time (structural evidence)
    Record
  • data.europa.eu API and SPARQL manual

    ID
    DOC-eu-manual
    Type
    Documentation
    Layer
    Docs
    Retrieved
    No retrieval time (structural evidence)
    Record
  • Open Data Maturity 2025 report

    ID
    DOC-odm-2025
    Type
    Report
    Layer
    Docs
    Retrieved
    No retrieval time (structural evidence)
    Record
  • Open Data Maturity 2025 factsheet: North Macedonia

    ID
    DOC-odm-2025-mk
    Type
    Report
    Layer
    Docs
    Retrieved
    No retrieval time (structural evidence)
    Record
  • GDS blog post on data.gov.uk link quality

    ID
    DOC-gds-blog
    Type
    Documentation
    Layer
    Docs
    Retrieved
    No retrieval time (structural evidence)
    Record
  • OpenDataScope Final Phase 1 Research Report (sections A3, D)

    ID
    P1-report
    Type
    Report
    Layer
    Docs
    Retrieved
    2026-10-09
    Link
    Internal project document
    Record

Download the data

The 15 tables behind every value, with their SHA-256 checksums. Phase 1 tables are frozen and verified before every build.

  • metrics.csvPhase 1 table (frozen) · 61 rows · 24 KB076c82192d5c80dff7838a4e3ef3fd89b1f651ff9ddade885d4296af85d6fa83
  • validation_readings.csvPhase 1 table (frozen) · 39 rows · 5 KB0fb50f0610340a8a4519b8a007cd0a9ec97422c72085731badd4e314e025bbd5
  • mk_format_shares.csvPhase 1 table (frozen) · 9 rows · 461 bytesc178a14083f0432489181fb35ab014d994720849b2e544d655ece10340acb2c5
  • mk_format_labels_raw.csvPhase 1 table (frozen) · 19 rows · 384 bytes664b71e7d4d9104362622419a474a30a2a59d2354e6722d91c145d9accdfb86a
  • mk_themes.csvPhase 1 table (frozen) · 14 rows · 591 bytes3df31d3b6830805d6d54843cc0a5430390bfbe5402fbebdd3f183557e374d412
  • theme_profile_mk_vs_eu.csvPhase 1 table (frozen) · 13 rows · 839 bytesb88bf854278aad4cca4a339a38bbce2fc5024b483431307e2210e828de0e693c
  • mk_publishers.csvPhase 1 table (frozen) · 132 rows · 11 KBcc55342090e7a5acd4f1e50f68f2109acf56a2a5cd47b3f6ab5128006ac52be7
  • eu_provenance.csvPhase 1 table (frozen) · 39 rows · 536 bytes5ac2ef71db361f66288ca42c6424ab10825254f4cdd41e474967cab4f9f8b82d
  • metrics_supplement.csvReference table · 8 rows · 3 KB357eb0ff945d6fb745ca76bb6359224b743a0a45d20251f4c683ca285a3bb325
  • portals.csvReference table · 9 rows · 3 KB533003b7aadc3ca7e911f99455eba5f2f72bdef00e902b4c66cb098422664da9
  • access_matrix.csvReference table · 72 rows · 11 KBd5afe39af25af67110d2a9637dc036a3cd300eaa5b4ee3434edf500ddb17c2fc
  • sources.csvReference table · 45 rows · 10 KBcc724b5fa5d51c59c8c2f2ba3f40f91fea2b7184cb2e7f194e1931835f3a608f
  • mk_publisher_names_en.csvReference table · 62 rows · 8 KB11eb09e9a6120edc86e436bde4b2c6390aaf0bc30e912c58d7104de747938abc
  • theme_labels.csvReference table · 14 rows · 631 bytes959122f305a46f7528ae9af6d2a4800646529164ecfbf46c7b9401dd43168d28
  • country_names.csvReference table · 39 rows · 492 bytesace62192886aafa6a611bd2e27e10d343ed3cd54b9932a3e118b4c46985c56c7
  • Checksum manifest (manifest.json)