Social media tier distribution Pie chart: social media tier distribution across 49,503 scanned pages. Legacy only: 14,082 (28.4%), Modern only: 222 (0.4%), Mixed: 2,750 (5.6%), No Social: 27,912 (56.4%) Twitter/X only: 14,082 (31.3%) Modern only: 222 (0.5%) Mixed: 2,750 (6.1%) No Social: 27,912 (62.1%) Twitter/X only (31.3%) Modern only (0.5%) Mixed (6.1%) No Social (62.1%)

Social media tier distribution

Stats as of 2026-07-23 03:23 UTC — last scan: 2026-07-23

45 scan batches run

49,498 of 87,696 available pages scanned (56.4% coverage) 44,961 of 49,498 scanned pages were reachable (90.8%)

Legacy social media (older, centralised platforms):

Platform Pages with link % of scanned % of reachable
🐦 Twitter 7,486 15.1% 16.6%
✖ X 1,724 3.5% 3.8%
👍 Facebook 14,699 29.7% 32.7%
💼 LinkedIn 6,373 12.9% 14.2%

Modern / open social media (decentralised or open platforms):

Platform Pages with link % of scanned % of reachable
🦋 Bluesky 578 1.2% 1.3%
🐘 Mastodon / Fediverse 2,579 5.2% 5.7%

📥 Machine-readable results are available as the social-media-data.json artifact (machine-readable JSON).


Digital Sovereignty Rankings

Countries ranked by Digital Sovereignty Score — the percentage of reachable pages using no social media or modern open platforms only (Mastodon / Bluesky). A higher score means fewer links to US corporate social-media platforms (Twitter / X, Facebook, LinkedIn). Pages with no social-media links at all score highest; pages linking only to Mastodon or Bluesky also rank well. Legacy Exposure shows the percentage of reachable pages that still link to Twitter/X, Facebook, or LinkedIn.

Rank Country Sovereignty Score No Social Modern Only Legacy Exposure Tier
1 Norway 76.4% 183 2 23.6% 🥉 Growing
2 Malta 75.3% 440 1 24.7% 🥉 Growing
3 France 74.1% 3,217 16 25.9% 🥉 Growing
4 Lithuania 72.1% 80 0 27.9% 🥉 Growing
5 Greece 69.9% 1,122 2 30.1% 🥉 Growing
6 Germany 68.6% 3,873 75 31.4% 🥉 Growing
7 Canada 68.5% 2,312 4 31.5% 🥉 Growing
8 Slovenia 67.7% 136 0 32.3% 🥉 Growing
9 Iceland 67.4% 95 0 32.6% 🥉 Growing
10 Romania 66.9% 183 3 33.1% 🥉 Growing
11 Czechia 66.0% 521 2 34.0% 🥉 Growing
12 Switzerland 65.9% 1,337 28 34.1% 🥉 Growing
13 Netherlands 64.9% 574 10 35.1% 🥉 Growing
14 United Kingdom 63.0% 2,941 12 37.0% 🥉 Growing
15 Sweden 62.5% 1,011 4 37.5% 🥉 Growing
16 Slovakia 61.8% 257 0 38.2% 🥉 Growing
17 Bulgaria 61.5% 194 1 38.5% 🥉 Growing
18 Denmark 61.5% 926 0 38.5% 🥉 Growing
19 Portugal 59.8% 1,612 4 40.2% 🥉 Growing
20 Croatia 59.5% 150 0 40.5% 🥉 Growing
21 Spain 59.4% 1,336 4 40.6% 🥉 Growing
22 Belgium 59.2% 720 8 40.8% 🥉 Growing
23 Finland 58.5% 110 0 41.5% 🥉 Growing
24 Ireland 58.1% 288 0 41.9% 🥉 Growing
25 Austria 54.5% 427 2 45.5% 🥉 Growing
26 Hungary 54.3% 158 1 45.7% 🥉 Growing
27 Poland 53.2% 1,888 27 46.8% 🥉 Growing
28 Cyprus 50.0% 14 0 50.0% 🥉 Growing
29 Luxembourg 48.2% 213 2 51.8% 🥉 Growing
30 Estonia 47.1% 176 3 52.9% 🥉 Growing
31 Italy 43.6% 1,106 11 56.4% 🥉 Growing
32 Latvia 41.2% 312 0 58.8% 🥉 Growing

Social Media Scan by Country

Available: all government pages tracked in our domain list. Reachable: of those scanned, pages that returned a valid HTTP response (not an error or timeout). Sov. Score: Digital Sovereignty Score — % of reachable pages with no social media or modern-only social presence. Tier columns classify each page by its overall social media presence; platform columns count pages with at least one link to that platform — a page may appear in more than one platform column.

