{
 "name": "bitcoinyears-nodes",
 "title": "Bitcoin Years: Reachable Bitcoin nodes by country",
 "description": "Reachable Bitcoin nodes as seen by the BTC Nodes crawler, placed approximately by IP address (DB-IP Lite) and counted by country, with a daily history. No node address is published; countries with fewer than 5 nodes show only their count.",
 "homepage": "https://bitcoinyears.com/open-data/",
 "version": "2026.11.06",
 "created": "2026-11-06T00:00:00Z",
 "x_licence_status": "pending",
 "x_attribution": "Node data: BTC Nodes (btcnodes.io). IP Geolocation by DB-IP (CC BY 4.0). Population: World Bank (CC BY 4.0). Compiled by Bitcoin Years.",
 "resources": [
  {
   "name": "countries-latest",
   "title": "Countries, latest day",
   "description": "One row per country with reachable nodes: nodes, share of mapped nodes, IPv4/IPv6, Bitcoin Core / Knots, nodes per million people, population.",
   "format": "csv",
   "mediatype": "text/csv",
   "path": "countries-latest.csv",
   "schema": {
    "fields": [
     {
      "name": "country",
      "type": "string",
      "description": "ISO 3166-1 alpha-2 code (Natural Earth)"
     },
     {
      "name": "country_name",
      "type": "string"
     },
     {
      "name": "nodes",
      "type": "integer",
      "description": "Reachable IPv4/IPv6 nodes placed in the country"
     },
     {
      "name": "share_of_mapped_pct",
      "type": "number",
      "description": "Share of all nodes on the map, %"
     },
     {
      "name": "ipv4",
      "type": "integer",
      "description": "Empty below 5 nodes"
     },
     {
      "name": "ipv6",
      "type": "integer",
      "description": "Empty below 5 nodes"
     },
     {
      "name": "bitcoin_core",
      "type": "integer",
      "description": "Empty below 5 nodes"
     },
     {
      "name": "bitcoin_knots",
      "type": "integer",
      "description": "Empty below 5 nodes"
     },
     {
      "name": "nodes_per_million",
      "type": "number",
      "description": "World Bank population"
     },
     {
      "name": "population",
      "type": "integer",
      "description": "World Bank SP.POP.TOTL"
     },
     {
      "name": "population_year",
      "type": "string"
     }
    ]
   }
  },
  {
   "name": "global-daily",
   "title": "World, daily history",
   "description": "One row per day: reachable nodes, nodes on the map, IPv4, IPv6, Tor, I2P, CJDNS, countries, Core, Knots, other software.",
   "format": "csv",
   "mediatype": "text/csv",
   "path": "global-daily.csv",
   "schema": {
    "fields": [
     {
      "name": "date",
      "type": "date",
      "description": "UTC date of the snapshot"
     },
     {
      "name": "reachable_nodes",
      "type": "integer",
      "description": "All reachable nodes, every network"
     },
     {
      "name": "nodes_on_map",
      "type": "integer",
      "description": "IPv4/IPv6 nodes with a location"
     },
     {
      "name": "ipv4",
      "type": "integer"
     },
     {
      "name": "ipv6",
      "type": "integer"
     },
     {
      "name": "tor",
      "type": "integer"
     },
     {
      "name": "i2p",
      "type": "integer"
     },
     {
      "name": "cjdns",
      "type": "integer"
     },
     {
      "name": "countries",
      "type": "integer"
     },
     {
      "name": "bitcoin_core",
      "type": "integer",
      "description": "All networks"
     },
     {
      "name": "bitcoin_knots",
      "type": "integer",
      "description": "All networks"
     },
     {
      "name": "other_software",
      "type": "integer",
      "description": "All networks"
     }
    ]
   }
  },
  {
   "name": "countries-daily",
   "title": "Countries, daily history",
   "description": "One row per country per day. Days on which the source could not be reached are missing, never estimated.",
   "format": "csv",
   "mediatype": "text/csv",
   "path": "countries-daily.csv",
   "schema": {
    "fields": [
     {
      "name": "date",
      "type": "date"
     },
     {
      "name": "country",
      "type": "string"
     },
     {
      "name": "country_name",
      "type": "string"
     },
     {
      "name": "nodes",
      "type": "integer"
     },
     {
      "name": "share_of_mapped_pct",
      "type": "number"
     },
     {
      "name": "ipv4",
      "type": "integer",
      "description": "Empty below 5 nodes"
     },
     {
      "name": "ipv6",
      "type": "integer",
      "description": "Empty below 5 nodes"
     },
     {
      "name": "bitcoin_core",
      "type": "integer",
      "description": "Empty below 5 nodes"
     },
     {
      "name": "bitcoin_knots",
      "type": "integer",
      "description": "Empty below 5 nodes"
     }
    ]
   }
  },
  {
   "name": "versions-daily",
   "title": "Software versions, daily history",
   "description": "The ten most common node software versions each day.",
   "format": "csv",
   "mediatype": "text/csv",
   "path": "versions-daily.csv",
   "schema": {
    "fields": [
     {
      "name": "date",
      "type": "date"
     },
     {
      "name": "software_version",
      "type": "string"
     },
     {
      "name": "nodes",
      "type": "integer"
     }
    ]
   }
  }
 ],
 "contributors": [
  {
   "title": "Bitcoin Years",
   "path": "https://bitcoinyears.com/",
   "role": "publisher"
  }
 ],
 "x_licence_note": "Licence pending: no licence is granted for the underlying node data until the upstream permission is confirmed. See LICENSE.md.",
 "sources": [
  {
   "title": "BTC Nodes (btcnodes.io)",
   "path": "https://btcnodes.io"
  },
  {
   "title": "IP Geolocation by DB-IP (CC BY 4.0)",
   "path": "https://db-ip.com"
  },
  {
   "title": "World Bank, SP.POP.TOTL (CC BY 4.0)",
   "path": "https://data.worldbank.org/indicator/SP.POP.TOTL"
  },
  {
   "title": "Natural Earth",
   "path": "https://www.naturalearthdata.com"
  }
 ]
}