Country Scanned Available Reachable Sov. Score No Social Legacy-only Twitter X Facebook LinkedIn Modern Mixed Bluesky Mastodon Scan Period
Austria 822 822 787 54.5% 427 311 34 20 347 184 2 47 16 44 Jul 2026
Belgium 1,329 1,329 1,229 59.2% 720 406 170 76 459 327 8 95 28 87 Jul 2026
Bulgaria 353 353 317 61.5% 194 100 24 6 117 12 1 22 0 23 Jul 2026
Canada 3,590 4,469 3,382 68.5% 2,312 914 320 92 996 420 4 152 41 133 Jul 2026
Croatia 257 257 252 59.5% 150 86 53 8 95 35 0 16 0 16 Jul 2026
Czechia 866 866 792 66.0% 521 247 131 15 255 40 2 22 0 24 Jul 2026
Denmark 1,536 1,536 1,506 61.5% 926 555 169 20 476 342 0 25 17 11 Jul 2026
Estonia 401 401 380 47.1% 176 178 62 1 199 68 3 23 0 26 Jul 2026
Finland 199 199 188 58.5% 110 69 31 10 55 65 0 9 3 6 Jul 2026
France 4,774 10,009 4,365 74.1% 3,217 949 592 113 963 596 16 183 42 169 Jul 2026
Germany 5,854 6,599 5,759 68.6% 3,873 1,426 1,000 162 1,421 571 75 385 116 419 Jul 2026
Greece 1,752 1,752 1,607 69.9% 1,122 389 214 52 456 125 2 94 0 96 Jul 2026
Hungary 392 392 293 54.3% 158 110 25 0 130 12 1 24 0 25 Jul 2026
Iceland 145 145 141 67.4% 95 30 8 6 46 7 0 16 0 16 Jul 2026
Ireland 536 536 496 58.1% 288 147 114 33 175 83 0 61 18 49 Jul 2026
Italy 3,038 5,351 2,561 43.6% 1,106 1,252 1,149 70 1,354 304 11 192 0 203 Jul 2026
Latvia 803 803 758 41.2% 312 357 266 55 432 171 0 89 0 89 Jul 2026
Lithuania 122 122 111 72.1% 80 27 5 1 31 20 0 4 0 4 Jul 2026
Luxembourg 573 573 446 48.2% 213 67 166 6 219 189 2 164 138 31 Jul 2026
Malta 610 610 586 75.3% 440 114 44 14 140 62 1 31 0 32 Jul 2026
Netherlands 945 945 900 64.9% 574 222 111 82 279 213 10 94 46 72 Jul 2026
Norway 249 249 242 76.4% 183 57 9 13 38 43 2 0 0 2 Jul 2026
Poland 3,923 14,951 3,600 53.2% 1,888 1,381 319 111 1,655 252 27 304 1 330 Jul 2026
Portugal 3,508 3,508 2,703 59.8% 1,612 911 346 70 1,029 246 4 176 2 180 Jul 2026
Cyprus 29 29 28 50.0% 14 14 8 1 14 3 0 0 0 0 Jul 2026
Romania 687 807 278 66.9% 183 82 28 1 92 9 3 10 0 13 Jul 2026
Slovakia 442 442 416 61.8% 257 132 19 12 154 58 0 27 1 26 Jul 2026
Slovenia 214 214 201 67.7% 136 55 24 7 62 7 0 10 1 10 Jul 2026
Spain 2,770 6,091 2,255 59.4% 1,336 795 649 193 710 220 4 120 22 106 Jul 2026
Sweden 1,702 1,702 1,624 62.5% 1,011 556 88 21 511 426 4 53 14 44 Jul 2026
Switzerland 2,123 2,123 2,072 65.9% 1,337 558 226 227 249 556 28 149 52 139 Jul 2026
United Kingdom 4,959 19,511 4,691 63.0% 2,941 1,585 1,087 231 1,545 707 12 153 20 154 Jul 2026
Total 49,503 87,696 44,966 62.6% 27,912 14,082 7,491 1,729 14,704 6,373 222 2,750 578 2,579

Hover or focus any non-zero country-table count to preview matching pages. Activate the number to keep the preview open. Full machine-readable data is available as the social-media-data.json artifact (machine-readable JSON).


Overview

The social media scanner fetches each government page and inspects the HTML for links to known social platforms. Results are stored in the metadata database and published to this site via the Scan Progress Report.

Scans run automatically every 3 hours via GitHub Actions so that the full set of ~80,000 URLs across 31 countries can be covered gradually without overloading government servers.


Platforms Tracked

Legacy Social Media (older, centralised platforms)

Platform Domains detected
Twitter twitter.com
X x.com
Facebook facebook.com, fb.com
LinkedIn linkedin.com

Modern / Open Social Media (decentralised or open platforms)

Platform Domains detected
Bluesky bsky.app, bsky.social
Mastodon / Fediverse 40+ known instances + /@username pattern detection

Tier Classification

Each scanned page is assigned one of five tiers:

Tier Meaning
unreachable Page could not be fetched (network error, timeout, 4xx/5xx)
no_social Page is reachable but contains no recognised social media links
twitter_only Page links only to legacy platforms (Twitter, X, Facebook, or LinkedIn)
modern_only Page links only to Bluesky or Mastodon (modern / open platforms)
mixed Page links to at least one legacy platform and at least one modern platform

Viewing Results

Scan Progress Report

The Scan Progress Report is regenerated after every scan and shows per-country breakdowns including:

  • Total URLs scanned and reachable count
  • Tier distribution (twitter-only / modern / mixed / no-social / unreachable)
  • Per-platform link counts (Twitter, X, Bluesky, Mastodon)
  • Date range showing when each country was last scanned

GitHub Actions Artifacts

Each workflow run also uploads a scan artifact containing:

  • data/metadata.db — the full SQLite results database
  • social-scan-output.txt — the raw scan log
  • data/toon-seeds/countries/**_social.toon — annotated TOON files

To download artifacts:

  1. Go to GitHub Actions → Scan Social Media Links
  2. Click on the relevant workflow run
  3. Scroll to the Artifacts section at the bottom of the run summary page
  4. Download social-scan-<run_number> to inspect the database or TOON files

Running a Scan Manually

  1. Go to Actions → Scan Social Media Links
  2. Click Run workflow
  3. Optionally enter a country code (e.g. ICELAND) or leave blank to scan all
  4. Optionally adjust the rate limit (default: 1.0 req/sec)

Via the command line

# Scan a single country
python3 -m src.cli.scan_social_media --country ICELAND --rate-limit 1.0

# Scan all countries (with a 110-minute runtime cap)
python3 -m src.cli.scan_social_media --all --max-runtime 110 --rate-limit 1.0

Output Format

Annotated TOON file (*_social.toon)

Each page entry gains a social_media field:

{
  "url": "https://example.gov/",
  "is_root_page": true,
  "social_media": {
    "is_reachable": true,
    "social_tier": "mixed",
    "twitter_links": ["https://twitter.com/example_gov"],
    "x_links": [],
    "facebook_links": [],
    "linkedin_links": [],
    "bluesky_links": ["https://bsky.app/profile/example.bsky.social"],
    "mastodon_links": []
  }
}

Database table (url_social_media_results)

Column Type Description
url TEXT Page URL
country_code TEXT Country identifier (e.g. ICELAND)
scan_id TEXT Unique scan run identifier
is_reachable INTEGER 1 = reachable, 0 = not reachable
twitter_links TEXT JSON list of twitter.com hrefs found
x_links TEXT JSON list of x.com hrefs found
facebook_links TEXT JSON list of facebook.com / fb.com hrefs found
linkedin_links TEXT JSON list of linkedin.com hrefs found
bluesky_links TEXT JSON list of Bluesky hrefs found
mastodon_links TEXT JSON list of Mastodon hrefs found
social_tier TEXT Tier classification (see above)
scanned_at TEXT ISO-8601 timestamp of scan

Countries Covered

Scans cover all 27 EU member states plus 4 allied nations:

Region Countries
EU member states Austria, Belgium, Bulgaria, Croatia, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Poland, Portugal, Republic of Cyprus, Romania, Slovakia, Slovenia, Spain, Sweden
Allied nations Iceland, Norway, Switzerland, United Kingdom

See also the Government Domains page for a full listing of all domains tracked per country.


Architecture

flowchart TD
    A["scan-social-media.yml\n(GitHub Actions — every 3 hours)"]
    A --> B["scan_social_media.py (CLI)"]
    B --> C["SocialMediaScannerJob.scan_country()"]
    C --> D["SocialMediaScanner.scan_urls_batch()"]
    D --> E["For each URL"]
    E --> F["httpx.get() → HTML content"]
    F --> G["BeautifulSoup → extract href links\nMatch against platform patterns"]
    G --> H["Classify into social_tier"]
    H --> I["Save to url_social_media_results table"]
    I --> J["Write *_social.toon output file"]